Design system
Every component in dark, in light, and with the hue removed. This page is the acceptance surface for the port and the regression check for every phase after it. Nothing here names a colour; every surface and status resolves a token — and the greyscale column is what proves it, because colour is never the only carrier.
W1 · component galleryColour & surfaces
Chrome stays achromatic so the only saturated pixels on screen carry a verdict. If something is coloured, it means something. That rule used to be aspirational: --accent was an acid yellow, the most saturated thing on most screens, and it sat twenty degrees from --setup on the wheel — two saturated yellows, adjacent hues, different jobs. --accent is now a neutral, and the four verdict hues are the only saturated pixels left.
surfaces
semantic — each owns exactly one meaning
Type & density
Three families with distinct jobs: Inter Tight for hierarchy, Inter for interface prose, and JetBrains Mono for evidence, identifiers and provenance. The first two are one design at two optical sizes, which is what stops a heading and the sentence beneath it from reading as two products.
Verdicts & outcomes
Four outcomes, three sizes, one shape language. A setup failure and an indeterminate result are rendered with the same care as a pass — the credibility of the gate rests on people believing the difference.
card
row · inline
greyscale proof — colour is never the only carrier, so hue removal must lose nothing
Run strip
A whole run in one proportional row, with its denominator. Segments keep declaration order so two runs stay comparable at a glance.
Setup failure
Grouped by the flow that broke, never by test. This component exists so that one broken factory can never read as eleven regressions.
Setup flow process.uniqueName could not provision
— 11 cases never startedSchema drift detected on the process name field — the captured flow no longer produces this state.
Controls
The whole product has five button weights, and the filled one is almost always Approve. Scarcity is the point: when a page has one solid button, nobody has to hunt for the consequential action. Everything below is live — every control writes to the URL and nothing holds its own state, so this section is also the proof that a filtered screen can be pasted into a ticket.
five weights — filled is rationed, danger is never filled, go starts a run
segmented — mutually exclusive, all options visible
filter chips — multi, order-independent, click to toggle
select · menu — enumerations, never free text
Console log
radio · stepper · tooltip
query — the grammar is the placeholder
button role="switch", never a checkbox with a background image. 38×21, a 15px knob, 17px of travel at --t-state — a discrete state change, not a disclosure. Accent says “you set this”, never “this is good news”.tabs & pagination — the run detail shell
FailuresThe two failing cases, newest first.