From 350c0eeed4bd4d55bea15de37d2e55e5c897adc3 Mon Sep 17 00:00:00 2001 From: Paul O'Reilly Date: Wed, 29 Jul 2026 01:59:54 +1200 Subject: [PATCH] =?UTF-8?q?feat(templates):=206-tier=20escalation=20ladder?= =?UTF-8?q?=20=E2=80=94=20add=20MiniMax=20+=20Fable=20tiers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New tiers in the coding queue: airouter(0-2) → minimax(3-5) → sonnet(6-7) → opus(8-9) → fable(10) → blocked(11+) - models/claude-fable-5.yaml: Fable 5 model definition (Anthropic cloud, claude runner) - harnesses/composites/code-fable-tdd-repo/v1: Fable TDD composite (mirrors opus, anthropic-cloud-paul-oauth auth) - model-registry/harness-roles.yaml: claude-fable-5 → code-fable-tdd-repo under code-tdd role - model-registry/tiers.yaml: claude-fable-5 added to coding.qualifies_today - task-templates/workflow/minimax-impl-ready@1.yaml: MiniMax TDD workflow (scope: 3 files / 200 lines / 30m) - task-templates/workflow/fable-impl-ready@1.yaml: Fable TDD workflow (scope: 5 files / 400 lines / 60m) Claude-Session: https://claude.ai/code/session_015sCpoFee3LsLKbHQ4FRRWY --- .../code-fable-tdd-repo/v1/harness.yaml | 13 +++++++++++ model-registry/harness-roles.yaml | 1 + model-registry/tiers.yaml | 1 + models/claude-fable-5.yaml | 15 +++++++++++++ .../workflow/fable-impl-ready@1.yaml | 22 +++++++++++++++++++ .../workflow/minimax-impl-ready@1.yaml | 22 +++++++++++++++++++ 6 files changed, 74 insertions(+) create mode 100644 harnesses/composites/code-fable-tdd-repo/v1/harness.yaml create mode 100644 models/claude-fable-5.yaml create mode 100644 task-templates/workflow/fable-impl-ready@1.yaml create mode 100644 task-templates/workflow/minimax-impl-ready@1.yaml diff --git a/harnesses/composites/code-fable-tdd-repo/v1/harness.yaml b/harnesses/composites/code-fable-tdd-repo/v1/harness.yaml new file mode 100644 index 0000000..13315ab --- /dev/null +++ b/harnesses/composites/code-fable-tdd-repo/v1/harness.yaml @@ -0,0 +1,13 @@ +kind: composite +name: code-fable-tdd-repo +version: 1 +description: "Fable code agent with TDD enforcement — tests locked read-only, must pass before finish (last-resort tier)" +layers: + - context: code-methodology/v1 + - context: anthropic-cloud-paul-oauth/v1 + - context: gitea-ssh/v1 + - context: agent-repo/v1 + - context: tdd-protect/v1 + - context: tdd-gate/v1 + - capability: python-dev/v1 + - capability: tdd-file-lock/v1 diff --git a/model-registry/harness-roles.yaml b/model-registry/harness-roles.yaml index f596651..dc4a05e 100644 --- a/model-registry/harness-roles.yaml +++ b/model-registry/harness-roles.yaml @@ -6,3 +6,4 @@ roles: claude-opus-4: code-opus-tdd-repo claude-haiku-4: code-haiku-tdd-repo minimax: code-minimax-tdd-repo + claude-fable-5: code-fable-tdd-repo diff --git a/model-registry/tiers.yaml b/model-registry/tiers.yaml index 3899bc1..d919a01 100644 --- a/model-registry/tiers.yaml +++ b/model-registry/tiers.yaml @@ -54,3 +54,4 @@ tiers: - minimax - claude-sonnet-4 - claude-opus-4 + - claude-fable-5 diff --git a/models/claude-fable-5.yaml b/models/claude-fable-5.yaml new file mode 100644 index 0000000..5421170 --- /dev/null +++ b/models/claude-fable-5.yaml @@ -0,0 +1,15 @@ +name: claude-fable-5 +provider: anthropic +endpoint: + type: cloud_api + api_key_env: ANTHROPIC_API_KEY +runner: claude +default_flags: + model: "claude-fable-5" +scores: + complexity: 10 + creativity: 10 + context_utilisation: 10 + spec_adherence: 10 + test_pass_rate: 10 +cost_per_1k_tokens: 0.05 diff --git a/task-templates/workflow/fable-impl-ready@1.yaml b/task-templates/workflow/fable-impl-ready@1.yaml new file mode 100644 index 0000000..5f956d6 --- /dev/null +++ b/task-templates/workflow/fable-impl-ready@1.yaml @@ -0,0 +1,22 @@ +name: fable-impl-ready +version: 1 +description: Impl of a spec requirement against pre-validated tests, Fable in worktree (final-tier escalation before blocked) +runtime: code-fable-tdd-repo +input: + state: scaffolded + tags_forbidden: [security-sensitive] + required_artifacts: [] +output: + state: impl-green +scope_budget: + files_modified_max: 5 + lines_diff_max: 400 + wall_clock_seconds_max: 3600 +nodes: + - id: agent + kind: agent + template: code-fable-tdd-repo + runtime_env: + AGENT_REPO_URL: "git@gitea.oreillyit.nz-ai-enablement:skynet/agent-runtimes-agents.git" + AGENT_BRANCH: "task/${item.uuid}" + prompt: "Implement the task. ${metadata.automation.test_files}${metadata.automation.spec_ids}Task description: ${artifacts.item_title}. ${artifacts.item_body}" diff --git a/task-templates/workflow/minimax-impl-ready@1.yaml b/task-templates/workflow/minimax-impl-ready@1.yaml new file mode 100644 index 0000000..1125ee3 --- /dev/null +++ b/task-templates/workflow/minimax-impl-ready@1.yaml @@ -0,0 +1,22 @@ +name: minimax-impl-ready +version: 1 +description: Impl of a spec requirement against pre-validated tests, MiniMax in worktree (second-tier escalation from airouter) +runtime: code-minimax-tdd-repo +input: + state: scaffolded + tags_forbidden: [security-sensitive] + required_artifacts: [] +output: + state: impl-green +scope_budget: + files_modified_max: 3 + lines_diff_max: 200 + wall_clock_seconds_max: 1800 +nodes: + - id: agent + kind: agent + template: code-minimax-tdd-repo + runtime_env: + AGENT_REPO_URL: "git@gitea.oreillyit.nz-ai-enablement:skynet/agent-runtimes-agents.git" + AGENT_BRANCH: "task/${item.uuid}" + prompt: "Implement the task. ${metadata.automation.test_files}${metadata.automation.spec_ids}Task description: ${artifacts.item_title}. ${artifacts.item_body}"