fix(ci): stream lane-shas progress + distinguish timeout from content drift #50
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/ci-lane-shas-timeout-diagnostics"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
lane-shas.ymlhas intermittently failed under Act-runner contention withambiguous logs — see the #38 postmortem in
docs/plans/adr-0241-0242-session-completion-summary-2026-07-15.md: run#167 failed at ~22m39s, but a local
scripts/verify_lane_shas.pyrun showed9/9 pins matching. The failure was never conclusively attributed to a
timeout vs. an incomplete Forgejo log, because the script buffers all
per-lane output until every lane finishes — so if the job gets killed
mid-run, the log shows nothing about which lane was slow or why.
This PR does not touch any lane content or logic. Two small, additive
changes to
scripts/verify_lane_shas.py:-> lane_id ... done (Ns), flushedimmediately) instead of buffering output until the end. A hang is now
visible in the CI log the moment it happens.
timeout (previously a hardcoded
900) is now overridable viaCORE_LANE_VERIFY_TIMEOUT_S(default unchanged), matching the existingCORE_SHOWCASE_HARD_BUDGET-style knob convention already in this repo.A
TimeoutExpiredis now reported distinctly from a genuine SHAmismatch, and the remediation text no longer suggests
--update(re-pinning) when the real cause is runner contention.
Test plan
uv run ruff check scripts/verify_lane_shas.py— cleanuv run python -m py_compile scripts/verify_lane_shas.py— OKuv run pytest tests/test_lane_sha_verifier.py -q— 6 passed (pin/shapecoverage unaffected — no LANE_SPECS/PINNED_SHAS changes)
uv run python scripts/verify_lane_shas.pyrun end-to-end locally —9/9 lanes matched pinned SHAs, streaming output confirmed correct
per-lane timing (
math_teaching_corpus_v1alone: 300s — notably,nearly a third of the 900s per-lane budget on an idle 10-core Mac;
under 2-vCPU Act-runner contention this margin is exactly what could
disappear)
[Verification]: Smoke suite not required for this change (CI-tooling-only,
no runtime/algebra/cognition path touched); ruff + targeted pytest +
full local lane-shas run passed as above.