Files
R0ckandClaude Opus 5 fb0ceeb0fb feat: let config supply the region catalogue a backend can't enumerate
Beacon knows perfectly well which region a packet was sent on — it records
the scope at ingest from the transport code, and participation already tallies
relays per region from that. The only thing it cannot answer is "every region
on this mesh": /scopes joins through observer_scopes, so it returns the
regions local observers have been heard on.

That is knowledge an operator usually has and a backend often does not, so it
belongs in config:

    source:
      type: beacon
      scopes: ["#sco", "#fif", "#tay"]

With a list, ScopeCatalog is satisfied and the region features come back on —
per-region rasters, the map's region filter, per-repeater region tagging.
Verified on the migrated ScotMesh mesh: 0 tagged repeaters before, 32 of 77
after, plus per-region rasters.

Enumeration only, deliberately. Which repeater carries which region is still
decoded from real traffic on both backends, so a configured region nobody has
been heard on gets no observations rather than an invented one. That keeps the
config an assertion about what EXISTS, never about what was observed.

Implemented as a wrapper in internal/sources rather than a special case in
either backend, so it is not Beacon-specific: a CoreScope instance with an
incomplete region list benefits identically. Blank or whitespace-only entries
do not count as a list — silence must not be read as an assertion of
completeness.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012LgDv2uN7V4qCDWVXM5e5w
2026-08-02 17:39:57 +01:00
..