fix(registry): close the case-registry loop (#68 B1/B2/H3) - #83
Merged
Conversation
…proval gate Addresses the #68 ship-blockers from the release-readiness audit: the registry was an open loop — after mu-setup wrote a v2 manifest nothing could read it back, nothing serialized the YAML, and the CLI wrote tracked files with no approval. - **B1** project-context manifest parser now understands schema_version 1 AND 2: a v2 manifest's optional `cases:` asset-router block parses and is captured in value.cases (provider-token semantics validated downstream, not here). Only schema 3+ degrades to unsupported-schema. cases is optional and rejected under v1. - **B2** new project-registry/manifest-io.mjs: serializeManifest renders a manifest value (v1 members + cases) as YAML the parser accepts, and readRouting validates the parsed cases block into a usable router. The loop closes: propose → serialize → parse → resolveProvider. - **H3** the CLI's init/write-kind/write-manifest are now gated on `approved: true` (present-before-write, enforced in code); the false "no tracked write" claims in cli.mjs, case-registry.md, and mu-setup are corrected. New write-manifest command serializes + writes .devmuse/project.yaml, never secrets. - release.yml now runs test:project-context/project-registry/cross-review (the 3.0 features' own tests were absent from the release gate — audit MEDIUM 6). - 3 loop tests (in-memory round-trip, through-disk round-trip via CLI, approval gate) + updated manifest tests for v1/v2/v3. Relates to #68. Resolves PR #81 threads B1/B2/H3. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KwyFyRC6pepaK6DuMK7YeT
huiyu
added a commit
that referenced
this pull request
Aug 24, 2026
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KwyFyRC6pepaK6DuMK7YeT
5 tasks
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.
Second fix off the 3.0 audit. Closes the #68 open loop — the registry can now actually be used after
mu-setup.cases:block parses and is captured (only schema 3+ degrades to unsupported-schema;casesis optional and rejected under v1).manifest-io.mjs:serializeManifestrenders a manifest value as YAML the parser accepts,readRoutingvalidates the parsed block into a usable router. The loop closes: propose → serialize → parse → resolveProvider.init/write-kind/write-manifestare gated onapproved: truein code; the false "no tracked write" claims are corrected; newwrite-manifestpersists.devmuse/project.yaml(never secrets).release.ymlnow runs the registry/context/cross-review suites (audit MEDIUM 6).Verified: 23 registry tests (incl. an in-memory and a through-disk round-trip and the approval gate) + updated v1/v2/v3 manifest tests; full suite + generated-drift green. Base
3.0. Resolves PR #81 threads B1/B2/H3.Remaining #68 (separate PR): H4 behavioral mu-setup test, H5 Xray transport + fake-provider test.
Relates to #68