Part of #334 (1): health "on the board". Signal, not a dashboard.
Done when
[ ] the board (src/web/pages/board.ts) has a slim forge strip above its four regions for a site admin: one line reading All fine when health's ok, otherwise each needs sentence, each linking where it can be acted on (a stuck run to its run page, a sleeping-app count to /apps)
[ ] no gauges or charts: numbers appear only when they are why something needs you
[ ] the strip is a live region refreshed when a run or app event lands (same mechanism as the other regions), and server-rendered on first paint with no layout shift when it changes from fine to not
[ ] non-admins see no strip and the page's query count does not change for them
[ ] tests: admin sees All fine; a stuck run turns it into a linked sentence; a non-admin sees nothing
Files: src/web/pages/board.ts, src/web/client.ts if the live region needs a name, tests.
Risks: the board is for a second monitor; keep it quiet when fine.
Brief: a page builder who knows the board's live regions.
Part of #334 (1): health "on the board". Signal, not a dashboard.
Done when
src/web/pages/board.ts) has a slim forge strip above its four regions for a site admin: one line reading All fine when health'sok, otherwise eachneedssentence, each linking where it can be acted on (a stuck run to its run page, a sleeping-app count to /apps)Files:
src/web/pages/board.ts,src/web/client.tsif the live region needs a name, tests. Risks: the board is for a second monitor; keep it quiet when fine. Brief: a page builder who knows the board's live regions.