- CompilerWindow functions
ROW_NUMBER / RANK / OVER on relational builder — ModelAPI wiring remains.
- CompatProduction codebase validation
Gate before npm publish — compat layer vs 1,400-endpoint workload.
- ToolingSchema introspection · CLI emitter
pg_catalog → .zanith file from CLI — API shipped, emitter pending.
Roadmap · 01·v0.2.0 on main·v0.3 unreleased
What's shipped, what's in flight, what's next.
Two views of the same truth — by engine layer below, by release version in §04. No fake progress bars; only pinned test counts and explicit landed vs remaining lists.
Foundation
May 2026
Productionisation
May 2026
Query API
Q3 2026
Beyond Postgres
Q4 2026
Production
Speculative
- 0.2.0
- repo version
- 53/53
- proof suite
- 765/765
- unit tests
- 81
- compat tests
$ npx vitest runTest Files 74 passed (74)Tests 765 passed (765)Duration 9.73s$ npx vitest run test/proof/Test Files 7 passed (7)Tests 53 passed (53)Duration 8.54s
What's moving, and what's still gated.
Parser
2/3
Graph
5/5
Compiler
13/15
Compat
4/5
Adapter
9/11
Tooling
8/10
Site & docs
4/5
- in flight
Production compat validation
Compat layer vs a 1,400-endpoint workload — the gate we set before npm.
read more → - in flight
Introspection CLI emitter
pg_catalog → .zanith file from CLI. API shipped; emitter pending.
read more → - planned
npm publish v0.3
v0.2.0 lives in the repo. Registry push follows compat validation.
read more →
- migrations144
- compat81
- proof53
- query + engine131
- schema + compiler83
- production surface273
- 9.73s · 94.2% coverage
The roadmap, laid out by the engine's own architecture.
lex · parse · validate
- ●Chevrotain lexer + parserv0.1.0
Token stream → CST → AST in one pass. ~22ms / 1000 models.
- ●Validator passv0.1.0
Duplicate models, dangling relations, unknown types caught at parse.
- ○Source mapsv0.4.0
Map AST nodes back to source positions for better error messages.
runtime structure
- ●Schema graphv0.1.0
Models, fields, enums, relations, indexes — in memory.
- ●Indexed lookupsv0.1.0
0.73ms for 1000 lookups against a 1000-model graph.
- ●Diff algorithmv0.2.0
Old graph vs new graph → structural changes. Powers migrations.
- ●Type generationv0.2.0
generateTypes(graph) emits .d.ts from the runtime graph.
- ●Snapshot serializationv0.2.0
serializeSchemaGraph / deserializeSchemaGraph + snapshots table.
AST → SQL
- ●SELECT · INSERT · UPDATE · DELETEv0.1.0
Every CRUD path compiles to parameterized SQL.
- ●WHERE operatorsv0.1.0
14 operators across 5 groups, all parameterized.
- ●Joins via includev0.3.0
Eager-fetch in one statement. Per-relation select + _count landed in v0.3.
- ●Aggregates · groupByv0.3.0
groupBy/having on ModelAPI — compiler + typed client wired.
- ◐Window functionsv0.3.0
ROW_NUMBER / RANK / OVER on relational builder — ModelAPI wiring remains.
- ●Subquery operatorsv0.2.0
EXISTS, IN, correlated subqueries on the relational builder.
- ●Relation predicatesv0.3.0
To-one filters compile to (NOT) EXISTS — is / isNot / null.
- ●Atomic number updatesv0.3.0
increment/decrement/multiply/divide compile to SET col = col <op> $n.
- ●updateMany · deleteManyv0.3.0
Bulk ops return { count } on ModelAPI.
- ●Case-sensitive LIKEv0.3.0
Breaking: contains/startsWith/endsWith match SQL. mode: 'insensitive' opt-in.
- ·EXPLAIN integrationv1.0+
Query plans through typed client (Studio already has it).
- ●Set ops · LATERAL · LISTEN/NOTIFYv0.2.0
union/intersect/except, lateralJoin, listen/notify on relational builder.
- ●Search · full-text + trigram + vectorv0.2.0
search(), tsvectorSetupSql(), facets() — ranked text + vector.
- ●Postgres extension helpersv0.2.0
pgvector, pg_trgm, pgcrypto, pg_cron typed wrappers.
- ●Expression helpersv0.2.0
caseWhen, coalesce, JSON/array/range operator family.
prisma drop-in
- ●ZanithPrismaClientv0.3.0
Sync lazy-connect drop-in for PrismaClient. Auto-introspects when no schema configured.
- ●zanith compat scanv0.3.0
Heuristic doctor — names unsupported constructs before you swap.
- ●ZanithCompatErrorv0.3.0
No silent approximations — every untranslated construct throws with a name.
- ●client.$zanith escape hatchv0.3.0
Gradual migration — native ModelAPI alongside compat surface.
- ◐Production codebase validationv0.3.0
Gate before npm publish — compat layer vs 1,400-endpoint workload.
wire driver
- ●node-postgres (pg)v0.1.0
The default. Pool-aware.
- ●postgres.jsv0.1.0
Lighter startup. Same five-method interface.
- ●SQLite · better-sqlite3v0.2.0
File-backed and :memory: modes.
- ●SSL · SSH tunnelsv0.2.0
Five TLS modes plus bastion-tunneled Postgres.
- ●Transactionsv0.1.0
Auto-rollback on throw, isolation levels, savepoints.
- ●Constraint errorsv0.3.0
UniqueConstraintError, ForeignKeyError, NotNullError, SerializationError thrown by adapters.
- ○MySQL · MariaDBv0.4.0
Dialect shipped — adapter targeted for v0.4.
- ·Cloudflare D1 · Neon serverlessv1.0+
Edge-native and serverless adapters.
- ●Plugin system · query hooksv0.2.0
ZanithPlugin — onQuery / onResult / onError.
- ●Observability pluginsv0.2.0
console, slowQuery, structured, OpenTelemetry.
- ●Multi-tenancy strategiesv0.2.0
row-level · schema-based · database-based.
cli · devx
- ●Migrationsv0.2.0
generate · plan · verify · up · down · risk-scored.
- ●Recovery (Phase 2)v0.2.0
soft-drop · archive · restore · export · purge.
- ●Studio · web UIv0.2.0
Eight surfaces — tables, SQL, security, catalog, locks, RLS.
- ●CLI · migrate · recover · studio · dbv0.2.0
Same binary in dev and CI.
- ●introspectPostgres APIv0.3.0
pg_catalog → IntrospectedSchema → graph. Survives mid-migration drops.
- ◐Schema introspection · CLI emitterv0.3.0
pg_catalog → .zanith file from CLI — API shipped, emitter pending.
- ○Engine published to npmimminent
v0.2.0 in repo; registry publish gated on compat validation.
- ●Expand-contract migration helpersv0.2.0
expandContractRename / expandContractTypeChange multi-step plans.
- ●Preflight checksv0.2.0
Probe live data before risky DDL — 6/6 proof tests.
- ●Flagship migrate claimsv0.3.0
16 adversarial proofs — destructive gate, soft-drop, archive, reseed.
the public surface
- ●Marketing · /why · /examples · /proofv0.2.0
Architectural case + sourced receipts. /proof and /examples overhauled.
- ●Docs framework · /docs/*v0.1.0
Sidebar / TOC / pager — 9 sections.
- ●Docs content · 53 pagesv0.2.0
Getting Started, Compat, Schema, Queries, Advanced, Production, Studio, Migrate, Reference.
- ●JSON-LD + AEOv0.2.0
Per-page metadata, sitemap, robots, llms.txt.
- ○Sourced competitor benchmarksv0.4.0
Matched workloads vs Prisma, Drizzle, TypeORM — tracked on /proof §06.
parser · graph · compiler · compat · adapter · tooling · site
Same map, sliced by version.
- v0.1
Foundation
shippedshipped May 2026·An engine you can run a query through.The runtime engine, end to end.
- Schema parser
Chevrotain + validator
- Runtime graph
1k models, 3.4MB
- Query compiler
Parameterized SQL on every path
- ModelAPI · CRUD
find / create / update / delete
- WHERE operators
14 operators, 5 groups
- Transactions
Auto-rollback on throw
- Adapters · pg + postgres.js
5-method interface
- TypeScript inference
Compile-time field safety
- v0.2
Productionisation
shippedshipped May 2026·An engine a team can deploy against.The engine grows the surfaces a team actually adopts.
- Migrations
generate · plan · verify · up · down · risk-scored
- Recovery (Phase 2)
soft-drop · archive · restore · cleanup
- Studio · web UI
8 tabs across workspace + database levels
- SQLite adapter
better-sqlite3 · file or :memory:
- SSL · SSH tunnels
TLS modes + bastion-tunneled Postgres
- CLI
zanith migrate · recover · studio · db
- v0.3
Query API
in flighttarget · Q3 2026·Run Prisma codebases on Zanith without rewriting call sites.On main, unreleased — Prisma-class surface + compat layer.
landed on main · 8
- Prisma compat layer81 tests · drop-in PrismaClient · $zanith escape hatch
- Relation predicatesEXISTS filters · is / isNot / null on to-one relations
- Per-relation projection + countsinclude: { rel: { select } } · relationCounts → _count
- Atomic updates + bulk opsincrement/decrement · updateMany/deleteMany
- Case-sensitive LIKEmode: 'insensitive' opt-in · matches Prisma/SQL semantics
- Constraint errorsUniqueConstraintError · ForeignKeyError · thrown by adapters
- Introspect hardeningSurvives tables dropped mid-introspection
- Flagship migrate proofs16 tests — destructive gate · archive · reseed
remaining · 5
- Introspection CLI emitterpg_catalog → .zanith file from CLI
- Window functions · ModelAPIcompiler shipped on relational builder · typed client wiring
- npm publish v0.3gate: production compat validation
- m2m junction column-name bugdocumented in proof suite · workaround in 02-relation-correctness
- Shadow-verify representation gapreal drift caught · matching plans over-strict
- v0.4
Beyond Postgres
plannedtarget · Q4 2026·A third dialect ships — proves the agnostic claim.Multi-database, properly.
- MySQL · MariaDB adapter
Dialect already shipped in v0.2
- Source maps · errors
Map AST nodes to source positions
- Sourced benchmarks
Matched workloads vs Prisma/Drizzle/TypeORM
- v1.0
Production
horizontarget · Speculative·SemVer-stable Zanith, competing with Prisma feature-for-feature.What signals the engine is enterprise-ready.
- Stable public API
SemVer commitments, deprecation policy
- EXPLAIN integration · ModelAPI
Query plans in typed client
- Edge adapters
D1 · Neon serverless, exploratory
- Long-running stability
Memory churn, leak budgets