f7e2976324
ci-arm64-advisory / fast-checks (pull_request) Waiting to run
Lint shellcheck (arm64 pilot) / shellcheck-arm64 (pilot) (pull_request) Successful in 9s
Block internal-flavored paths / Block forbidden paths (pull_request) Successful in 7s
Check migration collisions / Migration version collision check (pull_request) Successful in 10s
CI / Detect changes (pull_request) Successful in 7s
CI / Python Lint & Test (pull_request) Successful in 5s
E2E API Smoke Test / detect-changes (pull_request) Successful in 7s
E2E Chat / detect-changes (pull_request) Successful in 7s
E2E Peer Visibility (literal MCP list_peers) / E2E Peer Visibility (pull_request) Successful in 5s
E2E Staging Canvas (Playwright) / detect-changes (pull_request) Successful in 10s
E2E Staging SaaS (full lifecycle) / E2E Staging SaaS (pull_request) Has been skipped
Handlers Postgres Integration / detect-changes (pull_request) Successful in 6s
Harness Replays / detect-changes (pull_request) Successful in 4s
Lint forbidden tenant-env keys / Scan workspace_secrets writers for forbidden env keys (pull_request) Successful in 4s
E2E Staging SaaS (full lifecycle) / pr-validate (pull_request) Successful in 33s
E2E Peer Visibility (literal MCP list_peers) / E2E Peer Visibility (local) (pull_request) Successful in 50s
Lint no tenant GITEA or GITHUB token write / Scan for repo-host token write into tenant workspace surface (pull_request) Successful in 8s
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 9s
lint-required-no-paths / lint-required-no-paths (pull_request) Successful in 58s
gate-check-v3 / gate-check (pull_request) Successful in 4s
qa-review / approved (pull_request) Successful in 3s
security-review / approved (pull_request) Successful in 3s
sop-checklist / na-declarations (pull_request) N/A: (none)
sop-checklist / all-items-acked (pull_request) Successful in 4s
sop-checklist / review-refire (pull_request) Has been skipped
sop-tier-check / tier-check (pull_request) Successful in 4s
Ops Scripts Tests / Ops scripts (unittest) (pull_request) Successful in 1m6s
E2E Staging External Runtime / E2E Staging External Runtime (pull_request) Successful in 5m25s
CI / Shellcheck (E2E scripts) (pull_request) Successful in 20s
E2E Chat / E2E Chat (pull_request) Successful in 33s
E2E Staging Canvas (Playwright) / Canvas tabs E2E (pull_request) Successful in 11s
E2E API Smoke Test / E2E API Smoke Test (pull_request) Successful in 1m58s
Handlers Postgres Integration / Handlers Postgres Integration (pull_request) Successful in 2m44s
Harness Replays / Harness Replays (pull_request) Successful in 6s
CI / Platform (Go) (pull_request) Successful in 6m9s
CI / Canvas (Next.js) (pull_request) Successful in 7m41s
CI / all-required (pull_request) Successful in 32m0s
CI / Canvas Deploy Reminder (pull_request) Has been skipped
audit-force-merge / audit (pull_request) Successful in 32s
57 lines
2.3 KiB
Bash
Executable File
57 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Per-runtime model slug dispatch for E2E provisioning.
|
|
#
|
|
# Different runtimes parse the model slug differently (PR #2571 incident,
|
|
# 2026-05-03):
|
|
#
|
|
# hermes → "openai/gpt-4o" (slash-form: derive-provider.sh splits
|
|
# on the prefix to set
|
|
# HERMES_INFERENCE_PROVIDER. Bare
|
|
# "gpt-4o" falls through to Anthropic
|
|
# default + 401, see PR #1714.)
|
|
#
|
|
# claude-code → auth-aware:
|
|
# E2E_MINIMAX_API_KEY → "MiniMax-M2"
|
|
# E2E_ANTHROPIC_API_KEY → "claude-sonnet-4-6"
|
|
# otherwise → "sonnet"
|
|
#
|
|
# claude-code provider routing is model-driven. The bare
|
|
# "sonnet" alias selects the OAuth provider, so it is only a
|
|
# good default when the canary is using Claude Code OAuth or
|
|
# intentionally exercising the missing-auth path. MiniMax and
|
|
# direct Anthropic API keys need model IDs that resolve to
|
|
# their provider entries, otherwise the workspace boots
|
|
# reachable but the first A2A call hits the wrong auth path.
|
|
#
|
|
# When E2E_MODEL_SLUG is set, it overrides this dispatch — useful when an
|
|
# operator dispatches the workflow to test a specific slug.
|
|
#
|
|
# Unit tested by tests/e2e/test_model_slug.sh — every branch must stay
|
|
# pinned because regressions silently mask as "Could not resolve
|
|
# authentication method" + the synth-E2E gate goes red without naming
|
|
# the slug-format mismatch.
|
|
|
|
# Usage: pick_model_slug <runtime>
|
|
# stdout: the slug string
|
|
# E2E_MODEL_SLUG (env): if set + non-empty, used as-is (operator override)
|
|
pick_model_slug() {
|
|
local runtime="${1:-}"
|
|
if [ -n "${E2E_MODEL_SLUG:-}" ]; then
|
|
printf '%s' "$E2E_MODEL_SLUG"
|
|
return 0
|
|
fi
|
|
case "$runtime" in
|
|
hermes) printf 'openai/gpt-4o' ;;
|
|
claude-code)
|
|
if [ -n "${E2E_MINIMAX_API_KEY:-}" ]; then
|
|
printf 'MiniMax-M2'
|
|
elif [ -n "${E2E_ANTHROPIC_API_KEY:-}" ]; then
|
|
printf 'claude-sonnet-4-6'
|
|
else
|
|
printf 'sonnet'
|
|
fi
|
|
;;
|
|
*) printf 'openai/gpt-4o' ;; # safest fallback (matches hermes)
|
|
esac
|
|
}
|