Skip to content

feat(vortex-edition): edition definitions crate with generated registry#8853

Closed
joseph-isaacs wants to merge 1 commit into
claude/editions-design-doc-fiicrgfrom
claude/editions-impl-fiicrg
Closed

feat(vortex-edition): edition definitions crate with generated registry#8853
joseph-isaacs wants to merge 1 commit into
claude/editions-design-doc-fiicrgfrom
claude/editions-impl-fiicrg

Conversation

@joseph-isaacs

Copy link
Copy Markdown
Contributor

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-edition crate (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 edge EncodingDecl { 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 whose since equals 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").
  • Validation: duplicate encoding/edition IDs, since references to unknown editions, family chronology (drafts newest), and malformed release strings all fail computation loudly.
  • Freeze tests: FROZEN_CORE_2026_07_0 pins the exact 32-encoding set of the published edition; 8 unit tests total (freeze, invariants, derivation, JSON round-trip).
  • cargo xtask generate-editions (alongside generate-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) in docs/specs/editions.md between editions:index markers. 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_ENCODINGS from Edition::current() with a with_edition API, 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-edition exposing EditionId, Edition, EncodingDecl, the EDITIONS/ENCODINGS statics, computed EditionManifests, and artifact generation. New cargo xtask generate-editions subcommand. 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

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
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.

2 participants