Skip to content

spec: adopt extraction-compatibility spec (014), amend 013 for a 20th spec it missed#61

Merged
enricopiovesan merged 1 commit into
mainfrom
claude/spec-014-extraction-compatibility
Jul 21, 2026
Merged

spec: adopt extraction-compatibility spec (014), amend 013 for a 20th spec it missed#61
enricopiovesan merged 1 commit into
mainfrom
claude/spec-014-extraction-compatibility

Conversation

@enricopiovesan

@enricopiovesan enricopiovesan commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Summary

Supersedes Codex's #58/#59 (closed) with a verified, much smaller design. Full investigation and reasoning: docs/decision-log.md entry 33.

The extracted crate resolves its own governing-spec registry at compile time, relative to its own directory. Physically relocating crates/traverse-registry/ from traverse to this repo changes which approved-specs.json that resolves to, silently breaking two runtime checks (approved_spec_registry_contains, is_governed_artifact_path) for entirely unchanged pre-existing behavior.

A full audit of the crate's compiled source (every file, not a guess) found every literal spec-ID string it hardcodes — 13 total:

  • 10 real, currently-approved-in-traverse legacy IDs get a minimal passthrough entry here (specs/014-extraction-compatibility/spec.md FR-001): 002-capability-contracts, 005-capability-registry, 007-workflow-registry-traversal, 011-event-registry, 037-semver-range-resolution, 039-connector-plugin-architecture, 043-module-dependency-management, 044-application-bundle-manifest, 046-public-cli-app-registration, 055-registry-sync.
  • 999-unapproved-spec is a deliberate negative-test fixture — explicitly excluded (FR-003).
  • 015-metadata-graph and 026-federation-registry-routing don't exist in traverse's own current governance file at all — already-broken, pre-existing traverse-side bugs, unrelated to this extraction. Deliberately left unregistered (adding entries for IDs that were never valid would change behavior, not preserve it).

Also found (and fixed, licensed by 013's own FR-003 re-verification requirement): 002-capability-contracts also governs the crate and was missing from 013-inherited-registry-governance's source-specs table (a 20th spec, missed in the original 19-spec audit).

Zero Rust source changes. Zero new alias/retirement lifecycle — this repo's existing 013 precedent (inherited behavior preserved as-is, not re-authored) extends cleanly to this narrower problem.

Approved directly in this PR per decision 24 (co-brainstormed specs are approved by the brainstorm itself) — this session's /brainstorm with the repo owner is the approval event.

Governing Spec

  • 001-registry-foundation

Project Item

Definition of Done

  • specs/014-extraction-compatibility/spec.md added, approved
  • 10 legacy-ID passthrough entries added to specs/governance/approved-specs.json, each with a unique stub file under specs/014-extraction-compatibility/legacy-ids/
  • 013-inherited-registry-governance amended (licensed by its own FR-003) to add 002-capability-contracts
  • 999-unapproved-spec, 015-metadata-graph, 026-federation-registry-routing deliberately excluded
  • Decision-log entry 33 records the full investigation and decision

Validation

  • python3 scripts/ci/capability_validation.py — passed
  • python3 -m unittest scripts/ci/tests/test_capability_validation.py -v — 9/9 passing
  • Local replica of the spec-alignment registry-validation logic (duplicate id/path, approved/immutable, non-empty governs, path exists on disk) — no failures across all 24 entries
  • bash scripts/ci/spec_alignment_check.sh (run in CI against this PR)

… spec it missed

Replaces Codex's unverified alias/retirement-lifecycle proposal (#58/#59)
with a minimal, verified passthrough: 10 legacy spec-ID entries the
extracted crate's compiled source actually hardcodes and traverse still
approves today, so approved_spec_registry_contains()/is_governed_artifact_path()
keep working unchanged after the crate's physical relocation. Two other
hardcoded IDs (015-metadata-graph, 026-federation-registry-routing) are
deliberately left out -- verified absent from traverse's own current
governance file, a pre-existing traverse-side bug, not this repo's to fix.

013-inherited-registry-governance's source-specs table gains
002-capability-contracts, a 20th governing spec its original 19-spec audit
missed -- licensed by that spec's own FR-003 re-verification requirement.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@enricopiovesan
enricopiovesan enabled auto-merge (squash) July 21, 2026 17:01
auto-merge was automatically disabled July 21, 2026 17:03

Pull request was closed

@enricopiovesan
enricopiovesan merged commit c30e3e6 into main Jul 21, 2026
14 of 16 checks passed
@enricopiovesan
enricopiovesan deleted the claude/spec-014-extraction-compatibility branch July 21, 2026 17:04
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.

feat(registry): implement extraction compatibility bridge spec(registry): govern extraction compatibility bridge

1 participant