code wiki / _hdl_build / nx_model_get_gate.nx

nx_model_get_gate.nx source

↩ module page · 108 lines · 5423 B

1// nx_model_get_gate.nx -- GATE for the offline decision half of G9 mg_fetch (nx_model_get_lib). The network half 2// (nx_https_fetch_range windows + streaming sha256 + wp_ verify) is composed from already-gated incumbents 3// (nx_weights_pull_gate proves the fail-closed verify; the fetch stack carries its own gates); what THIS gate 4// proves is every decision nx_model_get makes around them: hash admission, dest-name admission (path escape), 5// Content-Range/Content-Length parsing, and conf parsing. In-process over the lib. Planted-bad + neg-controls 6// per tooth. license_tier: ORIGINAL expect_exit: 0 7import "nx_syscalls.nx" 8import "nx_gate_verdict.nx" 9import "nx_model_get_lib.nx" 10 11func main() -> i64 { 12 gv_head("=== nx_model_get_gate: G9 decision logic -- hash admission, dest escape refusal, range/length/conf parsing ===" as *u8) 13 let ctr: *i64 = gv_ctr() 14 15 // ---- mg_hex_norm ---- 16 let hx: *u8 = sys_mmap(80) 17 let okhex: i64 = mg_hex_norm("BA7816BF8F01CFEA414140DE5DAE2223B00361A396177A9CB410FF61F20015AD" as *u8, hx) 18 var t1: i64=0 19 if okhex==1 { if hx[0]==(98 as u8) { t1=1 } } // normalized lowercase, first char 'b' 20 gv_check("hex-norm-accepts-64-hex-and-lowercases" as *u8, t1, ctr) 21 let hx2: *u8 = sys_mmap(80) 22 var b_short: i64=0 23 if mg_hex_norm("ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015a" as *u8, hx2)==0 { b_short=1 } 24 var g_fired: i64=0 25 if okhex==0 { g_fired=1 } 26 gv_bite("neg-control-63-hex-refused" as *u8, b_short, g_fired, ctr) 27 var b_nonhex: i64=0 28 if mg_hex_norm("ga7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad" as *u8, hx2)==0 { b_nonhex=1 } 29 gv_bite("neg-control-nonhex-refused" as *u8, b_nonhex, g_fired, ctr) 30 31 // ---- mg_dest_ok: path-escape admission ---- 32 var t_good: i64=0 33 if mg_dest_ok("diffusion/z_image_turbo-Q8_0.gguf" as *u8)==1 { t_good=1 } 34 gv_check("dest-accepts-relative-subdir-name" as *u8, t_good, ctr) 35 var good_refused: i64=0 36 if t_good==0 { good_refused=1 } 37 var b_dotdot: i64=0 38 if mg_dest_ok("../etc/passwd" as *u8)==0 { b_dotdot=1 } 39 gv_bite("neg-control-dotdot-escape-refused" as *u8, b_dotdot, good_refused, ctr) 40 var b_abs: i64=0 41 if mg_dest_ok("/volume1/anything" as *u8)==0 { b_abs=1 } 42 gv_bite("neg-control-absolute-name-refused" as *u8, b_abs, good_refused, ctr) 43 let bsname: *u8 = sys_mmap(8) 44 bsname[0]=97 as u8 45 bsname[1]=92 as u8 46 bsname[2]=98 as u8 47 bsname[3]=0 as u8 48 var b_bs: i64=0 49 if mg_dest_ok(bsname)==0 { b_bs=1 } 50 gv_bite("neg-control-backslash-refused" as *u8, b_bs, good_refused, ctr) 51 var b_empty: i64=0 52 if mg_dest_ok("" as *u8)==0 { b_empty=1 } 53 gv_bite("neg-control-empty-name-refused" as *u8, b_empty, good_refused, ctr) 54 55 // ---- mg_join ---- 56 let jout: *u8 = sys_mmap(4096) 57 mg_join("/volume1/ai/models" as *u8, "loras/x.safetensors" as *u8, jout) 58 var t_join: i64=0 59 if mg_find_ci(jout, mg_slen(jout), "/volume1/ai/models/loras/x.safetensors" as *u8)==0 { t_join=1 } 60 gv_check("join-inserts-exactly-one-slash" as *u8, t_join, ctr) 61 62 // ---- Content-Range total ---- 63 let h206: *u8 = "HTTP/1.1 206 Partial Content\r\nServer: x\r\nContent-Range: bytes 0-0/7123456789\r\nContent-Length: 1\r\n\r\n" as *u8 64 let tot: i64 = mg_content_range_total(h206, mg_slen(h206)) 65 gv_puts(" parsed content-range total=" as *u8) 66 gv_num(tot) 67 gv_puts("\n" as *u8) 68 var t_cr: i64=0 69 if tot==7123456789 { t_cr=1 } 70 gv_check("content-range-total-parsed-exactly" as *u8, t_cr, ctr) 71 let h200: *u8 = "HTTP/1.1 200 OK\r\nContent-Length: 12345\r\n\r\n" as *u8 72 var b_nocr: i64=0 73 if mg_content_range_total(h200, mg_slen(h200))==(0-1) { b_nocr=1 } 74 var cr_on_206_missed: i64=0 75 if t_cr==0 { cr_on_206_missed=1 } 76 gv_bite("neg-control-absent-content-range-is-minus-1" as *u8, b_nocr, cr_on_206_missed, ctr) 77 78 // ---- Content-Length ---- 79 let cl: i64 = mg_content_length(h200, mg_slen(h200)) 80 var t_cl: i64=0 81 if cl==12345 { t_cl=1 } 82 gv_check("content-length-parsed-exactly" as *u8, t_cl, ctr) 83 let hnone: *u8 = "HTTP/1.1 200 OK\r\nX-Content-Length: 99\r\n\r\n" as *u8 84 var t_noline: i64=0 85 if mg_content_length(hnone, mg_slen(hnone))==(0-1) { t_noline=1 } 86 gv_check("neg-control-x-content-length-not-matched-off-line-start" as *u8, t_noline, ctr) 87 88 // ---- conf parsing ---- 89 let conf: *u8 = "key=other\nroot=/volume1/ai/models\nwindow_bytes=8388608\n" as *u8 90 let vout: *u8 = sys_mmap(256) 91 let rl: i64 = mg_conf_val(conf, mg_slen(conf), "root" as *u8, vout, 256) 92 var t_root: i64=0 93 if rl>0 { if mg_find_ci(vout, rl, "/volume1/ai/models" as *u8)==0 { t_root=1 } } 94 gv_check("conf-root-parsed" as *u8, t_root, ctr) 95 let wout: *u8 = sys_mmap(256) 96 let wl: i64 = mg_conf_val(conf, mg_slen(conf), "window_bytes" as *u8, wout, 256) 97 var t_w: i64=0 98 if wl>0 { if mg_parse_uint(wout, wl, 0)==8388608 { t_w=1 } } 99 gv_check("conf-window-parsed-to-8388608" as *u8, t_w, ctr) 100 let mout: *u8 = sys_mmap(256) 101 var t_missing: i64=0 102 if mg_conf_val(conf, mg_slen(conf), "absent_key" as *u8, mout, 256)==0 { t_missing=1 } 103 gv_check("conf-missing-key-returns-0-not-a-guess" as *u8, t_missing, ctr) 104 105 let rc: i64 = gv_verdict("nx_model_get_gate" as *u8, ctr, "decision half proven offline; the network half composes gated incumbents" as *u8) 106 sys_exit(rc) 107 return rc 108}