Skip to content

Landing watchdog: train liveness, decision effect, solo escape past the train marker - #2183

Merged
remigiusz-antczak merged 1 commit into
mainfrom
land/wave-wdog
Nov 1, 2026
Merged

remigiusz-antczak merged 1 commit into
mainfrom
land/wave-wdog

Conversation

@remigiusz-antczak

Copy link
Copy Markdown
Collaborator

The landing watchdog now tells a dead train from a slow one: 2 new alarm lines plus a stall-line clause, and the solo re-ride escape fires again. Closes #2166.

What changes

  • Stuck line: a train marker older than 1.5x its expected time with no newer marker or landing names the run and stage.
  • Stall line gains "No train run in X min" when the last train activity is an old outcome; a landing counts, so a healthy repo stays quiet.
  • landing_watchdog.py expect 'train_size>=N' records a decision; the hook flags it when 2+ trains begun since carried a smaller median.
  • green() and train_land.sh ci_head ignore the train's own marker. In ci_head this fixes a pre-existing dead solo escape, not a regression.
  • train_yield.py record stamps each train's start time.

Known limits

  • The marker fetch (one graphql call) is tested through a fake gh only.
  • Markers come from open PRs' current heads; any landing supersedes a live marker.
  • Budget raise: fanout-host-sizing.md 49827→50877 (three alarm examples).

Verification

Tests: affected 23/23 (run-ci-tests --affected against main 9a83ac9), landing_watchdog 94/94, train_yield 16/16, train-solo-port 26/26, changelog fragments 23/23; privacy clean; size-ratchet ok.

🤖 Generated with Claude Code

…he train marker

The landing watchdog could say landing was slow but not why. It now reads the train's progress markers from the open PRs plus the newest landing on the default branch, names a train run whose in-flight marker is past 1.5 times its expected time, adds a "No train run in X min" clause to the stall line when the last train activity is an old outcome, and flags a recorded train-size decision that the trains started since it did not carry. green() and train_land.sh's ci_head no longer count the train's own progress marker as a check; in ci_head that was a pre-existing defect that kept the solo re-ride escape from ever firing. train_yield.py records each train's start time, so a decision is judged only on trains that began after it.

Tests: affected 23/23 (run-ci-tests --affected against main 9a83ac9), landing_watchdog 94/94, train_yield 16/16, train-solo-port 26/26, changelog fragments 23/23

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@remigiusz-antczak
remigiusz-antczak merged commit b4dac10 into main Nov 1, 2026
11 checks passed
@remigiusz-antczak
remigiusz-antczak deleted the land/wave-wdog branch November 1, 2026 06:44
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.

Delivery watchdog: add run-liveness and decision-effect checks, not only rate alarms

1 participant