90dbd53ade
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 3s
CI / Template validation (static) (push) Successful in 7s
sync-providers-yaml / Compare synced providers.yaml against controlplane canonical (pull_request) Successful in 4s
CI / Adapter unit tests (push) Successful in 8s
CI / Template validation (static) (pull_request) Successful in 8s
CI / Adapter unit tests (pull_request) Successful in 8s
verify-providers-projection / Regenerate projection, fail on drift, assert registry ⊆ template (pull_request) Successful in 1m22s
CI / Template validation (runtime) (pull_request) Successful in 4m52s
CI / Template validation (runtime) (push) Successful in 4m53s
CI / T4 tier-4 conformance (live) (push) Successful in 4m56s
CI / T4 tier-4 conformance (live) (pull_request) Successful in 4m55s
CI / validate (push) Successful in 8s
CI / validate (pull_request) Successful in 7s
The sync-providers-yaml gate was failing because the template's providers.yaml had drifted ~400 lines behind controlplane canonical (a629230d). Copy the canonical file verbatim, then regenerate registry-projection.json via registry_projection.py. This preserves the PR's intent (removes stale moonshot:/minimax: colon BYOK forms from claude-code) because controlplane canonical already has those removals. Also passes all 6 registry projection tests including the new moonshot/minimax exclusion tests. Fixes CI: sync-providers-yaml / Compare synced providers.yaml