zanith

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.

release runway · v0.1 → v1.0v0.3 in flight →
v0.1

Foundation

May 2026

v0.2

Productionisation

May 2026

v0.3

Query API

Q3 2026

v0.4

Beyond Postgres

Q4 2026

v1.0

Production

Speculative

0.2.0
repo version
53/53
proof suite
765/765
unit tests
81
compat tests
engine/ · vitest · pinned
$ npx vitest run
 
Test 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
02Momentum

What's moving, and what's still gated.

Seven lane rings show shipped progress. Below that: only the features still in flight, the three gates before npm, and where the test suite concentrates — without repeating the map or timeline.
shipped per lane83%45/54 features
67%

Parser

2/3

100%

Graph

5/5

87%

Compiler

13/15

80%

Compat

4/5

82%

Adapter

9/11

80%

Tooling

8/10

80%

Site & docs

4/5

in motion · 3 features
  • 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.

gates before npm
  • 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 →
03The map

The roadmap, laid out by the engine's own architecture.

Seven lanes — engine layers, compat, tooling, and site/docs. Filter by status, search anything, share the URL.
45/54shipped · 83%
across 7 lanes
shipped45in flight3planned4horizon2
54 / 54
filter
Parser3

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.

Graph5

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.

Compiler15

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.

Compat5

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.

Adapter11

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.

Tooling10

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.

Site & docs5

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

04Release tracks

Same map, sliced by version.

What ships in each release. The map above answers where in the engine? This row answers when? — with landed vs remaining for v0.3, not fake percentages.
2/5releases shipped
8/13v0.3 landed on main
v0.1 → v1.0
  1. v0.1

    Foundation

    shipped
    shipped 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

  2. v0.2

    Productionisation

    shipped
    shipped 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

  3. v0.3

    Query API

    in flight
    target · 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
  4. v0.4

    Beyond Postgres

    planned
    target · 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

  5. v1.0

    Production

    horizon
    target · 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

07 — Elsewhere

Follow the thread.