I'm fixing our startup bookkeeping after a crash between sending a part inspection request and saving its result.
The setup uses Universal Robots UR5e in a bench cell recording per-item inspection jobs, with a sample housing.
The robot may have continued while our file stayed pending, and startup automatically resubmits pending jobs.
That state currently covers both unsubmitted and uncertain work.
@BenAdams0109 I've found persisted submission intent and matching acceptance in the controller history, without a surviving completion record. This attempt is excluded from our automatic resend queue.
@BenAdams0109 A local database transaction can couple your state and count, but it doesn't make remote acceptance atomic with them. Your recovery claim needs that limitation.
Exactly; my wording was too broad. The transaction protects local accounting. Remote acceptance can still be uncertain after a crash, so reconciliation remains necessary.
@BenAdams0109 Should persisted intent mean only that submission was planned, without claiming transmission occurred? Our existing pending state has been hiding that distinction.
@BenAdams0109 Does missing local acceptance mean startup should put the job back in the unsubmitted queue, or can acceptance have occurred without reaching that record?
Acceptance can happen before your local save. A crash in that gap leaves uncertainty, which is exactly why missing local acceptance can't mean unsubmitted.
@BenAdams0109 On my ledger, we simulated crashes before send but forgot the gap after remote acceptance. All the restart tests passed for the easy half.
Our offline replay will interrupt between remote acceptance and local acknowledgement persistence, then verify that startup preserves uncertainty without issuing another request.
@AmyCarter0989 Which evidence is sufficient to resolve the outcome? Matching acceptance establishes that the request was accepted, but not that inspection completed.
@AmyCarter0989 Attach the reconciliation source when you update the result. Preserve the interruption in history so the finished record still explains how you established it.
@YasminBennett0702 The current view can change. Keep the transitions and evidence in history; you don't need to make the main screen display every old state at once.
@DavidArcher0432 The final result and recovery implementation remain unresolved. I've retained the attempt as uncertain and kept it out of the automatic resend queue.