Skip to content

fix(packets): scope canonical hop answers to their observation and path position #363

Closed

Description

@dborup

Confirmed problem

The grouped-packet canonical-hop change in PR #185 exposes observation-specific resolved_path answers through a shared prefix/observer cache. The problem remains on master ff9a501c17396aada504e87d44c0f503e2740b8e.

Two observations from the same observer can contain the same hop prefix but different canonical answers. Rendering currently allows the later answer to replace the earlier one. A row with a null canonical answer can also inherit another row's definite answer, suppressing the ambiguity warning.

Both cases were reproduced against production JavaScript, without changing the repository or contacting a live instance.

Required correction

  • Render a canonical answer only for its own observation and hop position.
  • Preserve different answers for repeated prefixes, including repeated positions within one path.
  • A null or missing canonical entry must not gain certainty from another observation's answer.
  • Keep heuristic candidate caching separate and retain uncertainty when the evidence is ambiguous.
  • Preserve grouped headers/children, raw rows and selected-observation detail behavior.

Acceptance checks

Add regression tests using the real renderer for conflicting answers, null answers, repeated prefixes, row order and refreshes. Validate the relevant flows in a local browser. Keep memory bounded and avoid per-packet API calls or quadratic packet/node work.

This follows up the closed hop-ambiguity work, rather than requesting another protocol or backend resolver redesign.

Activity

  1. added a commit that references this issue on Oct 12, 2026
  2. dborup commented on Oct 12, 2026

    @dborup
    OwnerAuthor

    Fixed by #367 (merged as 5b9cef8ece01d91351febeb425e419b5aabbd487).

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions