Repository navigation
feat(regions): explore shared history and observed directed routes - #505
Merged
Merged
Conversation
Owner
Author
|
Review feedback addressed (commit
This follow-up changes wording/documentation/tests only: no aggregation, protocol, Go, schema or configuration changes. Full local frontend suite passed again (257 files), as did all 36 normal Regions browser checks. Final instrumented checks and CI on the exact new head are running; no merge or deployment has occurred. |
Owner
Author
Review — CS-Coordinator PR#505 — head 53fd65fVerdict: APPROVE with two follow-ups (not blocking, filed separately). Reviewed against master Checked
Follow-ups
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add a Connections view to Regions, with two deliberately different evidence classes:
Shared history memberships are not labelled as verified forwarding, gateways, cross-scope traffic or direct RF links. Independent steps are not joined into a claimed full route. The existing evidence does not establish a region-change point, so this PR does not invent directional region-to-region crossings.
This is stacked on #503 (
codex/regions-health-trends), which builds on #502 and #501. It should not be merged before its base stages. No merge or deployment is included.Evidence and correctness
first_seen, half-open completed UTC hours and 21-day maximum reconstruction horizon as Timeline/Health. Current visibility, aliases, role changes and archived metadata policies still apply.Existing history limitation, explicitly disclosed
Shared pairs reuse the same transmission-level history as Timeline/Health. Its legacy attribution gates on the canonical transmission route and can include planned direct-path candidates when one content transmission has mixed flood/direct observations. It does not independently verify every observation's route/scope variants. This is reachable in the unchanged base and is not a limitation of the new strict directed steps.
The new UI therefore calls these shared relay-history memberships, explains their weaker provenance, and does not present them as guaranteed lower bounds on physically shared relays. Correcting the older history attribution is a separate follow-up; this PR does not silently rewrite the previous stages' statistics.
UI and API
/api/regions/routesbulk fetch; local time/scope selection, keyed paginated tables and a bounded directional map. Latest, Timeline and Health remain available.a366955cb2f67b8e6842d4f00d2b6a554dddd88a(Packet.cpp,Packet.h,Mesh.cpp,RegionMap.cppand packet-format documentation).Performance
Route evidence is aggregated with the existing background relay snapshot, outside the packet lock after bounded capture; requests do not scan packet history or acquire that lock. Source paths, per-transmission paths, steps, populated hours, endpoint metadata and rendered rows/edges are bounded. Observation transport fields consume existing padding:
StoreObsremains 200 bytes on 64-bit.Apple M5 / Go 1.26.3 / Node 26 measurements (synthetic data):
Aggregation is linear in retained observations/path hops plus bounded sorting; it is not per-node packet scanning. Shared relations use bounded candidate pairs and inverted membership intersections rather than storing a potentially large per-node scope clique. Table pagination/theme redraw reuse the selected interval cache. These are local measurements, not production latency guarantees.
Limits are explicit: 250k captured path variants globally, 128 per transmission, 8,192 bytes per path, 5k published steps, 100k hourly cells and 10k endpoint identities. UI: 1k retained scope pairs, 25 rows per table page, 200 mapped step rows. Display limits/default period are tracked for future customizer exposure; protocol checks are not adjustable thresholds.
Validation
npm test: 257 test files passed, no failures. Final unit/UTC/DST-host timezone checks, eslint and XSS preflight passed.The stacked branch requires an explicit manual CI run because the automatic PR workflow targets
master. Initial full-stack CI passed one2b14862. After the reviewed provenance-only follow-up, final-head CI run 38906804186 also passed on53fd65f5ab3bbe8d5cefe76e3ad20783bf6c1d61: all Go/race, ingestor, library/CLI, script/container, JavaScript/lint, three E2E shards, coverage aggregation, Docker validation and the final required gate succeeded. No publishing or deployment was performed.Local instrumented browser coverage for the final head (isolated to its own coverage captures): Regions routes 92.72% statements / 99.08% lines; Regions map 94.13% / 98.97%; Regions history 90.47% / 97.47%. These are feature-file results, not a claim about whole-application coverage.