fix(e2e): satisfy MODEL_REQUIRED in peer-visibility staging gate (#2212) #2214
Reference in New Issue
Block a user
Delete Branch "fix/peer-visibility-test-model-required-2212"
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
Deterministic fix for the main-red
E2E Peer Visibility (literal MCP list_peers)gate (RCA in #2212).Root cause
tests/e2e/test_peer_visibility_mcp_staging.shcreated the PARENT workspace (and each per-runtime sibling) withruntime+secretsbut nomodelfield. Staging now enforces the workspace-create contract — there is no platform-side default model for a runtime (feedback_workspace_model_required_no_platform_default, the MODEL_REQUIRED gate). So the create was rejected withMODEL_REQUIREDbefore the peer-visibility assertion could run.Fix
Supply the required
modelon every workspace-create via a smallpv_platform_model_for_runtimehelper returning a platform-managed id (Molecule owns billing — no tenant key required; this gate only needs the workspace to boot + list peers, not heavy LLM work). Ids validated against the controlplane providers SSOT (internal/providers/providers.yaml→runtimes.<rt>.providers[platform].models):claude-codeanthropic/claude-sonnet-4-6runtimes.claude-code.providers[platform]claude-codeanthropic/claude-sonnet-4-6hermesmoonshot/kimi-k2.6runtimes.hermes.providers[platform]openclawmoonshot/kimi-k2.6runtimes.openclaw.providers[platform]E2E_MODEL_SLUGstill overrides for operator-dispatched runs, mirroringlib/model_slug.sh. Contract enforcement is not removed — the required field is supplied.Verification
bash -ncleanshellcheck -S warningclean (only pre-existing SC1091/SC2329 info notices, out of the pilot's.gitea/scriptsscope)lint-curl-status-capture.pyclean[platform]provider model list in the providers SSOT → create now passes MODEL_REQUIRED.Refs #2212.
🤖 Generated with Claude Code