review-debt · v1.1.0 · 2026-08-30 · sha256 d17213578fef0f9c

review-debt v1.1.0A

Immutable. This exact content is served forever at /api/v1/blob/d17213578fef0f9c.

---
name: review-debt
user-invocable: false
version: 1.1.0
author: "Gabriel Trabanco <gtrabanco@users.noreply.github.com>"
license: MIT
description: >
  Internal tech-debt transform pass of the agentic-workflow review pack —
  composed in-turn by review-change and product-audit; not a menu entry.
  Transforms the synthesized findings table into explicit debt items, each with
  a re-trigger condition; it does not rescan the diff. Findings only; never
  edits code.
---

# 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
✓ 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

## Return exactly

```
REVIEW TECH DEBT — scope: <scope>

| # | Finding | Sev | Evidence | Suggested fix |
|---|---------|-----|----------|---------------|
| 1 | <what>  | critical|major|minor | <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 critical or major finding is open; PASS otherwise. Minor 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.