An ordered selection trace
Retained live-selector observations from 6 November 2026: startOpszStepper through the React demo, PT Serif / PT Serif Caption, Compare on, author boundary 16 CSS px, hysteresis 1 CSS px. Preserve the order: the previous family is part of the state. The one-shot applyOpszStepper API skips hysteresis and selects the raw band; it chooses Caption at 15 CSS px.
| Order | Size (CSS px) | Managed family | Fixed comparison |
|---|---|---|---|
| 1 | 32 | PT Serif | PT Serif |
| 2 | 16 | PT Serif | PT Serif |
| 3 | 15 | PT Serif | PT Serif |
| 4 | 14 | PT Serif Caption | PT Serif |
| 5 | 16 | PT Serif Caption | PT Serif |
| 6 | 17 | PT Serif | PT Serif |
| 7 | 12 | PT Serif Caption | PT Serif |
Reproduce the reconciliation
Download both files into the same directory and run python3 check-selection.py. It checks the retained sequence and loaded font entries. It does not rerun a browser or test a downloaded npm release.
For a fresh interactive check, start at 32 px in the default PT Serif demo, enable Compare, keep hysteresis at 1, then enter 16, 15, 14, 16, 17 and 12 in order. Wait for the fonts and each state to settle. The fixed comparison stays Text; the managed paragraph follows the sequence above.
A separate Chromium check of the published 1.1.1 core reproduced the live sequence through 17 CSS px, selected Caption for one-shot application at 15, and restored the original family and text when stopped. Its downloaded ESM hash matched the integrity-checked release. This checks the core under these settings; it does not establish wrapper parity, cross-engine behavior or reading outcomes.
Provenance: the existing research evidence/demo-observations.json, collected from the live site and reconciled to its original browser response. A separate clarified-build review reproduced the boundary behavior locally. Computed families plus loaded font entries do not establish glyph-by-glyph painting, engine parity, reading outcomes, optimal thresholds, or a deployed-commit identity.