Lane E uses the existing Store interface without changing shared persistence. Integration handoff for F1/G4: Store requests currently persist identity/revision/state/reply only. E keeps failure/timeout/cancellation reasons in returned outcomes and checks the snapshot immediately before publication in its single coordinator; this is not cross-process atomic snapshot CAS.
Before exposing production planning: bind the request to the captured snapshot/attempt in persistence, atomically compare that binding when publishing and applying, persist terminal reasons, and supply restart recovery/admission through the runner owner. Keep ready historical results visible but stale after context changes. Preserve Store as the sole writer.
Acceptance: independent-process snapshot change between E validation and Store publication/Apply is rejected without overwriting newer state; restart retains actionable timeout/failure reasons and cannot revive an active/cancelled request. Live adapter integration waits for D5. This belongs to the existing F1/G4 planning persistence/API contract, not a second E storage layer. Related: #29, #6.
Lane E uses the existing Store interface without changing shared persistence. Integration handoff for F1/G4: Store requests currently persist identity/revision/state/reply only. E keeps failure/timeout/cancellation reasons in returned outcomes and checks the snapshot immediately before publication in its single coordinator; this is not cross-process atomic snapshot CAS.
Before exposing production planning: bind the request to the captured snapshot/attempt in persistence, atomically compare that binding when publishing and applying, persist terminal reasons, and supply restart recovery/admission through the runner owner. Keep ready historical results visible but stale after context changes. Preserve Store as the sole writer.
Acceptance: independent-process snapshot change between E validation and Store publication/Apply is rejected without overwriting newer state; restart retains actionable timeout/failure reasons and cannot revive an active/cancelled request. Live adapter integration waits for D5. This belongs to the existing F1/G4 planning persistence/API contract, not a second E storage layer. Related: #29, #6.