- What cost the most: two full
tests/compiler --both-settings runs whose results I could not trust (about 25 minutes together).
- The first ran with a stale
target/fast/nikaia, built at 06:05 before HEAD’s emit commit 262d5fa6. I copied that binary without comparing its time to git log.
- The second and third failed on different tests each time, because other agents were running the same
tests/compiler at once. Building an isolated copy of the project to show the failures were not mine took three more calls.
- What the brief could have handed me: I looked up no ADR, language rule or converter detail. What it lacked was its run history: an earlier run had left the fix and the test uncommitted, and a debrief and
run.json sat beside the brief. Working out that the run was dead, and comparing its scratchpad copies to the tree, took about six calls.
- Checks:
- Useful: the unfixed / fixed / current binaries on the probe; the guard set plus clippy;
pre-push-check; the isolated 12-test project, which settled the flakiness.
- Wasted: the first
tests/compiler run on the stale binary. Copying the ledgers and repeating the isolated runs added little. The half-written wait.sh was never used.
- The change that would save the most: builder.md should add one rule: “Before a long test run, check that the binary is newer than the last commit touching
crates/ (git log -1 --format=%ct -- crates against the binary’s mtime); if not, run the cycle first.” Next to it: “tests/compiler runs by other agents race on the shared project. A ‘settings disagree’ failure that names src/main.nika and moves from run to run is confirmed in an isolated copy (src, nikaia.toml, ledgers, the failing tests), not by a second full run.” The driver should also put a run-history line in the brief when an earlier run left uncommitted work.
This site is open source.
Improve this page.