diff --git a/harnesses/composites/best-practices-minimax-repo/v1/harness.yaml b/harnesses/composites/best-practices-minimax-repo/v1/harness.yaml index c3534e8..6505782 100644 --- a/harnesses/composites/best-practices-minimax-repo/v1/harness.yaml +++ b/harnesses/composites/best-practices-minimax-repo/v1/harness.yaml @@ -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 diff --git a/harnesses/composites/integration-direct/v1/harness.yaml b/harnesses/composites/integration-direct/v1/harness.yaml index 305ef9b..869491d 100644 --- a/harnesses/composites/integration-direct/v1/harness.yaml +++ b/harnesses/composites/integration-direct/v1/harness.yaml @@ -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 diff --git a/harnesses/composites/scaffolding-repo/v1/harness.yaml b/harnesses/composites/scaffolding-repo/v1/harness.yaml index c6b144e..d29276a 100644 --- a/harnesses/composites/scaffolding-repo/v1/harness.yaml +++ b/harnesses/composites/scaffolding-repo/v1/harness.yaml @@ -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 diff --git a/harnesses/composites/test-writing-repo/v1/harness.yaml b/harnesses/composites/test-writing-repo/v1/harness.yaml index c569030..ea077be 100644 --- a/harnesses/composites/test-writing-repo/v1/harness.yaml +++ b/harnesses/composites/test-writing-repo/v1/harness.yaml @@ -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 diff --git a/harnesses/contexts/minimax-m31-flash/v1/harness.yaml b/harnesses/contexts/minimax-m31-flash/v1/harness.yaml new file mode 100644 index 0000000..32b0fe0 --- /dev/null +++ b/harnesses/contexts/minimax-m31-flash/v1/harness.yaml @@ -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" diff --git a/model-registry/harness-roles.yaml b/model-registry/harness-roles.yaml index 6d9c90c..45cca11 100644 --- a/model-registry/harness-roles.yaml +++ b/model-registry/harness-roles.yaml @@ -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 diff --git a/model-registry/minimax-m31-flash-max.yaml b/model-registry/minimax-m31-flash-max.yaml new file mode 100644 index 0000000..32f4713 --- /dev/null +++ b/model-registry/minimax-m31-flash-max.yaml @@ -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 diff --git a/model-registry/minimax-m31-flash-medium.yaml b/model-registry/minimax-m31-flash-medium.yaml new file mode 100644 index 0000000..ca690ad --- /dev/null +++ b/model-registry/minimax-m31-flash-medium.yaml @@ -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 diff --git a/model-registry/minimax.yaml b/model-registry/minimax.yaml deleted file mode 100644 index 60e943b..0000000 --- a/model-registry/minimax.yaml +++ /dev/null @@ -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 diff --git a/model-registry/tiers.yaml b/model-registry/tiers.yaml index a20b261..f39844e 100644 --- a/model-registry/tiers.yaml +++ b/model-registry/tiers.yaml @@ -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 diff --git a/models/minimax-m31-flash-max.yaml b/models/minimax-m31-flash-max.yaml new file mode 100644 index 0000000..761374e --- /dev/null +++ b/models/minimax-m31-flash-max.yaml @@ -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 diff --git a/models/minimax-m31-flash-medium.yaml b/models/minimax-m31-flash-medium.yaml new file mode 100644 index 0000000..dc783a8 --- /dev/null +++ b/models/minimax-m31-flash-medium.yaml @@ -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 diff --git a/task-templates/minimax-code-repo.yaml b/task-templates/minimax-code-repo.yaml index 1a346aa..404be9c 100644 --- a/task-templates/minimax-code-repo.yaml +++ b/task-templates/minimax-code-repo.yaml @@ -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] diff --git a/task-templates/minimax-code-tdd.yaml b/task-templates/minimax-code-tdd.yaml index b847b81..bcd24e2 100644 --- a/task-templates/minimax-code-tdd.yaml +++ b/task-templates/minimax-code-tdd.yaml @@ -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] diff --git a/task-templates/minimax-planning.yaml b/task-templates/minimax-planning.yaml index a84a5ea..9d59a39 100644 --- a/task-templates/minimax-planning.yaml +++ b/task-templates/minimax-planning.yaml @@ -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] diff --git a/task-templates/minimax-security-review.yaml b/task-templates/minimax-security-review.yaml index 84a4c2d..ecddd08 100644 --- a/task-templates/minimax-security-review.yaml +++ b/task-templates/minimax-security-review.yaml @@ -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] diff --git a/task-templates/minimax-tdd-impl.yaml b/task-templates/minimax-tdd-impl.yaml index 2086b86..a17c718 100644 --- a/task-templates/minimax-tdd-impl.yaml +++ b/task-templates/minimax-tdd-impl.yaml @@ -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] diff --git a/task-templates/minimax-test-writer.yaml b/task-templates/minimax-test-writer.yaml index 3f08ea5..8c97232 100644 --- a/task-templates/minimax-test-writer.yaml +++ b/task-templates/minimax-test-writer.yaml @@ -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] diff --git a/task-templates/workflow/plan-review-loop@1.yaml b/task-templates/workflow/plan-review-loop@1.yaml index ad5e185..eb5ef4b 100644 --- a/task-templates/workflow/plan-review-loop@1.yaml +++ b/task-templates/workflow/plan-review-loop@1.yaml @@ -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}" diff --git a/task-templates/workflow/spec-review-loop@1.yaml b/task-templates/workflow/spec-review-loop@1.yaml index 00baa68..17ddd80 100644 --- a/task-templates/workflow/spec-review-loop@1.yaml +++ b/task-templates/workflow/spec-review-loop@1.yaml @@ -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}" diff --git a/task-templates/workflow/test-write-review-loop@1.yaml b/task-templates/workflow/test-write-review-loop@1.yaml index 48eee70..6078225 100644 --- a/task-templates/workflow/test-write-review-loop@1.yaml +++ b/task-templates/workflow/test-write-review-loop@1.yaml @@ -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.