Repository navigation
§17.1: add a retryable error code for Guardian resource exhaustion #257
jrcrittenden
started this conversation in
Ideas
Replies: 1 comment 2 replies
|
A related registry gap came up on #229, raised by @astrogilda's wire probes (probityai/agent-evidence-vectors#119). The AGT Guardian answers with three codes from the reserved band that §17.1 doesn't list:
AGT reads all three as refusal. If a client written only against §17.1 falls back to its availability posture for an unknown error, it fails open under The Fix:
|
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
§17.1 has no code for "the Guardian can't accept this request right now, but a retry later can succeed." The AGT reference Guardian hits this when its replay-protection cache (§10.3) is full. It can't record a new
request_id, so accepting the request would leave its replays undetectable, and it has to refuse.Neither existing option fits:
-32005 REPLAY_DETECTEDis wrong because the request isn't a replay, and its recovery (regeneraterequest_id) can't succeed.-32000 SESSION_REFUSEDfails closed correctly, but its recovery says not to retry without a policy or configuration change. This condition clears on its own as cache entries age out of the skew window.AGT returns
-32000withdata.reason: "replay_protection_capacity"for now (#229, a4efc16).Proposal: add a registry code, for example
-32008 GUARDIAN_OVERLOADED, that clients MUST treat as a refusal for the current request and MAY retry after a backoff. The error can carry an optionaldata.retry_after_ms.Reported by @shivang-sec on #229.
All reactions