Skip to content

fix(registry): close the case-registry loop (#68 B1/B2/H3) - #83

Merged
huiyu merged 1 commit into
3.0from
fix/68-close-registry-loop
Aug 24, 2026
Merged

fix(registry): close the case-registry loop (#68 B1/B2/H3)#83
huiyu merged 1 commit into
3.0from
fix/68-close-registry-loop

Conversation

@huiyu

@huiyu huiyu commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Second fix off the 3.0 audit. Closes the #68 open loop — the registry can now actually be used after mu-setup.

  • B1 — the project-context manifest parser understands schema 1 and 2: a v2 cases: block parses and is captured (only schema 3+ degrades to unsupported-schema; cases is optional and rejected under v1).
  • B2 — new manifest-io.mjs: serializeManifest renders a manifest value as YAML the parser accepts, readRouting validates the parsed block into a usable router. The loop closes: propose → serialize → parse → resolveProvider.
  • H3init/write-kind/write-manifest are gated on approved: true in code; the false "no tracked write" claims are corrected; new write-manifest persists .devmuse/project.yaml (never secrets).
  • release.yml now 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

…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
huiyu merged commit 980a9ba into 3.0 Aug 24, 2026
1 check passed
huiyu added a commit that referenced this pull request Aug 24, 2026
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.

1 participant