- Export ua_multi_tgs in topology for monitor chip restore after server restart
- Defer OBP→HBP slot contention on inject-only proxies; clear other-slot SINGLE session on new TX
- Fix infinite UA timer persistence (expires_at NULL) and restore from DB (expires_at=0 sentinel)
- Push CONFIG to monitor after async dynamic-TG restore on RPTC
- Migration 005_peer_dynamic_tgs_expires_null (shared with adn-monitor)
Block concurrent group voice on the same slot during active QSO; apply
GROUP_HANGTIME only after VTERM. Derive simplex/duplex from RPTC, force
simplex downlink to TS2, export rf_mode in topology, and drop duplicate
static TGs from TS2 when TS1 already lists them.
Replace internal bridge terminology with routing (RoutingUseCases, AclRouter,
routing_table export). SubscriptionStore remains runtime authority with O(1)
indexes for router and downlink filters. Fix STATIC TG parity on OPTIONS/RPTO,
parrot in-band edge cases, and remove per-packet routing_table export from the
hot path that caused high CPU under multi-hotspot OBP load.
Require subscription_store in BridgeUseCases and route timer, OPTIONS,
static TG, and OBP mutations through store ops with export-only BRIDGES shim.
Fix dashboard YAML static TG fallback and sole-hotspot monitor remap for
dynamic UA when a bridge leg is active.
Enforce strict SINGLE=1 RX exclusivity, always filter inject-only downlink by
each peer's own OPTIONS, and push self-service DB options only after PASS=.
Stop merged SYSTEM static TG lists from leaking across hotspots in topology.
Add opt-in REPORTS.MQTT with retained shared state and live voice_event
topics, topology static TG in v2 payloads, dashboard_state builder, and
SIGHUP reload.