Skip to content

Fix flaky bootstrap signal interruption test - #3

Merged
xPROMSx merged 1 commit into
mainfrom
work/fix-bootstrap-signal-fixture
Oct 2, 2026
Merged

xPROMSx merged 1 commit into
mainfrom
work/fix-bootstrap-signal-fixture

Conversation

@xPROMSx

@xPROMSx xPROMSx commented Oct 2, 2026 •

Copy link
Copy Markdown
Owner

The bootstrap interruption fixture can publish its parent-written readiness marker before sleep 30 exists. A process-group SIGTERM in that window misses the new foreground child, so Bash waits for it and the unchanged ten-second harness deadline expires. This failed on main push run 36989150003 after also failing intermittently on PR #2.

Replace that marker with an atomic JSON readiness record written by the actual foreground blocking Python child after installing signal handlers. Before signaling, the harness verifies that child's PID is alive in the bootstrap process group. The child blocks directly in signal.pause(), so readiness cannot precede the blocker.

Run 30 interruptions each for SIGINT/SIGTERM/SIGHUP (90 total), assert shell exit codes 130/143/143, temporary cleanup, unchanged fresh/existing pair and launcher contents/metadata, and absence of surviving process-group members. Keep the original ten-second deadline and all other bootstrap assertions.

Validation:

  • Old fixture reproduced three ten-second timeouts with live Bash/sleep and no installation mutation.
  • Syntax and actual ShellCheck passed; full bootstrap fixtures passed.
  • Exact new harness passed three independent mapped-root runs: 270 cycles, all cleanup/mutation/orphan assertions.
  • All locally supported repository suites passed, including real pinned Telemt runtime and version equality. Cloud filesystem fixtures use ownership emulation; native-root fresh-account/bootstrap/renewal and real nf_tables checks also passed in unchanged hosted Actions.
  • Actions run 36991483633, safety job 110788470720: SUCCESS on exact HEAD c6f40fb4c9829035c21d1b07dab41e190971cf25, first attempt, all 23 steps successful without skips. Decoded logs confirm all 90 native-root signal cycles, exit codes 130/143/143, maximum exit 0.007s, cleanup/unchanged-pair/no-orphan assertions, 56 Python tests and 241 shell coverage labels.

Only tests/bootstrap.sh changes. Production installer, manager and workflow are byte-identical to main; SCRIPT_VERSION remains 0.1.1 and Telemt remains 3.5.11. Production review found no demonstrated transaction defect; this fixes fixture synchronization. The fixture covers process-group interruption during download, not parent-only signaling or every commit-phase timing.

@xPROMSx
xPROMSx merged commit e35ca61 into main Oct 2, 2026
1 check passed
@xPROMSx
xPROMSx deleted the work/fix-bootstrap-signal-fixture branch October 8, 2026 17:15
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