Skip to content

E2E: flush live-test markers to disk before forcing a host reset - #322

Merged
fredesere merged 1 commit into
mainfrom
fix/e2e-durable-markers
Nov 3, 2026
Merged

fredesere merged 1 commit into
mainfrom
fix/e2e-durable-markers

Conversation

@fredesere

@fredesere fredesere commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Live E2E run valupd-1103b passed 14 steps, then failed at "reset at durable may_have_run and reconcile exact A on boot":

TEST_NO_CHAIN_REFUSED: invalid target delay marker: invalid literal for int() with base 10: ''

The controller writes delay-before-ready.<archive> with tee and then forces a GCP instance reset. The data had not reached disk, so after boot the file existed but was empty. Harness only; the validator's own boot reconcile printed CATHEDRAL_VALIDATOR_UPDATE_RECONCILED.

  • The three markers written ahead of a reset (delay-before-ready for A and B, fail-before-ready.${target}) now end with && sudo sync.
  • test_live_test_markers_reach_disk_before_a_host_reset pins it.

pytest -q tests/thin/test_live_update_e2e_controller.py: 30 passed.


Note

Low Risk
Test harness script and a thin controller regression test only; no production updater or validator runtime paths.

Overview
Fixes a live E2E harness flake where delay-before-ready (and related) files were written with tee and then the controller forced a GCP instance reset before the data hit disk. After reboot the path existed but was empty, which made the no-chain readiness shim fail with invalid literal for int() with base 10: ''.

The controller now appends && sudo sync on all three remote writes that precede a reset or crash boundary: delay-before-ready for archive A and B on the stable host, and fail-before-ready.${target} in the rescue crash path.

test_live_test_markers_reach_disk_before_a_host_reset locks in that those three lines in live_validator_update_e2e.sh always include sync. Production validator behavior is unchanged; this is harness-only durability.

Reviewed by Cursor Bugbot for commit aa12b65. Bugbot is set up for automated code reviews on this repo. Configure here.

Run valupd-1103b wrote the delay-before-ready marker with tee and then
reset the stable VM. The write had not reached disk, so after boot the
marker was empty and the readiness shim refused on int(""). The three
markers written ahead of a reset now end with sync, and a test pins it.
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-11-03T02:17:48.139600Z aa12b65 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@fredesere
fredesere merged commit 8551274 into main Nov 3, 2026
8 checks passed
@fredesere
fredesere deleted the fix/e2e-durable-markers branch November 3, 2026 04:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant