Skip to content

feat(channels): expose recorded packet scope in message delivery - #176

Open
n30nex wants to merge 14 commits into
MeshCore-Beacon:devfrom
n30nex:codex/beacon-channel-scope-metadata
Open

n30nex wants to merge 14 commits into
MeshCore-Beacon:devfrom
n30nex:codex/beacon-channel-scope-metadata

Conversation

@n30nex

@n30nex n30nex commented Sep 27, 2026 •

Copy link
Copy Markdown
Contributor

Channel message history already joins transport-scope data, but omits it from responses. This adds scope and scopeStatus to per-channel/global/hash history, reconnect catch-up and new-message events. Live insertion returns the same first-stored packet evidence as history, so a later reception cannot silently give the message a different tag. Events also include their stored message ID.

Matched, unscoped, unresolved and unavailable capture metadata stay distinct. Duplicate suppression, existing response containers/cursors and retention semantics are preserved. No migration or historical rewrite is added. Decryption backfill keeps stored scope evidence and still does not broadcast old messages as new traffic.

Closes #175. Follows #174; parent 71e4e871c739278130278b3b08c60a8defc9cdd5, head 7fc631e85769080cb9d18ff02e4508109bb83657. Focused diff.

Validation: Windows build/vet and bounded full suite pass. Native Pi/PostgreSQL validation passes for composed 7c9599b1, preserving independent #166 and the existing server stack. Tests reconcile insertion with all four HTTP read paths, nullable evidence, a differing later reception, duplicate suppression, IATA/scope filters, pagination and expired packet evidence. Serialized live events use the stored scope. SQLc/mocks and Swagger were regenerated; the new PostgreSQL regression is in CI.

The Pi preview is now composed server 7c9599b1 / web e7618fd7, including every earlier review candidate. The published head passes CI/race/CodeQL. Native browser checks use actual HTTP and WebSocket delivery, plus English/French desktop and 390px phone layouts. Both MQTT inputs and the public LIVE state are verified, and corresponding source archives match the preview changelog.

At the user's request, the standard Public key was enabled in preview configuration after a restored-copy trial recovered 2,735 retained messages in 16.127 seconds. The feature adds no built-in keys. Schema042 is unchanged; the prior binary/configuration/frontend and a checksum-verified off-Pi dump are retained. The rollout verification was corrected for unnamed channel entries, and rollback now restores runtime file permissions after copying private backups. No application-source change was needed for those deployment-script checks.

Shared roadmap. Owners retain upstream merges and production release. AI-assisted implementation follows the contributor's approved roadmap.

@n30nex
n30nex requested a review from 446564 as a code owner September 27, 2026 23:36
@n30nex

n30nex commented Sep 28, 2026

Copy link
Copy Markdown
Contributor Author

@MrAlders0n could you and Claude review this next channel-scope slice? The focused parent comparison is in the description. This follows #174; please review the first-stored-packet semantics across history and live delivery.

The combined build is running at https://canadaverse.org/beacon-dev/?tab=Channels with the standard Public key enabled. Native PostgreSQL/server checks, all 935 web tests and the published-head build pass. Desktop/phone filtering, live delivery and packet inspection were checked; exact source and rollback are recorded in the changelog. Every earlier candidate remains included. The updated shared roadmap also separates the optional MeshMapper boundary import from later crossing analytics.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Expose consistent transport scope metadata on channel messages

1 participant