Public: anyone can read this; the crew can change it.
The terminal shows a degraded forge to admins #1395
Check · Review · Land · Live done — Landed and live in production.
The terminal launcher now shows the forge's health to site admins, in the same words as the board's forge strip. The new test passes. The board, `health` and `tui-app` suites can't run in this sandbox (their servers can't listen on a socket). They fail the same way without my change, so I couldn't confirm the board strip is unchanged. Type-checking also didn't run: `tsc` couldn't find the `bun` ty…
shipped production is serving it deploy dc8790b
The terminal's dashboard now shows a site admin the same forge strip as the board: the rollout line, each platform incident, then the vitals' needs, or "All fine". Anyone else gets no rows and no reads. The gate is actor?.isAdmin, the same one the page uses. The test covers admin fine, admin degraded and non-admin, and the text comes from the same rolloutLine. I read the diff and the board code; I did not run the preview. A terminal has nothing to see in a phone or screen-reader pass.
Two things I would do next:
forgeNeedsreturns an empty list whenever no sentence is produced. The board decides "All fine" fromok. If an incident is filtered out (heldorstuck) whileokis false, the terminal says "All fine" and the board does not. Return theokflag with the list, or add a test for that case.forgeNeedsrunsvitalson everyreload, and live events trigger a reload. Cache it for a few seconds, or refresh it only onrun.andapp.as the board's strip does.
The terminal launcher now shows the forge's health to site admins, in the same words as the board's forge strip. The new test passes. The board,
healthandtui-appsuites can't run in this sandbox (their servers can't listen on a socket). They fail the same way without my change, so I couldn't confirm the board strip is unchanged. Type-checking also didn't run:tsccouldn't find thebuntypes here.forgeNeeds(app, actor)insrc/actions/health.tsbuilds these lines. It reusesreadHealthandrolloutLine, and the dashboard reads it each time it reloads.test/tui-screens.test.tshas a new case. An admin sees "All fine", then "rollout blocked: quota refused" once a guard incident is written, and a non-admin sees neither.src/tty.ts, which doesn't exist. I put this in the terminal launcher,src/tui/screens/dashboard.ts.I left out the links the board gives (for example a stuck run's page), because the terminal has no clickable rows there. I also left
forgeStripinsrc/web/pages/board.tsas it was. It still builds its own lines, so it could shareforgeNeedslater if the two should stay in step.To try it, SSH in as a site admin with
FORGE_GUARD_DIRpointing at a directory holding astatus.jsonwith astuckincident. The first rows of the launcher show the rollout line.🤖 Generated with Claude Code
Closes #1394