On a laptop use the webcam; on a tablet the rear camera is preferred. Everything stays on this device — nothing is uploaded.
Frame quality
Sample metadata
Coverage matrix · zone × lighting
Site & unit binding
Operator
Sync
Gauge profile
Dial geometry and the angle→pressure calibration are data, not code (System Spec §5.3). A new dial model is onboarded by adding a profile here, not by changing the reader.
Read a capture
Pick a capture, then either annotate pivot/tip in the Library or run auto-detect. The reader turns needle angle into pressure, zone, and a confidence — the same math the field client will run on device.
Ingestion envelope (preview)
Stage A shows the envelope; Stage B POSTs it to /ingest/v1/events once the App Ingestion Gateway exists. Shape follows the ADR: client-generated event_id, producing device, and subject_ref for the cylinder.
Model regression harness
Runs the reader across every labeled capture and scores it against the hand-annotated ground truth. This is how gate G5 is measured — zone F1 ≥ 0.98 and MAE ≤ 60 kPa in the green band — repeatably, on demand, instead of asserted once.
Usage guidelines
2 · Frame it the way the reticle asks. Dial inside the circle, QR inside the small box below it — that is where the code actually sits on the valve collar, and the fixed offset between the two is what lets the QR seed gauge localization. Get close: the gauge should be a large, sharp circle. Below roughly 180 px of dial diameter a frame is not usable no matter how pretty it looks.
2b · If you cannot get both the dial and the QR sharp. That is usually physics, not user error: the code sits on the curved collar a few centimetres in front of the dial face, so at close range they fall on different focal planes, and a webcam has no aperture control to buy depth of field. What actually works, in order:
• More light. A brighter scene makes the sensor stop down and deepens depth of field — a desk lamp bounced off a wall does more than any setting here.
• Back off and zoom rather than pushing the lens close; longer subject distance flattens the difference between the two planes.
• Square up to the collar so the QR is not raked at an angle.
• Use the focus/zoom sliders if your camera exposes them. Most desktop webcams do not, and the bar will say so.
• Give up on one frame. For training data you do not need the QR at all — the reader learns the dial. Fill the guide with the gauge and ignore the QR box. Single-frame QR+dial binding is an anti-fraud rule for field inspection (System Spec §9), not a dataset requirement, and fighting for it here costs you sharp dials.
2c · Read the focus numbers, not the picture. dial focus and qr focus are measured inside their guides, so a razor-sharp background can no longer flatter a soft gauge. Higher is sharper; watch the number move as you adjust distance and take the peak. dial fill tells you whether the gauge actually occupies the ring — below 25% the live reader refuses to report, because at that size it will happily lock onto a lever arm and give you a confident wrong pressure.
3 · Collect the ugly cases first. The reader only generalizes to conditions it has seen, and real fleets over-supply the easy shot: clean, frontal, needle in the green. Those are the least valuable frames you can take. Deliberately gather glare on the glass, dim back rooms, dusty and scratched lenses, 30–45° off-axis, and pull-pin occlusion. Watch the coverage matrix and fill the empty buckets — especially recarga and sobrecarga, which you may have to stage on a discharged or over-pressured unit.
4 · Keep the rejects. A blurry or occluded frame labeled as such is training data for the quality gate — it teaches the app when to ask for a retake. Capture anyway, then flag it in the annotator. Do not curate the dataset down to the photogenic ones.
5 · Label precisely. Place the needle pivot and tip carefully: the angle between them is the ground truth everything is scored against. Set the zone and, where the dial is readable, the measured value — the value is what the green-band MAE in Validate is computed from.
6 · Treat the live read as a smoke test, not truth. Live read runs the classical-CV baseline on the feed and overlays the needle, pressure, zone, and confidence. It is there to catch framing and calibration problems while you are still standing in front of the unit — a wildly wrong live reading usually means the dial is not in the ring or the gauge profile is wrong. It is not a label. The reading at capture time is stored alongside the image as provenance so you can compare it against what you annotate later, which is exactly the disagreement the Validate tab measures. A grey dashed needle means confidence below 0.70 — hold steadier or improve the light.
7 · Check yourself in Validate. Run the regression after a labeling session. It scores the reader against your labels and reports G5 directly (zone F1 ≥ 0.98, green-band MAE ≤ 60 kPa). Save a baseline so later runs surface regressions. Below 50 samples it will tell you it is a smoke test — believe it.
8 · Pool and back up. Export ZIP produces /images, a COCO-style labels.json, and a re-importable dataset.json; Import merges someone else's export. Captures live only in this browser's IndexedDB — clearing site data destroys them. Export after every session and push the ZIP to the extinguard-vision-dataset bucket.
Everything here is development data. Nothing this bench produces is a compliance record: envelopes are stamped environment: development and target the extinguarddev tenant.