feat(vortex-edition): edition definitions crate with generated registry#8853
Closed
joseph-isaacs wants to merge 1 commit into
Closed
feat(vortex-edition): edition definitions crate with generated registry#8853joseph-isaacs wants to merge 1 commit into
joseph-isaacs wants to merge 1 commit into
Conversation
Implement editions as data: the vortex-edition crate stores the edition
list (Edition {id, draft}; freeze date inferred from the identifier) and
the per-encoding membership edges (EncodingDecl {id, since,
required_vortex_release}). Manifests are computed with validation
(duplicate ids, unknown editions, family chronology, malformed
releases), the edition-level required Vortex release derives as the max
over member edges with a first-release-containing-the-edition fallback,
and golden tests freeze the published core2026.07.0 set.
cargo xtask generate-editions renders one JSON definition and one page
per edition (pages render from the re-parsed JSON so the two cannot
disagree) and rewrites the generated registry index in
docs/specs/editions.md between markers. Adds the contributor-facing
implementation notes in docs/developer-guide/internals/editions.md
covering the data model, inference rules, pipeline, and the
stabilize/cut-an-edition workflows.
Signed-off-by: "Claude" <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KdR42Svu74NcNzC7XJYwLr
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.
Rationale for this change
Implements the editions model introduced in #8852 as a single source of truth in code, so the published registry, writer enforcement, and freeze guarantees all derive from one place instead of being hand-maintained. Stacked on #8852.
What changes are included in this PR?
vortex-editioncrate (dependency-free except serde): the stored model is minimal —Edition { id, draft }(freeze date inferred from the identifier:core2026.07.0→ 2026-07) and the membership edgeEncodingDecl { id, since, required_vortex_release }. Everything else is derived: status/lineage per family, the encoding set per edition, the delta vs. the superseded edition (members whosesinceequals the edition's id), and the edition-level required Vortex release (max over member edges when all are recorded, falling back to "first release containing the frozen edition").sincereferences to unknown editions, family chronology (drafts newest), and malformed release strings all fail computation loudly.FROZEN_CORE_2026_07_0pins the exact 32-encoding set of the published edition; 8 unit tests total (freeze, invariants, derivation, JSON round-trip).cargo xtask generate-editions(alongsidegenerate-fbs/generate-proto): writes one JSON definition and one Markdown page per edition — pages render from the re-parsed JSON so the two cannot disagree — and rewrites the registry index (table + hidden toctree) indocs/specs/editions.mdbetweeneditions:indexmarkers. The hand-written registry from docs: introduce Vortex editions for users of the file format #8852 becomes generated output.docs/developer-guide/internals/editions.md: contributor-facing notes on the data model, the required-release inference rules, the generation pipeline, and the stabilize-an-encoding / cut-an-edition workflows, linked from the spec page.Checks run:
cargo test -p vortex-edition(8 passed),cargo clippy -p vortex-edition -p xtask --all-targets,cargo +nightly fmt,git diff --check, and a clean Sphinx docs build.Not yet wired up (documented in the internals page): deriving the writer's
ALLOWED_ENCODINGSfromEdition::current()with awith_editionAPI, the session cross-check test, release tooling that records the inferred required release, reader error messages linking the registry, and layout declarations.What APIs are changed? Are there any user-facing changes?
New (unpublished-consumer) crate
vortex-editionexposingEditionId,Edition,EncodingDecl, theEDITIONS/ENCODINGSstatics, computedEditionManifests, and artifact generation. Newcargo xtask generate-editionssubcommand. User-facing docs gain generated per-edition pages with machine-readable JSON definitions. No existing APIs change.🤖 Generated with Claude Code
https://claude.ai/code/session_01KdR42Svu74NcNzC7XJYwLr
Generated by Claude Code