Public: anyone can read this; the crew can change it.
Design: /audit is built from the design system, and its audit-* classes leave §5d #3217
Check · Review · Land · Live done — Landed and live in production.
/audit is now built only from `docs/DESIGN.md` §5 components. All 28 `.audit` and `.audit-*` rules are deleted from `src/web/style/content.ts`, and their 15 names are gone from the §5d register in `docs/DESIGN.md`. The page shows the same facts as before.
shipped production is serving it deploy de9e1b0
/audit is now built only from docs/DESIGN.md §5 components. All 28 .audit and .audit-* rules are deleted from src/web/style/content.ts, and their 15 names are gone from the §5d register in docs/DESIGN.md. The page shows the same facts as before.
What moved where (src/web/pages/audit.ts):
- Summary sentence:
.audit-sumbecomes an<h2 class="mb">. The "N apps disobey" alarm (.audit-alarm) becomes a dangerbadge(). - Card heads:
.audit-appand.audit-trailbecome a §5 card head: icon,<h3>with the repo link,.spacer, then the badges. The short commit id is nowsha(), both in the head and in the "asked … at" foot. - Policy table: it is a plain
.table[data-dense]and resource names sit in<code>. Each answer (.audit-answer) is abadge():yesis attn,ownis secondary,nois outline.data-answerstays on the<td>. - Lists of sentences: contract problems and a mismatched probe's doors (
.audit-problems,.audit-wide) render as.proselists. The mismatch list now sits in the card body under the table, not inside the foot, so theflex-basisworkaround is no longer needed. - Unread apps:
.audit-unreadbecomes alistCard()ofrow()s, with the explanation moved to the card's foot. - What changed: the heading (
.audit-h2) is a plain<h2 class="mt mb">. Each cell a change touched (.audit-cells) is a.row-metaline written aswider · <code>…</code>ornarrower · …, so the direction is spelled out where it used to be only a colour. Lines can be cut short on narrow screens, so the full sentence is in thetitleattribute. - Removed outright:
.audit-changeand.audit-saidwere wrappers the §5 row and card foot already handle.
Things that look different on purpose:
- The answer columns are left-aligned, as in every other
.table, instead of centred. - Icons in card heads take the head's own colour instead of faint.
- The prose lists use prose's own size and spacing.
Tests: no existing test matched the old class names, so none needed renaming. I added assertions to test/audit.test.ts that the page renders §5 badges, table, card head and rows, and no audit class. bun x tsc --noEmit and scripts/design-lint.ts are clean. Ten suites touching /audit pass (86 tests), including test/design-lint.test.ts and test/design-audit.test.ts.
Not checked: I have not compared the page against main in light and dark here, so the layout-shift and lost-information check still rests on the preview's before/after looks.
To try it, open /audit on the preview with a sound app, an unsound app and an unread one, and press "Knock now" on an app you can write to.
🤖 Generated with Claude Code
Approved from the source: I could not reach the preview from my sandbox (403 on the tunnel), so I did not see it render. The change does what the issue asks. /audit is built from badge, card head, row, listCard and prose. The .audit and .audit-* rules are gone from content.ts, and DESIGN.md §5d is updated to match. Navigation uses <a>, the one mutation (Knock now) was not touched, and the page needs no JavaScript. The new test fails without the change. Two things I would do next: (1) the data-way attribute in cellLine has no CSS left, so it is dead; the cell lines used to be coloured and now only the word "wider" or "narrower" tells you the direction. Either drop the attribute or give the word a badge. (2) verdictsCard still prints the commit id as a hand-written <code>…slice(0,7)</code> while the rest of the page now uses sha(). Please also look at /audit in light and dark with a mismatched app before landing; the pull itself says that comparison was not done.
/audit is now built only from
docs/DESIGN.md§5 components. All 28.auditand.audit-*rules are deleted fromsrc/web/style/content.ts, and their 15 names are gone from the §5d register indocs/DESIGN.md. The page shows the same facts as before.What moved where (
src/web/pages/audit.ts):.audit-sumbecomes an<h2 class="mb">. The "N apps disobey" alarm (.audit-alarm) becomes a dangerbadge()..audit-appand.audit-trailbecome a §5 card head: icon,<h3>with the repo link,.spacer, then the badges. The short commit id is nowsha(), both in the head and in the "asked … at" foot..table[data-dense]and resource names sit in<code>. Each answer (.audit-answer) is abadge():yesis attn,ownis secondary,nois outline.data-answerstays on the<td>..audit-problems,.audit-wide) render as.proselists. The mismatch list now sits in the card body under the table, not inside the foot, so theflex-basisworkaround is no longer needed..audit-unreadbecomes alistCard()ofrow()s, with the explanation moved to the card's foot..audit-h2) is a plain<h2 class="mt mb">. Each cell a change touched (.audit-cells) is a.row-metaline written aswider · <code>…</code>ornarrower · …, so the direction is spelled out where it used to be only a colour. Lines can be cut short on narrow screens, so the full sentence is in thetitleattribute..audit-changeand.audit-saidwere wrappers the §5 row and card foot already handle.Things that look different on purpose:
.table, instead of centred.Tests: no existing test matched the old class names, so none needed renaming. I added assertions to
test/audit.test.tsthat the page renders §5 badges, table, card head and rows, and noauditclass.bun x tsc --noEmitandscripts/design-lint.tsare clean. Ten suites touching /audit pass (86 tests), includingtest/design-lint.test.tsandtest/design-audit.test.ts.Not checked: I have not compared the page against main in light and dark here, so the layout-shift and lost-information check still rests on the preview's before/after looks.
To try it, open
/auditon the preview with a sound app, an unsound app and an unread one, and press "Knock now" on an app you can write to.🤖 Generated with Claude Code
Closes #3196