9 Commits

Author SHA1 Message Date
Paul O'Reilly
e31d472ff9 fix: migrate Claude model files to current API IDs (opus-5, sonnet-5, haiku-4.5)
Bug 57d8a047-d26d-47ce-ae6f-bc5cb98fef0e: Opus-tier tasks 404'd because
models/claude-opus-4.yaml pinned default_flags.model to "claude-opus-4-5",
a retired ID. models/claude-sonnet-4.yaml was pinned to a dated snapshot
("claude-sonnet-4-20250514") with the same problem.

Slug strategy: the registry slug (filename / RegistryEntry.name) doubles
as the literal --model argument on the workflow-template pass-through path
(task-templates/workflow/*.yaml `model:` field -> compiler WF-COMP-18 ->
payload.runtime.model -> entrypoint/runners/claude.py `--model`), which has
no translation step through this file's default_flags. So rather than
patch default_flags.model in place (leaving the slug stale and the
pass-through bug latent), rename the slug to match the current API ID:

- models/claude-opus-4.yaml, model-registry/claude-opus-4.yaml
  -> claude-opus-5.yaml (name/endpoint/default_flags.model: claude-opus-5)
- models/claude-sonnet-4.yaml, model-registry/claude-sonnet-4.yaml
  -> claude-sonnet-5.yaml (claude-sonnet-5)
- model-registry/claude-haiku-4.yaml -> claude-haiku-4-5.yaml
  (claude-haiku-4-5); added the previously-missing models/claude-haiku-4-5.yaml
  so the claude runner can actually resolve this endpoint
- model-registry/harness-roles.yaml, model-registry/tiers.yaml,
  workflows/smart-agent.yaml, task-templates/workflow/{spec,plan}-review-loop@1.yaml:
  updated every claude-opus-4 / claude-sonnet-4 / claude-haiku-4 reference
  to the new slugs
- models/openrouter-sonnet.yaml: dated snapshot "claude-sonnet-4-20250514"
  -> "claude-sonnet-5" (third-party router proxying the same retired ID)
- refreshed cost_per_1k_tokens on the three renamed registry entries to
  current published pricing

Claude-Session: https://claude.ai/code/session_015nXvGNNNixJPFwZKZHNyha
2026-09-10 12:05:14 +12:00
Paul O'Reilly
8bbf6cbb2f BUG-5/BUG-20 fixes: pre_test.sh, output validation, push retry, workflow output tags
- pre_test.sh: harness-level test folder revert script, replaces inline
  _revert_test_folders() in entrypoint. Writes {"reverted": N} atomically.
- finalize.sh: set -x debug tracing; push retry (AGENT_PUSH_RETRIES, default 1
  retry after 5s); output validation (AGENT_EXPECTED_OUTPUT env var); wrong-path
  detection moves .agent-output/ files to working dir and writes
  .correction-prompt.txt for entrypoint re-invoke
- harness.yaml: add scripts.pre_test
- spec-planning.yaml: all 17 nodes tagged with output:{path,min_bytes}

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 18:29:47 +12:00
Paul O'Reilly
14151767e9 fix(write-tests): reviewer_harness default → planning-minimax-repo/v1
planning/v1 is a bare context with no provider credentials; any review node
using it fails with "Not logged in". The correct composite is
planning-minimax-repo/v1 which includes minimax/v1 auth.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-01 08:49:39 +12:00
Paul O'Reilly
e7225960ec fix(write-tests): use reference_branches for source repo; fix spec path
AR-27b filters clone pre_actions when agent-repo is active, so the source
repo was never cloned and the spec was unreachable. Use reference_branches
instead: the source repo is cloned read-only to /workspace/reference/main/
by agent-repo/v1/init.sh.

Both write_tests and review_coverage nodes now declare:
  reference_branches:
    - repo_url: "{{ repo_url }}"
      branch: main
      name: main

Prompts updated to read from /workspace/reference/main/{{ spec_file }}
and write output to /workspace/project/{{ test_output_dir }}.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-30 15:21:30 +12:00
Paul O'Reilly
a89829e31d Add write-code-simple workflow: narrow airouter single-test impl
Single-node airouter workflow for one-requirement/one-test tasks.
Optional test_target param focuses the agent on a specific pytest
node ID. Cost-optimised: labels=[airouter], cost_efficiency≥9.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 17:15:10 +12:00
Paul O'Reilly
906de0954d Add minimax model registry entry; rename tdd-impl workflow
- minimax.yaml: scores copied from Opus (placeholder until real benchmark),
  cost 0.0/0.0 (subscription), provider=minimax. Now auto-selectable by
  min_scores routing (smart-agent at complexity≥9 will reach it).
- tdd-impl → write-code-following-tdd (name field updated)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 17:12:06 +12:00
Paul O'Reilly
f4a5c5e680 Rework single-agent workflows; add write-tests; remove comparative-plan
- claude-agent → standard-agent (complexity≥8, spec_adherence≥9 → Sonnet-class)
- smart-agent: complexity≥9 → Opus; documents MiniMax not in registry
- functional-agent: labels=[airouter], cost_efficiency≥9 → Qwen3.6
- write-tests: two-node DAG (write_tests → review_coverage), spec-driven
  test authoring with coverage gap report in JSON
- Remove comparative-plan (superseded by tdd-impl audit pattern)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 15:50:01 +12:00
Paul O'Reilly
21f1cb6f17 Add tdd-impl workflow: parallel TDD implementations with one-shot audit
Two agents (impl_a: airouter, impl_b: best-complexity model) implement
in parallel against pre-written tests using TDD composites. An audit
node compares both outputs and emits a JSON verdict (pass/more_work_needed,
winner: a/b/neither, gaps). Harnesses are param-overridable for
provider flexibility. F-WE-PDIV note in description for future
unique_providers enforcement.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-28 15:37:22 +12:00
Paul O'Reilly
37a5165dfb init: seed framework reference content from agent-runtimes main repo 2026-04-26 12:17:42 +12:00