Repository navigation
Match producer suite v1.0.1 for recovery retry and errors reset (#385) - #389
Merged
Merged
Conversation
- `recovery retry` for an attempt recorded as finalized commits a `completed` no-op and changes nothing else; a resend replays it. - `recovery retry` / `recovery release` with an ID that matches neither the retained attempt nor any recorded attempt answer `not_found` on the contract path; nothing is stored. - `recovery release` for a finalized attempt stays `rejected`. - `errors reset` (and the `consecutive-errors reset` alias) is rejected while the readable consecutive-error count is 0; nothing is stored or logged. An unreadable count still resets. The `recovery-release` and `offline-reads` producer scenarios stay red; they are out of scope here (agent-operator-contract#36, #388). Co-Authored-By: Claude Fable 5.2 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #385
Makes
recovery-retryanderrors-resetpass in the producer suite. The issue's Agent Brief narrows #385 to these two scenarios.Changes
recovery retryon a finalized attempt completes as a no-op. It commits arecovery_retrycommand ascompletedwith a detail saying nothing remained to retry, and changes nothing else. A resend with the same request ID replays the stored record.not_found.recovery retryandrecovery releasewith an ID that matches neither the retained attempt nor any recorded attempt answernot_found(exit 5) on the contract path. Nothing is stored. The legacy path still exits 1.recovery releaseon a finalized attempt staysrejected.errors reseton a clear guard is rejected. With a readable count of 0 nothing is stored, noconsecutive_errors_resetevent is logged and the request ID stays reusable. This applies with and without--contractand to theconsecutive-errors resetalias. An unreadable count still resets.operator-onboarding.mdandagentctl-command-replies.mddescribe the new replies.Deviations from the brief
acceptedretry record whose attempt finalized in the meantime (a crash after acceptance) is now resolved tocompleted. Before, it was rejected on every resend.rejected), notnot_found.agentctl-command-replies.mdgains a section for the two legacy replies that change (errors resetat 0 now exits 1;recovery retryon a finalized attempt now exits 0).Verification
--require-allwith all capabilities, and--capabilities ""): 39 PASS, 2 FAIL.recovery-retryanderrors-resetpass. The two failures (recovery-release,offline-reads) are out of scope (recovery-release scenario releases an active and an already finished attempt, not a retained one agent-operator-contract#36, Producer suite v1.0.1: offline-reads fails on resume during startup reconciliation #388), so theproducerjob stays red.uv run pytestlocally on macOS: 1984 passed, 10 failed. The 10 (test_attempt_processes.py,test_control_offline.py) fail identically on a cleanmainon that machine; CI'stestjobs pass onmain.uv run ruff check: clean.Open points
v0.9.0.recovery retrynow answerscompleted, but the checkpoint still holds intake until the next restart removes it. The command's detail says so.🤖 Generated with Claude Code