Stoop Lab

FP32 vs. INT8, live in your browser

peregrine's real FP32 detector vs. its own INT8 quantization — the nanostoop path, calibrated on peregrine's real warehouse frames — running side by side in your browser via ONNX Runtime Web, on a bundled deterministic clip. This tab measures only accuracy divergence (agreement %, lost/gained boxes, IoU drift). It does not measure or display latency as a performance comparison — ORT-Web's WebGPU EP has incomplete INT8 coverage, so an in-browser FP32-vs-INT8 speed race is structurally invalid (see the latency reference panel below, and site/lab/README.md).

Device strip

LIVE

Detected in this tab, this session — not a claim about any other device. Nothing below is a performance number.

execution provider
WebGPU
wasm threads
wasm SIMD
user agent

Fallback chain — v0

DEFINED

Full chain (WebGPU → WASM-SIMD-threads → bundled clip → recorded GIF) is a v1 hard requirement (TZ S3-Phase3-4) — v0 ships the WASM-only rung plus the bundled clip and a styled recorded-run screen; see README.md.

WebGPU compute
WASM (this tab)
bundled clip
recorded run

Clip & degradation

SIMULATED clip

Default path per TZ S3-Phase3-1: a bundled 90-frame clip (real, sequential warehouse stills, declared 30fps — assets/clip/manifest.json), not a webcam. Webcam is an upgrade button below. JPEG severity reuses src/stoop/degrade/params.py's exact quality ladder, applied to the source frame before letterbox/preprocess — identically to both panels.

frame 0/89
severity 0 (identity)
booting…

FP32 vs INT8 — live boxes

LIVE
FP32 · peregrine-fp32.onnx
12.27 MB · always loaded
INT8 · peregrine-int8.onnx
3.46 MB · lazy-loaded
not requested yet

conf=0.25 · NMS IoU=0.45 · match IoU=0.50 — same constants as nanostoop.py and scripts/fragility_derisk.py's decode_yolov8.

agreement % (this frame)
lost boxes (FP32 → INT8)
gained boxes (INT8 only)
mean IoU drift, matched pairs
raw counts

Aggregate over the full 90-frame clip (run full 90-frame clip above) — not run yet.

agreement % (full clip)
total lost boxes
total gained boxes
mean IoU drift, pooled
0/90
frames processed

Latency — from the hardware matrix, not this tab

RECORDED

Real per-target latency on real named hardware, embedded from artifacts/matrix/target-matrix-2026-08-19.html. Your browser's own inference time is intentionally not shown as a number here — see the subtitle at the top of this page.

hardwareruntimeprecisionp50 msp95 mstruth
loading…

Full matrix (8 lanes, 3 hardware classes): target-matrix-2026-08-19.html

Gate Lab — the central interaction

LIVE verdict

Pick a target device and drag its latency budget. While the budget stays at or above the device's RECORDED p95, the verdict is PASS. Drag it below — the verdict flips to REFUSED, naming the budget that failed, the device, and the evidence file it came from. A second, device-independent budget does the same for the INT8 quantization tax on mAP50:95 (the metric ADR-0002 found protocol-robust — mAP50 moved ~6.7x under an NMS-threshold sweep on this exact data, mAP50:95 moved ~1%). Both budgets must clear for an overall PASS — same rule as peregrine.gates.evaluate_release_gates()'s all(gate.status == "pass" for gate in gates).
This mirrors the real gate engine — budgets committed in git before the run they judge (see configs/targets/matrix.yaml's l4_trt_* budgets, committed 2026-08-19 before the L4 spot-VM run they judge even started — peregrine/src/peregrine/gates.py). Here the visitor's slider stands in for that committed budget so the mechanic is explorable — the two RECORDED numbers each device is judged against never move.

— ms
evaluating…
gatenamemeasuredbudgetstatusdetailevidence
loading…

Loupe — failure gallery

RECORDED

6 of the 24 stratified overlays from the golden-v1 collapse investigation (artifacts/golden/golden-v1-collapse-investigation-2026-08-20.md) — real predictions on real independent-warehouse frames the model never trained on. Green = ground truth, red = predicted pallet, blue = predicted carton, conf≥0.25. Captions are copied from that investigation's own visual audit, not written for this page.

loading…