rule 24 amended: exclude local build dirs from the transfer too; a moved denominator means a broken build

This commit is contained in:
alex 2026-09-08 20:34:00 -04:00
parent ef7bbf9f99
commit 67cd78b3f5
2 changed files with 17 additions and 0 deletions

View file

@ -386,3 +386,4 @@ Status flow: `backlog → in-progress → mapped → verified` (or `blocked`).
| ID declined the third target, correctly | meta | verified | high | 100% | 2026-09-08 | It did NOT run the cbtrap set: that needs an End Turn on VM140, **which rewrites the three oracle autosaves**, and lane CB had already judged it the weaker check next to RB's zero-residual ModCount = 24. **Confirmatory value did not justify putting the reference bytes at risk.** It stays cheap for anyone who backs up SavedGames first, and the exact hashes are recorded in its finding. VM140 released with the oracle verified intact and the game never launched |
| ID's falsified prediction, with the probe named | verify | backlog | — | 0% | 2026-09-08 | Its prediction that client counters restart at 0 on load is **falsified by a corpus save**: lane CB's reloaded run produced fleet **34**, not 18. Either something restores the counter (six IDMap/InitGame functions read, no such write found) or **the client makes one earlier unsaved allocation per turn** - the second fits everything and implies the id collision has already happened harmlessly in CB's run. One hook on 0x008b8ae0 logging (map, node, id, return address) separates them |
| LAB TRAP: cmd.exe eats parentheses in save names | meta | verified | high | 100% | 2026-09-08 | `ssh ... certutil -hashfile "...(Autosave).sav"` fails with **"Check the spelling"**, which reads exactly like a missing file. Lane ID's first attempt **reported the three oracle saves as absent, and they were never absent** - a false alarm about the campaign's most important bytes |
| MY ERROR: over-corrected rule 24, poisoned a remote build | meta | verified | high | 100% | 2026-09-08 | Implementing "fresh build dir per measurement" I **dropped `--exclude 'build*'` from the gate rsync**, which shipped a LOCAL `build-host` to CT111. A CMakeCache records **the absolute path it was created in**, so the remote build failed with "is different than the directory /home/alex/sots-engine where CMakeCache.txt was created" and **0% of 48 tests passed**. THE CORRECT FORM IS BOTH HALVES: exclude local build dirs from the transfer AND `rm -rf` the remote ones. **AND THE SIGNATURE TELLS YOU WHICH FAILURE YOU HAVE**: a real regression changes the PASS count (57/58); a broken configure changes the TOTAL (0% of 48 where healthy is 58). If the denominator moved, stop reading failures and fix the build. Re-gated clean: 58/58, shim OK. Rule 24 amended |

View file

@ -308,6 +308,22 @@ like nondeterminism in the engine).
So: **a fresh build directory per measurement**, or `rm -rf` the build tree before building. And when
a merged result does not reproduce a lane's own number, suspect the build before suspecting the lane.
**Implementation, both halves — I got this wrong once by doing only the second.** Exclude local build
directories from the transfer *and* remove the remote ones:
```sh
rsync -a --delete --exclude .git --exclude 'build*' ./ host:/path/ # do not ship local build dirs
ssh host 'cd /path && rm -rf build-host build-shim && cmake --preset host && …'
```
A `CMakeCache.txt` records the **absolute path it was created in**, so a local build directory copied
to another machine poisons the build there — `CMake Error: … is different than the directory … where
CMakeCache.txt was created`, and every test fails.
**The signature tells you which failure you have:** a real regression changes the *pass* count
(`57/58`); a broken configure changes the *total* (`0% of 48`, where a healthy run is 58). If the
denominator moved, stop reading the failures and fix the build.
## 25. Commit with a pathspec — the index is shared, staging by path is not enough
Four times in one session, a lane's `git commit` swallowed another lane's staged files in the shared