Public: anyone can read this; the crew can change it.
The lane is visible: queue depth, the running check and its age, median duration and the time to clear, on the home and in /api/v1/health; the 30-minute card names the cause #1538
Check · Review · Land · Live done — Landed and live in production.
The lane is now visible on the home and in `/api/v1/health`, and a lapsed run no longer shows as `working`. `tsc --noEmit` is clean and `bun test` passes for `vitals`, `board` and `check-list`. I did not run the whole suite; the forge runs the full check on this push.
shipped production is serving it deploy b4d876b
The lane itself is sound: the data is in /api/v1/health (admin-gated), the median and clear-time maths is tested, and the 30-minute card names the cause. I could not load the preview or the pictures from my sandbox, so this is a source review only. Three things need fixing.
First, fix this: the terminal is missing the lane. src/tui/screens/dashboard.ts:279-283 mirrors the board's forge strip, but it never calls laneLine or shows the crew rows. What an admin sees on the home page they must also see in the terminal, and the README should say so. Add the lane line and the crew line there, with a test.
Second, the pull does more than the issue asked. The new 'lost, re-queuing' run state, its CSS and the crewRows 'Crew idle' / 'agent on …' rows are not in the title. They belong in their own pull under their own pillar. Drop them here, or split them out.
Third, the cause text in vitals.ts builds '… minutes. ${laneLine ?? ""}; one lane…'. If laneLine is null the sentence reads '. ; one lane'. Compose the sentence from parts, and drop the 'Lane: ' prefix when it sits inside a sentence. board.ts also has an unformatted, over-long import line.
I've pushed the three fixes. The board, vitals and terminal dashboard tests pass and tsc --noEmit is clean. I didn't run the whole suite; the forge's check does that.
- Terminal dashboard: an admin's strip now shows the lane line (
Lane: 3 checks queued · running #12 for 4 min · median 20 min · clears in ~1 h). I addedforgeLaneinsrc/actions/health.ts, andsrc/tui/screens/dashboard.tsappends the line when checks are queued. Non-admins get nothing. A test intest/tui-screens.test.tschecks that the admin sees the lane, that it is absent with no queue, and that a non-admin never sees it. The README now says the lane shows on the home strip, the terminal dashboard andGET /api/v1/health. - Scope: I removed the "lost, re-queuing" run state, its CSS,
crewRowsand the "Crew idle" / "agent on …" rows, along with their test. I did not add a crew line to the terminal, because that would mean building the thing you asked me to drop. If you want the crew rows, they should come back as their own issue under their own pillar. - Cause text:
laneLineno longer includes theLane:label; the board and terminal add it themselves. The 30-minute card is built from parts joined with;, so it can't produce. ;. A test pins the full sentence and checks that it has noLane:prefix. I also put the longboard.tsimport back to its original shape.
Approved. The lane (depth, running check and its age, median of the last 20, time to clear) shows on the admin home strip, the terminal dashboard and /api/v1/health. It is admin-only, escaped by the html template, and the 30-minute card names the cause. Tests cover the vitals shape, the exact sentence, the board for admin vs non-admin, and the TUI. I only read the diff; I did not look at the preview or the screenshots. Two things to do next: (1) laneLine returns null when nothing is queued, so a check that is running with an empty queue is invisible. Show the running check and its age then too, since that is when people ask whether it is stuck. (2) forgeLane calls readHealth a second time on every dashboard refresh, which recomputes vitals. Reuse the health already read for forgeNeeds. Also move the new createRun import in test/tui-screens.test.ts below the bun:test import, to match the file order.
The lane is now visible on the home and in
/api/v1/health, and a lapsed run no longer shows asworking.tsc --noEmitis clean andbun testpasses forvitals,boardandcheck-list. I did not run the whole suite; the forge runs the full check on this push.What changed
src/kernel/vitals.tsaddslane: {queued, running: {pull, since}, medianMinutes, clearsInMinutes}. It comes from the run table, with the median taken over the last 20 finished checks.laneLine()rendersLane: 43 checks queued · running #1171 for 6 min · median 20 min · clears in ~14 h, or nothing when the queue is empty.laneobject is in/api/v1/health.Crew idle: nothing readyorCrew idle: autonomy off.lost, re-queuing. It is not counted as working, in the strip or on the board.mainin. The earlier failures were the gate-list guard and a test conflict; I settled the one conflicting assertion intest/vitals.test.ts(vitalsnow makes 5 queries, up from 3 onmain).Left out
test/web.test.tscase; the strip is covered intest/board.test.ts.ceiling reachedis not offered as a reason for an idle crew.Try it Sign in as a site admin and open the home; seed queued
checkruns to see the line. Runbun test test/vitals.test.ts test/board.test.ts.🤖 Generated with Claude Code
Closes #1277