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}"