maestro-flow 0.4.6 → 0.4.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/.claude/commands/maestro-ralph.md +548 -377
  2. package/.claude/commands/maestro.md +220 -191
  3. package/.codex/skills/maestro/SKILL.md +495 -462
  4. package/.codex/skills/maestro-collab/SKILL.md +218 -117
  5. package/.codex/skills/maestro-execute/SKILL.md +13 -11
  6. package/.codex/skills/maestro-milestone-audit/SKILL.md +12 -10
  7. package/.codex/skills/maestro-ralph/SKILL.md +491 -339
  8. package/.codex/skills/maestro-ui-codify/SKILL.md +18 -16
  9. package/.codex/skills/manage-codebase-rebuild/SKILL.md +20 -13
  10. package/.codex/skills/manage-issue-discover/SKILL.md +19 -17
  11. package/.codex/skills/quality-debug/SKILL.md +35 -31
  12. package/.codex/skills/quality-refactor/SKILL.md +20 -12
  13. package/.codex/skills/quality-review/SKILL.md +21 -17
  14. package/.codex/skills/team-coordinate/SKILL.md +462 -235
  15. package/.codex/skills/team-coordinate/specs/role-catalog.md +132 -0
  16. package/.codex/skills/team-lifecycle-v4/SKILL.md +445 -191
  17. package/.codex/skills/team-quality-assurance/SKILL.md +205 -161
  18. package/.codex/skills/team-review/SKILL.md +198 -159
  19. package/.codex/skills/team-tech-debt/SKILL.md +214 -144
  20. package/.codex/skills/team-testing/SKILL.md +210 -158
  21. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +25 -33
  22. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
  23. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js +9 -3
  24. package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.test.js.map +1 -1
  25. package/dashboard/dist-server/dashboard/src/server/agents/codex-app-server-adapter.js +5 -2
  26. package/dashboard/dist-server/dashboard/src/server/agents/codex-app-server-adapter.js.map +1 -1
  27. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js +20 -8
  28. package/dashboard/dist-server/dashboard/src/server/agents/codex-cli-adapter.js.map +1 -1
  29. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.js +6 -3
  30. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.js.map +1 -1
  31. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.test.js +7 -1
  32. package/dashboard/dist-server/dashboard/src/server/agents/gemini-a2a-adapter.test.js.map +1 -1
  33. package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.d.ts +2 -0
  34. package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.js +40 -15
  35. package/dashboard/dist-server/dashboard/src/server/agents/opencode-adapter.js.map +1 -1
  36. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.d.ts +1 -0
  37. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.js +59 -0
  38. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.js.map +1 -0
  39. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.d.ts +1 -0
  40. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.js +78 -0
  41. package/dashboard/dist-server/dashboard/src/server/agents/process-tree-kill.test.js.map +1 -0
  42. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.d.ts +25 -0
  43. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.js +40 -0
  44. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.js.map +1 -0
  45. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.d.ts +1 -0
  46. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.js +89 -0
  47. package/dashboard/dist-server/dashboard/src/server/agents/stale-handler.test.js.map +1 -0
  48. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js +19 -8
  49. package/dashboard/dist-server/dashboard/src/server/agents/stream-json-adapter.js.map +1 -1
  50. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.d.ts +6 -0
  51. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.js +7 -1
  52. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.js.map +1 -1
  53. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.d.ts +1 -0
  54. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.js +46 -0
  55. package/dashboard/dist-server/dashboard/src/server/agents/stream-monitor.test.js.map +1 -0
  56. package/dashboard/dist-server/shared/agent-types.d.ts +6 -0
  57. package/dist/shared/agent-types.d.ts +6 -0
  58. package/dist/shared/agent-types.d.ts.map +1 -1
  59. package/dist/src/agents/cli-agent-runner.d.ts +3 -0
  60. package/dist/src/agents/cli-agent-runner.d.ts.map +1 -1
  61. package/dist/src/agents/cli-agent-runner.js +1 -0
  62. package/dist/src/agents/cli-agent-runner.js.map +1 -1
  63. package/dist/src/commands/delegate.d.ts +2 -0
  64. package/dist/src/commands/delegate.d.ts.map +1 -1
  65. package/dist/src/commands/delegate.js +18 -0
  66. package/dist/src/commands/delegate.js.map +1 -1
  67. package/dist/src/config/cli-tools-config.d.ts +3 -0
  68. package/dist/src/config/cli-tools-config.d.ts.map +1 -1
  69. package/dist/src/config/cli-tools-config.js.map +1 -1
  70. package/package.json +1 -1
  71. package/shared/agent-types.ts +237 -231
  72. package/.codex/skills/team-coordinate/roles/coordinator/commands/analyze-task.md +0 -247
  73. package/.codex/skills/team-coordinate/roles/coordinator/commands/dispatch.md +0 -126
  74. package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +0 -265
  75. package/.codex/skills/team-coordinate/roles/coordinator/role.md +0 -403
  76. package/.codex/skills/team-coordinate/specs/knowledge-transfer.md +0 -113
  77. package/.codex/skills/team-coordinate/specs/pipelines.md +0 -97
  78. package/.codex/skills/team-coordinate/specs/quality-gates.md +0 -112
  79. package/.codex/skills/team-coordinate/specs/role-spec-template.md +0 -192
  80. package/.codex/skills/team-executor/SKILL.md +0 -116
  81. package/.codex/skills/team-executor/roles/executor/commands/monitor.md +0 -213
  82. package/.codex/skills/team-executor/roles/executor/role.md +0 -173
  83. package/.codex/skills/team-executor/specs/session-schema.md +0 -230
  84. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/analyze.md +0 -56
  85. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/dispatch.md +0 -61
  86. package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +0 -113
  87. package/.codex/skills/team-lifecycle-v4/roles/coordinator/role.md +0 -189
  88. package/.codex/skills/team-lifecycle-v4/schemas/tasks-schema.md +0 -100
  89. package/.codex/skills/team-lifecycle-v4/specs/knowledge-transfer.md +0 -204
  90. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/analyze.md +0 -72
  91. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/dispatch.md +0 -108
  92. package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +0 -163
  93. package/.codex/skills/team-quality-assurance/roles/coordinator/role.md +0 -177
  94. package/.codex/skills/team-review/roles/coordinator/commands/analyze.md +0 -71
  95. package/.codex/skills/team-review/roles/coordinator/commands/dispatch.md +0 -90
  96. package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +0 -135
  97. package/.codex/skills/team-review/roles/coordinator/role.md +0 -176
  98. package/.codex/skills/team-tech-debt/roles/coordinator/commands/analyze.md +0 -47
  99. package/.codex/skills/team-tech-debt/roles/coordinator/commands/dispatch.md +0 -163
  100. package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +0 -133
  101. package/.codex/skills/team-tech-debt/roles/coordinator/role.md +0 -173
  102. package/.codex/skills/team-testing/roles/coordinator/commands/analyze.md +0 -70
  103. package/.codex/skills/team-testing/roles/coordinator/commands/dispatch.md +0 -106
  104. package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +0 -156
  105. package/.codex/skills/team-testing/roles/coordinator/role.md +0 -185
