Repository navigation
Release v0.14.0
Changelog
v0.12.0 — 2026-06-01
Breaking Changes
- Removed manual endpoints —
POST /api/v1/aps/explanation/manual/annotations,POST /api/v1/aps/explanation/manual/computations, andDELETE /api/v1/aps/explanation/manual/annotationshave been removed. Use the managed lifecycle (POST /api/v1/aps/explanation) instead. aggregate_functionremoved fromDbSemiring— Theaggregate_functionfield on semiring definitions has been removed. Both aggregate and non-aggregate queries now useretrieval_function. Custom semiring configurations that setaggregate_functionmust be updated.- Semiring names and functions changed — The
booleansemiring has been renamed toboolexpr. All semiring retrieval functions have been renamed to match their native provsql equivalents:formula→sr_formula,whyPROV_now→sr_why,bool_formula→sr_boolexpr. The custom SQL semiring implementation (03_setup_semiring_parallel.sql) has been removed; provsql's built-in C++ semirings are now used directly. - provsql 1.8.0 required — The postgres-provsql image has been updated to
sotrx/postgres-provsql:17-v1.8.0. Environments running an older provsql extension must upgrade.
New Features
- Authentication (OIDC) — All explanation endpoints now support bearer token authentication via OIDC. Set
OIDC_ISSUER,OIDC_CLIENT_ID,OIDC_CLIENT_SECRET, andOIDC_EXCHANGE_SCOPEto enable it. WhenOIDC_ISSUERis unset, authentication is disabled and endpoints remain publicly accessible.UserIdandClientIdare now bound to structured logs per request. howandwhichsemirings — Two new built-in semirings (how,which) are now available, backed by provsql's nativesr_howandsr_whichC++ functions.- Automatic provsql extension upgrade — The postgres-provsql container now runs
ALTER EXTENSION provsql UPDATEon every start. Existing database volumes are automatically upgraded when the image is rebuilt with a newer provsql version; no manual intervention required. - Semiring dropdown in API — The explanation endpoint now exposes available semirings as a selectable list.
build-postgres-provsqlMakefile rule — Added a convenience target to build the postgres-provsql image locally.
Bug Fixes
- Correlation ID always present in response headers — The
x-tracking-correlationheader is now set on all responses, including error responses. Previously, unhandled exceptions caused the header to be omitted. - Authentication dependency not invoked —
require_authenticationwas passed toDepends()without being called, causing FastAPI to inject the factory function itself rather than executing the auth check. Fixed toDepends(require_authentication()). POST /api/v1/aps/explanation/{semiring_name}unauthenticated — The semiring-specific explanation endpoint was missing therequire_authentication()dependency entirely.boolexprsemiring returning empty data — Thesr_boolexprfunction requires amapping_tableargument in provsql 1.8.0. The rewriter was not passing it, causingdata: []in all responses. Fixed by ensuring the mapping argument is included whenmapping_tableis set on the semiring.
What's Changed
Features
- feat: otel integration
Full Changelog: v0.13.1...v0.14.0