You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Late-write recheck: follow-ups from the #1669 review #1670
Follow-ups from the round 1 review of #1669 (late-write recheck). None of these hands a refuted write back as verified, but each leaves a person or an agent with less to go on.
Owed rechecks are lost on a restart, with no trace.openadapt verify serve holds provisional results in memory (VerifyBridge._rechecks). After a restart, openadapt verify ledger list shows nothing pending, and the attempt's ledger state is a plain CONFIRMED. The values were pruned from attempt.json, so a person needs the agent's original values to run the Python recheck from recheck.json. Record "recheck owed until T" in the ledger, or in a file under the state directory that ledger list reads.
The same error for a spent recheck and a lost one.verify_recheck says "no provisional result for that write_id" both when the recheck already ran and when the server restarted. Tell them apart.
A stale provisional on earlier_result.AlreadyWritten.result, and the MCP earlier_result, keep provisional: true and a past recheck_due_at for good, also after a confirming recheck. A retrier gets no next and no way to recheck.
The reason text when the recheck call itself is wrong. A recheck called with the wrong params or actor (a caller bug) gives UNCERTAIN and re-resolves a correct write for review. That is fail-closed, but the reason should say that the recheck call was wrong, not the write.
UNCERTAIN wording in VERIFY_WRITES.md. Its recheck table says UNCERTAIN means "couldn't be read again, or was still changing". It is also given for a state not issued here, mismatched params or actor, and a change that a later refuted write may own.
From the round-2 review of #1669 (#1669 (comment)). Both fail closed, but each stops or blames the wrong write:
A recheck from a saved state trusts an unchecked correlation_id (verifier.py:2049, :2075). A state that fails the issued-here or params check can still hold another write's attempt. Fix: re-resolve only from a state that passed those checks; otherwise add the hold-by-hand reason.
A later write whose own check gave UNCERTAIN is still passed as excused_by, so the first write is REFUTED for the later write's rows. It should give UNCERTAIN, or refuse.
Nits: pipelined writes (the bridge could refuse with a reason); a second UNCERTAIN recheck overwrites a ledger REFUTED; a VerifierError at verify_tools.py:377 spends the recheck; the tool description should say writes under another agent_id aren't excused.
Reopened: #1834 landed the flow side. The launcher's verify command change is in draft #1840, which waits for the next openadapt-flow release in the lock.
Activity
abrichr commentedon Oct 30, 2026
From the round-2 review of #1669 (#1669 (comment)). Both fail closed, but each stops or blames the wrong write:
correlation_id(verifier.py:2049, :2075). A state that fails the issued-here or params check can still hold another write's attempt. Fix: re-resolve only from a state that passed those checks; otherwise add the hold-by-hand reason.excused_by, so the first write is REFUTED for the later write's rows. It should give UNCERTAIN, or refuse.Nits: pipelined writes (the bridge could refuse with a reason); a second UNCERTAIN recheck overwrites a ledger REFUTED; a VerifierError at verify_tools.py:377 spends the recheck; the tool description should say writes under another agent_id aren't excused.
Recheck: hold for review when a later write's frame wasn't judged; ne…
abrichr commentedon Nov 4, 2026
Claimed by Grok
verify: keep owed rechecks in the ledger and tell spent, lost and mis…
abrichr commentedon Nov 4, 2026
Reopened: #1834 landed the flow side. The launcher's verify command change is in draft #1840, which waits for the next openadapt-flow release in the lock.