Two-axis review found the shipped colour and three weak tests.
- --patina was a warm gold at the same hue family as --brass; the spec
asked for a cool blue-green so an unhealthy Lane is unmistakably not
ember. Now verdigris in both branches, with docs/design-system.md
stating why the far side of the wheel is the point.
- A Lane pass that returns before computing its figures carries the
previous pass's due count and gap forward instead of recording zeroes,
and Checked rides beside Due so a stopped Lane is distinguishable from
a quiet one.
- TestAdminPageWithoutAPollerSaysSo now separates the two causes it
conflated, TestOwnerClearsReaderMarks seeds real counters so the
clearing assertion can fail, and TestLaneStatus asserts Checked and
the carry-forward.
- backend/AGENTS.md records the one deliberate owner comparison outside
requireOwner and the carry-forward rule.
A Lane's pace, its refusal backoff and whether its Site needs the browser were
only ever visible in the log. The admin page (issue #102) has to state them, so
the Poller keeps one snapshot per Lane.
- LaneState/Status (status.go) is the page's view of a Lane: due, gap, clamped,
refusing, browser.
- runOnce records a snapshot on every return path, including the pass that
refuses, so a cooling Lane does not read as one that never ran.
- Refusing is derived at snapshot read time from the backoff, not stored: a
Lane that cooled down between passes must report false without a new pass.
- LaneStatus reports only Sites that have completed a pass, so a fresh restart
renders "no data yet" instead of confident zeroes.