nx_netprobe_ladder.nx
buildroot/runtime/nx_netprobe_ladder.nx
about
nx_netprobe_ladder.nx -- THE DISCRIMINATING EXPERIMENT for the shared TCP liveness probe.
THE SITUATION, measured 2026-09-05: nx_gen's dispatch selector and nx_swarm_heal BOTH report the
laptop image worker DOWN, while nx_worker_dispatch gets HTTP 200 from GET /v1/models at the SAME
address. That looks like two witnesses against one -- it is not. nx_netprobe_lib's own header states
both callers were consolidated onto np_probe_up, so the two DOWN verdicts are ONE WITNESS COUNTED
TWICE, and they share whatever blind spot it has.
WHAT THIS VARIES AND WHAT IT HOLDS FIXED: the address is FIXED, only timeout_ms varies. A flip from
DOWN to UP as the bound grows names the timeout as the cause; NO flip refutes the timeout hypothesis
and points at the probe's mechanism instead. Running the experiment that can REFUTE the theory,
before any fix is written, is the whole point -- a plausible cause confirmed by nothing is how this
estate has burned entire sessions.
The .193 line is a CONTROL, not a target: nx_swarm_heal calls that endpoint FRESH, so if the ladder
reports it DOWN at every bound then the probe is broken for every host and the subject is exonerated.
license_tier: ORIGINAL No hw writes (Rule 26).
dependencies 2 imports · 0 importers
imports: nx_syscalls.nxnx_netprobe_lib.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| 21 | const NL_PORT: i64 = 7861 |
functions
| 23 | func nl_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } called by 1: nl_puts |
| 24 | func nl_puts(s: *u8) -> i64 { sys_write(1, s, nl_slen(s)); return 0 } |
| 25 | func nl_putn(v: i64) -> i64 |
| 38 | func nl_rung(ha: i64, hb: i64, hc: i64, hd: i64, port: i64, tmo: i64) -> i64 |
| 48 | func main(argc: i64, argv: *i64) -> i64 |