Linear: https://linear.app/tinyland/issue/TIN-1729/openaq-no-data-null-reading-and-live-smoke-regression-suite
Problem
OpenAQ behavior varies sharply by viewport: Ithaca-like sparse views can legitimately have zero numeric readings, while dense metro regions return many readings and continental bboxes can hit upstream limits. We need regression coverage that proves those states are visible and not confused with proxy failure.
Scope
- Add deterministic mocked tests for sparse, all-null, mixed numeric/null, degraded, and capped OpenAQ payloads.
- Add browser/e2e coverage that verifies layer health, point readout, PM2.5 support popover, and transmission provenance with mocked OpenAQ data.
- Add a lightweight live-smoke script or Justfile recipe for known sparse and dense bboxes, with assertions limited to degraded/status/shape rather than exact station counts.
Acceptance
- CI can catch null-as-zero, hidden-degraded, and capped-result regressions.
- Sparse live viewports report honest no-data/no-reading states.
- Dense mocked viewports exercise PM2.5 estimate -> AOD provenance end to end.
Related: #271, #275, #264.
Linear: https://linear.app/tinyland/issue/TIN-1729/openaq-no-data-null-reading-and-live-smoke-regression-suite
Problem
OpenAQ behavior varies sharply by viewport: Ithaca-like sparse views can legitimately have zero numeric readings, while dense metro regions return many readings and continental bboxes can hit upstream limits. We need regression coverage that proves those states are visible and not confused with proxy failure.
Scope
Acceptance
Related: #271, #275, #264.