You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
tests/e2e/color-contrast.spec.ts:123 excludes /game/cod-skeleton from the AAA sweep, and
states its reason precisely:
'/game/cod-skeleton':
'continuous WebGL render loop; the readiness wait cannot settle under software ' +
'rendering (synchronous GPU readback, #719) — HUD chrome measured instead by ' +
'cod-skeleton-hud-contrast.spec.ts',
That reason stopped being true when #757 landed. The scene is now gated behind an explicit
start, so at page load the route constructs no WebGLRenderer, runs no render loop, and
performs no GPU readback. Measured on a root build with SwiftShader forced, the route went
from 7.6s to 2.6s and reports canvas=0 until the start control is pressed.
The exclusion is therefore load-bearing for a condition that no longer exists.
Why this is worth doing rather than leaving
The exclusion comment is unusually honest about its own cost — "NOTE WHAT THIS COSTS: the
page's contrast is now genuinely unmeasured" — and routes that around to cod-skeleton-hud-contrast.spec.ts, which measures the HUD chips only. The sweep would
measure the whole page: the <h1>, the breadcrumb, the descriptive paragraph, and now the
start placeholder's own text and button, none of which any contrast gate looks at today.
The placeholder in particular is new, visible to every visitor before anything else, and
currently unmeasured by any contrast gate. It uses text-base-content on bg-base-200 and text-base-content/85 for the hint — and CLAUDE.md records that base-200 is exactly the
surface where seven light-theme colours measured 6.4-6.5:1 against a 7:1 gate, and where /80 and /85 opacity text fails AAA (#462). So there is a live reason to think this
placeholder needs measuring, not merely that it can be.
What to do
Remove the /game/cod-skeleton entry from EXCLUDED and run the sweep against it.
If it settles (expected), keep it and delete the exclusion comment.
If it does not settle, restore the exclusion with a reason that describes the current
failure rather than the old one — an exclusion whose stated cause has been fixed is worse
than no comment, because it stops anyone re-testing it.
Do not simply delete the exclusion without running it — the whole point of #396 is that a
coverage floor moves only with evidence.
Follows #757. Related: #715 (the HUD chips this exclusion routes around), #719 (the readback
freeze that caused it), #462 (/80 and /85 failing AAA on base-200).
tests/e2e/color-contrast.spec.ts:123excludes/game/cod-skeletonfrom the AAA sweep, andstates its reason precisely:
That reason stopped being true when #757 landed. The scene is now gated behind an explicit
start, so at page load the route constructs no
WebGLRenderer, runs no render loop, andperforms no GPU readback. Measured on a root build with SwiftShader forced, the route went
from 7.6s to 2.6s and reports
canvas=0until the start control is pressed.The exclusion is therefore load-bearing for a condition that no longer exists.
Why this is worth doing rather than leaving
The exclusion comment is unusually honest about its own cost — "NOTE WHAT THIS COSTS: the
page's contrast is now genuinely unmeasured" — and routes that around to
cod-skeleton-hud-contrast.spec.ts, which measures the HUD chips only. The sweep wouldmeasure the whole page: the
<h1>, the breadcrumb, the descriptive paragraph, and now thestart placeholder's own text and button, none of which any contrast gate looks at today.
The placeholder in particular is new, visible to every visitor before anything else, and
currently unmeasured by any contrast gate. It uses
text-base-contentonbg-base-200andtext-base-content/85for the hint — and CLAUDE.md records thatbase-200is exactly thesurface where seven light-theme colours measured 6.4-6.5:1 against a 7:1 gate, and where
/80and/85opacity text fails AAA (#462). So there is a live reason to think thisplaceholder needs measuring, not merely that it can be.
What to do
/game/cod-skeletonentry fromEXCLUDEDand run the sweep against it.failure rather than the old one — an exclusion whose stated cause has been fixed is worse
than no comment, because it stops anyone re-testing it.
/85on the hint text specifically; text-base-content/80 and /85: no surface is safe on any theme — 94 shipped instances to sweep #462 coversthat class of failure and may fix it globally first.
Do not simply delete the exclusion without running it — the whole point of #396 is that a
coverage floor moves only with evidence.
Follows #757. Related: #715 (the HUD chips this exclusion routes around), #719 (the readback
freeze that caused it), #462 (
/80and/85failing AAA onbase-200).