Commit beea1c1
committed
fix(skills): a churning review loop must convert to an investigation
Measured on one feature: five review rounds, ~10 verified findings each,
49 of 49 real, every round finding defects introduced by the previous
round's fixes. The review was working perfectly. The question it was
answering had no answer in the data, and nothing in these skills could
say so.
review-tier gains two things.
Scope: TARGETED now also includes the writers of any persistent field the
diff reads but does not write. Callers-and-callees follows the call graph;
a defect in what a column MEANS propagates along the schema, and reads and
writes of a column are connected by no call at all. A read-only feature
therefore cannot reach, by any call-graph scoping, the code that decides
what it is reading. In the measured case two writers of one column meant
different things — "new revision" and "archived duplicate" — and five
rounds never reached either, because a read feature calls neither.
Step 2b, the halt rule: stop the loop and open an investigation when a
verified finding blames the previous round's fix two rounds running, or
findings across rounds restate one definitional question, or a candidate
fix must consult a side channel to decide what a column means. The first
rule is mechanical and fires at round 3's triage in the measured case.
Findings-per-token, the existing stop signal, detects a loop gone DRY; it
cannot detect one churning at a steady rate over an unsatisfiable design,
and says "keep going" forever.
verify-landed gains the claim discipline the same week produced counter-
examples for. A verification carries its command and the tool's own
verdict or it is not a verification: a "whole-project test compile" was
reported green having compiled nothing, because the surfaced status was a
trailing grep's — and grep exits 0 when it MATCHES, so it succeeded
because it found FAILED. A quality gate was reported OK over a broken
build, having scored the previous run's coverage. And a new check: when
the claim is about data, query the data — a scratch Postgres settled in
ninety seconds what a careful argument got wrong.
The whole-project note is updated too: one repository fake broke six times
on signature changes to the interface it implements. At that frequency the
remedy is structural, not another warning.1 parent 3d6e549 commit beea1c1
2 files changed
Lines changed: 33 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
36 | 40 | | |
37 | 41 | | |
38 | 42 | | |
| |||
50 | 54 | | |
51 | 55 | | |
52 | 56 | | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
53 | 71 | | |
54 | 72 | | |
55 | 73 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
37 | 44 | | |
38 | 45 | | |
39 | 46 | | |
40 | 47 | | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
41 | 55 | | |
42 | 56 | | |
43 | | - | |
| 57 | + | |
0 commit comments