nx_browser_gate.nx
buildroot/runtime/nx_browser_gate.nx
about
nx_browser_gate.nx -- THE BROWSER GATE: one command re-proves the
Nishi browser claim set, evidence-driven + durable.
Data-driven row table (add a row = add a table entry). Each row
names a runtime/<module>.nx; the gate compiles it with the NATIVE
browser-lane compiler (_offc/nx_compile_x86_native.elf), assembles
+ links, runs the ELF, and judges via the RAW wait4 status (the
sovereign exit-judging law -- never $? through a shell).
Rows (the browser claim set, 2026-06-10):
arg7-tailcall compiler regression gate: >6-arg tail-call drop
(the defect that zeroed every TLS Derive-Secret)
tls-kdf RFC 8448 Derive-Secret KATs
tls-schedule TLS 1.3 key-schedule KATs
jpeg-ascii deterministic synthetic-JPEG decode + raster
page-demo live HTTP fetch + html_to_text (example.com:80)
own-site-live LIVE sovereign HTTPS fetch of nishifamily.com
(TLS 1.3 + real Mozilla CA chain validation)
render-own paints the FETCHED page's text -> framebuffer
(consumes own-site-live's /tmp/nishi_own.html)
recv-hs-probe B1 rung: full encrypted-handshake walk vs
example.com (per-record/per-message markers,
cert-pipeline verdict + chain sig-alg census);
exit 0 = handshake to WAIT_CLIENT_FIN
p256-keyshare B4 rung: P-256 ECDH (RFC 5903 KAT both
directions, boundary rejects) + dual key_share
wire format (x25519 + secp256r1 in one CH)
derefcast compiler regression gate: `*p as T` precedence
(pre-fix: cast bound inside the deref -> byte-
load of the pointer cell -> SIGSEGV; fixed in
parse_unary 2026-06-10)
p256-loopback B4 server side: OUR server completes a P-256-only
client (no HRR), both roles derive byte-identical
traffic secrets, off-curve share rejected (the
nishifamily P-256 gap, healed + loopback-proven)
ch-compat B2 rung, two live legs: httpbin.org census
(TLS-1.2-only signature classified -- the CH
was never the defect; auto-escalates to a full
handshake if they enable 1.3) + github.com
P-256-only CH walked to verified server
dependencies 2 imports · 0 importers
imports: nx_syscalls.nxnx_gate_verdict.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
| 55 | const BG_ROWS: i64 = 12 |
functions
| 57 | func bg_puts(s: *u8) -> i64 calls 1: sys_write |
| 64 | func bg_fputs(fd: i64, s: *u8) -> i64 |
| 71 | func bg_fputn(fd: i64, v: i64) -> i64 |
| 85 | func bg_putn(v: i64) -> i64 { bg_fputn(1, v); return 0 } |
| 87 | func bg_cat(dst: *u8, off: i64, s: *u8) -> i64 called by 1: bg_build |
| 94 | func bg_run(path: *u8, argv: *i64, envp: *i64, redir_out: i64, redir_err: i64) -> i64 |
| 109 | func bg_build(mod: *u8, envp: *i64, devnull: i64) -> i64 |
| 146 | func bg_report(logfd: i64, name: *u8, build_rc: i64, exit_code: i64, sig: i64, pass: i64) -> i64 |
| 181 | func bg_stage_certdata() -> i64 |
| 199 | func main() -> i64 |