rfc: drop the legacy id alias from RFC 0040 and define its upgrade protocol - #688
Merged
Merged
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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.
What & why
This PR amends the merged RFC 0040 (#546, status
draft) with the source-verified findings of its second review, and renumbers it against #593 and #686. One file; each superseded sentence is named in the Decision log.$p.idor a bareidpredicate to the system column (it resolves against declared properties only), so the coexistence row, the deprecation lint, the.gqrewrite tool, and the two-revision rollout addressed a surface that did not exist.$p.idis a declared user property on both vintages; the meta-fields$p.@id/$e.@src/$e.@dstare the only identity accessor; stored queries need no change at the upgrade.idbesidetype/edge, out ofdata, so a user property namedidround-trips; legacydata.idstill loads on old-vintage graphs.snapshot_at(version)).SchemaApplyintent: preflight refuses__id/__src/__dstand_-named properties and non-main branches before any effect; effects run in order (stamp advance, one rename-onlyalter_columnsper table, publish, promotion with_schema.pgrespelled); recovery is roll-forward-only under the existing schema-apply failpoints plus one between renames; a read-only open refuses a pending intent.__manifestinternal-schema stamp advances 7 to 8 on new-vintage graphs, read before the recovery sweeps on every binary, so no earlier binary writes before refusing; this binary serves {7, 8}, which retires the single-version storage contract (owners named in Rollout step 2).blocked_onclosed: on Lance 11.0.0 a rename-onlyalter_columnsis a field-ID-preservingProjectthat leaves fragments and indexes in place, pinned as a Lance surface guard; the one-shot migration tool fallback is retired.@unique(@src, @dst)on both vintages; baresrc/dstin a constraint list keeps the role meaning on old-vintage graphs only, and the upgrade respells it.ir_versionis 5 (feat(engine): add edge keys with derived identity #593 took 4 for edge keys, 3 stays burned per RFC 0054), the stamp scheme is {7, 8} (feat(storage): totally order table registrations by the manifest version #686 took 7), andrefuse_unsupported_schema_versions(RFC 0054's withdrawal) now refuses an unknown number before recovery on main, so the stamp's two remaining reasons are stated.Backing issue / RFC
docs/rfcs/0040-system-column-namespace.md(merged as draft in rfc: add RFC 0040, the system column namespace #546; discussion bug: a node property namedidsilently collides with the implicit physical id column, and @key then fails claiming the property is undeclared #529). Merge is not acceptance; the registry row stayspublic / draft / in-progress.Checklist
docs/user/schema/index.md§IDs,docs/dev/ingestion.md,docs/user/operations/upgrade.md,docs/dev/versioning.md)Local verification
python3 scripts/check-docs.py— Documentation OK (134 Markdown files checked)typos docs/rfcs/0040-system-column-namespace.md— cleancargo check --workspace— not run: docs-only diff, one file underdocs/rfcs/Notes for reviewers
idbesidetype/edgeinstead of insidedata, and the identity member of a projected node object (return { $p }) becomes@id(todayid, a member a declared propertyidwould take). An export written by this release does not load into an older binary.edge-keys, retiring its deferral) lands with or before 0044's acceptance.