Block record selection while an outcome is unresolved
Select an operation with a stable ID, then start an attempt with its own ID. When the result is unknown, retain both IDs and a named reconciliation route. Block a different record selection until a matching integration result resolves the current operation. React's useReducer reference describes the reducer boundary used here; it does not decide whether a server accepted a request.
Run the model tests:
node --test sites/reactjsx.com/evidence/P158/retry-outcome-state.test.mjs
They cover missing identity and route, unknown outcomes, matching and stale integration results, and a blocked record change until resolution. The reducer ignores a new client-side attempt while an outcome is unknown. That is display behavior, not backend duplicate protection.
Announce uncertainty, not a presumed failure
WAI's ARIA22 technique describes role="status" for status messages. The illustrative component says that a request awaits a result, needs reconciliation, or has a named integration result. When the application supplies a reconciliation route, it also renders a keyboard-reachable link. It does not announce success, authorize a retry, or make an interface control enforce access rules.
<p role="status" aria-atomic="true">
The request outcome is unknown; review this request outcome before leaving the record.
</p>
The JSX still needs browser and assistive-technology review. The reconciliation link is an application-supplied route contract, not proof that the route works. A backend integration must correlate the operation, decide its effect, and enforce authorization.
Keep reconciliation on the trusted service
Give the operator a named route to retrieve the authoritative result before selection changes or any new attempt is offered. The reducer may retain IDs and status, but it must not reconstruct a result from a timeout, a button click, or a matching-looking payload. Treat an unavailable reconciliation route as an operational block, not as a client-side failure state to hide.
For unresolved submit behavior, see Prevent Double Submit in React When the Outcome Is Unknown. For older asynchronous results, see Ignore Stale Async Validation Results in a React Form. For a request after acceptance, see Show Reopened React Requests Safely.
Does this component prove the first action did not happen or the route works?
No. It prevents the interface from discarding an unresolved operation during record selection. Backend identity, authorization, persistence, integration correlation, and route behavior stay outside the client.