landing-check — did the work land, and are the claims true?
Three questions nothing else in the toolchain asks. /code-review reads the
diff for correctness. /audit sweeps the whole project, cold. coding-conventions
makes the author re-run their own code. All three can pass while the change
went to a file nothing executes, the report states a number that is wrong, and
half the copies were never touched.
The failure class this exists for, observed in practice: a security fix was
deployed by looping over every .git/hooks/pre-commit file in a set of repos.
But several of those repos set core.hooksPath, and git then ignores
.git/hooks entirely — so in some of them the fix landed on a dead file while
the live hook kept the old path. The loop confirmed every write, and the report
asserted the fix was universal for six days. The diff was correct. The
verification was real. Both were about the wrong file.
Every check below is one a real run needed. None is speculative — see
Provenance at the end. Ten runs in: the sweep has found zero code bugs and
roughly forty false claims, mislanded fixes, dead guards, and corrections that
did not propagate. That is the shape of what it catches.
Trigger
/landing-check, or: "did that land", "sweep the changes", "verify what I just
did", "check my work before I commit". Invoked only — it costs an agent, so it
never fires on its own.
Not this skill
- Code correctness in the diff →
/code-review (built-in; has multi-agent
and --fix). Do not re-review logic here.
- Whole-project sweep →
/audit (cold, expensive).
- Re-running what you just wrote →
coding-conventions (same context, author's own
eyes, fires from the PostToolUse hook).
If a finding belongs to one of those, name it and hand it off — don't grow
this skill into them.
How to run it
Spawn ONE fresh agent (Agent tool, general-purpose). Moderate context: this
is scoped to what changed, not to the project.
What the agent gets — artifacts only:
- the repo paths touched, and one line on what the project is;
git status + git diff (and git diff --stat per repo) — or, for
non-repo trees, the list of paths modified this session;
- the WRITTEN account of the work: commit messages, the record entry, the
final report text, any doc edited to describe the change;
- which of the touched trees are PUBLIC (pushed anywhere), if any;
- steps 1–3 and the output format below, and the instruction to mark anything
it does not reach NOT SWEPT.
What it must NOT get: your account of what you did. The claims are the
specimen. If you hand the agent your summary, you hand it the same blind spot
that produced the error — you become both defendant and witness. It re-derives
every claim from the written artifacts and from disk. This is the one rule that
makes the skill worth its cost; drop it and this is self-grading in a second
window.
The agent re-reads state live. git status, ahead/behind, what is pushed:
derived at sweep time, not from the capture it was handed — other sessions
commit, push and edit in between (a concurrent session has committed a fix
inside an unrelated commit; six repos were pushed minutes before a sweep that
was told "zero pushes"). ahead N proves nothing without a fetch first — ask
the remote (git ls-remote, then rev-list --left-right --count @{u}...HEAD).
1. LANDING — did the edit reach the file that runs?
For every changed file, ask whether another copy exists and whether something
chooses between them. The signature is: the edited file and the executed file
have the same name and different paths.
- Shadowing:
git config core.hooksPath (set ⇒ .git/hooks/* is dead
code; resolve with git rev-parse --git-path hooks/<name>, the resolver git
itself uses), PATH order for scripts, symlinks, vendored copies under
node_modules, a venv copy vs a repo copy.
- Multi-tree systems: if a file exists in more than one tree (installed /
lab / public, dev / dist, src / build), which one does the runtime load? Was
the changed one it?
- Registration: if the change adds or edits something that must be wired up
(a hook, a scheduled task, a route, an entry point), read the registration
file and confirm the path there resolves to the file you changed.
- Activation — the right file is necessary, not sufficient. For anything
that is a control — a guard, deny rule, hook matcher, regex, permission
pattern, canary assertion, ignore rule — plant the positive it exists to
catch and watch it fire, then a negative and watch it stay quiet. A control
never observed firing is UNVERIFIED. Controls that read as protection and
could not fire, all found by runs: deny rules that were prefix matchers and
could never block a mid-command token; a leak regex whose
\R compiled to
X:Repo and could not match a real path; a case-sensitive name filter
that let an all-caps spelling through; an assertion
/findings/.test(src) that was true forever.
- Verdict per changed file: LANDED / MISLANDED / UNVERIFIABLE (say
why). A file whose executing copy you could not determine is UNVERIFIABLE, not
LANDED. A dead copy left behind is not itself a finding — say which copy is
live and that the edit is in it.
2. CLAIMS — does the written account match disk?
Extract every checkable assertion from the artifacts, then re-derive each one
independently — a different command than the one that produced it, where a
different one exists. Priority order, highest yield first:
- Universals — "all 7", "every copy", "byte-identical", "none remain",
"0 findings", "nothing leaked across all 17 repos". One miss falsifies the
whole statement, and this is the class that produced the 08-05 error.
Enumerate the full set and check each member; never accept a spot check as
proof of a universal. A universal you could only spot-check is UNVERIFIED.
- Counts — "17 rules", "29 skills", "21/21". Count from the source of
truth, not from the sentence. Watch the tense: a count of record entries
written inside the entry being counted is off by one the moment it lands; a
"the only dirty files left" claim made from inside a dirty file is
self-falsifying; a citation of an entry that does not exist yet points at
nothing until it is written.
- States — "passes", "clean", "regenerated", "pushed". Run it, or read the
artifact that proves it. Quoted output is a claim about the program: if
an artifact quotes a line of tool output as evidence, grep the tool for that
literal — a line printed only on the failure branch cannot evidence a pass,
and a line the program never emits is a fabricated quote.
- Numbers — a value with more significant figures than the output it
traces to is invented (13 share counts published at 4 dp from a 2 dp table:
12 wrong). A statistic from a LIVE corpus (transcripts, logs, a growing
record) is not reproducible without its corpus state pinned (file count +
timestamp); report it as UNVERIFIED-AS-STATED and name what does
reproduce. Check the arithmetic inside one sentence ("27 plus 3 … 29
today"). For comparisons: same sample set in every arm, estimator named, n
stated — a 2×2 whose arms do not share batches is not a comparison. An
absent field is not
false. An == on a float that round-trips through
float32 never matched, and the committed JSON held 0.0 for a true 0.605.
- Internal contradiction — a sentence falsified by its own paragraph's
caveat five lines later; a claim and its refutation both present with no
dated strike; the same figure quoted three times and wrong in all three.
A claim you cannot check is reported as UNVERIFIED, never as true. A claim
that is true but for a different reason than stated is a finding.
3. COLLATERAL — what should have moved and didn't?
The diff shows what changed. This asks what the change obligated and left
undone. Run the inverse of the diff: for each changed value or concept, grep the
tree for other places still asserting the old one.
- Sibling copies — every other tree/branch/package holding the same file.
The fix for a mislanding has itself mislanded in one of two copies; a
wholesale copy of a private file over its public twin has re-introduced what
an earlier commit deliberately removed — compare the public copy to its own
git show HEAD:, not to the private source.
- Correction propagation — if the work corrects a claim, find every other
copy of the OLD claim: HANDOFF, PRD, memory bins, README, code comments, the
public twin, the skill's own description. "Corrected in the record, left
HANDOFF and the bin stating the old numbers" and "the third copy of this
claim was still unstruck" are the most repeated finding of every run.
- Docs quoting the changed value — READMEs, skill descriptions, HANDOFF,
PRD, comments,
MUST print N/N pins. A count changed in code and unchanged in
prose is a finding.
- Publication leak — landed where it must NOT. If any touched tree is
public: sweep its diff (and the files it touched, against
HEAD) for private
identifiers — names, emails, absolute paths, private project names —
case-insensitively. Say whether this change introduced the string or
inherited it; the two need different fixes and the author has called the
first the second before.
- Generated twins — rendered HTML of a record, TOC rows, memory bins,
anchors: regenerated? An anchor that resolves but lands one heading early is
not "broken", so
broken: 0 does not prove it.
- New artifact types — did the work create a kind of file that did not exist
before (cache dirs, build output, logs)? Is there an ignore rule, and is it in
the right repo?
- Byproducts — files created and left behind: untracked files, temp
directories,
__pycache__, .tmp, backups. List them with full paths; do not
delete anything.
- The obligation the docs state — if the project's own rules say a change of
this kind requires something (a record entry, a regenerated twin, a synced
snapshot, a test run, a pin bump), check that it happened.
Probe — the mechanical half, run before the agent judges
landing-probe.js (portable Node, zero deps, read-only) enumerates what steps
1–3 would otherwise re-derive by hand, so the agent reads a census instead of
guessing one. Give it every touched tree; hand its output to the agent as an
artifact.
node landing-probe.js probe <root>... [--file <p>]... [--since <min>]
[--settings <json>] [--remote] [--all]
node landing-probe.js --canary
HOOK — per repo, per hook: the file git will RUN (git rev-parse --git-path, honours core.hooksPath) and any DEAD copy in the other
place; a registered path with no file is MISSING.
CHANGED — staged / modified / untracked per repo; --file names files
outside any repo; --since N adds files modified in the last N minutes under
NON-repo roots (an installed tree is not a repo).
TWIN — for each changed file, every same-name file under any root, SAME or
DIFF (sha256, CRLF-normalized). Conventional names (SKILL.md, README.md
— any basename with more than 6 copies) match on parent-dir/name, not name
alone. --all lists every twin group, not just the changed ones.
REG — --settings <json>: every path-shaped string (after ~/$HOME/
%USERPROFILE% expansion) and whether it RESOLVES.
REMOTE — ahead/behind per repo, labelled CACHED ref unless --remote
fetched first. ahead N off a cached ref proves nothing.
Exit 1 when there is something to look at (a DEAD hook, a DIFF twin of a changed
file, a MISSING registration); 0 for a clean census. It judges nothing — DIFF
between a private and its genericized public copy is expected, and the agent
says so. --canary builds throwaway repos (hooksPath set / unset / pointing at
nothing, a bare remote and a clone one commit ahead, CRLF twins, a
conventional-name forest, a settings file with one missing path) and MUST print
CANARY PASS 23/23 before you trust a census.
Output
Short. This is a pre-commit sanity sweep, not an audit report.
- Verdict line: SAFE TO COMMIT / FIX FIRST / UNVERIFIABLE, one sentence.
- Coverage line: which artifacts were read, which trees swept, and what was
NOT SWEPT — a short report must never read as a clean one.
- Landing table:
file | copies found | which one executes | fired on a planted positive? | verdict. Only rows that are MISLANDED or UNVERIFIABLE
need detail.
- Claims table:
claim (quoted) | source artifact | re-derived result | TRUE / FALSE / UNVERIFIED.
- Collateral list: what should have moved and didn't, each with a path.
- Confirmed: the load-bearing negatives and the numbers that re-derived
exactly (no misland, no leak, 25/25 reproduced) — a sweep that reports only
faults teaches nothing about what is solid, and the author's record needs
them.
- Handoffs: anything belonging to
/code-review, /audit, or coding-conventions,
named and passed on rather than half-done here.
After the report
- Re-verify every finding by hand before acting. The verifier's claims are
claims: one run's re-derived integers were off because the corpus had grown
under it; the invariants held. Accept what reproduces.
- The fix is subject to the same three questions. Fixes to FIX FIRST
findings go to every copy and every doc quoting the old value — the run that
fixed a one-of-two-copies mislanding shipped the fix to one of two copies.
- Write the record entry from the re-derived values, after the last
verification run, not before it: an entry written first records the state you
expected, and the append-only record makes that permanent.
Rules
- Findings only. Change nothing, delete nothing — including byproducts and
files that look like junk. Report paths; the author decides.
- Evidence or it isn't a finding: a command and its output, a file:line, or
a reproduced state. No speculation.
- A zero result is a claim. If a search comes back empty and something
load-bearing rests on it, re-run it a second way before believing it — and if
a whole-repo search returns nothing, grep the ignore files for
{/} first
(one malformed glob silently hides an entire repo from ripgrep-backed tools;
git is unaffected). A backslash pattern that matches nothing proves nothing:
retry with grep -F, or build the path from a char code.
- Never fabricate a count, path, or command output. "Could not determine" is
a valid and expected verdict.
- Cut short is not clean. If the agent dies or is resumed mid-sweep, it
marks what it did not reach NOT SWEPT; a partial report that says which parts
are partial is worth more than a complete-looking one that does not.
- The probe has a canary; the judgment does not. Steps 2–3 and the verdict are
prose run by an agent, and are only as good as that agent — a clean probe is
a clean census, not a clean sweep. Say so rather than implying a gate.
Provenance
Ten runs over eleven days across four projects (a skills suite, an ML/robotics
project, a web app, a trading system). Among what they found: four false claims
on the first run, one inside this skill's own anecdote; a fix broken by its
canary's blind spot; a "pre-existing" leak the fix pass had introduced; a fix
landed in one of two copies; a dead leak regex; every record anchor one heading
off; a personal identifier in a public repo; 27 stale doc pins; four wrong
numbers in a sealed entry; quoted output the program never prints; a false
universal in a public repo; an unmatched 2×2; a float == that wrote 0.0
for 0.605; an unrendered status; a route enumeration wrong in three places
including the source comment; prefix-matching deny rules that blocked nothing;
4 dp share counts from 2 dp output. Zero of these were code bugs.
1---2name: landing-check3description: Post-work verification sweep run by a FRESH agent: did the change land where it actually executes (and does a new guard actually FIRE), do the stated claims match disk, what should have moved and didn't, and did anything land where it must NOT (a private identifier in a public copy). Reads claims from ARTIFACTS (diff, record entry, report), never from the session's recollection. Use when: "landing-check", "did that land", "sweep the changes", "verify what I just did", "check my work", before committing a multi-file or multi-tree change. Invoked only — never auto-fires. Ships landing-probe.js (hooksPath / twin / registration / remote census, zero deps) for the mechanical half. Defers code correctness to /code-review and whole-project sweeps to /audit.4---56# landing-check — did the work land, and are the claims true?78Three questions nothing else in the toolchain asks. `/code-review` reads the9diff for correctness. `/audit` sweeps the whole project, cold. `coding-conventions`10makes the author re-run their own code. All three can pass while the change11went to a file nothing executes, the report states a number that is wrong, and12half the copies were never touched.1314**The failure class this exists for, observed in practice:** a security fix was15deployed by looping over every `.git/hooks/pre-commit` file in a set of repos.16But several of those repos set `core.hooksPath`, and git then ignores17`.git/hooks` entirely — so in some of them the fix landed on a dead file while18the live hook kept the old path. The loop confirmed every write, and the report19asserted the fix was universal for six days. **The diff was correct. The20verification was real. Both were about the wrong file.**2122Every check below is one a real run needed. None is speculative — see23Provenance at the end. Ten runs in: the sweep has found **zero code bugs** and24roughly forty false claims, mislanded fixes, dead guards, and corrections that25did not propagate. That is the shape of what it catches.2627## Trigger28`/landing-check`, or: "did that land", "sweep the changes", "verify what I just29did", "check my work before I commit". Invoked only — it costs an agent, so it30never fires on its own.3132## Not this skill33- **Code correctness in the diff** → `/code-review` (built-in; has multi-agent34 and `--fix`). Do not re-review logic here.35- **Whole-project sweep** → `/audit` (cold, expensive).36- **Re-running what you just wrote** → `coding-conventions` (same context, author's own37 eyes, fires from the PostToolUse hook).38 If a finding belongs to one of those, name it and hand it off — don't grow39 this skill into them.4041## How to run it4243**Spawn ONE fresh agent** (Agent tool, general-purpose). Moderate context: this44is scoped to what changed, not to the project.4546**What the agent gets — artifacts only:**47- the repo paths touched, and one line on what the project is;48- `git status` + `git diff` (and `git diff --stat` per repo) — or, for49 non-repo trees, the list of paths modified this session;50- the WRITTEN account of the work: commit messages, the record entry, the51 final report text, any doc edited to describe the change;52- which of the touched trees are PUBLIC (pushed anywhere), if any;53- steps 1–3 and the output format below, and the instruction to mark anything54 it does not reach **NOT SWEPT**.5556**What it must NOT get: your account of what you did.** The claims are the57specimen. If you hand the agent your summary, you hand it the same blind spot58that produced the error — you become both defendant and witness. It re-derives59every claim from the written artifacts and from disk. This is the one rule that60makes the skill worth its cost; drop it and this is self-grading in a second61window.6263**The agent re-reads state live.** `git status`, ahead/behind, what is pushed:64derived at sweep time, not from the capture it was handed — other sessions65commit, push and edit in between (a concurrent session has committed a fix66inside an unrelated commit; six repos were pushed minutes before a sweep that67was told "zero pushes"). `ahead N` proves nothing without a `fetch` first — ask68the remote (`git ls-remote`, then `rev-list --left-right --count @{u}...HEAD`).6970## 1. LANDING — did the edit reach the file that runs?7172For every changed file, ask whether another copy exists and whether something73chooses between them. The signature is: **the edited file and the executed file74have the same name and different paths.**7576- **Shadowing**: `git config core.hooksPath` (set ⇒ `.git/hooks/*` is dead77 code; resolve with `git rev-parse --git-path hooks/<name>`, the resolver git78 itself uses), `PATH` order for scripts, symlinks, vendored copies under79 `node_modules`, a venv copy vs a repo copy.80- **Multi-tree systems**: if a file exists in more than one tree (installed /81 lab / public, dev / dist, src / build), which one does the runtime load? Was82 the changed one it?83- **Registration**: if the change adds or edits something that must be wired up84 (a hook, a scheduled task, a route, an entry point), read the registration85 file and confirm the path there resolves to the file you changed.86- **Activation — the right file is necessary, not sufficient.** For anything87 that is a *control* — a guard, deny rule, hook matcher, regex, permission88 pattern, canary assertion, ignore rule — plant the positive it exists to89 catch and watch it fire, then a negative and watch it stay quiet. A control90 never observed firing is UNVERIFIED. Controls that read as protection and91 could not fire, all found by runs: deny rules that were prefix matchers and92 could never block a mid-command token; a leak regex whose `\R` compiled to93 `X:Repo` and could not match a real path; a case-sensitive name filter94 that let an all-caps spelling through; an assertion95 `/findings/.test(src)` that was true forever.96- Verdict per changed file: **LANDED** / **MISLANDED** / **UNVERIFIABLE** (say97 why). A file whose executing copy you could not determine is UNVERIFIABLE, not98 LANDED. A dead copy left behind is not itself a finding — say which copy is99 live and that the edit is in it.100101## 2. CLAIMS — does the written account match disk?102103Extract every checkable assertion from the artifacts, then **re-derive each one104independently** — a different command than the one that produced it, where a105different one exists. Priority order, highest yield first:1061071. **Universals** — "all 7", "every copy", "byte-identical", "none remain",108 "0 findings", "nothing leaked across all 17 repos". One miss falsifies the109 whole statement, and this is the class that produced the 08-05 error.110 Enumerate the full set and check each member; never accept a spot check as111 proof of a universal. A universal you could only spot-check is UNVERIFIED.1122. **Counts** — "17 rules", "29 skills", "21/21". Count from the source of113 truth, not from the sentence. Watch the **tense**: a count of record entries114 written inside the entry being counted is off by one the moment it lands; a115 "the only dirty files left" claim made from inside a dirty file is116 self-falsifying; a citation of an entry that does not exist yet points at117 nothing until it is written.1183. **States** — "passes", "clean", "regenerated", "pushed". Run it, or read the119 artifact that proves it. **Quoted output is a claim about the program**: if120 an artifact quotes a line of tool output as evidence, grep the tool for that121 literal — a line printed only on the failure branch cannot evidence a pass,122 and a line the program never emits is a fabricated quote.1234. **Numbers** — a value with more significant figures than the output it124 traces to is invented (13 share counts published at 4 dp from a 2 dp table:125 12 wrong). A statistic from a LIVE corpus (transcripts, logs, a growing126 record) is not reproducible without its corpus state pinned (file count +127 timestamp); report it as UNVERIFIED-AS-STATED and name what *does*128 reproduce. Check the arithmetic inside one sentence ("27 plus 3 … 29129 today"). For comparisons: same sample set in every arm, estimator named, n130 stated — a 2×2 whose arms do not share batches is not a comparison. An131 absent field is not `false`. An `==` on a float that round-trips through132 float32 never matched, and the committed JSON held `0.0` for a true `0.605`.1335. **Internal contradiction** — a sentence falsified by its own paragraph's134 caveat five lines later; a claim and its refutation both present with no135 dated strike; the same figure quoted three times and wrong in all three.136137A claim you cannot check is reported as **UNVERIFIED**, never as true. A claim138that is true but for a different reason than stated is a finding.139140## 3. COLLATERAL — what should have moved and didn't?141142The diff shows what changed. This asks what the change *obligated* and left143undone. Run the inverse of the diff: for each changed value or concept, grep the144tree for other places still asserting the old one.145146- **Sibling copies** — every other tree/branch/package holding the same file.147 The fix for a mislanding has itself mislanded in one of two copies; a148 wholesale copy of a private file over its public twin has re-introduced what149 an earlier commit deliberately removed — compare the public copy to its own150 `git show HEAD:`, not to the private source.151- **Correction propagation** — if the work corrects a claim, find every other152 copy of the OLD claim: HANDOFF, PRD, memory bins, README, code comments, the153 public twin, the skill's own description. "Corrected in the record, left154 HANDOFF and the bin stating the old numbers" and "the third copy of this155 claim was still unstruck" are the most repeated finding of every run.156- **Docs quoting the changed value** — READMEs, skill descriptions, HANDOFF,157 PRD, comments, `MUST print N/N` pins. A count changed in code and unchanged in158 prose is a finding.159- **Publication leak — landed where it must NOT.** If any touched tree is160 public: sweep its diff (and the files it touched, against `HEAD`) for private161 identifiers — names, emails, absolute paths, private project names —162 **case-insensitively**. Say whether this change introduced the string or163 inherited it; the two need different fixes and the author has called the164 first the second before.165- **Generated twins** — rendered HTML of a record, TOC rows, memory bins,166 anchors: regenerated? An anchor that resolves but lands one heading early is167 not "broken", so `broken: 0` does not prove it.168- **New artifact types** — did the work create a kind of file that did not exist169 before (cache dirs, build output, logs)? Is there an ignore rule, and is it in170 the right repo?171- **Byproducts** — files created and left behind: untracked files, temp172 directories, `__pycache__`, `.tmp`, backups. List them with full paths; do not173 delete anything.174- **The obligation the docs state** — if the project's own rules say a change of175 this kind requires something (a record entry, a regenerated twin, a synced176 snapshot, a test run, a pin bump), check that it happened.177178## Probe — the mechanical half, run before the agent judges179180`landing-probe.js` (portable Node, zero deps, read-only) enumerates what steps1811–3 would otherwise re-derive by hand, so the agent reads a census instead of182guessing one. Give it every touched tree; hand its output to the agent as an183artifact.184185```186node landing-probe.js probe <root>... [--file <p>]... [--since <min>]187 [--settings <json>] [--remote] [--all]188node landing-probe.js --canary189```190191- `HOOK` — per repo, per hook: the file git will RUN (`git rev-parse192 --git-path`, honours `core.hooksPath`) and any `DEAD` copy in the other193 place; a registered path with no file is `MISSING`.194- `CHANGED` — staged / modified / untracked per repo; `--file` names files195 outside any repo; `--since N` adds files modified in the last N minutes under196 NON-repo roots (an installed tree is not a repo).197- `TWIN` — for each changed file, every same-name file under any root, `SAME` or198 `DIFF` (sha256, CRLF-normalized). Conventional names (`SKILL.md`, `README.md`199 — any basename with more than 6 copies) match on parent-dir/name, not name200 alone. `--all` lists every twin group, not just the changed ones.201- `REG` — `--settings <json>`: every path-shaped string (after `~`/`$HOME`/202 `%USERPROFILE%` expansion) and whether it `RESOLVES`.203- `REMOTE` — ahead/behind per repo, labelled `CACHED ref` unless `--remote`204 fetched first. `ahead N` off a cached ref proves nothing.205206Exit 1 when there is something to look at (a DEAD hook, a DIFF twin of a changed207file, a MISSING registration); 0 for a clean census. It judges nothing — `DIFF`208between a private and its genericized public copy is expected, and the agent209says so. `--canary` builds throwaway repos (hooksPath set / unset / pointing at210nothing, a bare remote and a clone one commit ahead, CRLF twins, a211conventional-name forest, a settings file with one missing path) and MUST print212`CANARY PASS 23/23` before you trust a census.213214## Output215216Short. This is a pre-commit sanity sweep, not an audit report.217218- **Verdict line**: SAFE TO COMMIT / FIX FIRST / UNVERIFIABLE, one sentence.219- **Coverage line**: which artifacts were read, which trees swept, and what was220 **NOT SWEPT** — a short report must never read as a clean one.221- **Landing table**: `file | copies found | which one executes | fired on a222 planted positive? | verdict`. Only rows that are MISLANDED or UNVERIFIABLE223 need detail.224- **Claims table**: `claim (quoted) | source artifact | re-derived result |225 TRUE / FALSE / UNVERIFIED`.226- **Collateral list**: what should have moved and didn't, each with a path.227- **Confirmed**: the load-bearing negatives and the numbers that re-derived228 exactly (no misland, no leak, 25/25 reproduced) — a sweep that reports only229 faults teaches nothing about what is solid, and the author's record needs230 them.231- **Handoffs**: anything belonging to `/code-review`, `/audit`, or `coding-conventions`,232 named and passed on rather than half-done here.233234## After the report235236- **Re-verify every finding by hand before acting.** The verifier's claims are237 claims: one run's re-derived integers were off because the corpus had grown238 under it; the invariants held. Accept what reproduces.239- **The fix is subject to the same three questions.** Fixes to FIX FIRST240 findings go to every copy and every doc quoting the old value — the run that241 fixed a one-of-two-copies mislanding shipped the fix to one of two copies.242- **Write the record entry from the re-derived values**, after the last243 verification run, not before it: an entry written first records the state you244 expected, and the append-only record makes that permanent.245246## Rules247- **Findings only. Change nothing, delete nothing** — including byproducts and248 files that look like junk. Report paths; the author decides.249- **Evidence or it isn't a finding**: a command and its output, a file:line, or250 a reproduced state. No speculation.251- **A zero result is a claim.** If a search comes back empty and something252 load-bearing rests on it, re-run it a second way before believing it — and if253 a whole-repo search returns nothing, grep the ignore files for `{`/`}` first254 (one malformed glob silently hides an entire repo from ripgrep-backed tools;255 git is unaffected). A backslash pattern that matches nothing proves nothing:256 retry with `grep -F`, or build the path from a char code.257- **Never fabricate** a count, path, or command output. "Could not determine" is258 a valid and expected verdict.259- **Cut short is not clean.** If the agent dies or is resumed mid-sweep, it260 marks what it did not reach NOT SWEPT; a partial report that says which parts261 are partial is worth more than a complete-looking one that does not.262- The probe has a canary; the judgment does not. Steps 2–3 and the verdict are263 prose run by an agent, and are only as good as that agent — a clean probe is264 a clean census, not a clean sweep. Say so rather than implying a gate.265266## Provenance267268Ten runs over eleven days across four projects (a skills suite, an ML/robotics269project, a web app, a trading system). Among what they found: four false claims270on the first run, one inside this skill's own anecdote; a fix broken by its271canary's blind spot; a "pre-existing" leak the fix pass had introduced; a fix272landed in one of two copies; a dead leak regex; every record anchor one heading273off; a personal identifier in a public repo; 27 stale doc pins; four wrong274numbers in a sealed entry; quoted output the program never prints; a false275universal in a public repo; an unmatched 2×2; a float `==` that wrote `0.0`276for `0.605`; an unrendered status; a route enumeration wrong in three places277including the source comment; prefix-matching deny rules that blocked nothing;2784 dp share counts from 2 dp output. Zero of these were code bugs.