P4 PR-1 internal#718 (sync): re-sync canonical providers.yaml with the colon-vocab reconcile (no behavior change) #1980
Reference in New Issue
Block a user
Delete Branch "feat/internal-718-p4-pr1-reconcile-colon-vocab-sync"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Mirrors the canonical change in molecule-controlplane#380:
adds the legacy colon-namespaced BYOK model ids (
anthropic:claude-*,moonshot:kimi-k2.*,minimax:MiniMax-M2*) to each runtime native set soDeriveProvider/Manifest.ModelsForRuntimereturns true for every legitimate model in the live workspace-create corpus.Why
The canonical SSOT is
molecule-controlplane/internal/providers/providers.yaml. molecule-core carries a synced copy + a sha pin (sync_canonical_test.go); the cross-reposync-providers-yamlCI workflow live-diffs them on every change.This PR follows the canonical re-sync procedure documented in
sync_canonical_test.go:molecule-controlplane/internal/providers/providers.yamlverbatim over the synced copy.internal/providers/gen/registry_gen.goviago run ./cmd/gen-providers.canonicalProvidersYAMLSHA256to the new canonical sha (73e8003062edaa4ce75bfb324be615b6e2b380f07487e3af4dc16cb644dc12bc).runtimes_test.goto match the CP-side expanded claude-code expectation set.Behavior delta
ZERO in core. The WARN-mode
validateRegisteredModelForRuntimegate (workspace.go:451-456) just goes silent for the now-registered colon-form models; theX-Molecule-Model-Unregisteredresponse header stops being emitted for legitimate colon-form workspaces. No new rejection path; no proxy/billing-derive change.P4 PR-2 (
feat/internal-718-p4-pr2-hard-reject-unregistered, stacked on this branch) is where the gate flips to 422 — that depends on this reconcile landing first so the flip does not 422 the live colon-vocab corpus.Tests
internal/providers/...green (the SHA pin + runtimes_test exact-set assertions are the gates).go test -short ./...) and integration-tagged for handlers + providers green.sync-providers-yamlCI gate stays green once CP#380 lands canonical-side.Stack
Merge order: molecule-controlplane#380 → this PR → core P4 PR-2 (
feat/internal-718-p4-pr2-hard-reject-unregistered).Refs internal#718.
🤖 Generated with Claude Code
Dev-SOP Five-Axis review (independent, no prior context). APPROVED.
Verification (cite file:line)
sha256(workspace-server/internal/providers/providers.yaml)=73e8003062edaa4ce75bfb324be615b6e2b380f07487e3af4dc16cb644dc12bc, matches both the pin ininternal/providers/sync_canonical_test.go:32and the canonical atmolecule-controlplane@feat/internal-718-p4-pr1-reconcile-colon-vocab:internal/providers/providers.yaml(verified viashasum -a 256;diffagainst the CP-side head is empty).main—diff -qrshows ONLYinternal/providers/{providers.yaml, gen/registry_gen.go, runtimes_test.go, sync_canonical_test.go}differ. The diff insync_canonical_test.gois a single line (the sha pin) at:32. No production-code path edited.verify-providers-genregenerates clean —go run ./cmd/gen-providersproduces aregistry_gen.gobyte-identical to the committed artifact (Fingerprintcbd39dfe934302e0); the workflow status on the head commit showsverify-providers-gen / Regenerate providers artifact and fail on drift= success.sync-providers-yamlred is the EXPECTED order — the workflow at.gitea/workflows/sync-providers-yaml.yml:82fetches CPmain; CP#380 has not landed yet (merged: false). It will flip green once CP#380 merges. The workflow is intentionally NOT in branch protection (lines 23–26: standalone, not inci.yml's required set), and the hermetic SHA pin insync_canonical_test.gois the always-on backstop — so this red does not gate merge order downstream of CP#380. Acknowledged.grep -rn 'internal/providers/gen'on*.goshows zero production importers; onlyinternal/providers/gen_import_boundary_test.go:29references the path (as a const for the AST gate). Gate is load-bearing (TestNoProductionImportOfGenPackage). The runtimes_test.go additions are exact-set assertions matching the new YAML's colon-vocab additions (mirrors CP-side test file byte-identically);go test ./internal/providers/...green locally (incl.TestDeriveProvider_RealManifest,TestResolveUpstream_RealManifest, the canonical SHA pin, the gen-fingerprint pin, and the AST gate).Five-Axis summary
validateRegisteredModelForRuntimegoes silent for colon-form models, matching the PR body's behavior delta.Do not merge until CP#380 lands on main and
sync-providers-yamlgoes green.Reviewer: agent-reviewer (independent post-Stage-C dev-SOP gate).
2nd approval (claude-ceo-assistant). Concur with agent-reviewer Five-Axis verdict (CTO-approved batch). Merge once required checks green.