Review Tech Debt (internal)
Composed by review-change / product-audit within their conversation — on any
agent, follow this file inline as the routed step. Findings only; never edits,
never refactors.
Scope
The caller's synthesized findings table (the fused, classified decision
table). This pass does not rescan the diff: debt-shaped findings are already
in the table, and every ownership decision already happened in the finder axes
(review-code, review-verify, …). State the scope — the change the table was
synthesized over — at the top of the returned table.
Transform (evaluate EVERY row — none is optional; n/a must be stated)
Turn the table's tech-debt-shaped rows (TODO/FIXME/HACK, duplication, stale or orphaned abstractions, dead code, complexity hotspots, missing tests, workarounds pinned to upstream fixes) into explicit, payable debt items:
✓ Restate each debt-shaped finding at file:line with what it defers
✓ Attribute it to the axis already recorded in the table — never re-litigate ownership
✓ Confirm every debt item carries a TRIGGER: the condition under which it must be
paid (e.g. "3rd consumer appears", ">100k rows") — a debt item without a
trigger is itself a finding. Scheduled deletions carry their trigger as the
removal condition (S8: review-debt items become scheduled deletions whose
TRIGGER names the removal — executable by a fold batch, not archival prose).
✓ Verify no current-unit debt was mislabeled non-blocking: current-unit work
cannot be postpone/tradeoff/wontfix — a table showing one is flagged back
to the classifier, never reclassified here
✓ Honor the dead-code exception: staged/planned code cross-checked against the
roadmap/SPEC/TASKS is not dead code — mark verify when unsure, never assert
✓ Deletion route. A debt item that proposes removal of a surface carries
route: fix-now (delete), not route: fix-now (repair). The TRIGGER
specifies what proves the surface is safe to remove (e.g. "no consumer in
grep returns >0").
Return exactly
Sev and Impact are the two published closed sets (BLOCKER | CRITICAL | WARNING | SUGGESTION and blocking | docs-only | report-only); their meanings
are owned by review-implementation (CLASSIFY.md §Severity ladder) — assign a
token, never a prose grade.
REVIEW TECH DEBT — scope: <scope>
| # | Finding | Sev | Impact | Evidence | Suggested fix |
|---|---------|-----|--------|----------|---------------|
| 1 | <what> | BLOCKER|CRITICAL|WARNING|SUGGESTION | blocking|docs-only|report-only | <file:line> | <trigger + smallest action> |
Rows: <n> transformed, <n> with trigger, <n> findings, <n> n/a (<which + why>)
Summary: <1-2 sentences>
Decision: PASS | FAIL
For this pass, the Suggested fix column carries the TRIGGER — the condition under which the debt must be paid — alongside the smallest action.
FAIL if any BLOCKER, CRITICAL or WARNING finding is open; PASS otherwise.
SUGGESTION findings never block — they surface in the caller's report as debt notes.
Done when
- Every debt-shaped row of the synthesized table was transformed with evidence
(
file:line) or explicitly marked n/a with the reason. - Every debt item carries a trigger; no current-unit debt was mislabeled.
- The fixed-format block above is returned — nothing more, nothing less — and no code was changed.