The next connected-investigation slice links a saved route to retained reports without treating prefix matches as proof of physical identity.
Proposed contract: add the existing stable pathKey to known-route responses and expose GET /routes/{iata}/{pathKey}/observations. The route lookup uses the existing (iata,path_key) primary key; route numeric IDs deliberately lost their index in migration024 and should not drive an unbounded lookup.
Return the full saved route, effective time window, exact saved path bytes/hash width, and a bounded page of retained observation references (packet hash, reporter, time and signal). Match the complete byte sequence, width and IATA; exclude TRACE and unclassified legacy observations. A learned route can outlive its raw evidence. Different hash widths and search-result subsegments are not silently combined. Limit defaults50/caps200, window defaults24h/caps30d, and a scoped microsecond+ID cursor pins the window and handles ties without duplicates. No packet/message bodies are added.
Add one compact concurrent observation index, retain full-byte equality after its digest filter, regenerate SQLc/Swagger, and exercise actual PostgreSQL pagination, exclusions, missing/expired data, migration retry and indexed plans. A separate web PR will display the evidence and canonical route selection with packet/observer links in English/French. Keep all current review candidates and rollback in the Pi preview. Upstream #170 and pending #166/#167/#169 are being refreshed first; maintainers retain merge/release control.
The next connected-investigation slice links a saved route to retained reports without treating prefix matches as proof of physical identity.
Proposed contract: add the existing stable pathKey to known-route responses and expose GET /routes/{iata}/{pathKey}/observations. The route lookup uses the existing (iata,path_key) primary key; route numeric IDs deliberately lost their index in migration024 and should not drive an unbounded lookup.
Return the full saved route, effective time window, exact saved path bytes/hash width, and a bounded page of retained observation references (packet hash, reporter, time and signal). Match the complete byte sequence, width and IATA; exclude TRACE and unclassified legacy observations. A learned route can outlive its raw evidence. Different hash widths and search-result subsegments are not silently combined. Limit defaults50/caps200, window defaults24h/caps30d, and a scoped microsecond+ID cursor pins the window and handles ties without duplicates. No packet/message bodies are added.
Add one compact concurrent observation index, retain full-byte equality after its digest filter, regenerate SQLc/Swagger, and exercise actual PostgreSQL pagination, exclusions, missing/expired data, migration retry and indexed plans. A separate web PR will display the evidence and canonical route selection with packet/observer links in English/French. Keep all current review candidates and rollback in the Pi preview. Upstream #170 and pending #166/#167/#169 are being refreshed first; maintainers retain merge/release control.