Skip to content

chore(schema)!: collapse the schema version back to 2.0.0 - #144

Merged
rahlk merged 1 commit into
mainfrom
chore/schema-version-2-0-0
Sep 3, 2026
Merged

chore(schema)!: collapse the schema version back to 2.0.0#144
rahlk merged 1 commit into
mainfrom
chore/schema-version-2-0-0

Conversation

@rahlk

@rahlk rahlk commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Both version constants read 2.1.0 — the JSON envelope (src/schema/emit.ts:35) and the Neo4j contract (src/build/neo4j/schema.ts:22). Intermediate 2.x versions are not meaningful while the schema design is still settling and every analyzer re-baselines together later, so there is one schema version and it is 2.0.0.

Scope

This resets both, not just the Neo4j one. schema_version in analysis.json was also 2.1.0, and leaving it there would contradict the whole point of having a single version.

Comments that named 2.1.0 as a version boundary ("pre-2.1.0 ids", "additive within 2.1.0") now reference the issue that introduced the behaviour — #92, anonymous callables — rather than a version that no longer exists.

Migration

None needed. The Neo4j version gate is a plain inequality (shouldForceFullUpsert, bolt.ts:38), so a database written by a 2.1.0 build reads as a mismatch and is repopulated by a single full upsert on the next push.

Verification

  • bun test — 238 pass, 0 fail (two assertions updated: schema-v2.test.ts, anonymous-callables.test.ts)
  • container tests run — 4 pass against live Neo4j
  • bun run typecheck clean, schema.neo4j.json regenerated to 2.0.0

Note

Marked ! because consumers pinning schema_version == "2.1.0" will see 2.0.0. Nothing in this repo gates on it beyond the upsert path above, but the shipped v1.1.0 advertised 2.1.0, so it is a visible contract move rather than a silent one.

Both version constants read 2.1.0 — the JSON envelope (src/schema/emit.ts) and the
Neo4j contract (src/build/neo4j/schema.ts). Intermediate 2.x versions are not
meaningful while the schema design is still settling, and every analyzer will
re-baseline together later, so there is one schema version and it is 2.0.0.

Comments that named 2.1.0 as a version boundary now reference the issue that
introduced the behaviour (#92, anonymous callables) instead of a version that no
longer exists.

The Neo4j version gate is a plain inequality (`shouldForceFullUpsert`), so a
database written by a 2.1.0 build is treated as a mismatch and repopulated by one
full upsert on the next push. No manual migration.
@rahlk
rahlk merged commit 523d121 into main Sep 3, 2026
1 check passed
@rahlk rahlk mentioned this pull request Sep 3, 2026
rahlk added a commit that referenced this pull request Sep 3, 2026
ANALYZER_VERSION moves with package.json because it is the cache-invalidation key
(utils/cache.ts): this release changes artifact text capture (#117) and per-module
id namespacing (#115), so a warm 1.1.0 cache must not be reused against it.

Neo4j schema contract is 2.0.0 as of #144 — collapsed back from 2.1.0, since
intermediate 2.x versions are not meaningful until every analyzer re-baselines
together.

Released as a MINOR despite three breaking-marked commits (#115, #117, #144), by
explicit decision. The release notes lead with those breaks and their migrations.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant