feat(retro,preamble): gstack-shortcut debt ledger — accepted shortcuts leave a joined trail

When the user accepts an option that is BOTH Completeness <= 7 AND a
durable-scope call, the decision ledger entry (gstack-decision-log, ceiling +
upgrade trigger in the rationale) is the source of truth, and the agent marks
each cut corner in code with gstack-shortcut(dec-<id>): <ceiling>, upgrade
when <trigger> — same edit, no follow-up question, never agent-initiated.

/retro Step 11.5 harvests markers into a debt ledger (grep || true — zero
matches is the healthy case; skill installs and docs excluded), joins on the
decision id so nothing double-counts, tags unlinked and no-trigger rot risks,
and closes with 'N markers, M with no trigger.'

/review suppressions: a marker with ceiling+trigger downgrades a would-be
Completeness Gaps finding to acknowledged debt. Redaction test pins that the
marker ships untouched (the ledger is the point) — it does not match the
TODO(owner) hygiene shape.

Format from dietrichgebert/ponytail's ponytail-debt; store inverted to gstack's
existing decision ledger.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Garry Tan
2026-08-28 01:50:31 +00:00
co-authored by Claude Fable 5
parent 86530fe320
commit 80ae2b59fa
44 changed files with 144 additions and 0 deletions
+9
View File
@@ -380,6 +380,15 @@ describe("LOW patterns surface only", () => {
);
expect(f?.tier).toBe("LOW");
});
test("gstack-shortcut(dec-*) debt marker survives redaction untouched", () => {
// The shortcut ledger convention (AskUserQuestion Format / /retro Step 11.5)
// ships in commits and PR bodies BY DESIGN — the ledger is the point. It
// must not be caught by hygiene.todo's TODO(owner) shape or anything else.
const marker =
"// gstack-shortcut(dec-a1b2c3): global lock, upgrade when throughput matters";
const result = scan(marker, { repoVisibility: "public" });
expect(result.findings).toHaveLength(0);
});
});
describe("placeholder suppression (per-span)", () => {