SpawnTimeoutError recovery with partial _state salvage
Error Handling
Architect failure with cached builder: continues with existing _builder
Architect failure without cached builder: cycle ends, error recorded
Builder failure: cycle ends, error recorded
Builder timeout (SpawnTimeoutError): attempts to salvage advanced _state from partial output via timeoutRecovery; if _state progressed, it is persisted (state-only finalize) and the cycle is recorded as a partial success
Critic failure: synthesis is preserved, error attached
Errors never block the queue: logged, reported, queue advances
Lock Staging ("Never Write Worse")
Results are staged in .lock before being committed to meta.json. If the process crashes:
Before staging: meta.json is untouched
After staging, before commit: meta.json is untouched; stale .lock cleaned at next startup