Harden the timeout-budget guard: write-once slots, exact counts, comment cross-checks - #35
Conversation
…-checks, bounded headroom Addresses the deep-review comment on PR #31. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
The lifecycle failure here is not caused by this PR — I diagnosed it while sweeping open PRs. The guest completed the whole lifecycle. The guest and the kernel share one UART, and a This is timing-dependent and can hit any PR — nothing on this branch touches that path. #37 fixes it by rejoining mid-line kernel splices, verified against this run's own |
Follow-up applying the deep-review fixes for PR #31, which merged before they could land.
What the review found (mutation-verified) and what this fixes
publish: # optional) was invisible to the scanner, so itstimeout-minutesoverwrote the previous job's slot: the guard then checkedlifecycleagainst 300 and passed. Job-id/timeout/TimeoutStartSec/profile_timeout_secondspatterns now tolerate trailing comments, and timeout slots are write-once (a second write aborts naming the unrecognized line).run_profile(3→2) passed green. The guard now parsesscenarios=NandN guest bootsout of the harness scripts' own output lines and asserts mutual agreement with the counted call sites/markers.parse_budget_commentsextracts each job's= N min < N min (here)summary and asserts it equals the derived total and parsed timeout (fail-closed on missing/duplicate lines). Editing a comment total by 1 now fails CI.timeout-minutes: 360passed. Now: headroom ≤ 15 min and job timeout ≤ 240.TimeoutStartSec=0(systemd: no timeout) now aborts; octal-leading-zero arithmetic fixed with10#; vacuous invariant honestly reworded; wrong indentation-claim comment corrected; grep tripwire added against the six historical180mdrift references (all resolved by Cache payload layers across runs and split build from lifecycle #28's fix; the tripwire keeps them gone).Mutation transcript in the guard's own terms: unmodelled third job → hard fail; unrecognizable job id → write-once backstop fail; removed profile → count mismatch fail; comment total off by one → cross-check fail. On main:
ANDROMEDA_CI_TIMEOUT_BUDGET_OK build=71/75 lifecycle=135/140 guest=42/45.🤖 Generated with Claude Code