Skip to content

fix(recovery): report sanitized standby command failures - #4696

Merged
devantler merged 1 commit into
mainfrom
codex/recovery-safe-reason-4695
Oct 9, 2026
Merged

devantler merged 1 commit into
mainfrom
codex/recovery-safe-reason-4695

Conversation

@devantler

Copy link
Copy Markdown
Contributor

🤖 Generated by the Agentic Engineer

Why

The approved standby recovery stopped safely, but its failure report did not say why the command was rejected. That leaves the next recovery decision without useful evidence.

What

Report a small set of safe failure categories without exposing private error details. Recovery still stops on the first failure, with no extra retry, cleanup or production authorization.

Fixes #4695

@devantler devantler left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Generated by the Agentic Engineer

Self-review (fallback — CodeRabbit, Codex and Cursor Bugbot unavailable)

Reviewed commit: 9306072e6303b25d7a0c237828b5688ea544ebde

  • CodeRabbit: the included repository allowance is exhausted. Its completed review at #4694 (review) states zero included reviews remain (2026-10-09T21:37:29Z); the hourly allowance has not reset. This is quota evidence, not a review of this commit. No paid overage is authorized.
  • Codex: freshly read account review exhaustion at #4650 (comment) (2026-10-08T15:23:30Z). No reset is stated; an account-limit change is required. No paid credits are authorized.
  • Cursor Bugbot: freshly read user/team usage or spend exhaustion at devantler-tech/monorepo#3949 (comment) (2026-10-07T19:32:36Z). No reset is stated; an account-limit change is required.

Verdict: no P0/P1 findings

Reviewed the complete three-file base-to-head diff and the command construction, exception capture and callers. The classifier emits only literal finite categories from bounded, recognized kubectl status lines or the caller's own cancelled/deadline context. Arbitrary errors, malformed or ambiguous server reasons and oversized stderr stay UNKNOWN. No raw error, stderr, secret or command payload reaches the returned message, and a recognized status is explicitly not asserted to prove a particular root cause.

The regression covers every supported status, context failures and malicious or incomplete evidence, with one command call and immediate failure. It failed before implementation; the complete race suite and go vet pass after implementation. The change touches no workflow, execution flag, production permission, source/current-main binding, object guard, retention decision or peer predicate. The two hosted recovery safety workflows passed with their production repair jobs skipped. Remaining CI is a separate gate; this review authorizes neither a recovery rerun nor a production mutation.

Direct current-PR reads include all reviews and conversation comments (both empty with complete pagination), no review threads, and no Bugbot review check. The successful CodeRabbit status only says automatic review is disabled, so it is not treated as a verdict.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

The current-head safety workflows passed, with both production repair jobs skipped. CI's changes job failed before a runtime assertion: the public registry authentication endpoint returned HTTP 504 during the pinned backup-denial fixture build. This is not a recovery-code failure or a proof that the pull-limit incident is resolved.

The same public authentication endpoint now answers HTTP 200. I restarted only the failed CI jobs once, at the unchanged reviewed head. No recovery job was rerun, and no check was relaxed. #4694 remains the separate fix for hosted fixture dependence on the direct public-registry path.

@devantler

Copy link
Copy Markdown
Contributor Author

🤖 Generated by the Agentic Engineer

Readiness at 9306072e6303b25d7a0c237828b5688ea544ebde:

  • CI run https://github.com/devantler-tech/platform/actions/runs/37995155978 passed on this commit. Its one failed-job retry followed a confirmed, recovered public registry authentication timeout; no test or gate was removed.
  • Both recovery safety workflows passed on this commit. Their production repair jobs were skipped, as required on a pull request.
  • The complete race-tested recovery suite and go vet pass locally. I exercised the returned failure messages for every supported server status, cancellation/deadline and malformed, ambiguous or oversized error. Each failed command stops after one call; private fixture content never appears in the message.
  • The disclosed current-commit local review is green: fix(recovery): report sanitized standby command failures #4696 (review). Its included-review quota evidence is recorded there. Current reviews and threads contain no outstanding finding; the branch has no merge conflict.
  • Every readable required check and workflow passes. The managed code-quality analysis remains unavailable to the completeness helper, so I do not claim it was independently verified; GitHub reports this exact head CLEAN and remains the enforcement authority.

This is user evaluation of the bounded reporting behavior, not a claim that the real production rejection has been diagnosed. That inaccessible server-side behavior still needs a separately approved, protected diagnostic. No workflow, authority, execution flag, retention guard or recovery retry changes in this PR.

@devantler
devantler marked this pull request as ready for review October 9, 2026 22:03
@devantler
devantler added this pull request to the merge queue Oct 9, 2026
Merged via the queue into main with commit c85892c Oct 9, 2026
52 of 54 checks passed
@devantler
devantler deleted the codex/recovery-safe-reason-4695 branch October 9, 2026 22:12
@github-project-automation github-project-automation Bot moved this from 🫴 Ready to ✅ Done in 🌊 Project Board Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

Classify standby recovery rejections without exposing raw errors

1 participant