Skip to content

Runtime compatibility

The v0.7 release line retains support for Python 3.11–3.14. The release matrix runs Python 3.11 and 3.14 with PostgreSQL 16 plus pgvector at both supported web dependency boundaries. The packaged reference gate also runs against local PostgreSQL 18.4. This is the tested matrix, not certification of every operating system, intermediate dependency combination, or PostgreSQL extension.

Web boundary FastAPI Starlette
Minimum 0.136.1 1.0.1
Latest supported 0.141.1 1.6.0

The package bounds these dependencies to the reviewed interval. CI explicitly installs and tests both pairs; intermediate combinations are not individually certified. Do not upgrade beyond the declared interval without re-running the release suite. Increasing the upper bound requires the same discovery and HTTP contract tests. A lower-bound pass does not excuse an upper-bound failure.

Inspecting routes

FastAPI can retain included routers rather than flattening them into app.routes. Use aksara.routing.iter_routes(app) to inspect effective paths, methods, endpoints and include-time metadata. It applies nested prefixes without changing FastAPI's routing tree. Returned objects are metadata views, not routes to mutate. Mounts remain mounts; the helper does not enumerate the contents of a static directory.

from aksara.routing import iter_routes

for route in iter_routes(app):
    print(route.path, route.methods)

Cleanup and deployment scope

Session/transaction contexts own connections they acquire and borrow connections already held by an enclosing transaction. Setup errors and cancellation restore session context and return owned pool capacity. Cleanup errors are attached to an existing error rather than replacing it. Real-pool regressions exercise repeated failures with a one-connection pool.

The production profile also requires migrations as a separate deployment step, a non-superuser/non-BYPASSRLS application role, forced RLS for tenant tables, and a clean aksara doctor production-check --release. Studio, process-local investigation state, and autonomous AI durability remain outside the production stability guarantee. Investigation state does not survive restart or provide multi-worker continuity.

See the v0.7 stability contract and production guide for the current boundary.