Capability Card / the failure a GPU page owes its visitor

A GPU exhibit that cannot run should say why, in its own voice, before the visitor wonders whether the site is broken. Probe the capabilities you actually need, list what passed beside what did not, name the missing thing — then survive losing the context mid-run. This page probes your real browser; nothing here is canned.

probe consoleidle

PROBING

    Drop-in · executed live above
    1. A card skeleton in the host page: #fallback[role="alertdialog"] with a labelled heading and a list; .ok/.no colours are the host's choice. Nothing else — zero dependencies.
    2. To run before anything heavy loads. Probes need no assets, fonts or fetches; failure information arrives first, from a cold cache, offline.
    3. CapabilityCard.probe(){ok, lines, gl?}; .render(lines, title, msg); .watch(canvas, handlers) for context loss. One global, three calls.
    4. The raw report lines, so hosts can log them (window.__caps in Dye Bench) as well as render them.
    5. Names the missing capability, not the symptom — “EXT_color_buffer_float missing”, never “something went wrong”.
    6. The OK -prefix convention: pass lines start “OK ”; rendering splits on it. Passes are listed beside failures — three ticks and a cross reads differently from four.
    7. alertdialog semantics: screen readers announce the failure instead of meeting silence.
    8. webglcontextlost → preventDefault(), or the browser may clear the canvas before the card can speak. Restore recovers deliberately — reload, or tear down and re-init. GL state is never assumed to survive.
    9. Probes by rendering, not by extension string — framebuffer-completeness on a real half-float target is the only honest test — and walks the fallback chain R16F → RG16F → RGBA16F, reporting the level it landed on.
    10. Dye Bench (designpages.dev/dye-bench): fail(), supportRenderTextureFormat(), getSupportedFormat(), and the webglcontextlost/restored handlers — adapted only to return reports instead of throwing, so success can be shown as well as failure.