@@ -1,144 +1,214 @@
1
- ---
2
- name: team-tech-debt
3
- description: Team tech debt identification and remediation
4
- allowed-tools: spawn_agent(*), wait_agent(*), send_message(*), followup_task(*), close_agent(*), list_agents(*), report_agent_job_result(*), request_user_input(*), Read(*), Write(*), Edit(*), Bash(*), Glob(*), Grep(*), mcp__ace-tool__search_context(*), mcp__maestro-tools__read_file(*), mcp__maestro-tools__write_file(*), mcp__maestro-tools__edit_file(*), mcp__maestro-tools__team_msg(*)
5
- ---
6
-
7
- <purpose>
8
- Systematic tech debt governance: scan -> assess -> plan -> fix -> validate. Built on **team-worker agent architecture** — all worker roles share a single agent definition with role-specific Phase 2-4 loaded from `roles/<role>/role.md`.
9
-
10
- ```
11
- Skill(skill="team-tech-debt", args="task description")
12
- |
13
- SKILL.md (this file) = Router
14
- |
15
- +--------------+--------------+
16
- | |
17
- no --role flag --role <name>
18
- | |
19
- Coordinator Worker
20
- roles/coordinator/role.md roles/<name>/role.md
21
- |
22
- +-- analyze dispatch spawn workers STOP
23
- |
24
- +-------+-------+-------+-------+
25
- v v v v v
26
- [team-worker agents, each loads roles/<role>/role.md]
27
- scanner assessor planner executor validator
28
- ```
29
-
30
- </purpose>
31
-
32
- <context>
33
- $ARGUMENTS task description and optional flags.
34
-
35
- **Role Router:**
36
- - Has `--role <name>` → Read `roles/<name>/role.md`, execute Phase 2-4
37
- - No `--role` `roles/coordinator/role.md`, execute entry router
38
-
39
- **Role Registry:**
40
- | Role | Path | Prefix | Inner Loop |
41
- |------|------|--------|------------|
42
- | coordinator | [roles/coordinator/role.md](roles/coordinator/role.md) | — | — |
43
- | scanner | [roles/scanner/role.md](roles/scanner/role.md) | TDSCAN-* | false |
44
- | assessor | [roles/assessor/role.md](roles/assessor/role.md) | TDEVAL-* | false |
45
- | planner | [roles/planner/role.md](roles/planner/role.md) | TDPLAN-* | false |
46
- | executor | [roles/executor/role.md](roles/executor/role.md) | TDFIX-* | true |
47
- | validator | [roles/validator/role.md](roles/validator/role.md) | TDVAL-* | false |
48
-
49
- **User Commands:**
50
- | Command | Action |
51
- |---------|--------|
52
- | `check` / `status` | View execution status graph |
53
- | `resume` / `continue` | Advance to next step |
54
- | `--mode=scan` | Scan-only pipeline (TDSCAN + TDEVAL) |
55
- | `--mode=targeted` | Targeted pipeline (TDPLAN + TDFIX + TDVAL) |
56
- | `--mode=remediate` | Full pipeline (default) |
57
- | `-y` / `--yes` | Skip confirmations |
58
-
59
- **Delegation Lock — Coordinator is PURE ORCHESTRATOR:**
60
- | Tool Call | Verdict | Reason |
61
- |-----------|---------|--------|
62
- | `spawn_agent`, `wait_agent`, `close_agent`, `send_message`, `followup_task` | ALLOWED | Orchestration |
63
- | `list_agents`, `request_user_input`, `mcp__maestro-tools__team_msg` | ALLOWED | Coordination |
64
- | `Read/Write` on `.workflow/.team/` files | ALLOWED | Session state |
65
- | `Read` on `roles/`, `commands/`, `specs/` | ALLOWED | Loading instructions |
66
- | `Read/Grep/Glob` on project source code | BLOCKED | Delegate to worker |
67
- | `Edit` on any file outside `.workflow/` | BLOCKED | Delegate to worker |
68
- | `Bash` running build/test/lint | BLOCKED | Delegate to worker |
69
-
70
- **No exceptions.** Even single-file tasks MUST go through spawn_agent.
71
-
72
- **Shared Constants:**
73
- - Session prefix: `TD`
74
- - Session path: `.workflow/.team/TD-<slug>-<date>/`
75
- - CLI tools: `maestro delegate --mode analysis|write`
76
- - Max GC rounds: 3
77
-
78
- **Specs:** [specs/pipelines.md](specs/pipelines.md) Pipeline definitions and task registry
79
-
80
- **Session Directory:**
81
- ```
82
- .workflow/.team/TD-<slug>-<date>/
83
- ├── .msg/ # Team message bus
84
- ├── scan/ # Scanner output
85
- ├── assessment/ # Assessor output
86
- ├── plan/ # Planner output
87
- ├── fixes/ # Executor output
88
- ├── validation/ # Validator output
89
- └── wisdom/ # Cross-task knowledge
90
- ```
91
- </context>
92
-
93
- <invariants>
94
- 1. **Coordinator never executes domain work** — only orchestrates via spawn_agent
95
- 2. **Scanner results inform downstream** — each stage narrows and refines
96
- 3. **Pipeline flow**: TDSCAN TDEVAL TDPLAN → TDFIX → TDVAL
97
- </invariants>
98
-
99
- <execution>
100
-
101
- ### Worker Spawn Template
102
-
103
- Spawn via `team-worker` agent. Message includes: role, role_spec path, session folder/id, requirement, inner_loop flag, task context, upstream context. After spawning: `wait_agent` (30 min). Timeout: STATUS_CHECK (3 min) -> FINALIZE (3 min) -> close.
104
-
105
- ### Model Selection Guide
106
-
107
- | Role | reasoning_effort |
108
- |------|-------------------|
109
- | scanner | medium |
110
- | assessor | high |
111
- | planner | high |
112
- | executor | high |
113
- | validator | medium |
114
-
115
- ### v4 Agent Coordination
116
-
117
- **Message Semantics**: `send_message` for supplementary info to downstream. `followup_task` to assign fixes from planner output. `list_agents` for health checks.
118
-
119
- **Agent Health Check**: Reconcile `meta.json` active tasks with `list_agents({})`. Reset orphaned tasks to pending.
120
-
121
- **Named Targeting**: `send_message({ target: "TDSCAN-001" })`, `followup_task({ target: "TDFIX-001" })`, `close_agent({ target: "TDVAL-001" })`.
122
- </execution>
123
-
124
- <error_codes>
125
- | Scenario | Resolution |
126
- |----------|------------|
127
- | Unknown command | Error with available command list |
128
- | Role not found | Error with role registry |
129
- | Session corruption | Attempt recovery, fallback to manual |
130
- | Fast-advance conflict | Coordinator reconciles on next callback |
131
- | Completion action fails | Default to Keep Active |
132
- | Scanner finds no debt | Report clean codebase, skip to summary |
133
- </error_codes>
134
-
135
- <success_criteria>
136
- - [ ] Role routing correct (coordinator vs worker)
137
- - [ ] Delegation lock enforced (coordinator never executes domain work)
138
- - [ ] Pipeline stages execute in order (scan → assess → plan → fix → validate)
139
- - [ ] Worker spawn uses correct template with role-spec paths
140
- - [ ] Timeout handling applied (STATUS_CHECK → FINALIZE → close)
141
- - [ ] Scanner results flow through downstream stages
142
- - [ ] Session directory structure maintained
143
- - [ ] Completion action presented to user
144
- </success_criteria>
1
+ ---
2
+ name: team-tech-debt
3
+ description: Team tech debt identification and remediation
4
+ argument-hint: "[scope] [-y|--yes] [-c|--concurrency N] [--continue] [--mode scan|remediate|targeted]"
5
+ allowed-tools: spawn_agents_on_csv, Read, Write, Edit, Bash, Glob, Grep, request_user_input
6
+ ---
7
+
8
+ <purpose>
9
+ Wave-based tech debt pipeline via `spawn_agents_on_csv`. Scan → Assess → Plan → Fix → Validate with user-gated remediation plan and fix-verify GC loops.
10
+
11
+ ```
12
+ +-------------------------------------------------------------------+
13
+ | TECH DEBT CSV WAVE WORKFLOW |
14
+ +-------------------------------------------------------------------+
15
+ | Phase 1: Mode Selection + CSV Generation |
16
+ | +-- Detect mode (scan/remediate/targeted) |
17
+ | +-- Build tasks.csv from pipeline definition |
18
+ | |
19
+ | Phase 2: Wave Execution Engine |
20
+ | +-- Sequential waves |
21
+ | +-- User approval after TDPLAN (plan gate) |
22
+ | +-- Fix-Verify GC loop (max 3 rounds on regression) |
23
+ | |
24
+ | Phase 3: Results Aggregation |
25
+ +-------------------------------------------------------------------+
26
+ ```
27
+ </purpose>
28
+
29
+ <context>
30
+ ```bash
31
+ $team-tech-debt "src/"
32
+ $team-tech-debt -y --mode remediate "src/auth"
33
+ $team-tech-debt --mode targeted "high-priority debt items"
34
+ $team-tech-debt --continue "20260518-td-auth"
35
+ ```
36
+
37
+ **Flags**: `-y` (auto), `-c N` (concurrency, default 3), `--continue` (resume), `--mode scan|remediate|targeted`
38
+
39
+ ### Role Registry (Fixed)
40
+
41
+ | Role | Path | Prefix |
42
+ |------|------|--------|
43
+ | scanner | [roles/scanner/role.md](roles/scanner/role.md) | TDSCAN-* |
44
+ | assessor | [roles/assessor/role.md](roles/assessor/role.md) | TDEVAL-* |
45
+ | planner | [roles/planner/role.md](roles/planner/role.md) | TDPLAN-* |
46
+ | executor | [roles/executor/role.md](roles/executor/role.md) | TDFIX-* |
47
+ | validator | [roles/validator/role.md](roles/validator/role.md) | TDVAL-* |
48
+
49
+ **Session**: `.workflow/.csv-wave/{YYYYMMDD}-td-{slug}/`
50
+
51
+ ### Scan Dimensions
52
+ code, architecture, testing, dependency, documentation
53
+ </context>
54
+
55
+ <csv_schema>
56
+
57
+ ### tasks.csv (Input columns)
58
+
59
+ ```csv
60
+ id,title,description,role,scan_dimension,deps,context_from,wave
61
+ ```
62
+
63
+ | Column | Description |
64
+ |--------|-------------|
65
+ | `id` | Task ID: `{PREFIX}-{NNN}` |
66
+ | `title` | Short task title |
67
+ | `description` | PURPOSE/TASK/EXPECTED/CONSTRAINTS |
68
+ | `role` | Fixed role name |
69
+ | `scan_dimension` | code/arch/testing/deps/docs or empty |
70
+ | `deps` | Semicolon-separated dependency IDs |
71
+ | `context_from` | Context source IDs |
72
+ | `wave` | Wave number |
73
+
74
+ **Output columns** (via `output_schema` only):
75
+
76
+ | Column | Description |
77
+ |--------|-------------|
78
+ | `result_status` | completed / failed / blocked |
79
+ | `findings` | Key findings (max 500 chars) |
80
+ | `files_modified` | Semicolon-separated paths |
81
+ | `debt_count` | Number of debt items found/fixed |
82
+ | `regression_detected` | true/false (for TDVAL tasks) |
83
+ | `error` | Error message |
84
+
85
+ **Column separation rule**: Input and Output MUST NOT share names.
86
+
87
+ ### Pipeline Wave Assignments
88
+
89
+ #### scan (2 waves)
90
+
91
+ | Wave | Task | Role |
92
+ |------|------|------|
93
+ | 1 | TDSCAN-001 | scanner |
94
+ | 2 | TDEVAL-001 | assessor |
95
+
96
+ #### remediate (5+ waves, with plan gate + GC)
97
+
98
+ | Wave | Task | Role |
99
+ |------|------|------|
100
+ | 1 | TDSCAN-001 | scanner |
101
+ | 2 | TDEVAL-001 | assessor |
102
+ | 3 | TDPLAN-001 | planner |
103
+ | | User plan approval gate | |
104
+ | 4 | TDFIX-001 | executor |
105
+ | 5 | TDVAL-001 | validator |
106
+ | 5+ | GC: TDFIX+TDVAL if regression_detected (max 3) | executor, validator |
107
+
108
+ #### targeted (3+ waves, skip scan)
109
+
110
+ | Wave | Task | Role |
111
+ |------|------|------|
112
+ | 1 | TDPLAN-001 | planner |
113
+ | | User plan approval gate | — |
114
+ | 2 | TDFIX-001 | executor |
115
+ | 3 | TDVAL-001 | validator |
116
+ | 3+ | GC if regression_detected (max 3) | executor, validator |
117
+ </csv_schema>
118
+
119
+ <invariants>
120
+ 1. **Wave Order Sacred**
121
+ 2. **CSV Source of Truth**
122
+ 3. **Column Separation Rule**
123
+ 4. **Plan Approval Gate**: User must approve remediation plan (skip if -y)
124
+ 5. **Fix-Verify GC Max 3**: On regression detection
125
+ 6. **Discovery Board Append-Only**
126
+ 7. **Cleanup Temp Files**
127
+ 8. **DO NOT STOP**: Continuous between gates
128
+ 9. **Role Files Authoritative**
129
+ </invariants>
130
+
131
+ <state_machine>
132
+
133
+ <states>
134
+ S_PARSE — Parse arguments, detect mode
135
+ S_CSV_GEN — Generate tasks.csv
136
+ S_WAVE_{N} — Execute wave N
137
+ S_PLAN_GATE — User approval of remediation plan
138
+ S_GC_CHECK — Regression check after TDVAL
139
+ S_AGGREGATE — Generate report
140
+ </states>
141
+
142
+ <transitions>
143
+ S_PARSE S_CSV_GEN
144
+ S_CSV_GEN → S_WAVE_1
145
+ S_WAVE_{N} → S_PLAN_GATE WHEN: TDPLAN wave complete, TDFIX pending
146
+ S_WAVE_{N} → S_GC_CHECK WHEN: TDVAL wave complete, regression_detected possible
147
+ S_WAVE_{N} → S_WAVE_{N+1} WHEN: more waves
148
+ S_WAVE_{N} → S_AGGREGATE WHEN: last wave
149
+ S_PLAN_GATE → S_WAVE_{N+1} WHEN: user approves
150
+ S_PLAN_GATE → S_WAVE_{N} WHEN: user requests revision (re-run TDPLAN with feedback)
151
+ S_PLAN_GATE → S_AGGREGATE WHEN: user aborts
152
+ S_GC_CHECK → S_AGGREGATE WHEN: no regression or gc_rounds >= 3
153
+ S_GC_CHECK → S_WAVE_{N+1} WHEN: regression, add TDFIX+TDVAL rows
154
+ </transitions>
155
+
156
+ <actions>
157
+
158
+ ### Plan Gate
159
+
160
+ After TDPLAN wave:
161
+ 1. Read planner's `findings` (remediation plan)
162
+ 2. Display: debt items, priority, estimated effort
163
+ 3. `request_user_input`: Approve / Revise / Abort
164
+ 4. Approve → continue to TDFIX wave
165
+ 5. Revise → re-run TDPLAN with feedback
166
+ 6. Abort → aggregate with scan+assess results only
167
+
168
+ ### Fix-Verify GC Loop
169
+
170
+ After TDVAL wave:
171
+ 1. Read `regression_detected` from results
172
+ 2. No regression → complete
173
+ 3. Regression AND gc_rounds < 3 → add TDFIX+TDVAL rows, iterate
174
+ 4. gc_rounds >= 3 → escalate to user
175
+
176
+ ### Instruction Builder
177
+
178
+ ```
179
+ You are a team-tech-debt agent.
180
+ Role: read 'role' column. Task: read 'description' column.
181
+
182
+ ## Role Definition
183
+ Read: {skillRoot}/roles/{role}/role.md
184
+
185
+ ## Context
186
+ Session: {sessionFolder}
187
+ Discovery board: {sessionFolder}/discoveries.ndjson
188
+ Previous context: 'prev_context' column
189
+
190
+ ## Output
191
+ result_status, findings, files_modified, debt_count, regression_detected (TDVAL), error
192
+ ```
193
+
194
+ </actions>
195
+ </state_machine>
196
+
197
+ <error_codes>
198
+
199
+ | Condition | Recovery |
200
+ |-----------|----------|
201
+ | Scanner found 0 debt items | Skip to aggregate, report clean |
202
+ | Regression persists after 3 GC rounds | Escalate to user |
203
+ | Plan rejected by user | Aggregate with scan results only |
204
+ | Fix introduces new debt | Log warning, continue to validation |
205
+ </error_codes>
206
+
207
+ <success_criteria>
208
+ - [ ] Mode selected and CSV generated
209
+ - [ ] Scan → Assess → Plan → Fix → Validate pipeline
210
+ - [ ] User approval gate for remediation plan
211
+ - [ ] Fix-Verify GC loop on regression (max 3)
212
+ - [ ] Column separation maintained
213
+ - [ ] results.csv and context.md generated
214
+ </success_criteria>