Skip to content

fix(meshcore): canonical MC channels across feeders (#379)#380

Merged
pskillen merged 10 commits into
mainfrom
api-379/paddy/mc-canonical-channels
Jun 1, 2026
Merged

fix(meshcore): canonical MC channels across feeders (#379)#380
pskillen merged 10 commits into
mainfrom
api-379/paddy/mc-canonical-channels

Conversation

@pskillen

@pskillen pskillen commented Jun 1, 2026

Copy link
Copy Markdown
Owner

Summary

  • Split MeshCore channel logical identity (constellation-scoped MessageChannel by name/hashtag) from per-feeder device slot (ManagedNodeMcChannelLink with mc_channel_idx).
  • reconcile_mc_channels and resolve_mc_channel now map wire channel_idx → canonical channel so two feeders with #test on different slots share one row.
  • Data migration merges duplicate MC channels and backfills link rows from the old M2M.
  • API exposes display_label on constellation channels and FeederMcChannelMirror on managed-node mc_channels.
  • Docs: pre-prod message path data chain (why heard[] lacks hops on channel text today), thin-bot/fat-server direction, meshcore.md ingestion tables clarified; Meshflow/ai-env gitignored for opt-in pre-prod DB skill.

Related

Test plan

  • Run migrations on a copy of pre-prod data; verify duplicate #test / Scotland channels merge as expected.
  • Two feeders: sync #test at different indices → one canonical MessageChannel, two links.
  • Send channel text → one logical channel in Messages (after UI deploy).
  • python -m pytest Meshflow/meshcore_packets/tests/test_canonical_channels.py Meshflow/meshcore_packets/tests/test_channel_sync.py -v
  • Bot mc-channel-sync + apply-mc-channel-config smoke test (no bot wire changes).

Amend ADR-0002 and text-message-channels guide for #379: logical
MessageChannel identity by name/hashtag, device index on link table only.
…nnel identity

Introduce per-feeder slot mapping; merge duplicate canonical channels on
migrate; drop mc_channel_idx from MessageChannel. Closes data model for #379.
Resolve ingest and device sync via ManagedNodeMcChannelLink; upsert
MessageChannel by logical hashtag or public name.
Update serializers, admin, OpenAPI, and sync response for canonical channels
with per-feeder mc_channel_idx on link rows.
Regression tests for shared hashtag across device indices and matching
TextMessage.channel_id across feeders.
DxEventObservation.raw_packet referenced removed packets.rawpacket model,
breaking migrate when building project state after the MT raw packet rename.
Document pre-prod message path gap (channel_text vs rx_log_data ADVERT),
thin-bot/fat-server direction, and fix meshcore ingestion doc formatting.
Gitignore Meshflow/ai-env for pre-prod DB skill.
Update phase-2 progress/outstanding, text-message-channels status table,
and ADR-0002 UI note for ManagedNodeMcChannelLink model.
Introduce phase-3-progress.md and phase-3-outstanding.md under
meshcore/, index them in README, and link from meshcore-path-progress.
@pskillen pskillen merged commit cf3c249 into main Jun 1, 2026
2 checks passed
@pskillen pskillen deleted the api-379/paddy/mc-canonical-channels branch June 1, 2026 16:06
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.

[MeshCore] Duplicate messages across channels when feeders use different channel indices

2 participants