What is wrong. Three tests in internal/routewatch still fail on timing when the host is loaded: TestPrefixHandlerSkipsItsLastWriteAfterTheStopDeadline, TestPrefixHandlerSkipsAFullBatchAfterTheStopDeadline and TestPrefixHandlerHandlesMessagesWhileAWriteIsBlocked. They failed in the first run of make test while #212 was built, and passed in the verbose rerun. The test phase exits 1 whenever the first run fails, so a loaded host can turn next red at any time. #188 and #189 made these tests independent of the flush timer, so something else in them still depends on time.
What acceptable looks like. Each of the three tests passes or fails by the state it checks, never by how fast the host is: it waits for that state with a bound, not for time to pass, or drives a fake clock (testing/synctest, as #193 does). The same check for every other test in the package that waits on real time.
Definition of done.
The cause found and stated in the PR body, for each test.
The package passes many runs in a row under the race detector with heavy CPU contention (more busy loops than CPUs), inside the test image.
One reviewed PR into next.
Model: opus-5-5
**What is wrong.** Three tests in `internal/routewatch` still fail on timing when the host is loaded: `TestPrefixHandlerSkipsItsLastWriteAfterTheStopDeadline`, `TestPrefixHandlerSkipsAFullBatchAfterTheStopDeadline` and `TestPrefixHandlerHandlesMessagesWhileAWriteIsBlocked`. They failed in the first run of `make test` while https://git.eeqj.de/sneak/routewatch/pulls/212 was built, and passed in the verbose rerun. The test phase exits 1 whenever the first run fails, so a loaded host can turn `next` red at any time. https://git.eeqj.de/sneak/routewatch/issues/188 and https://git.eeqj.de/sneak/routewatch/issues/189 made these tests independent of the flush timer, so something else in them still depends on time.
**What acceptable looks like.** Each of the three tests passes or fails by the state it checks, never by how fast the host is: it waits for that state with a bound, not for time to pass, or drives a fake clock (`testing/synctest`, as https://git.eeqj.de/sneak/routewatch/pulls/193 does). The same check for every other test in the package that waits on real time.
**Definition of done.**
- The cause found and stated in the PR body, for each test.
- The package passes many runs in a row under the race detector with heavy CPU contention (more busy loops than CPUs), inside the test image.
- One reviewed PR into `next`.
Model: opus-5-5
clawbot
self-assigned this 2026-10-27 22:38:02 +01:00
Built in #214. The three tests gave HandleMessage two seconds to apply a full batch of 25,000 prefixes, which takes longer under the race detector on a loaded host. Every bound a test in the package puts on a step it expects is now 30 seconds. The handlers were right, so only tests change.
Model: opus-5-5
Built in https://git.eeqj.de/sneak/routewatch/pulls/214. The three tests gave `HandleMessage` two seconds to apply a full batch of 25,000 prefixes, which takes longer under the race detector on a loaded host. Every bound a test in the package puts on a step it expects is now 30 seconds. The handlers were right, so only tests change.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What is wrong. Three tests in
internal/routewatchstill fail on timing when the host is loaded:TestPrefixHandlerSkipsItsLastWriteAfterTheStopDeadline,TestPrefixHandlerSkipsAFullBatchAfterTheStopDeadlineandTestPrefixHandlerHandlesMessagesWhileAWriteIsBlocked. They failed in the first run ofmake testwhile #212 was built, and passed in the verbose rerun. The test phase exits 1 whenever the first run fails, so a loaded host can turnnextred at any time. #188 and #189 made these tests independent of the flush timer, so something else in them still depends on time.What acceptable looks like. Each of the three tests passes or fails by the state it checks, never by how fast the host is: it waits for that state with a bound, not for time to pass, or drives a fake clock (
testing/synctest, as #193 does). The same check for every other test in the package that waits on real time.Definition of done.
next.Model: opus-5-5
Built in #214. The three tests gave
HandleMessagetwo seconds to apply a full batch of 25,000 prefixes, which takes longer under the race detector on a loaded host. Every bound a test in the package puts on a step it expects is now 30 seconds. The handlers were right, so only tests change.Model: opus-5-5