AGENTS.md@packages/deck3d/src/check · git:20260929.4aa0939 · 2026-09-29 · sha256 8f753406edb7cbf1

AGENTS.md@packages/deck3d/src/check git:20260929.4aa0939A

Immutable. This exact content never changes and is served at /api/v1/blob/8f753406edb7cbf1.

# DOX — packages/deck3d/src/check

Browser fit/legibility/overlap/occlusion/contrast check over `__deck3d.measure()` (design D8). See change: add-deck3d-presentation-package.

| File | Purpose |
|------|---------|
| `AGENTS.md` | This file. |
| `rules.ts` | Pure rules over `Measurement[]`. `fitFindings` (union vs 4 % safe margin), `legibilityFindings` (cap height ≥ 14 px at 1080, scaled by height), `overlapFindings` (label IoU > 0.1, epsilon-guarded), `occlusionFindings` (raycast hit ≠ own id), `contrastFindings` (ratio ≥ 3:1, warn-only), `skippedFindings`, `budgetFindings` (over-budget → `warn budget`). `filterIgnored` drops findings matched by a slide's `check.ignore` (rule name or object id). Every `Finding` carries severity, slide id/index, measured vs threshold strings, and a `suggest` key spelled in the `overrides` grammar. `formatFinding` renders the one-line CLI form. Adds `localFxErrorFindings` (`{slide,effectId,phase}`, no message text so the report stays byte-stable), `localFxNetworkFindings` (deduped + sorted `{slide,host}`), `styleFindings` (`style-defaults`: slide on default effects AND default diagram kind AND no prop), and `NON_DETERMINISTIC_RULES` = `contrast` + `local-fx-network` (excluded from report byte-equality; severity unchanged). See change: deck3d-cinematic-worlds. `backdropLeakFindings` → `fx-content-layer` (error): a background/`local:` effect that attached geometry to the content layer after creation, the one occlusion path the two-pass backdrop render cannot close. See change: deck3d-cinematic-worlds. |
| `index.ts` | `runCheck(html, opts)`: launches chromium, per viewport (default `1920x1080,1280x720`) at dpr 1, per slide at `t=0` + each `peaks()` value; samples label-background luminance via `drawImage` + `getImageData` (renderer uses `preserveDrawingBuffer`); adds `__deck3d.effects()` `skipped`/`budget` findings and applies the merged `check.ignore`. `DECK3D_CHECK_TIMEOUT_MS` (default 120 s) per viewport; `CheckUnavailableError` when chromium is absent. `parseViewports("WxH,WxH")`. Blocks every request whose scheme ∉ `{file,data,blob,about}` via `page.route` and reports it as `local-fx-network` — offline is MEASURED. Requests that fire during deck boot (all slides build at load) are attributed to slide 1. `clearHudState(page)` drops `deck3d:*` local storage before measuring; `opts.style` adds the `style-defaults` pass. See change: deck3d-cinematic-worlds. |