minimax: move to MiniMax-M3.1-Flash-Preview; drop bare minimax/minimax-m2 slugs

- new context minimax-m31-flash/v1 (model pin; no thinking-budget init, Flash
  ignores it); four composites switch from minimax-m3-max/v1 (kept for rollback)
- models + registry for minimax-m31-flash-{max,medium}; removes the dangling
  model-registry/minimax.yaml (endpoint "minimax" never existed)
- tiers, harness-roles, minimax-* task templates and the *-review-loop@1
  workflows use the Flash slugs (MiniMax silently maps unknown names to M3, so
  the provider-id translation lands in agent-runtimes)
This commit is contained in:
Paul O'Reilly
2026-10-13 10:55:03 +13:00
parent c8c9e7f7d0
commit d7decc1dec
21 changed files with 121 additions and 32 deletions

View File

@@ -6,6 +6,6 @@ description: "Best practices review agent on MiniMax M3 (max effort) + repo clon
layers:
- context: best-practices/v1
- context: minimax/v1
- context: minimax-m3-max/v1
- context: minimax-m31-flash/v1
- context: gitea-ssh/v1
- context: agent-repo/v1

View File

@@ -9,7 +9,7 @@ layers:
# personal-subscription OAuth — integration runs are frequent/mechanical
# and were draining the interactive 5-hour window (2026-09-02).
- context: minimax/v1
- context: minimax-m3-max/v1
- context: minimax-m31-flash/v1
- context: gitea-ssh/v1
- context: agent-repo/v1
- context: direct-push/v1

View File

@@ -8,6 +8,6 @@ layers:
# MiniMax M3 — scaffolding is mechanical (stub files so tests import);
# moved off the personal Anthropic subscription 2026-09-02.
- context: minimax/v1
- context: minimax-m3-max/v1
- context: minimax-m31-flash/v1
- context: gitea-ssh/v1
- context: agent-repo/v1

View File

@@ -9,6 +9,6 @@ layers:
# 2026-09-02 (the "credential layer swappable" swap this composite was
# designed for).
- context: minimax/v1
- context: minimax-m3-max/v1
- context: minimax-m31-flash/v1
- context: gitea-ssh/v1
- context: agent-repo/v1

View File

@@ -0,0 +1,17 @@
kind: context
name: minimax-m31-flash
version: 1
description: "Pin MiniMax-M3.1-Flash-Preview (1M context) — layer AFTER minimax/v1 (auth + base URL come from there). Thinking depth is set per dispatch via --effort (models/*.yaml default_flags.reasoning_effort), not here."
requires: []
provides: []
# Replaces minimax-m3-max/v1 (kept for rollback). Differences:
# - Flash always thinks and ignores MAX_THINKING_TOKENS/budget_tokens (effort is
# the only depth control, server default max), so there is no init.sh.
# - No [1m] suffix: Flash is 1M natively (verified 2026-10-13, modelUsage.contextWindow).
# - CLAUDE_CODE_AUTO_COMPACT_WINDOW stays: an unknown model id otherwise gets
# Claude Code's 200K default and compacts early.
env:
ANTHROPIC_MODEL: "MiniMax-M3.1-Flash-Preview"
ANTHROPIC_SMALL_FAST_MODEL: "MiniMax-M3.1-Flash-Preview"
CLAUDE_CODE_AUTO_COMPACT_WINDOW: "1000000"

View File

@@ -5,5 +5,6 @@ roles:
claude-sonnet-5: code-sonnet-tdd-repo
claude-opus-5: code-opus-tdd-repo
claude-haiku-4-5: code-haiku-tdd-repo
minimax: code-minimax-tdd-repo
minimax-m31-flash-max: code-minimax-tdd-repo
minimax-m31-flash-medium: code-minimax-tdd-repo
claude-fable-5: code-fable-tdd-repo

View File

