Errors, Cache Integrity, and Shutdown
A cache miss is not an error. MissType records normal absence, forced bypass,
timeout, and read failure so statistics and policy retain the distinction.
Compiler failure is also a valid completed result whose stdout, stderr, and exit
status must reach the build tool.
Cache writes occur only after successful compilation and output collection. Entries are assembled through controlled archive and temporary-file paths; backend-specific publication decides when a key becomes visible. Multi-level backfill and write-error policy determine whether failure at a slower level should fail, warn, or be ignored.
Blocking filesystem and archive operations run through spawn_blocking; join
failure is contextualized separately from the I/O error returned by the
closure. Distributed compilation may fall back locally when policy permits,
but authentication, packaging, compiler, and cache failures remain distinct.
Server shutdown has two phases. Explicit signal, shutdown RPC, or idle timeout
stops accepting connections. Then WaitUntilZero observes connection ownership
drain, capped by a ten-second deadline. The process does not pretend that
closing the listener completed active compilations, nor does it surrender
liveness indefinitely.