stage1-classifier-hardeninglisted
Install: claude install-skill LouPineWays/Loop-Dee-Loup
# Stage 1 classifier hardening
**Trigger:** a new misclassification is reported against `tools/review-watch/genuine-response.mjs` — a genuine Codex review wrongly gated as non-genuine (or vice versa), a BLOCKED/refusal/Codex-Cloud-setup reply wrongly accepted as a real review, or a PR-body `Stage 1 exemption:` declaration wrongly matched or missed by `findExemption`.
**Out of scope:** state-machine / correlation-logic defects — binding a response to the wrong frozen PR head, re-triggering across fix-commit heads, or anything about *which* comment/timestamp is being evaluated rather than *how a given piece of text classifies*. Those (e.g. issues #163, #165) are structurally different, single-occurrence defects. Route them through the normal bounded-review-cycle correction, not this skill.
## Procedure
1. **Reproduce with the real input for the real function.** The two entry points see different inputs, and reproducing with the wrong one risks an incorrect fix: `isGenuineResponse` only ever sees `body_excerpt = body.slice(0, 200)`, truncated by `findAllMatches` (`poll.mjs`; consumed in `stage1-gate.mjs`, `trigger.mjs`, `lifecycle-gate.mjs`) — reproduce from that exact 200-character excerpt, not the full reported body. `findExemption` sees the **full, untruncated** PR body (`stage1-gate.mjs` passes `gh pr view`'s output directly) — reproduce from the complete body, since an exemption declaration past character 200 or a fenced example spanning that boundary would classify dif