fix(meshcore): path twin + heard segment resolution (Tier 1/2)#390
Merged
Conversation
After cross-feeder dedup, match channel_text twins using the ingesting feeder MeshCorePacketObservation observer, not packet.observer. Prefer sender_timestamp+channel+text correlation; widen default twin window to 120s.
Load MeshCorePathSegmentResolution for heard resolved_path and positions. path_known requires all hops resolved with coordinates. Update OpenAPI ResolvedHop.position.
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
channel_textvia each feeder’sMeshCorePacketObservation.observer(fixes post–[MeshCore P3] Cross-feeder dedup — one on-air channel message → one packet + N observations (not N TextMessages) #387 dedup). Content-key correlation (sender_timestamp+ channel + text) with 120s default twin window.heard[].resolved_pathloadsMeshCorePathSegmentResolution(staff/M1 rows); hops includepositionwhen resolved;path_knownwhen all hops have coordinates. No automatic hash matcher (ADR [MeshCore P3] M2 - Resolution spike (path_hash_mode / path_update / trace_data) [decision gate] #373 / [MeshCore P3] M3 - Proactive segment resolver (conditional on M2) #374 deferred).ResolvedHop.position.Closes gaps from #385 path tracing work.
Testing performed
pytest meshcore_packets/tests/test_path_twin.py meshcore_packets/tests/test_cross_feeder_dedup.py meshcore_packets/tests/test_path_resolution.py text_messages/tests/test_heard_api.py(16 passed)Deploy notes
MESHCORE_DECODED_TWIN_WINDOW_SECONDS(default now 120).mainso PDY1 uploads RAW PATH; send#testping and confirm per-feederpath_hasheson observations.