Repository navigation
feat(reconcile): support explicit same-policy drained recovery - #146
Conversation
|
@codex review Please review exact head b8673d9, including explicit drained-ref policy and the rollback fixes. If no actionable findings remain, explicitly state the clean result for this exact full commit. Prior delegated review and hosted full-suite success are context, not substitutes for your independent review. No merge or deployment is requested. |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. What shall we delve into next? Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b8673d926a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| save_reconcile_state 'failed' "$desired_commit" "$desired_commit" "$health_status" "reconciled to ${desired_commit}; final health rejected" | ||
| apply_lkg || die "final health was ${health_status}; rollback to last-known-good also failed" | ||
| rollback_health_status=$(run_health_check "$temp_dir/health.json") | ||
| verify_explicit_rollback_health "$rollback_health_status" || die 'drained rollback health unverified' |
There was a problem hiding this comment.
Exclude the current transaction failure from rollback health
When explicit recovery rolls back after final-health rejection or LKG-persistence failure, the manager has already persisted reconciliation status failed. The subsequent full probe reads that record, and scripts/health.py:191–196 treats it as a critical health failure. Consequently, even a correctly restored, otherwise healthy drained baseline reports unhealthy, and this new verification rejects it instead of recording verified rollback. This reproduces with the production health evaluator; the command-double tests miss it because their health reports ignore reconciliation state. Use a nonterminal rollback-in-progress state or otherwise isolate the current transaction's failure from the rollback probe while preserving actual host-health checks.
Useful? React with 👍 / 👎.
Summary
remote-reconcile.sh --ref FULL_LOWERCASE_40_SHAfor same-policy, same-runtime-engine drained recovery without moving/following default-branch HEAD.TDD / local evidence
Base:
eea07703cc9d3a05e47724405adc824dead09890Proposed head:
b8673d926a31b741c094f246d35446093d32da42Observed RED before implementation: unsupported
--ref(exit 2 unknown argument). Additional RED/GREEN cycles reproduced suppressed LKG write failure returning success, same-ref health shortcut, missing applied receipt, false rollback health/identity verification, stale installed-state readback, silent persistence/readback mismatch, and malformed input creating temp state.Local WSL/Linux command-double harness (no credentials/network/SSH/Docker/live hosts):
python3 -I -B scripts/test_explicit_recovery.py: 20 passed.python3 -I -B scripts/test_remote_reconcile.py: 44 passed.bash -n scripts/remote-reconcile.sh scripts/validate.sh: passed.Incomplete full validation: the exact-source/base
scripts/local_validate.pycommand was attempted and failed preflight because/usr/local/lib/ci-fleet-validation/executor.pyis absent. This WSL environment also lacks jq, ShellCheck, Docker and Go; no privileged executor was provisioned and no full/quick acceptance is claimed. Full suite, container/image-build, installer/systemd integration and signed independent evidence remain mandatory on a disposable prepared Linux execution machine. No live-host test was performed.Documentation and template impact
Added
docs/EXPLICIT-DRAINED-RECOVERY.mdand linked fromdocs/ADDING-A-HOST.md. No schema change. Standalone template guidance tracked separately in RandomDevelopment/ci-fleet-config-template#41 (pending; not synchronized or published).Review / rollout gates
DRAFT for independent review, not merge-ready. New reviewed supporting engine/manager pin and compatible checkpoint staging are required; this is not a flag drop-in for older pinned managers. Review image bootstrap and rollback interactions on the full integration fixtures. Preserve active-pilot/isolation and publication policy gates; no metadata fabrication, private configuration change, pinned guest-source edit, workflow dispatch, merge, deployment or admission is authorized or performed.
P2 correction evidence (b8673d9)