Skip to content

PR3: Schema-version observability - #88

Closed
Diego Colombo (colombod) wants to merge 1 commit into
feat/session-node-data-qualityfrom
feat/schema-version-observability
Closed

PR3: Schema-version observability#88
Diego Colombo (colombod) wants to merge 1 commit into
feat/session-node-data-qualityfrom
feat/schema-version-observability

Conversation

@colombod

@colombod Diego Colombo (colombod) commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Third of the progressive split of #79. Stacks on PR2 (#87, session-node data quality) → PR1 (#85) → #81#78.

Delivers

  • Schema-version observability: the server records the graph SCHEMA_VERSION it wrote as a singleton baseline node (create-if-absent, no clobber, uniqueness-constrained), and /status reports expected-vs-observed drift (schema_version / graph_schema_version / schema_version_current).

Scope

  • Observability only.

Surface

  • Adds a schema_version_current field to /status → version 7.1.0 → 7.2.0 + CHANGELOG.

Verification

  • 2153 non-Neo4j tests pass (0 fail); 4 new Neo4j baseline tests pass (idempotence, uniqueness, concurrency); boot smoke green (/version → 7.2.0, /statusschema_version=1 graph_schema_version=1 schema_version_current=True).

Record the graph data-model version the server writes and report drift on
/status. Stacked on the session-node data-quality work; carries only the
schema-version subsystem (working_dir non-overwrite already shipped, blob
carrier-allowlist and cursor/queue work live in other changes).

SCHEMA_VERSION is the compiled model version, distinct from the server release
version. At startup, after the rest of the schema is established, the server
writes a single :SchemaMeta{id:'singleton'}.schema_version baseline
(create-if-absent, backed by a uniqueness constraint, kept off the per-worker
flush path so it fires once per boot rather than per worker). read path
(read_graph_schema_version) is structurally separate from the write path so no
comparison or migration logic can creep into either; it returns None on any
read failure so /status never raises.

GET /status now reports schema_version (compiled), graph_schema_version
(stored, or null when the graph is unreachable / never baselined / no driver),
and schema_version_current (true in sync, false on mismatch, null when
unknown). Advisory only: reported, never gated or migrated.

Tests: neo4j baseline idempotence + uniqueness-constraint + concurrent-writer
proofs; /status drift reporting unit tests (in-sync, drift, unknown).

Version 7.2.0.

🤖 Generated with [Amplifier](https://github.com/microsoft/amplifier)

Co-Authored-By: Amplifier <240397093+microsoft-amplifier@users.noreply.github.com>
@colombod
Diego Colombo (colombod) force-pushed the feat/schema-version-observability branch from f1a1736 to e40a572 Compare August 26, 2026 17:06
@colombod
Diego Colombo (colombod) marked this pull request as draft August 27, 2026 15:30
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