I am revising startup recovery for our FR5 reference-plate inspection application. A crash after dispatch leaves the local job marked pending, and startup resends it. Can I distinguish confirmed unsubmitted work from an uncertain outcome without implying that a missing acknowledgement means the request was never received?
Treat that interval as outcome unknown and exclude it from automatic replay, then reconcile using a durable request identifier and whatever authoritative execution record the receiving system exposes. The recovery operator needs to see why the job is held, not just a different colour beside pending.
The receiver currently returns a result but exposes no request-history query. We can retain a durable identifier locally, yet that alone cannot establish whether the previous request executed. I will make the uncertainty explicit.
Correct, a local identifier becomes useful for reconciliation only if the other side preserves and reports the corresponding identity. Until that contract exists, define a supervised recovery route for unknown jobs rather than turning the absence of a query into permission to resend.
Also distinguish a job never considered for dispatch from one whose dispatch began before a crash. A durable pre-dispatch record helps expose the uncertainty window, though it cannot make local storage and remote execution atomic.
I have changed the offline recovery model to retain dispatch intent before sending and hold incomplete attempts as unknown after restart. The production interface remains unchanged while we review receiver-side identity and the supervised reconciliation procedure.
Exercise crashes before dispatch intent, after intent but before sending, after sending, and after receiving the result but before saving it. The latter three may be uncertain locally even though their actual remote histories differ; that's the point the test should preserve.
The proposed view shows the plate identity, attempt identifier, last durable state and assigned recovery owner. Offline crash tests now prevent replay of unknown attempts. Receiver reconciliation and operator review are still outstanding, so this is not a completed production fix.