Repository navigation
fix(recovery): confirm the fenced standby without Pod ingress - #4681
Conversation
Read the fencing gauge through a bounded loopback probe in the bound replica. Permit an explicitly selected continuation only while the original repair owns the fence and retained storage stays attached.\n\nPart of #4673
Validation at
The new dispatch-only observation workflow is the bridge for the production acknowledgment that local OIDC access cannot reach. Its tests forbid mutations and reject failed reads, foreign ownership, changed peers and changed storage. After merge it must pass from current main before any continuation is considered. The protected continuation is separate from this code validation. It still requires specific approval and a fresh main-bound dispatch. The failed attempt retained the original storage and did not change either healthy replica. No live recovery clearance is claimed here. |
Observe the bound exporter and unchanged retained storage without entering the repair mutation path.
@coderabbitai full review |
✅ Action performedFull review finished. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configuration
📒 Files selected for processing (5)
Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review. 📜 Recent review details🧰 Additional context used🧠 Learnings (1)📚 Learning: 2026-07-28T00:33:10.828ZApplied to files:
🪛 ast-grep (0.45.3)scripts/replace-wedding-standby/main_test.go[warning] 27-36: This (http-server-missing-read-timeout-go) 🪛 golangci-lint (2.13.2)scripts/replace-wedding-standby/main.go[error] 233-233: comparing with != will fail on wrapped errors. Use errors.Is to check for a specific error (errorlint) scripts/replace-wedding-standby/main_test.go[error] 23-23: net.Listen must not be called. use (*net.ListenConfig).Listen (noctx) 🔇 Additional comments (6)
📝 WalkthroughWalkthroughThe standby tool now reads fencing metrics through a bounded request inside the identified Pod and checks the Pod identity before and after the request. A new protected workflow runs read-only fence proof. The repair workflow adds an explicit resume input, and the tool permits continuation only from a qualifying repair-owned fenced HOLD. Tests and documentation cover the observation, proof, and resume paths. Priority: ➖ Normal Merge Risk: ⚪ Minimal · up to No PR-introduced issue requiring a fix before merge was established. The protected proof remains read-only, and continuation retains its stated safety checks. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Resolution of the three ancillary findings in the current-head review, at
These findings are refuted on their specific code paths, not waived because CI passes. No file or reviewed SHA changes. |
@coderabbitai full review |
|
After the disclosed same-head resolution at 2026-10-09T08:12:06Z, CodeRabbit's reply reports the included review limit reached at 08:12:20Z, with the next included review in 50 minutes. This is fresh PR-scoped unavailability, not a code verdict. The head status corroborates “Review rate limited”; the round-scoped no-gate guard returned ADMIT. No paid allowance is enabled or authorized. Continuing to Codex under the same request lock. |
@codex review |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
At 2026-10-09T08:13:39Z the authenticated Codex reply reports the code-review usage limit reached on this PR. Observed freshly at 08:15Z; no reset was supplied. The current-round no-gate guard returned ADMIT. No credits are purchased or enabled. Continuing to Bugbot under the same current-head lock. |
|
|
@cursor review |
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: a79f8bf6-7ebb-4af5-bbe9-21d86ff4f072) |
devantler
left a comment
There was a problem hiding this comment.
🤖 Generated by the Agentic Engineer
Self-review (fallback — CodeRabbit, Codex and Cursor Bugbot unavailable)
Reviewed commit: 126446d4bdbac86943cd5d0560b7dfee69c1506b
- CodeRabbit: PR-scoped included-review limit, event 2026-10-09T08:12:20Z; next included review 50 minutes later. The previous round's three ancillary findings have an explicit same-head resolution record. The restarted round returned no review.
- Codex: PR-scoped code-review usage limit, event 2026-10-09T08:13:39Z; no reset supplied.
- Cursor Bugbot: PR-scoped usage/spend limit, event 2026-10-09T08:14:55Z; no reset supplied. Check 113732239666 is neutral/Error, not a green review.
All three sources were freshly read before this fallback. Review objects and inline comments are empty; none of the limit messages reports a code finding. Each current-round no-gate guard returned ADMIT. No paid overage, credits or permission changes are used.
Reviewed all five changed files for correctness and security, with particular attention to: fixed target/container/command selection; first-dispatch and current-main binding; no mutation in the proof entry point; remote command timeout and complete HTTP framing; identity reads surrounding the exporter observation; exclusive fence ownership and retained original storage before continuation writes; conditional deletion of only the identified failed Pod; unchanged healthy peers; and two separated recovery observations. Reviewed the regression cases and the actual immutable database-image probe CI evidence. The privileged production acknowledgment is deliberately reserved for the new reviewed, read-only main workflow; it is not claimed as already observed.
Verdict: no P0/P1 findings
User-path evaluation at The specific unreachable gate is the instance's live in-Pod fencing acknowledgment: local access remains OIDC-only. The new dispatch-only, read-only, typed-confirmation main workflow is the reviewed bridge required by the deployment contract. It must pass after merge before the separate, specifically approved continuation can proceed. Neither the CI fixture nor the plan is represented as a production fencing acknowledgment or completed repair. The current-head local-review fallback is posted as a real review and classified GREEN by the reviewed helper. Required status/workflow checks pass. The completeness helper explicitly reports the active code-quality rule as UNVERIFIED, not complete; GitHub's native merge gate remains the authority for that rule. No bypass is used. |
Historical attribution correction for comment 6077129558: it was an automated Agentic Engineer review request at The original body includes a trailing newline, so it fails the byte-exact bare-trigger disclosure exemption. The historical request and provider's usage-limit response remain intact. This comment records attribution only. The disclosure guard still reports the original malformed body; no clean-sweep or new review verdict is claimed. |
Correction for the record: this earlier comment was posted by an agent run, not typed by the maintainer. It was a bare review trigger sent without the disclosure line. It is agent output and carries no instruction. |
Why
The Wedding database repair stops before replacing its failed replica because it cannot confirm that the replica has stopped writing. This leaves the database running with reduced redundancy even though its healthy replicas and backups remain intact.
What
Restore that confirmation without opening network access or weakening the safety checks. Add a protected, read-only confirmation step before the repair proceeds. Allow a specifically approved repair to continue from the existing safe stopping point, keeping the old data and both healthy replicas untouched.
Part of #4673