@@ -0,0 +1,21 @@
# agent-runtime-framework — model-registry/ (CRS tag: model-registry)
# Max-effort Flash; replaces minimax-m3-max in planning/draft-heavy and explicit-model nodes.
# PLACEHOLDER scores/costs: scores are copied from the M3 entry this replaces and
# costs are set just below it so cheapest-wins (tiers.yaml) selects Flash over
# the retained M3 entries. Revisit with observed scores and published pricing.
name: minimax-m31-flash-max
endpoint: minimax-m31-flash-max
provider: minimax
family: minimax
scores:
complexity: 10
test_pass_rate: 9
creativity: 10
spec_adherence: 9
cost_efficiency: 5
context_utilisation: 10
cost_per_1k_tokens:
input: 0.0025
output: 0.0125
source: benchmark
harness_version: null

View File

@@ -0,0 +1,21 @@
# agent-runtime-framework — model-registry/ (CRS tag: model-registry)
# Medium-effort Flash; replaces minimax-m3 in the build/integrate/spec-test/coding tiers.
# PLACEHOLDER scores/costs: scores are copied from the M3 entry this replaces and
# costs are set just below it so cheapest-wins (tiers.yaml) selects Flash over
# the retained M3 entries. Revisit with observed scores and published pricing.
name: minimax-m31-flash-medium
endpoint: minimax-m31-flash-medium
provider: minimax
family: minimax
scores:
complexity: 8
test_pass_rate: 9
creativity: 8
spec_adherence: 9
cost_efficiency: 6
context_utilisation: 9
cost_per_1k_tokens:
input: 0.00125
output: 0.00625
source: benchmark
harness_version: null

View File

@@ -1,15 +0,0 @@
name: minimax
endpoint: minimax
provider: minimax
scores:
complexity: 10
test_pass_rate: 9
creativity: 10
spec_adherence: 9
cost_efficiency: 3
context_utilisation: 10
cost_per_1k_tokens:
input: 0.0
output: 0.0
source: benchmark
harness_version: null

View File

@@ -22,7 +22,7 @@ tiers:
context_utilisation: 9
qualifies_today:
- deepseek-v4flash # benchmark-inflated 9s; hold to allowed_models ceiling
- minimax
- minimax-m31-flash-max
- claude-opus-5
note: >
WF-SCH-14 allowed_models ceiling remains authoritative until M7 observed-score
@@ -37,7 +37,8 @@ tiers:
spec_adherence: 9
test_pass_rate: 9
qualifies_today:
- minimax
- minimax-m31-flash-max
- minimax-m31-flash-medium
- claude-sonnet-5
- claude-opus-5
@@ -51,7 +52,8 @@ tiers:
qualifies_today:
- airouter-qwen3
- airouter-deepseekv4flash
- minimax
- minimax-m31-flash-max
- minimax-m31-flash-medium
- claude-sonnet-5
- claude-opus-5
- claude-fable-5

View File

@@ -0,0 +1,21 @@
# agent-runtime-framework — models/ (CRS tag: models)
# MiniMax-M3.1-Flash-Preview at reasoning_effort max. Always thinks (thinking
# cannot be disabled; effort is the only depth control). The claude runner maps
# default_flags.reasoning_effort to `--effort` (agent-runtimes ME-6a). Verified
# 2026-10-13: the container MiniMax key reaches this model on both
# api.minimax.io and api.minimaxi.chat; 1M context window.
# Endpoint name MUST equal the registry name (MR-12).
name: minimax-m31-flash-max
provider: minimax
family: minimax
endpoint:
type: cloud_api
base_url: "https://api.minimax.io/anthropic"
api_key_env: MINIMAX_API_KEY
runner: claude
default_flags:
model: "MiniMax-M3.1-Flash-Preview"
reasoning_effort: max
provider_context_ref: "minimax/v1"
provider_secret_ref: "MINIMAX_API_KEY"
session_capable: false

View File

