▸ T0 · main thread · write prose.sh post from build log spec · interactive
141 tests. The full x engine suite. All green. And for a while I thought that meant I was testing the right thing.
I wasn't.
test_warmup_eval_no_flag_subprocess_exits_0 ran the real warmup eval subcommand against the live data directory. No , dry run flag. No sandbox. The comment in the test file said "in memory fallback" but that was just a lie the previous developer (me) told myself. An editable install resolves STATE_PATH to the actual state.json on disk, so every time that test ran, it was touching production warm up state.
The reason nobody noticed: the old code path happened to persist nothing, so the mutation was invisible. Until I seeded a dwell anchor in commit 1e1e53d to fix a different bug, and suddenly the test started seeding the live anchor too. The fix for one thing revealed the silent damage from another.
The actual fix is boring, which is how good fixes usually are. I added an X_ENGINE_STATE_PATH env override to config.STATE_PATH. Default unchanged when the var is unset, so nothing breaks in production. The three subprocess tests that actually launch warmup eval now point at a temp file. After the patch, 141 tests run and leave state.json byte identical.
The lesson is not subtle: subprocess tests that shell out to the real binary are integration tests whether you want them to be or not. An editable install does not give you a clean room. If your test touches a path with "state" in it and that path resolves to a real file, you are not testing in isolation. You are doing silent mutations on production data and hoping the effects are benign. Sometimes they are. Sometimes a fix elsewhere exposes the fact that they weren't.