Commit 0f12fde
fix(isolation): always emit
Before this change, a clean iteration produced findings.json without the
`worktree_uncommitted_writes` key — the recorder silently no-op'd when
the tripwire saw nothing. Operators (and a future regression test)
could not distinguish:
- ✅ tripwire ran, saw nothing → key absent
- ❌ tripwire silently disappeared in a refactor → key absent
The absence of evidence was being conflated with evidence of absence —
exactly what a tripwire is designed to prevent.
After this change, presence of the key signals "the tripwire ran" and
the value signals "what it found":
- empty array → clean run (declared everything written, or wrote nothing)
- non-empty → paths the executor wrote without declaring; lost on cleanup
- absent → findings.json was never produced (execute-incomplete branch)
or was corrupt at write time. Either of these is itself a real
regression signal in an otherwise-successful run.
The schema description is updated accordingly. The recorder still no-ops
when findings.json is missing (the execute-incomplete branch surfaces
the data via retry_log.jsonl) and still refuses to write into a corrupt
findings.json (logged at ERROR with the lost paths).
Tests now express the parametric table from the issue: empty undeclared
writes the empty list (was: noop), schema validates the empty case, and
the missing-findings no-raise path is exercised for both empty and
non-empty inputs.
Closes AI-native-Systems-Research#235.
Refs AI-native-Systems-Research#228 (isolation tracker), AI-native-Systems-Research#230 (worktree tripwire).
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>worktree_uncommitted_writes in findings.json (AI-native-Systems-Research#235) (AI-native-Systems-Research#237)1 parent 76ed590 commit 0f12fde
3 files changed
Lines changed: 43 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
95 | 95 | | |
96 | 96 | | |
97 | 97 | | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
98 | 105 | | |
99 | 106 | | |
100 | 107 | | |
| |||
104 | 111 | | |
105 | 112 | | |
106 | 113 | | |
107 | | - | |
| 114 | + | |
108 | 115 | | |
109 | 116 | | |
110 | 117 | | |
| |||
1136 | 1143 | | |
1137 | 1144 | | |
1138 | 1145 | | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
1139 | 1149 | | |
1140 | 1150 | | |
1141 | 1151 | | |
1142 | 1152 | | |
1143 | | - | |
1144 | | - | |
1145 | | - | |
1146 | | - | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
1147 | 1156 | | |
1148 | 1157 | | |
1149 | 1158 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
32 | | - | |
| 32 | + | |
33 | 33 | | |
34 | 34 | | |
35 | 35 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
491 | 491 | | |
492 | 492 | | |
493 | 493 | | |
494 | | - | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
495 | 498 | | |
496 | | - | |
497 | 499 | | |
498 | | - | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
499 | 518 | | |
500 | 519 | | |
501 | 520 | | |
| 521 | + | |
| 522 | + | |
502 | 523 | | |
503 | 524 | | |
504 | 525 | | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
505 | 530 | | |
506 | 531 | | |
507 | 532 | | |
| |||
0 commit comments