phase: 27_mobile_tables_and_audit

The audit re-ran green (exit 0). Now checking the docs for defects introduced by the phase.
This commit is contained in:
2026-10-21 23:43:25 -04:00
parent 9ff3c7889b
commit 5d37444fb0
24 changed files with 772 additions and 24 deletions
+17 -3
View File
@@ -232,8 +232,11 @@ the **Dashboard client** line (the one certificate every agent verifies the dial
display-only, because it is minted with the root and has no route of its own), and one row per
host with its status chip, serial, expiry, issued-vs-deployed bundle revision, the addresses its
certificate is valid for, and **Rotate** / **Revoke** / **bundle**. The agents table carries the
stylesheet's own `scroll` modifier, so at phone width its right-hand columns — the serial, the
bundle revisions, the addresses and the controls — are reachable by scrolling instead of clipped.
stylesheet's own `scroll` modifier, so it is a box on **both** axes with a 320 px height cap at
every width and its right-hand columns — the serial, the bundle revisions, the addresses and the
controls — are reachable by scrolling instead of clipped. Since phase 27 it is no longer the only
thing that scrolls (at ≤640px every `table.data` does, sideways only, no height cap); `.scroll`
out-ranks that rule, so this table keeps its own box on a phone exactly as on a desktop.
Nothing there is coloured: `severity.py` rates no certificate, so an expiry is a date and a
bundle revision is a count. The one verdict on the page is the API's `status` word (`active` green,
@@ -775,7 +778,18 @@ certs.py ─ root CA + client cert, minted once at startup (unreadable row → n
tabs, so it has no button either), and that menu **slides**: 180 ms of fade plus an 8 px rise on
the way out and the same on the way back in, with nothing hidden from a keyboard or a screen
reader while it is shut, and no motion at all when the system asks for none
(`prefers-reduced-motion`). No framework, no CDN, no bundler, and no narration: a page never
(`prefers-reduced-motion`). The same ≤640px block is what makes **every** table scroll sideways
inside its own card (phase 27): `table.data` becomes a horizontal scroll container, so the
columns past a phone's 320 px — `Worst disk`, `GPU busy`, `Temp`, `Up` on the fleet table — are
reachable by dragging the table instead of being clipped by the card, while the document itself
still never scrolls sideways and a desktop table that fits shows no scrollbar. Two more things
were clipped by that same card edge and are fixed at **every** width: a card header wraps onto a
second line when its facts do not fit on one (the OS/model chip and the `updated 5s` age stamp
used to be painted past the card and eaten), and a collapsed `Charts` / `More detail` disclosure
scrolls whatever it reveals sideways, which is what puts `/system`'s GPU `VRAM`/`GTT` columns
inside their card instead of under the neighbouring one. Nothing is hidden for the arithmetic:
the row wraps, the disclosure scrolls, and every number stays on screen.
No framework, no CDN, no bundler, and no narration: a page never
explains its own pipeline, so the words on screen are the ones you act on — a unit, a `Δ<window>` provenance tag, a
`SIMULATED` badge, or the sentence beside an empty panel. The overview (`/`) is exactly two panels — a
**Warnings & errors** list built from `/api/summary`'s `alerts` (each row links to the