Conversation
ragnorc
force-pushed
the
claude/rfc-0067-stamp-v10
branch
from
September 16, 2026 16:24
4272c03 to
62f15e9
Compare
This was referenced Sep 16, 2026
Closed
ragnorc
force-pushed
the
claude/rfc-0067-stamp-v10
branch
from
September 17, 2026 07:00
62f15e9 to
755f9ef
Compare
…t route from v8 and v9 Normal open serves internal manifest schema v10 only. v10 lets a table registration name a detached Lance version whose linear target is published before it exists; an older binary would open the absent target and misread a pending pin as reclaimed history, so the stamp refuses it before any open. Both system column vintages are born at v10 and the vintage is read from the schema IR, never from the stamp. - omnigraph upgrade defaults to v10: v6 -> v7 -> v8 -> v10, v7 -> v8 -> v10, v8 -> v10 and v9 -> v10. The new detached-pins-v8-v9-to-v10 handler restamps main and every live branch under one intent and touches nothing else; retired ancestors keep their stamp; a receipt from an earlier step of the same route counts as a completed predecessor. v9 is not a target. - The system-column respelling leaves the storage route and runs on a served graph with no stamp change; the dead per-vintage stamp floor is removed. - Refusals name the in-place route for v6 to v9 and the 0.11.x release for v8 and v9. - Tests, CI job names, the OpenAPI description, and the versioning, upgrade, testing, CI and Lance guides follow; release note under compatibility.
The workflow greps already name the current fence tests after the served format, and the default route now continues through a branched v8 graph to v10 and refuses an ambiguous lifetime at its v7 -> v8 step: the genuine v0.9/v0.10 journeys check first, execute, then prove the v8 stop is a refused downgrade.
ragnorc
force-pushed
the
claude/rfc-0067-pins-and-promotion
branch
from
September 17, 2026 07:52
3268efd to
7c1b662
Compare
ragnorc
force-pushed
the
claude/rfc-0067-stamp-v10
branch
from
September 17, 2026 07:52
755f9ef to
b22bc17
Compare
Contributor
Author
|
Consolidated into #744, which carries this stack's complete history merged with current main and revalidated as one tree. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
RFC 0067 rollout step 2, the storage stamp. Stacked on #727 (base branch; retargets to
mainwhen the stack below it merges). No detached writer exists yet; this PR puts the fence in place so the first one (mutation and load, next PR) lands behind it.What changes
INTERNAL_MANIFEST_SCHEMA_VERSIONandMIN_SUPPORTED_INTERNAL_SCHEMA_VERSIONare both 10. v10 means a table registration may carryomnigraph.staged_versionandomnigraph.transaction_uuid(RFC 0067); an older binary would open the absent linear target of a pending pin and misdiagnose it as reclaimed history, so the stamp refuses it before any open. Both RFC 0040 system column vintages are born at v10; the vintage is read from the schema IR, never from the stamp.omnigraph upgradedefaults to v10: v6 → v7 → v8 → v10, v7 → v8 → v10, v8 → v10 and v9 → v10. The new handlerdetached-pins-v8-v9-to-v10(intent protocol 3) restamps main and every live branch under one intent and touches nothing else; retired ancestors keep their stamp; a v8 or v9 source skips the retained-history qualification the v6/v7 handlers need. A receipt from an earlier step of the same route is recognised as a completed predecessor instead of a foreign attempt.--to-format 7and8remain for older executables; v9 is not a target.omnigraph schema upgrade-system-columns) with no stamp change: the stamp advance inside its intent is a no-op (publish_stamp_advanceacceptsfrom == to), its preflight no longer refuses branched graphs on the route, and the dead per-vintage stamp floor (stamp_covers_system_columns) is removed with the open-time re-read that fed it.omnigraph upgradeas the in-place route and the 0.11.x release for v8 and v9.Tests and docs
migrations.rs: the served range and birth stamps.upgrade/tests.rs: the synthetic v6 and legacy v8 routes end at v10 with spellings and branches kept, a new v9 → v10 case, the retired-ancestry case runs the route and checks the ancestor keeps v8, the already-current case's target table, and the v7 → v8 interruption, history and pending-intent cases continue to v10 before the graph is served.manifest/tests.rs: a sub-floor stamp refuses before any effect on both vintages; the genesis probe separates a foreign initializer by lineage since both vintages share one stamp.tests/system_column_upgrade.rs,legacy_columns.rs,lifecycle.rs: stamps read 10.crossversion_upgrade.rs: the fences arecurrent_v10_*, the rebuilt-graph check expects 10, and the genuine v0.9/v0.10 journeys run the default route to v10 on their branched fixtures after the--to-format 8stop.ci.yml: the same names; theV5 ↔ V9 Format Fencejob is nowV5 ↔ V10 Format Fence(if that context is in branch protection, it needs the new name).openapi.json: the health field's description (the binary serves one stamp).versioning.md(contract, v10 entry, route text, support matrix),upgrade.md,testing.md,ci.md,lance.md, and the v0.12.0 release note under compatibility changes.Run locally: the canonical workspace test graph (every engine, server, cluster, CLI, compiler, policy and storage suite; the CLI system suites need the server binary at
target/debugas CI has it; the benchmark provenance unit tests fail here only because they rungit commitunder a signing agent this shell cannot reach), the GQT lib, runner dispatch and corpus, both Clippy graphs,cargo fmt,check-docs.py,typos,check-agents-md.sh,check-workflow-action-pins.pyandcheck-storage-upgrade-ci.py --self-test. The predecessor-binary fences skip locally as documented.Next
Step 3 converts mutation and load to detached staging with held-handle promotion and ports the failure-window matrix onto seams; later steps convert ensure-indices, merge and Optimize, each deleting its sidecar kind.