core.process.cargo_binary built the Rust binary only when it was absent, a
behaviour inherited from the three bash wrappers it replaced (tooling/atlas,
generate-brands, generate-corporations). After an edit to the Rust source it
went on running the old binary.
For generate_brands this breaks the one promise the systems.db stamp makes.
`make regen-db` stamps the SHA of the NEW brand sources onto
generated_brands.toml produced by the OLD code, so the gate reports fresh and
the output is stale. It had already happened: the committed binary wrote
"Re-run: reach generate brands" while main.rs still said
tooling/generate-brands, so what was on disk had not been built from the
committed source.
It now always runs `cargo build --bin <name>` and lets cargo decide. An
up-to-date build is incremental and fast; a real rebuild is announced as an
event, since a silent ninety-second compile reads as a hang.
Proven on generate_brands (T-1253): with the old header restored, the rebuilt
binary reproduces generated_brands.toml byte-for-byte (sha256 e748531…). With
the new header it differs by exactly that one line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>