diff --git a/.gitea/workflows/continuous-synth-e2e.yml b/.gitea/workflows/continuous-synth-e2e.yml index d3f119a40..569a11197 100644 --- a/.gitea/workflows/continuous-synth-e2e.yml +++ b/.gitea/workflows/continuous-synth-e2e.yml @@ -118,7 +118,7 @@ jobs: timeout-minutes: 20 env: # claude-code default: cold-start ~5 min (comparable to langgraph), - # but uses MiniMax-M2.7-highspeed via the template's third-party- + # but uses MiniMax-M2 via the template's third-party- # Anthropic-compat path (workspace-configs-templates/claude-code- # default/config.yaml:64-69). MiniMax is ~5-10x cheaper than # gpt-4.1-mini per token AND avoids the recurring OpenAI quota- @@ -131,9 +131,9 @@ jobs: # on the per-runtime default ("sonnet" → routes to direct # Anthropic, defeats the cost saving). Operators can override # via workflow_dispatch by setting a different E2E_MODEL_SLUG - # input if they need to exercise a specific model. M2.7-highspeed - # is "Token Plan only" but cheap-per-token and fast. - E2E_MODEL_SLUG: ${{ github.event.inputs.model_slug || 'MiniMax-M2.7-highspeed' }} + # input if they need to exercise a specific model. MiniMax-M2 is the + # stable staging MiniMax path used by the full-SaaS smoke. + E2E_MODEL_SLUG: ${{ github.event.inputs.model_slug || 'MiniMax-M2' }} # Bound to 10 min so a stuck provision fails the run instead of # holding up the next cron firing. 15-min default in the script # is for the on-PR full lifecycle where we have more headroom. diff --git a/.gitea/workflows/e2e-staging-saas.yml b/.gitea/workflows/e2e-staging-saas.yml index 096648bb3..aa762d14b 100644 --- a/.gitea/workflows/e2e-staging-saas.yml +++ b/.gitea/workflows/e2e-staging-saas.yml @@ -161,7 +161,7 @@ jobs: # and defeats the cost saving. Operators can override via the # workflow_dispatch flow (no input wired here yet — runtime # override is enough for ad-hoc). - E2E_MODEL_SLUG: ${{ github.event.inputs.runtime == 'hermes' && 'openai/gpt-4o' || github.event.inputs.runtime == 'langgraph' && 'openai:gpt-4o' || 'MiniMax-M2.7-highspeed' }} + E2E_MODEL_SLUG: ${{ github.event.inputs.runtime == 'hermes' && 'openai/gpt-4o' || github.event.inputs.runtime == 'langgraph' && 'openai:gpt-4o' || 'MiniMax-M2' }} E2E_RUN_ID: "${{ github.run_id }}-${{ github.run_attempt }}" E2E_KEEP_ORG: ${{ github.event.inputs.keep_org && '1' || '0' }} diff --git a/.gitea/workflows/staging-smoke.yml b/.gitea/workflows/staging-smoke.yml index 2d12fd32d..9e3fce6a8 100644 --- a/.gitea/workflows/staging-smoke.yml +++ b/.gitea/workflows/staging-smoke.yml @@ -112,9 +112,9 @@ jobs: E2E_RUNTIME: claude-code # Pin the smoke to a specific MiniMax model rather than relying # on the per-runtime default (which could resolve to "sonnet" → - # direct Anthropic and defeat the cost saving). M2.7-highspeed - # is "Token Plan only" but cheap-per-token and fast. - E2E_MODEL_SLUG: MiniMax-M2.7-highspeed + # direct Anthropic and defeat the cost saving). MiniMax-M2 is the + # stable staging MiniMax path used by the full-SaaS smoke. + E2E_MODEL_SLUG: MiniMax-M2 E2E_RUN_ID: "smoke-${{ github.run_id }}" # Debug-only: when an operator dispatches with keep_on_failure=true, # the smoke script's E2E_KEEP_ORG=1 path skips teardown so the diff --git a/tests/test_e2e_minimax_defaults.py b/tests/test_e2e_minimax_defaults.py new file mode 100644 index 000000000..b658ff369 --- /dev/null +++ b/tests/test_e2e_minimax_defaults.py @@ -0,0 +1,18 @@ +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] + + +def test_staging_e2e_workflows_use_stable_minimax_default() -> None: + """Keep cron/push E2E on the same MiniMax model as the smoke-tested script.""" + workflow_paths = [ + ".gitea/workflows/e2e-staging-saas.yml", + ".gitea/workflows/staging-smoke.yml", + ".gitea/workflows/continuous-synth-e2e.yml", + ] + + for rel in workflow_paths: + text = (ROOT / rel).read_text() + assert "MiniMax-M2.7-highspeed" not in text + assert "MiniMax-M2" in text