CI / push-validation (pull_request) Successful in 24s
CI / build (pull_request) Successful in 36s
CI / integration_tests (pull_request) Successful in 4m21s
CI / unit_tests (pull_request) Successful in 4m45s
CI / e2e_tests (pull_request) Successful in 4m8s
CI / docker (pull_request) Successful in 1m29s
CI / benchmark-publish (pull_request) Has been skipped
CI / coverage (pull_request) Successful in 11m24s
CI / status-check (pull_request) Successful in 4s
CI / benchmark-regression (pull_request) Successful in 1h10m52s
Two recovery paths for execute/errored plans using the domain model's
classify_error() for canonical error classification:
1. Transient failures (§28530/§35958): rate limit, timeout, connection
errors — reset to execute/queued and re-execute with the same
strategy. Preserves strategy_decisions_json for decision
hierarchy reconstruction.
2. Non-transient failures (§18323-18329): strategy constraint,
authentication, unknown — delegate to
service.try_auto_revert_from_execute() which enforces
MAX_REVERSIONS loop guard, increments reversion_count, records a
reversion decision, and respects the delete_content automation
threshold. Error findings are redacted via redact_error_details()
and stored as JSON for the strategy actor (§18329).
Error classification uses the domain model's classify_error() and
ErrorCategory enum — single source of truth, no parallel frozenset.
AuthenticationError correctly classified as non-transient per domain
model.
ISSUES CLOSED: #10843