Files

2.5 KiB

Pathing

Purpose

Pathing resolves packet routes into confident relay chains. The production pipeline (2026-08) is the Viterbi champion (vit_src) from the pathing experiment: it walks a candidate trellis built from 1-byte hop prefixes and scores emissions/transitions from seven calibrated signals, including positional prefix-frequency priors, corridor interpolation, and ITM terrain feasibility (no hop is placed where line-of-sight physics rules it out). Measured on the gold holdout set: 97.27% route accuracy / 99.24% hop accuracy.

Main layers

  • backend/src/path-beta/
    • resolver implementation (resolver.ts) — Viterbi candidate trellis
    • worker pool
    • geometry helpers (terrain-aware arcs)
    • fallback logic
  • backend/src/pathing/
    • service/repository orchestration for API-facing pathing endpoints
    • pathingPublicDto.ts — the public DTO projector. Any new resolver field must be added here or the API silently drops it.
  • backend/src/pathing/pathingService.ts
    • cache and resolver orchestration

Production behaviour (2026-08-06)

  • Slow-mode resolution: packets wait out their propagation window before the path is finalised (469c84e), so late observations don't re-shape a settled route.
  • Physics gates + held-path refinement (5dd15d9): candidate hops that violate physical feasibility are gated; held paths are refined in place.
  • Canonical path DTO: canonicalPath is the authoritative route in API responses; the frontend renders it as blue paths. Path identity colours live-path arcs by the resolved packet (f6f8290).
  • Terrain-aware live paths + airborne-hop markers (a76ab1e); live path arcs stay above terrain (7bcabcc).

Evidence priorities

In practice the resolver should rank evidence roughly like this:

  • physically plausible link support (ITM/LOS)
  • multibyte path evidence
  • radio-neighbour evidence
  • weaker observational hints

API ownership

  • backend/src/api/routes/pathing.ts
    • thin HTTP wrapper
  • backend/src/pathing/pathingService.ts
    • cache and resolver orchestration
  • backend/src/pathing/pathingRepository.ts
    • DB-backed path history and learning queries

Contributor rule

If a path looks wrong, first determine whether the issue is:

  • evidence weighting
  • physical graph quality (ITM feasibility)
  • ambiguous short-hash matching
  • cache reuse
  • a missing field in the public DTO projector (pathingPublicDto.ts)

Do not debug path rendering as if it were a frontend-only problem.