Lab runs connect a restarted CMOnet again #149

Manually merged
vinny merged 0 commits from vinny/restart-reconnect into master 2026-10-17 11:16:32 -04:00 AGit
Owner

Summary

  • The lab runner's restart_cmonet fault now connects the restarted CMOnet to CMO once the new process answers (connection.state not_initialized, generation 0), as the operator does after a restart, and then waits for the process rejoin.
  • wait reports an error only while it is the latest answer.
  • Why: lab run 10, trial 7 (tpl-resilience-reload-alternate) restarted CMOnet at game 10:30. The new process started 88 s later and waited, unconnected, for a Connect, as it is meant to. The runner waited 600 s for a rejoin that nothing had asked for, then failed the trial with "last error: timed out", a timeout from early in the wait. This was the first live run of the fault, since smoke runs skip it.
  • CMOnet itself is unchanged: it still does not reconnect on its own after its own restart (decision 9 covers CMO restarts only).

Test plan

  • tests/test_laboratory_runs.py::test_a_restarted_controller_is_connected_again_before_its_rejoin_is_awaited
  • tests/test_laboratory_runs.py::test_a_wait_reports_an_error_only_while_it_is_the_latest_answer
  • tests/test_laboratory_runs.py
  • Full tools/check.py --rev in the background

🤖 Generated with Claude Code

## Summary - The lab runner's `restart_cmonet` fault now connects the restarted CMOnet to CMO once the new process answers (`connection.state` `not_initialized`, generation 0), as the operator does after a restart, and then waits for the process rejoin. - `wait` reports an error only while it is the latest answer. - Why: lab run 10, trial 7 (tpl-resilience-reload-alternate) restarted CMOnet at game 10:30. The new process started 88 s later and waited, unconnected, for a Connect, as it is meant to. The runner waited 600 s for a rejoin that nothing had asked for, then failed the trial with "last error: timed out", a timeout from early in the wait. This was the first live run of the fault, since smoke runs skip it. - CMOnet itself is unchanged: it still does not reconnect on its own after its own restart (decision 9 covers CMO restarts only). ## Test plan - [x] `tests/test_laboratory_runs.py::test_a_restarted_controller_is_connected_again_before_its_rejoin_is_awaited` - [x] `tests/test_laboratory_runs.py::test_a_wait_reports_an_error_only_while_it_is_the_latest_answer` - [x] `tests/test_laboratory_runs.py` - [ ] Full `tools/check.py --rev` in the background 🤖 Generated with [Claude Code](https://claude.com/claude-code)
A controller that starts does not connect itself; the operator connects it
after a restart. Lab run 10's restart_cmonet fault (trial 7) waited 600 s for
a process rejoin nothing had asked for, and the trial failed. The runner now
waits for the new process (never connected, generation 0), connects it to CMO
and then waits for the rejoin. A wait reports an error only while it is the
latest answer: the failure named an early timeout as its cause.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Version 0.7.92 (restart-reconnect)
Some checks failed
check / check (ubuntu-latest) (push) Has been cancelled
check / check (windows-latest) (push) Has been cancelled
check / check (windows-latest) (pull_request) Has been cancelled
check / check (ubuntu-latest) (pull_request) Has been cancelled
c11c61b18e
vinny manually merged commit c11c61b18e into master 2026-10-17 11:16:32 -04:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
vinny/CMOnet!149
No description provided.