A dated log of what actually broke while running AI coding lanes: sandbox limits, wrong oracles, module cache races, and the pack edits that fixed them.
2026-09-09
Codex in the workspace-write sandbox cannot run XCTest. The XPC call is refused. A compile only build works with the skip package update flag and the sandbox disable flags, so the agent can catch its own syntax errors, and the tests stay with the runner.
Xcode's shared module cache races when several lanes build at once. A failure that says "failed to emit precompiled module" is infrastructure, not a defect. Rerun that class alone.
187 failures I had filed as Codex defects were my own wrong test oracle. Prove the oracle on the unchanged product before you dispatch. If the red class does not fail for the reason you think, nothing downstream means anything.
I pinned a perf target of 142 ms down to under 100 ms. The bound was wrong: the walk itself was 0.6 ms and the rest was forced layout. Floor probe a number before you pin it.
Short packs with measured facts beat long packs with formulas. Same unit: 2,889 failures down to 187.
Codex self review lifts Codex pass rates. Codex reviewing a diff written by Claude lowers them. So a Claude Opus diff never goes to a Codex reviewer.
My test script takes one focused class per run. Chain them with a double ampersand rather than passing two.
Naming the localization rule and the no em dash rule in the pack flipped both Codex terra and Codex sol to clean runs, and cut sol's wall time from 607 seconds to 381.
2026-09-08
OpenCode lanes respected the scope list in nine of nine runs. One file each, and the test file never edited.
Cheap models fail on domain judgement, not on mechanics. Every P1 that round was a localization call deleted because no test covered it.
A calibration driver started inside a subagent dies with the subagent, and takes its lanes with it. Start the driver with nohup from the orchestrator's own shell.
Never run a broad process kill on xcodebuild on a shared Mac. Another session is probably testing on it.
Codex terra was not scored that day: the ChatGPT account hit its usage limit and all three lanes returned the quota error.
Run 0 was void because a second session rewrote the scripts halfway through it. One owner per script.