The tags commit swept in /owner/packet-sharing contract entries whose route
handlers were never committed; assertContractCoverage kills the backend at
import on every fresh stack. Feature stays on its own workstream.
- tagger-worker: persistent retry queue (tagger_retry) so API outages cannot
drop tags; overlap 20s->120s; only publicly-visible in-scope messages are
sent to the API (visibility + network filter)
- backend: tags joined into /feed/messages, /packets/recent, /packets/:hash
and the WS initial state; new GET /tags/recent for live enrichment; contract
+ openapi entries
- frontend: tag chips under the row meta line (feed + app), live 15s tag poll,
Message tags section in the packet detail panel
- clientErrors.ts: window.onerror/unhandledrejection for BOTH domains via main.tsx
(was app-only in App.tsx); resource-failure classification; telemetry=off gate;
console.error hook (kind warning) with terrain-tiles noise filter; page field
now pathname-only (no query strings)
- PrivacyPage at /privacy linked from footer + cookie banner; docs/privacy.md LIA
- retention: packet_decryptions added to row-table retention targets; packets
180d->30d in lifecycle policies; migration 050 schedules timescaledb retention
jobs (packets 30d, node_status 180d, node_neighbor 7d) that never existed
- migration 050: packet_paths hypertable (content-stripped path store, no
retention) + backfill of 2.56M path-bearing packets + ingest dual-write
Consolidates the stacked backend, privacy, network-intelligence, frontend, operations, mobile, and owner-cache changes after resolving main conflicts and passing the full CI suite.
- split backend API into route/service/repository boundaries across stats, owner, and pathing\n- extract shared API bootstrap and helper modules\n- reduce MapLibreMap into smaller frontend map modules with extracted builders, config, popup UI, and types\n- continue worker modularization by extracting RF terrain/tile helpers alongside RF config and loss helpers\n- add repo-local architecture, DB lifecycle, link model, pathing, frontend map, and contributing docs\n\nThis is the verified refactor checkpoint: backend and frontend builds passed, worker syntax checks passed, affected containers were rebuilt, and /healthz is OK.