AGENTS.md@packages/deck3d/src/check · git:20260918.d661546 · 2026-09-18 · sha256 661a7fcb20ccc9b8

AGENTS.md@packages/deck3d/src/check git:20260918.d661546A

Immutable. This exact content is served forever at /api/v1/blob/661a7fcb20ccc9b8.

# 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. |
| `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")`. |