advanced
The incremental build produced a binary the sources cannot explain
A build system rebuilds a module when its own source changes or when an imported module's interface file changes. A field was added to a struct in a shared module, and the incremental build succeeded. The resulting binary reads garbage from that struct in exactly one consumer.
The symptom
One consumer module reads fields at the wrong offsets; every other consumer is correct. A clean build produces a correct binary. Deleting the build cache fixes it, so the reflex is to call it a cache bug and move on.
Commit first
Name the stage, and then name the contract that was broken. An incremental build is correct only if a specific property holds between the interface file and the object code compiled against it — state it before reading further.