For judges: a 60-second tour
Checking the live worker…
- Live: the 20 frozen-test public USGS river cameras plus the cameras onboarded this weekend, re-read by a Graviton worker. Camera stage ± σ sits next to the USGS gauge.
- Open a featured site: Salt Creek, IL, Neversink, NY or Hancock, NY (then Bean Creek, Stony Brook, Buffalo Bayou). Pecatonica's camera has sent nothing since Oct 20, but its flood-height map is our clearest one. Drag the stage slider to see what goes under water at any stage, drawn onto today's frame from a flood-height map the camera learned from its own gauge.
- Rivers are calm? On Salt Creek or Hancock, press ▶ Play under "Replay a flood": a real flood replayed through the live pipeline with a model trained before it, the agent drafting the alert in the first cycle above p90.
- Check the agent decisions on a flagged site, and the approvals queue (alerts and tickets need a human).
- Proof: which OpenCV build and instance produced the readings (Graviton, COOL or stock 5.0.0.93), with model hashes.
- The numbers below come from the frozen test (Oct 4–14, 2026). Constants were hashed before the test days were read, and the test was scored once.
Live since Oct 23: forward-in-time evaluation
Frozen test (protocol v2, scored once)
What we claim, and what we don't
We claim: a fleet-scale, plate-free, survey-free system. Each camera calibrates itself from its own USGS gauge history, reads stage when the gauge is down (gap-fill), reports flood state, flags its own problems (view change, lens, disagreement), and shows what is under water at any stage.
We do not claim: that the camera replaces a working gauge. While the gauge is online, the camera does not beat 15-minute persistence at any site. We also make no night readings (v1), no discharge, and no accuracy on cameras outside the 20 evaluated. Year-long cross-validation is harder than the 10 test days (median 0.38 ft vs 0.18 ft) because seasons drift.
Per-site results
| site | tier | n | MAE ft | nMAE | P1 | 15-min pers. | 72 h gap: cam / LKV | 7 d gap: cam / LKV |
|---|
Failure cases (shown, not hidden)
- View changes: 8 of 20 cameras have periods that can't be registered to the current view. Registration catches it (VIEW_CHANGE), and the agent re-anchors or quarantines the site. Look for view changed on the live page.
- Out-of-range stages: a live model cannot read above its calibrated range. Such readings are flagged OUT_OF_RANGE, shown as "≥ X ft (above calibrated range)", and the gauge is trusted. At Hancock the July flood peaked at 18.1 ft against a 12.0 ft calibration ceiling, and the frozen-protocol model failed there (report §6.6).
- Night: no camera reading at night (IR frames). Gaps are shown, not filled.
Agent evaluation
results/agent_eval/summary.json is committed.COOL on Graviton
results/cool_bench/summary.json is committed.Reproduce
git clone https://github.com/samsundar989/opencv-hackathon && cd opencv-hackathon pip install -e ".[dev]" # opencv-python-headless==5.0.0.93 (pinned) pytest -q python scripts/export_site_models.py # live model bundles from the cached history python -m riversight.live.cycle --local # one live cycle over all 20 cameras python scripts/deploy.py # the AWS stack (us-east-2), budget guard first
Full steps: docs/REPRODUCE.md · technical report: report/ · architecture: docs/ARCHITECTURE.md.