Skip to content

Audit every page the site builds, and state the wire's axis once - #56

Merged
cevheri merged 2 commits into
mainfrom
fix/a11y-gate-derives-routes
Sep 20, 2026
Merged

cevheri merged 2 commits into
mainfrom
fix/a11y-gate-derives-routes

Conversation

@cevheri

@cevheri cevheri commented Sep 20, 2026

Copy link
Copy Markdown
Member

Two follow-ups from the v1.3.0 review, both the same shape: a second copy of a list that had already drifted.

The accessibility gate audited a list it kept itself

scripts/lighthouse-gate.mjs typed its routes out by hand, so adding a page to site.config.json did not add it to the audit. That drifted twice: /code-signing-policy needed a follow-up commit (3503d0f), and /helper plus seventeen engine archives shipped in v1.3.0 with no audit at all.

scripts/a11y-routes.mjs derives the list from the inventory. /rss.xml is excluded as not an HTML page; blog posts and engine archives are one template over many routes, so one representative stands for each family as before. /404 is covered now that the list is derived rather than curated.

Two tests in tests/domain.test.ts read dist and assert the derivation rather than another literal: every standalone page that builds is audited, and each templated family has a representative that exists. Removing /helper from the audit fails the first.

22 routes, all >= 95, /helper and /blog/engine/postgresql both 100.

The diagram wire stated its axis six times

The dashed gradient and the keyframes that scroll it have to agree on an axis, and they were stated together in six places: base, mobile, and a green override per section per breakpoint. One of the six was missed, which is the bug fixed in #50 — the working state was drawn vertically and animated horizontally, so the wire looked alive and sat still.

The axis is set once on .diag and inherited. A state that only recolours the wire sets --diag-dash-color. FlowBand's reversed direction is a horizontal idea, so it is scoped to the breakpoint where the wire is horizontal instead of being re-overridden below it.

Four card states across both breakpoints were measured in a browser before and after: same shape, animation and colour, dashes travelling in each. Two tests in tests/dist-smoke.test.ts assert the gradient is defined exactly once and that no state spells it out again; restoring the old shape fails the second.

Checks

bun run gate — 219 tests, 0 fail. bun run a11y — 22 routes, all pass.

The gate kept its own hand-typed route list, which is the second copy of a
list this repo keeps getting bitten by. It drifted twice: /code-signing-policy
had to be added in a follow-up commit, and /helper plus seventeen engine
archives shipped in v1.3.0 audited by nothing, because adding a page to
site.config.json does not add it to a list that lives somewhere else.

scripts/a11y-routes.mjs derives the list instead. /rss.xml is excluded as not
an HTML page; blog posts and engine archives are one template over many routes,
so one representative stands for each family the way it already did. /404 is
covered now that the list is derived rather than curated, and scores 100.

Two tests read dist and assert the derivation rather than another literal: every
standalone page that builds is audited, and each templated family has a
representative that actually exists. Removing /helper from the audit fails the
first one.

22 routes, all >= 95.
The dashed gradient and the keyframes that scroll it have to agree on an axis,
and they were stated together in six places: base, mobile, and a green override
per section per breakpoint. One of the six was missed, which is the bug fixed in
#50 — the working state was drawn vertically and animated horizontally, so the
wire looked alive and sat still.

The axis is now set once on .diag and inherited, so a state that only recolours
the wire sets --diag-dash-color and nothing else. FlowBand's reversed direction
is a horizontal idea, so it is scoped to the breakpoint where the wire is
horizontal instead of being re-overridden below it.

Measured, not assumed: four card states across both breakpoints compute the same
shape, animation and colour as before, and the dashes travel in each. Two tests
assert the gradient is defined exactly once and that no state spells it out
again; restoring the old shape fails the second.
@cevheri
cevheri merged commit 7519536 into main Sep 20, 2026
5 checks passed
@cevheri
cevheri deleted the fix/a11y-gate-derives-routes branch September 20, 2026 16:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant