File size: 2,299 Bytes
6a82282
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Phase 0 — Endpoints smoke tests

8/8 endpoints reachable from local dev machine. Run with:

```bash
/Users/amsrahman/riprap-nyc/.venv/bin/python run_all.py
```

| Endpoint | Status | Latency | Notes |
|----------|:------:|--------:|-------|
| Microsoft PC STAC (Sentinel-2 L2A search) | PASS | 1.2 s | keyless; 3 items in S2 Brooklyn bbox |
| NYC Open Data Socrata (311, PLUTO, Sandy) | PASS | 5.8 s | each dataset returns its row keys |
| USGS NWIS (Bronx River at NYBG) | PASS | 0.3 s | 2 series, 190 obs/24h |
| NOAA Tides (Battery 8518750) | PASS | 0.1 s | latest WL=1.056 ft |
| NOAA NWPS (gauges in NY+PA bbox) | PASS | 4.1 s | 750 gauges; **needs `srid=EPSG_4326`** |
| NWS API (NY active alerts) | PASS | 0.5 s | 10 active alerts (cold day) |
| FEMA OpenFEMA (FimaNfipClaims, NY) | PASS | 0.1 s | 1-row probe; aggregated only per project policy |
| HF Hub (small Apache-2.0 model) | PASS | 0.3 s | sentence-transformers/all-MiniLM-L6-v2 metadata |

## Sharp edges discovered

1. **NWPS silently empty without `srid=EPSG_4326`.** Default `srid` is
   apparently a non-WGS84 system; bbox in geographic coords matches no
   gauges. Endpoint returns `200 OK` with an empty array — no error
   signal. Recorded in the smoke test comments so the next person
   doesn't lose 20 minutes.

2. **NYC Open Data Socrata is slow on cold connection.** ~6 s for three
   sequential single-row fetches. Probably PoP-routing or DNS warmup.
   Cache aggressively and batch.

3. **NWS API requires User-Agent.** The smoke test sets one; without a
   UA you'd get HTTP 403 (NWS docs say so but it's a quiet failure
   mode in production).

4. **OpenFEMA FimaNfipClaims schema is wide.** First-row keys include
   `amountPaidOnBuildingClaim`, `amountPaidOnContentsClaim`,
   `baseFloodElevation`, etc — these are the property-level fields we
   are NOT allowed to surface. Specialists using OpenFEMA must
   aggregate (e.g., `$select=count(*)&$filter=...&$apply=...`) before
   ingesting, never store property-level rows.

## Cache contents

`.cache/*.json` — one per smoke test, holds the parsed first row /
metadata so subsequent dev iterations don't re-hit the endpoint.

## Conclusion

All eight data sources are usable. Proceed to Phase 1 (Prithvi-EO
live water segmentation). No blocking issues.