nx_sitesweep_gate.nx
buildroot/runtime/nx_sitesweep_gate.nx
about
nx_sitesweep_gate.nx -- the referee for the site-wide broken-asset sweep.
WHAT IT CAN AND CANNOT PROVE, STATED UP FRONT. nx_sitesweep adds exactly TWO pieces of judgement to
nx_page_verify: the ref PREFILTER (which pages can be proven ref-free without a fetch) and the RULER
VERDICT PARSER (how nx_page_verify's output is read). Everything else about a page is the ruler's
judgement, already refereed by nx_page_verify_gate. So this gate bites those two, and it bites them
IN PROCESS by importing nx_sitesweep_lib -- the same copy the sweep ships. There is no second
implementation for the teeth to agree with.
The in-process teeth need no fork and no network, so they run in milliseconds and are safe on the
fast gate roster. The END-TO-END cell is a different cost class: it forks the deployed sweep against
six live pages and takes minutes. It is therefore OPT-IN (e2e=1) and, when it does not run, the gate
SAYS SO IN A NAMED LINE rather than silently counting one fewer tooth. A skipped cell that announces
itself is a fact; a skipped cell that does not is a false sense of coverage.
FIXTURES. The bite cells read two PERMANENT PUBLISHED negative controls that exist for exactly this
purpose -- sites/nishifamily/render3d/negctl_bare.html (unquoted src=, the form the ruler was blind to
until 2026-08-25) and negctl_sq.html (single-quoted src=, the form it was blind to until 2026-08-18).
They are read ONLY, never written, so this gate shares no scratch with any production beat; the
fixture-ratchet law is about a gate WRITING where a beat writes, and there is no write here at all.
Synthetic fixtures are built in memory at RUNTIME, byte by byte, so no detector that scans source can
mistake a gate fixture for a real occurrence, and no literal newline inside a string is required.
usage: nx_sitesweep_gate [e2e=1]
license_tier: ORIGINAL
dependencies 4 imports · 0 importers
imports: nx_syscalls.nxnx_gate_verdict.nxnx_sitesweep_lib.nxnx_tool_run.nx
imported by: nobody (leaf or entry point)
structs
| none |
consts
| 31 | const SG_NAME: *u8 = "nx_sitesweep_gate" |
| 32 | const SG_FIX_BARE: *u8 = "sites/nishifamily/render3d/negctl_bare.html" |
| 33 | const SG_FIX_SQ: *u8 = "sites/nishifamily/render3d/negctl_sq.html" |
| 34 | const SG_SWEEP_ELF: *u8 = "nx_sitesweep.elf" |
| 35 | const SG_DOCROOT: *u8 = "sites/nishifamily" |
| 36 | const SG_ORIGIN: *u8 = "https://nishifamily.com" |
| 38 | const SG_BUF: i64 = 65536 |
| 39 | const SG_E2E_BUF: i64 = 1048576 |
| 43 | const SG_E2E_TMO_MS: i64 = 300000 |
| 44 | const SG_ARGVN: i64 = 32 |
| 48 | const SG_URL_BARE: *u8 = "/render3d/negctl_bare" |
| 49 | const SG_URL_SQ: *u8 = "/render3d/negctl_sq" |
| 50 | const SG_URL_GOOD: *u8 = "/render3d/negctl_noviewport" |
functions
| 52 | func sgw(s: *u8) -> i64 { sys_write(1, s, ss_len(s)); return 0 } |
| 57 | func sg_tail(buf: *u8, summary: *u8, verdict: *u8) -> i64 |
| 69 | func main(argc: i64, argv: *i64) -> i64 |