|
| 1 | +{ |
| 2 | + "version": "1.0", |
| 3 | + "description": "Clawable Coding Harness - Clear roadmap stories and commit each", |
| 4 | + "stories": [ |
| 5 | + { |
| 6 | + "id": "US-001", |
| 7 | + "title": "Phase 1.6 - startup-no-evidence evidence bundle + classifier", |
| 8 | + "description": "When startup times out, emit typed worker.startup_no_evidence event with evidence bundle including last known worker lifecycle state, pane command, prompt-send timestamp, prompt-acceptance state, trust-prompt detection result, and transport/MCP health summary. Classifier should down-rank into specific failure classes.", |
| 9 | + "acceptanceCriteria": [ |
| 10 | + "worker.startup_no_evidence event emitted on startup timeout with evidence bundle", |
| 11 | + "Evidence bundle includes: last lifecycle state, pane command, prompt-send timestamp, prompt-acceptance state, trust-prompt detection, transport/MCP health", |
| 12 | + "Classifier attempts to categorize into: trust_required, prompt_misdelivery, prompt_acceptance_timeout, transport_dead, worker_crashed, or unknown", |
| 13 | + "Tests verify evidence bundle structure and classifier behavior" |
| 14 | + ], |
| 15 | + "passes": true, |
| 16 | + "priority": "P0" |
| 17 | + }, |
| 18 | + { |
| 19 | + "id": "US-002", |
| 20 | + "title": "Phase 2 - Canonical lane event schema (4.x series)", |
| 21 | + "description": "Define typed events for lane lifecycle: lane.started, lane.ready, lane.prompt_misdelivery, lane.blocked, lane.red, lane.green, lane.commit.created, lane.pr.opened, lane.merge.ready, lane.finished, lane.failed, branch.stale_against_main. Also implement event ordering, reconciliation, provenance, deduplication, and projection contracts.", |
| 22 | + "acceptanceCriteria": [ |
| 23 | + "LaneEvent enum with all required variants defined", |
| 24 | + "Event ordering with monotonic sequence metadata attached", |
| 25 | + "Event provenance labels (live_lane, test, healthcheck, replay, transport)", |
| 26 | + "Session identity completeness at creation (title, workspace, purpose)", |
| 27 | + "Duplicate terminal-event suppression with fingerprinting", |
| 28 | + "Lane ownership/scope binding in events", |
| 29 | + "Nudge acknowledgment with dedupe contract", |
| 30 | + "clawhip consumes typed lane events instead of pane scraping" |
| 31 | + ], |
| 32 | + "passes": true, |
| 33 | + "priority": "P0" |
| 34 | + }, |
| 35 | + { |
| 36 | + "id": "US-003", |
| 37 | + "title": "Phase 3 - Stale-branch detection before broad verification", |
| 38 | + "description": "Before broad test runs, compare current branch to main and detect if known fixes are missing. Emit branch.stale_against_main event and suggest/auto-run rebase/merge-forward.", |
| 39 | + "acceptanceCriteria": [ |
| 40 | + "Branch freshness comparison against main implemented", |
| 41 | + "branch.stale_against_main event emitted when behind", |
| 42 | + "Auto-rebase/merge-forward policy integration", |
| 43 | + "Avoid misclassifying stale-branch failures as new regressions" |
| 44 | + ], |
| 45 | + "passes": true, |
| 46 | + "priority": "P1" |
| 47 | + }, |
| 48 | + { |
| 49 | + "id": "US-004", |
| 50 | + "title": "Phase 3 - Recovery recipes with ledger", |
| 51 | + "description": "Encode automatic recoveries for common failures (trust prompt, prompt misdelivery, stale branch, compile red, MCP startup). Expose recovery attempt ledger with recipe id, attempt count, state, timestamps, failure summary.", |
| 52 | + "acceptanceCriteria": [ |
| 53 | + "Recovery recipes defined for: trust_prompt_unresolved, prompt_delivered_to_shell, stale_branch, compile_red_after_refactor, MCP_handshake_failure, partial_plugin_startup", |
| 54 | + "Recovery attempt ledger with: recipe id, attempt count, state, timestamps, failure summary, escalation reason", |
| 55 | + "One automatic recovery attempt before escalation", |
| 56 | + "Ledger emitted as structured event data" |
| 57 | + ], |
| 58 | + "passes": true, |
| 59 | + "priority": "P1" |
| 60 | + }, |
| 61 | + { |
| 62 | + "id": "US-005", |
| 63 | + "title": "Phase 4 - Typed task packet format", |
| 64 | + "description": "Define structured task packet with fields: objective, scope, repo/worktree, branch policy, acceptance tests, commit policy, reporting contract, escalation policy.", |
| 65 | + "acceptanceCriteria": [ |
| 66 | + "TaskPacket struct with all required fields", |
| 67 | + "TaskScope resolution (workspace/module/single-file/custom)", |
| 68 | + "Validation and serialization support", |
| 69 | + "Integration into tools/src/lib.rs" |
| 70 | + ], |
| 71 | + "passes": true, |
| 72 | + "priority": "P1" |
| 73 | + }, |
| 74 | + { |
| 75 | + "id": "US-006", |
| 76 | + "title": "Phase 4 - Policy engine for autonomous coding", |
| 77 | + "description": "Encode automation rules: if green + scoped diff + review passed -> merge to dev; if stale branch -> merge-forward before broad tests; if startup blocked -> recover once, then escalate; if lane completed -> emit closeout and cleanup session.", |
| 78 | + "acceptanceCriteria": [ |
| 79 | + "Policy rules engine implemented", |
| 80 | + "Rules: green + scoped diff + review -> merge", |
| 81 | + "Rules: stale branch -> merge-forward before tests", |
| 82 | + "Rules: startup blocked -> recover once, then escalate", |
| 83 | + "Rules: lane completed -> closeout and cleanup" |
| 84 | + ], |
| 85 | + "passes": true, |
| 86 | + "priority": "P2" |
| 87 | + }, |
| 88 | + { |
| 89 | + "id": "US-007", |
| 90 | + "title": "Phase 5 - Plugin/MCP lifecycle maturity", |
| 91 | + "description": "First-class plugin/MCP lifecycle contract: config validation, startup healthcheck, discovery result, degraded-mode behavior, shutdown/cleanup. Close gaps in end-to-end lifecycle.", |
| 92 | + "acceptanceCriteria": [ |
| 93 | + "Plugin/MCP config validation contract", |
| 94 | + "Startup healthcheck with structured results", |
| 95 | + "Discovery result reporting", |
| 96 | + "Degraded-mode behavior documented and implemented", |
| 97 | + "Shutdown/cleanup contract", |
| 98 | + "Partial startup and per-server failures reported structurally" |
| 99 | + ], |
| 100 | + "passes": true, |
| 101 | + "priority": "P2" |
| 102 | + } |
| 103 | + ] |
| 104 | +} |
0 commit comments