Andrew Pimenov
21b71a4056
icmp_win: bound trace_hops_win to a total timeout budget and stop it blocking process exit
...
subprocess_seconds was being applied per hop instead of as a total trace
budget, so a path with several non-responding hops could block for up to
max_hops * subprocess_seconds. The blocking call also ran on a
ThreadPoolExecutor worker via asyncio.to_thread, which concurrent.futures
joins at process exit - so an orphaned hop stuck past its timeout kept the
whole CLI alive long after diagnose() had already written its report.
Divide the budget across hops (capped at 4s per hop) with an early exit
once the total deadline passes, and dispatch the call on a raw daemon
thread instead so it can never hold the process open even in the worst
case.
2026-08-09 03:33:12 +03:00
Andrew Pimenov
4e4956ceeb
compare: diff identity, latency, speed and findings between two reports
2026-08-09 03:24:03 +03:00
Andrew Pimenov
335ff0975e
cli: typer app, phase pipeline and opt-in tcp-syn trace tier
2026-08-09 03:24:00 +03:00
Andrew Pimenov
e4f9c3b5b7
exporter: explicit placeholders so a failed section never reads as a healthy one
2026-08-09 02:46:53 +03:00
Andrew Pimenov
879b974e57
exporter: markdown rendering with sparklines and hop bars
2026-08-09 02:44:43 +03:00
Andrew Pimenov
71b1fc95e3
exporter: report assembly, strict json and atomic writes
2026-08-09 02:42:22 +03:00
Andrew Pimenov
62040021af
speed: bufferbloat probe running concurrently with saturation
2026-08-09 02:39:24 +03:00
Andrew Pimenov
36b2941667
speed: ookla, cloudflare, fast.com and ndt7 cascade tiers
2026-08-09 02:38:19 +03:00
Andrew Pimenov
5eec7aacab
speed: throughput math, cfL4 header parsing, bufferbloat delta
2026-08-09 02:37:14 +03:00
Andrew Pimenov
0999f85235
dns_leak: per-adapter asn mismatch and ecs leak detection
2026-08-09 02:32:13 +03:00
Andrew Pimenov
b151a934b7
traceroute: mtr to icmp_win to icmplib to system-binary cascade
2026-08-09 02:31:25 +03:00
Andrew Pimenov
4c58f8add8
icmp_win: decode ICMP_ECHO_REPLY buffers for both pointer widths
2026-08-09 02:26:09 +03:00
Andrew Pimenov
c35725a50f
latency: ping summarization and unprivileged backend fan-out
2026-08-09 02:25:04 +03:00
Andrew Pimenov
d7b4c49786
reputation: internetdb, captcha risk and reputation assembly
2026-08-09 02:21:57 +03:00
Andrew Pimenov
30e001dc81
reputation: decode dnsbl 127.255.255.x error range as unavailable
2026-08-09 02:20:30 +03:00
Andrew Pimenov
48f7865987
reputation: firehol netset cache with local range index
2026-08-09 02:19:43 +03:00
Andrew Pimenov
d45fcb5a59
bgp: assemble BgpIntel from every source with per-source failures tolerated
2026-08-09 02:16:59 +03:00
Andrew Pimenov
fee732dd8d
bgp: asrank, team cymru and disk-cached peeringdb parsing
2026-08-09 02:16:05 +03:00
Andrew Pimenov
f269fb95d8
bgp: ripestat parsers and bounded bulk queries
2026-08-09 02:15:07 +03:00
Andrew Pimenov
db055d8a85
ip_geo: field-wise merge, dual-stack comparison, provider fan-out
2026-08-09 02:14:03 +03:00
Andrew Pimenov
858806f014
ip_geo: per-provider normalizers to a common IpGeo shape
2026-08-09 02:12:56 +03:00
Andrew Pimenov
925bf1b910
interpret: bufferbloat grading and overall verdict scoring
2026-08-08 22:10:26 +03:00
Andrew Pimenov
7533f7e5bd
interpret: weighted vpn confidence scoring
2026-08-08 22:08:20 +03:00
Andrew Pimenov
f99de6b7dc
interpret: threshold bands, latency and path findings
2026-08-08 22:07:07 +03:00
Andrew Pimenov
6ebc9ac695
traceparse: os dispatcher and trace completion detection
2026-08-08 22:04:34 +03:00
Andrew Pimenov
e8e55278a7
traceparse: bsd/macos parser with multipath hops and annotations
2026-08-08 22:03:37 +03:00
Andrew Pimenov
61c22b218d
traceparse: windows tracert parser, shape-based and code-page safe
2026-08-08 22:02:38 +03:00
Andrew Pimenov
5e4c9096a6
traceparse: gnu traceroute parser with per-hop stats
2026-08-08 22:01:30 +03:00
Andrew Pimenov
3f85c5083e
stats: rtt loss, mdev and jitter with timeout-safe edge cases
2026-08-08 22:00:00 +03:00
Andrew Pimenov
afc32e4599
netinfo: local interface, gateway, mtu and per-adapter resolvers
2026-08-08 21:56:45 +03:00
Andrew Pimenov
e61790222d
netinfo: attempt-based capability detection and backend choice
2026-08-08 21:54:00 +03:00
Andrew Pimenov
a26a0587c5
orchestration: run_module envelope and exception classification
2026-08-08 21:53:05 +03:00
Andrew Pimenov
ecf570a5b2
config: pydantic-settings loader with env > .env > yaml precedence
2026-08-08 21:38:12 +03:00
Andrew Pimenov
9e6c6c5f77
models: domain shapes for geo, bgp, reputation, probes, speed
2026-08-08 21:33:09 +03:00
Andrew Pimenov
f8f5fbc49c
models: ModuleResult, ProbeError, Finding, Signal envelopes
2026-08-08 21:28:58 +03:00
Andrew Pimenov
de09864eba
project scaffold: uv packaging, config.yaml, package skeleton
2026-08-08 21:12:41 +03:00