Skip to content

test(cb-70mv): fleet-view-restart.sh presses g instead of waiting out the work pane's 30s refresh - #537

Merged
rmstdope merged 2 commits into
mainfrom
cb-70mv-testing-r15-s-suite-waits-on-the-30
Nov 10, 2026
Merged

rmstdope merged 2 commits into
mainfrom
cb-70mv-testing-r15-s-suite-waits-on-the-30

Conversation

@rmstdope

Copy link
Copy Markdown
Owner

Bead: cb-70mv — R15's suite waited on the 30-second work-pane refresh.

What changed

tests/fleet-view-restart.sh only:

  • The view now runs on the shared tests/lib/pty-drive (as fleet-keys.sh and fleet-role-triggers.sh do), which gives it a keys fifo; the suite's private pty.py is gone.
  • A refreshing <predicate> wrapper presses g (refresh everything) at most every two seconds, then asks the predicate. Steps 2 (start on cb-b2 after the closing pass) and 3 (held_by_guard after the give-back) wait through it, bounded at 60s, instead of waiting on app::WORK_REFRESH_INTERVAL. Pressed repeatedly because a g landing on an in-flight work read is dropped, and a read begun before the pass ended answers the old board.
  • The failure evidence also prints the view's stderr.

Validation

  • Before: per-step timing locally, step 2 = 26s and step 3 = 10s (both on the timer); 71s on CI run 42803911818.
  • After: time bash tests/fleet-view-restart.sh — 16.5s, 17.5s, 19.6s locally, all three passes; 28 consecutive green runs of the suite while chasing a flake (below).
  • bash tests/gate: every suite and the Rust and UI legs green except tests/fleet-keys.sh, which timed out ("the stub agent to start", a 20s bound) in both runs. It is untouched here, passed twice alone, and the same failure hit two other producers' worktrees (cb-15cw, cb-yf8h) on this machine in the same hour; CI decides.

Deviation from the plan

  • The planned RED (a 25s bound on the old suite) stayed green because the timer's phase lined up; per-step timing is the evidence instead. Recorded in the bead's design.
  • Seen once in early runs: the view stayed read-only ("could not take charge") for the whole 90s. main.rs resolves the lease endpoint once at startup (read_supervisor_endpoint(...).ok()), so one slow fleet-supervisor under load leaves a view unable to supervise for life. Not reproduced in 28 later runs and not in this diff's scope; noted for the navigator.

🤖 Generated with Claude Code

https://claude.ai/code/session_01WCDKexJtfAU67v3sjW244j

… the work pane's 30s refresh

The start on cb-b2 and the guard's hold each need a board read taken after
the pass ended; the suite waited for app::WORK_REFRESH_INTERVAL to give it
one. It now drives the view through tests/lib/pty-drive and presses g while
it waits, so both steps take a few seconds instead of up to thirty.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WCDKexJtfAU67v3sjW244j
@rmstdope

Copy link
Copy Markdown
Owner Author

Review (cold read, reviewed_head: 2081a294f069471a5241ab19196db92f91474fca) — reviewed before merge under the producer's review practice, by an agent given the diff and the bead, and not the producer's reasoning. Reviewer key default: claude / opus / medium.

No findings.

Checked: the plan is met (only the suite changed, pty-drive + fd-7 keys fifo, steps 2–3 through refreshing, 60s bounds, header names WORK_REFRESH_INTERVAL only as no longer waited on); g is honoured (reviewer's run 15.5s; step 2 took 3s, step 3 4s, against 26s/10s on the timer); teardown leaves nothing behind after pty-drive's SIGKILL (the pkill on the marker covers it); fifo opened after the fork, never blocks; predicates still key on timestamps after the second end, so a stale read cannot satisfy step 3. Non-code note: the plan's Known traps still said wait_refreshing; corrected in the bead.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

Copilot was unable to complete this review at the selected tier due to model policy or plan restrictions.

🟢 Approval recommended

The change is a contained refactor to use the shared pty-driving helper while adding bounded refresh/polling and enhanced stderr-based diagnostics, with no review evidence indicating unresolved problems.

No open issues 🎉

What changed in this PR

Speeds up and stabilizes the R15 system suite by actively triggering fleet-view refreshes instead of waiting on the work pane’s fixed 30s refresh interval.

Changes:

  • Switch tests/fleet-view-restart.sh from a private pty helper to shared tests/lib/pty-drive (keys FIFO + screen capture).
  • Add a refreshing wrapper that throttles g (refresh-all) presses while polling predicates within bounded waits.
  • Improve failure diagnostics by including the view’s stderr tail in the suite’s evidence output.
File Description
tests/​fleet-view-restart.sh Migrates the test to pty-drive, adds a throttled g-driven refresh/polling helper to avoid 30s timer waits, and expands failure evidence to include fleet-view stderr.

Review effort: Balanced

…d-only view while CI was green

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WCDKexJtfAU67v3sjW244j
@rmstdope
rmstdope merged commit 03b9e09 into main Nov 10, 2026
4 checks passed
@rmstdope
rmstdope deleted the cb-70mv-testing-r15-s-suite-waits-on-the-30 branch November 10, 2026 17:17
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.

2 participants