code wiki / (root) / nx_ppp_probe_gate.nx

nx_ppp_probe_gate.nx

buildroot/runtime/nx_ppp_probe_gate.nx

7233 B126 linesdepth 5pulls 6 transitivereach 0 importersview sourcekind gate/proof
docsdependenciesstructsconstsfunctions

about

nx_ppp_probe_gate.nx -- THE VERDICT nx_ppp_probe COULD NOT PUBLISH (2026-08-25). nx_ppp_probe scores PERSON / PRODUCT / PLACE on our own live surface AND on each rival's front door, and those numbers are PUBLISHED as competitive claims on /compare. It shipped with a 20-tooth internal --kat and NO external gate, so /api/gate_run could not read its verdict and no roster ever ran it: a published metric whose health nobody could ask about from outside. WHY IT NEEDED ONE, measured 2026-08-25: the probe scored viewport=0 on /games, a page that CORRECTLY emits its mobile-scaling declaration in SINGLE quotes. It matched the double-quoted and the bare forms and not the single-quoted one, so a PUBLISHED place score was understated by 50 permil. The defect carried its own control in the same measurement -- on that identical page `canonical` read 1, because THAT check had been hand-written with all three quote forms. A FIX APPLIED IN ONE PLACE AND NOT ITS SIBLINGS IS HALF A FIX, AND THE HALF LEFT UNDONE IS THE ONE THAT SHIPS. SCOPE, DECLARED: this gate FORKS the deployed elf, so it is END-TO-END. It proves the subject's own self-test still RUNS, has not SHRUNK, and still DISCRIMINATES on live pages. It does NOT re-derive the scoring -- the subject's --kat owns that, and duplicating it here would be a second ruler. SUBSTITUTABLE: argv[1] overrides the subject, so nx_gate_bite can hand it a freshly built mutant. license_tier: ORIGINAL No hw writes (Rule 26).

dependencies 3 imports · 0 importers

nx_syscalls.nx nx_gate_verdict.nx nx_tool_run.nx nx_ppp_probe_gate.nx

imports: nx_syscalls.nxnx_gate_verdict.nxnx_tool_run.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main gv_ctr sys_mmap nxa_die sys_write sys_exit nxa_lock_take nxa_lock_addr sys_write ↻ nxa_lock_give nxa_lock_addr ↻ nxa_report_overrun sys_write ↻ nxa_dump_printable sys_write ↻ nxa_dump_sizes sys_write ↻ gv_head gv_puts sys_write ↻ sys_mmap ↻ pg_run sys_mmap ↻ tr_run_capture sys_mmap ↻ sys_pipe2 sys_fork sys_close sys_dup3 sys_execve_clean sys_close_inherited sys_close_inherited_proc sys_openat_rd sys_mmap ↻ sys_getdents64 dirent_reclen sys_close ↻ sys_munmap sys_execve tr_exec_failed

structs

none

consts

24const PG_SUBJECT_DEFAULT: *u8 = "nx_ppp_probe.elf"
28const PG_CAP: i64 = 262144
32const PG_KAT_MIN_TEETH: i64 = 20
33const PG_URL_GOOD: *u8 = "https://nishifamily.com/games"
34const PG_URL_NOVP: *u8 = "https://nishifamily.com/render3d/negctl_noviewport.html"
35const PG_CONNECT: *u8 = "127.0.0.1:8443"
36const PG_NL: i64 = 10
37const PG_SP: i64 = 32
38const PG_TCH: i64 = 84
39const PG_ARGV_SLOTS: i64 = 8

functions

41func pg_len(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
called by 2: pg_haspg_count_teeth calls 1: pg_len
42func pg_count(buf: *u8, n: i64, pat: *u8) -> i64
55func pg_has(buf: *u8, n: i64, pat: *u8) -> i64 { if pg_count(buf, n, pat) > 0 { return 1 } return 0 }
58func pg_count_teeth(buf: *u8, n: i64) -> i64
63func pg_run(subject: *u8, a1: *u8, a2: *u8, a3: *u8, out: *u8, olen: *i64) -> i64
79func main(argc: i64, argv: *i64) -> i64