Carry server structural rejections into Radio diagnostics

The proxy now skips malformed upstream rows individually but counts
them, capped at 10,000, in the catalog metadata and the /stations
envelope (rejectedStationCount). The count never fails health policy,
so an otherwise healthy generation is still accepted. The client
validates the field, adds its own rejected rows after admission, and
reports degraded coverage when either side skipped rows. Adds an
end-to-end proxy-to-client test and aligns DATA_SOURCES.md and
CURRENT-STATE.md.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
Said TurkseverandClaude Opus 5.5 committed 2026-10-23 12:39:56 +01:00
1 parent 82190d531a
commit f93982f55e
9 files changed
+159 -23

No files matched your search

+10 -4
View File
@@ -11,10 +11,16 @@ search keeps a successful geocode, with no search or view-based region recovery.
Radio tags are lowercased and whitespace-normalized before the final 80-character
cap, including requested-tag coverage matching. Malformed station rows are skipped
individually; valid rows retain their accepted catalog generation. The UI snapshot
reports a bounded `rejectedStationCount` and degraded coverage when rows were
skipped. Malformed envelope/freshness/generation metadata and all-invalid responses
still preserve the previous usable catalog.
individually on the server and the client; valid rows retain their accepted
catalog generation. The server's `/stations` envelope carries
`rejectedStationCount`, the structurally malformed upstream rows it skipped
(capped at 10,000; policy-filtered rows such as offline or non-HTTPS streams are
not counted). It is diagnostic only and never fails catalog health. The client
adds its own rejected rows after admission, so the UI snapshot reports the
combined, capped `rejectedStationCount` and degraded coverage when either side
skipped rows. Destroy resets the count. Malformed envelope, freshness, generation
or rejection-count metadata and all-invalid responses still preserve the previous
usable catalog.
Terrain height requests accept at most 64 points, matching the browser service's
existing batch size and one bounded upstream chunk. Larger requests return HTTP