docs(schema): reconcile ADR-150, ADR-083, the design, and docs with the engine [roadmap:deterministic-substrate] - #496
Merged
Conversation
…deterministic-substrate] Implements decisions/roadmaps/deterministic-substrate.md (Tranche C). The v1 and v2 serving composition sites wrapped an error whose display already leads with its stable code in a Composition error that prefixes the code again, so decided-mcp reported, for example, "corpus-federation-artifact-type-conflict: corpus-federation-artifact- type-conflict: ..." with or without the cache. Strip the leading code once when wrapping.
…ot [roadmap:deterministic-substrate] Implements decisions/roadmaps/deterministic-substrate.md (Tranche C). Runs the live-collision scenario with and without the cache and asserts the finding text continues with its detail after one code prefix; the previous prefix-only assertion also matched the doubled form.
…tic-substrate] Implements decisions/roadmaps/deterministic-substrate.md (Tranche C). A type alias for the case table clears the clippy type_complexity lint that cargo clippy --all-targets reports on the test target.
…n with the engine [roadmap:deterministic-substrate] Implements decisions/roadmaps/deterministic-substrate.md (Tranche C). - ADR-150: decision 1 states own-first bottom-up composition and that a different-content duplicate is decision 2's conflict, not a skip; decision 6 is per source; the Consequences match schema --corpus and that an override cannot un-inherit an uncontested type; the amendment notes that order fixes the classification tie-break. - ADR-083: a dated amendment records that ADR-150 replaces decision 9's federation scoping and how decided-mcp meets the "watched" clause; decision 9 is marked; adr-150 joins Related Decisions. - Design: a duplicate override name is artifact-spec-bundle-config-invalid; bundle-level failures are hard errors, not warnings, and the nonexistent artifact-spec-bundle-skipped code is gone; MCP freshness, parent-order, un-inheriting, digest-bump, and memo-leak wording match the implementation.
… docs [roadmap:deterministic-substrate] Implements decisions/roadmaps/deterministic-substrate.md (Tranche C). States how a running decided-mcp follows a re-pin, that schema and templates list the effective registry given --corpus, and that validate --json reports artifact_spec_bundles for an unfederated bundle too; records the doubled-prefix fix in the changelog.
tcballard
force-pushed
the
claude/spec-corpus-corrections
branch
from
September 22, 2026 21:53
2be95b6 to
f913cf8
Compare
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.
Summary
This is PR F, the last in the post-merge review series: corpus and documentation corrections, plus one small engine fix that the docs pass surfaced.
Engine fix.
decided-mcpnamed a federation composition failure's stable code twice when composition failed mid-session, for examplecorpus-federation-artifact-type-conflict: corpus-federation-artifact-type-conflict: source …. Both serving composition sites inderived_cache.rs(v1 and v2) wrapped an error whose display already leads with the code in aCompositionerror that prefixes it again. I reproduced it live. It happens with and without the cache: the existing test'sstarts_with("…conflict: ")assertion also matched the doubled form, so it never caught it.ADR-150 (wording amended to match the accepted intent and the implementation; no decision changes):
schema --listdiffers by closure without--corpus, or that an override can un-inherit a type. An override only settles a collision.ADR-083:
decided-mcpmeets decision 9's "watched" clause: it re-syncs the registry per call, not through the file-freshness watch list.adr-150joins Related Decisions, which clears theunlinked-referencedoctor finding.Design (
third-party-artifact-extensibility):artifact-spec-bundle-config-invalid, notcorpus-federation-invalid-override. The test already pins this.findandresolveexit 0".artifact-spec-bundle-skippedcode is removed.docs/validation.md:
schema/templateswith--corpusis documented; the old line said they take no corpus directory.validate --jsonreportsartifact_spec_bundlesfor an unfederated bundle too.Tests:
clippy::type_complexitylint that--all-targetsreports ondecided/tests/spec_federation.rs.Roadmap / ADR Trace
decisions/roadmaps/deterministic-substrate.md(Tranche C)Scope
rust/rac-engine/src/derived_cache.rs:FederatedCacheError::from_composition_displayat both composition sites.rust/decided-mcp/tests/spec_federation.rs: cached and uncached live collision.rust/decided/tests/spec_federation.rs:OverrideCasealias.decisions/decisions/adr-150-…md,decisions/decisions/adr-083-…md,decisions/designs/third-party-artifact-extensibility.md.docs/validation.md,CHANGELOG.md.Product / Architecture Decisions
User-Facing Contract
decided-mcperror text for a mid-session composition failure loses its duplicated code prefix. The code,isError, and the detail are unchanged.mainon the same tree.Verification
cargo fmt --check;cargo clippy --workspace --release --no-deps -- -D warnings(the CI invocation) and--all-targets: clean;cargo test --workspace --release: pass.validate,relationships --validate,review(no P1/P2),export --agent-rules --check,watchkeeper --base origin/main: all exit 0.Review Path
derived_cache.rs(one constructor, two call sites).docs/validation.md, then the tests.Notes For Reviewer
### Fixed, so each merge after the first needs a trivial CHANGELOG resolution. This PR also edits design andvalidation.mdparagraphs next to ones fix(schema): make inherited type composition scope- and topology-exact [roadmap:deterministic-substrate] #495 edits, but never the same lines.Implements …body line. The GitHub rebase merges recorded the committer as the GitHub account's address rather thantom@armytage.co. Both sit inmain's history, and rewriting it is out of bounds; a merge method that preserves the committer avoids the second going forward.Implementation Process
Implemented with AI assistance under the roadmap contract; final scope, review, and acceptance decisions were made by the maintainer.