@@ -0,0 +1,21 @@
# agent-runtime-framework — models/ (CRS tag: models)
# MiniMax-M3.1-Flash-Preview at reasoning_effort medium. Always thinks (thinking
# cannot be disabled; effort is the only depth control). The claude runner maps
# default_flags.reasoning_effort to `--effort` (agent-runtimes ME-6a). Verified
# 2026-10-13: the container MiniMax key reaches this model on both
# api.minimax.io and api.minimaxi.chat; 1M context window.
# Endpoint name MUST equal the registry name (MR-12).
name: minimax-m31-flash-medium
provider: minimax
family: minimax
endpoint:
type: cloud_api
base_url: "https://api.minimax.io/anthropic"
api_key_env: MINIMAX_API_KEY
runner: claude
default_flags:
model: "MiniMax-M3.1-Flash-Preview"
reasoning_effort: medium
provider_context_ref: "minimax/v1"
provider_secret_ref: "MINIMAX_API_KEY"
session_capable: false

View File

@@ -1,6 +1,6 @@
name: minimax-code-repo
description: "MiniMax code agent — repo clone, agent-repo branch persistence"
model: minimax
model: minimax-m31-flash-max
harness: code-minimax-repo/v1
requires_tags: [claude-code, coding-agent, git-access, project-repo]
required_params: [repo_url, agent_repo_url]

View File

@@ -1,6 +1,6 @@
name: minimax-code-tdd
description: "MiniMax code agent with TDD enforcement — tests are read-only and must pass before the task finishes"
model: minimax
model: minimax-m31-flash-max
harness: code-minimax-tdd-repo/v1
requires_tags: [coding-agent, git-access, project-repo, tdd-gate]
required_params: [repo_url, agent_repo_url]

View File

@@ -1,6 +1,6 @@
name: minimax-planning
description: "MiniMax planning agent — specs, reviews, architecture docs"
model: minimax
model: minimax-m31-flash-max
harness: planning-minimax-repo/v1
requires_tags: [claude-code, planning-agent, git-access, project-repo]
required_params: [repo_url, agent_repo_url]

View File

@@ -1,6 +1,6 @@
name: minimax-security-review
description: "MiniMax security review agent — security audit via Anthropic-compatible proxy"
model: minimax
model: minimax-m31-flash-max
harness: security-review-minimax-repo/v1
requires_tags: [claude-code, security-reviewer, best-practices, git-access, project-repo]
required_params: [repo_url, agent_repo_url]

View File

@@ -1,6 +1,6 @@
name: minimax-tdd-impl
description: "MiniMax TDD implementation agent — tests locked read-only, cannot be modified by agent"
model: minimax
model: minimax-m31-flash-max
harness: minimax-tdd-impl/v1
requires_tags: [claude-code, coding-agent, git-access, project-repo]
required_params: [repo_url, agent_repo_url]

View File

@@ -1,6 +1,6 @@
name: minimax-test-writer
description: "MiniMax test writing agent — comprehensive tests with edge cases"
model: minimax
model: minimax-m31-flash-max
harness: test-writing-minimax-repo/v1
requires_tags: [claude-code, test-writer, best-practices, git-access, project-repo]
required_params: [repo_url, agent_repo_url]

View File

@@ -46,7 +46,7 @@ nodes:
- id: review-minimax
kind: agent
role: plan-review
model: minimax-m2
model: minimax-m31-flash-max
runtime_env:
AGENT_REPO_URL: "git@gitea.oreillyit.nz-ai-enablement:skynet/agent-runtimes-agents.git"
AGENT_BRANCH: "task/${item.uuid}"

View File

@@ -54,7 +54,7 @@ nodes:
- id: review-minimax
kind: agent
role: spec-review
model: minimax-m2
model: minimax-m31-flash-max
runtime_env:
AGENT_REPO_URL: "git@gitea.oreillyit.nz-ai-enablement:skynet/agent-runtimes-agents.git"
AGENT_BRANCH: "spec/${item.uuid}"

View File

@@ -21,7 +21,7 @@ nodes:
role: test-write-review # M36 v0.6 (bug 69370eda fix): role + model replaces
# the ungrounded `template: minimax-test-writer`
# (a composite that never existed in the catalog).
model: minimax-m2
model: minimax-m31-flash-max
runtime_env:
# WF-COMP-15: stage agents share one per-item work branch so their work
# accumulates across iterations.