feat(templates): add missing escalation targets + concept-intake stage

fix-test-fixture-sonnet@1, review-spec-opus@1, replan-spec-opus@1 — the
dangling escalation refs from airouter-impl-*/spec-draft/feature-delivery-loop.
Sonnet-authored, Opus-reviewed; review HIGH fixes applied (explicit model: opus
on both opus nodes — node model: sets runtime model, composite name does not).
Known gap filed in work-items epic (E1-escalation-state-gap.md): escalation
edges from non-primary states 422 state_mismatch pending escalation_input_states.
concept-intake@1: optional idea-elaboration pre-stage (output state
idea-elaborated — not yet wired into spec-draft-opus input).
All four validate against controlplane WorkflowTemplate schema.
This commit is contained in:
Paul O'Reilly
2026-07-02 21:27:43 +12:00
parent f3d7b42db5
commit 97d98689be
4 changed files with 215 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
name: fix-test-fixture-sonnet
version: 1
description: Repair broken test fixtures without weakening assertions, Sonnet in worktree (escalation from airouter-impl-narrow/-ready fixture_broken)
runtime: code-sonnet-tdd-repo
input:
state: test-validated
tags_forbidden: [security-sensitive]
required_artifacts: [test_file]
output:
state: test-write-pending
scope_budget:
files_modified_max: 2
lines_diff_max: 60
wall_clock_seconds_max: 900
nodes:
- id: agent
kind: agent
template: code-sonnet-tdd-repo
prompt: |
A test-validation or implementation attempt against ${artifacts.test_file} was
escalated as fixture_broken — the failure is in fixtures, imports, or pytest
collection, NOT in missing implementation logic.
Repair the fixture/collection problem WITHOUT weakening any test assertion:
- Every test in ${artifacts.test_file} MUST remain marked
@pytest.mark.xfail(strict=True, reason="<spec-id>: <description>") against the
unimplemented code it exercises. Do not remove, loosen, or convert xfail markers
to skip/pass, and do not delete or rewrite assertions to make them pass.
- Fix only fixture/conftest/import problems: missing conftest fixtures, broken
imports, malformed fixture YAML, incorrect path references.
- Check any fixture YAML against these known-bad patterns (the violation codes
enforced by scripts/workflow/preflight-fixture-lint in the agent-runtimes repo):
MISSING_ALLOW_UNAUTHENTICATED — auth fixture missing allow_unauthenticated: true
MISSING_V1_PREFIX — URL path does not start with /v1/
BODY_GET_TYPE — body.get("type") instead of RFC 9457 type field
SPACE_ID_PLACEHOLDER — space_id value is "s" or another placeholder
TOP_LEVEL_PARAMS — top-level params: key instead of nested under workflow:
TOP_LEVEL_NODES — top-level nodes: key instead of nested under workflow:
- Do NOT touch the implementation skeleton or any non-test, non-fixture file.
Verify the fix with:
python -m pytest --collect-only ${artifacts.test_file}
Collection MUST succeed and every test MUST still report xfail (not error, not pass).
Commit and push to the work branch.
escalation:
agent_bailed: fix-test-fixture-sonnet