mirror of
https://github.com/Horizontal42/netsleuth.git
synced 2026-11-10 15:42:10 +03:00
watch.py never imported interpret and had no notion of a verdict at all - summarize_cycle() now runs the same latency_findings/speed_findings/ overall_verdict pipeline the one-shot report uses, so every tick carries status/score/finding_ids and the dashboard caption shows a verdict line. Real improvement on its own, independent of whether a webhook exists. New alerting.py carries the whole notification contract as pure functions: should_fire() only fires on an actual transition, into a state the user opted into via watch.webhook_on, debounced by watch.webhook_min_interval_seconds (floored at 30 in a validator) so a flapping link can't spam an endpoint every tick. Recovery is its own opt-in "recovered" token, separate from configuring "crit", since wanting outage alerts doesn't imply wanting a second ping when they clear. build_payload() is flat JSON, not shaped for Slack/Discord - that's the receiver's problem. post_webhook() swallows every failure and returns a bool; a dead endpoint must never interrupt the loop watching it. New --webhook URL flag overrides watch.webhook_url per run. Verified the tick sequence end-to-end outside the Rich Live loop - sending real OS signals to test --watch's Ctrl-C handling in this shell wasn't reliable, so exercised should_fire/build_payload/render_dashboard/ to_report in the same order run_watch calls them. Part of plans/zesty-zooming-wilkinson.md (gitignored). |
||
|---|---|---|
| .. | ||
| fixtures | ||
| conftest.py | ||
| test_alerting.py | ||
| test_bgp.py | ||
| test_bgp_path.py | ||
| test_captive_portal.py | ||
| test_cgnat_nat64.py | ||
| test_cli_formats.py | ||
| test_compare.py | ||
| test_config.py | ||
| test_dns_advanced.py | ||
| test_dns_leak.py | ||
| test_dnsbl_decode.py | ||
| test_dpi_check.py | ||
| test_exporter.py | ||
| test_exporter_l7.py | ||
| test_history.py | ||
| test_hop_asn.py | ||
| test_icmp_win_parse.py | ||
| test_icmp_win_trace.py | ||
| test_iface.py | ||
| test_interpret.py | ||
| test_interpret_l7.py | ||
| test_ip_geo_normalize.py | ||
| test_metrics.py | ||
| test_models.py | ||
| test_netinfo.py | ||
| test_orchestration.py | ||
| test_prefix_benchmark.py | ||
| test_prober_stats.py | ||
| test_reputation.py | ||
| test_speed_cloudflare.py | ||
| test_speed_fastcom.py | ||
| test_speed_math.py | ||
| test_stats.py | ||
| test_tls_rtt.py | ||
| test_traceparse.py | ||
| test_traceroute_cascade.py | ||
| test_trend.py | ||
| test_watch.py | ||