You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
clean or pass cap, then report once. Use after a tracer-bullet commit (lite), before PR
7
-
is done (full), or on "harden", "harden-pr", "pristine", "review until clean",
8
-
"production-ready pass". Invoking this skill authorizes one harden commit at cycle end.
7
+
is done (full), on "harden", "harden-pr", "pristine", "review until clean",
8
+
"production-ready pass", or "harden-pr reconcile". Invoking this skill authorizes one harden commit at cycle end.
9
9
NEVER stop mid-loop to ask about commits, babysit, or the next pass. NEVER redesign the
10
10
feature or change observable runtime behavior.
11
11
---
@@ -16,9 +16,9 @@ description: >-
16
16
17
17
Local loop: parallel reviewer subagents → merge findings → fix in-bounds → re-verify → repeat until clean or cap → **one final report**.
18
18
19
-
**Invoking this skill (`/harden-pr`, `harden-pr lite`, `harden-pr full`) is a run-to-completion command.** The agent executes the full loop before ending the turn.
19
+
**Invoking this skill (`/harden-pr`, `harden-pr lite`, `harden-pr full`, `harden-pr quick`, `harden-pr reconcile`) is a run-to-completion command.** The agent executes the full loop before ending the turn.
20
20
21
-
Sister skills: [`audit-pr-architecture`](../audit-pr-architecture/SKILL.md) (extended structural reviewer). Mention **`babysit`** only in the final report (full mode) — never mid-loop.
21
+
Sister skills: [`audit-pr-architecture`](../audit-pr-architecture/SKILL.md) (extended structural reviewer). **Ledger:**[LEDGER.md](./LEDGER.md) (rejections + deferred — one file). Mention **`babysit`** only in the final report (full mode) — never mid-loop.
22
22
23
23
## Run-to-completion (read first)
24
24
@@ -42,12 +42,14 @@ Otherwise: resolve anchor → run all passes → fix → verify → next pass
|**Lite**| After each tracer-bullet slice commit ([`tracer-bullets`](../../rules/tracer-bullets.md) cadence) | Files in the slice diff | 2 |
48
+
|**Quick**| Cheap uncertainty pass ("quick harden") | Last commit or slice diff | 1 |
49
+
|**Full**| User intent ("full harden", "PR done", "production-ready pass") **or** offer when an in-flight `docs/plans/<topic>.md` checklist is complete |`origin/main...HEAD`| 3 |
50
+
|**Reconcile**|`/harden-pr reconcile` — process [LEDGER.md § Deferred](./LEDGER.md#deferred), then run **full** if branch still open |`origin/main...HEAD`| 3 |
49
51
50
-
Default to **lite** when invoked immediately after a slice commit. Default to **full** when the user signals branch completion.
52
+
Default to **lite** when invoked immediately after a slice commit. Default to **full** when the user signals branch completion.**Quick** = core 3 reviewers only (no extended roster).
51
53
52
54
## Production bar (what "pristine" means)
53
55
@@ -76,6 +78,27 @@ Resolve in order; stop at the first hit:
76
78
77
79
Reviewers treat the anchor as contract. Findings that would violate it → **report, do not apply**.
78
80
81
+
Record `HEAD` at loop start (`git rev-parse HEAD`) in the final report. If `HEAD` changes mid-loop from unrelated work, re-resolve the anchor before the next pass.
82
+
83
+
## Vet step (parent, after merge — before fix)
84
+
85
+
Subagents over-report. After merge + dedupe:
86
+
87
+
1. Read [LEDGER.md § Rejections](./LEDGER.md#rejections) — drop findings matching a rejection entry.
88
+
2. For each remaining finding: **re-read**`file` at `line` (or the cited region). Drop if the claim is false or by-design.
89
+
3. New by-design drops → append one bullet to **§ Rejections** in [LEDGER.md](./LEDGER.md).
90
+
4. Sort survivors by leverage: `severity` first, then `confidence` desc, then `effort` asc (`S` before `L`).
91
+
92
+
**Anti-pattern:** applying a fix without re-reading the cited location.
93
+
94
+
## Reconcile mode
95
+
96
+
Run-to-completion like other modes:
97
+
98
+
1. Read [LEDGER.md § Deferred](./LEDGER.md#deferred). Re-vet each row (same vet step). Fix in-bounds items; remove fixed lines.
99
+
2. Run **full** harden on `origin/main...HEAD` (same loop as full mode).
100
+
3. On cap: append still-deferred items to **§ Deferred** in [LEDGER.md](./LEDGER.md). Report what was reconciled vs still open.
Harden read surfaces: `codemap query --format …` blocks index mutations via the same read-only guard as `--json`; `codemap serve` requires `--token` when `--host` is not loopback (any `127.0.0.0/8` address counts as loopback, so `--token` stays optional on `127.0.0.2` and similar); `codemap validate` (and MCP/HTTP `validate`) can return `rejected` rows with optional `reason` (`path escapes project root` | `path escapes via symlink` | `path resolves outside project root`) — output `path` keys are always project-relative POSIX paths.
0 commit comments