code wiki / _hdl_build / nx_print_material_gate.nx

nx_print_material_gate.nx source

↩ module page · 114 lines · 6272 B

1// nx_print_material_gate.nx -- GATE: the multi-material 3D-printing ladder CENSUS (FLAGGED workstream R0). 2// Measured + liar-killed + honest. T1 ladder (7 materials, 3 families), T2 filament SHIPPING verified (a 3// material can't claim SHIPPING unless its toolpath organ EXISTS on disk -- liar-kill), T3 honest counts 4// (filament ships, concrete/metal MODELED/FUTURE), T4 Cardinal-26 never-brick (firmware is SIMmed not flashed), 5// T5 concrete<->R-ECO tie (the cistern is the first concrete-print demand), T6 NO-OVERCLAIM (only FILAMENT 6// ships; PASTE/METAL are never marked SHIPPING). license_tier: ORIGINAL 7import "nx_print_material.nx" 8import "nx_food_science.nx" 9import "nx_seg_store.nx" 10import "nx_syscalls.nx" 11import "nx_gate_verdict.nx" 12 13const MG_PRINT: *u8 = "knowledge/store/print-" 14 15func g_p(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 16func g_i(v: i64) -> i64 { 17 let bb: *u8 = sys_mmap(28); var m: i64 = v 18 if m < 0 { sys_write(1, "-" as *u8, 1); m = 0 - m } 19 let t: *u8 = sys_mmap(28); var k: i64 = 0 20 if m == 0 { t[0] = 48 as u8; k = 1 } 21 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 22 var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } sys_write(1, bb, k); return 0 23} 24 25func main() -> i64 { 26 g_p("=== nx_print_material_gate (multi-material 3D-printing ladder census) ===\n" as *u8) 27 let sw: i64 = pm_seed(MG_PRINT) 28 g_p("materials authored this run=" as *u8); g_i(sw); g_p("\n" as *u8) 29 30 let ids: *i64 = sys_mmap(8 * 32) as *i64 31 let n: i64 = pm_list(MG_PRINT, ids) 32 33 var pass: i64 = 0 34 var tot: i64 = 0 35 36 // T1 ladder: 7 materials across FILAMENT / PASTE / METAL 37 var hasF: i64 = 0; var hasP: i64 = 0; var hasM: i64 = 0 38 var i: i64 = 0 39 while i < n { 40 let fam: *u8 = sys_mmap(24); pm_field_str(MG_PRINT, ids[i] as *u8, 1, fam) 41 if pm_streq(fam, "FILAMENT" as *u8) == 1 { hasF = 1 } 42 if pm_streq(fam, "PASTE" as *u8) == 1 { hasP = 1 } 43 if pm_streq(fam, "METAL" as *u8) == 1 { hasM = 1 } 44 i = i + 1 45 } 46 tot = tot + 1 47 if n == 7 { if hasF + hasP + hasM == 3 { pass = pass + 1; g_p("PASS T1 ladder: 7 materials across FILAMENT + PASTE + METAL\n" as *u8) } else { g_p("FAIL T1 families\n" as *u8) } } else { g_p("FAIL T1 n=" as *u8); g_i(n); g_p("\n" as *u8) } 48 49 // T2 filament SHIPPING verified (liar-kill: organ must exist on disk) 50 var nship: i64 = 0 51 var nverified: i64 = 0 52 i = 0 53 while i < n { 54 if pm_status_is(MG_PRINT, ids[i] as *u8, "SHIPPING" as *u8) == 1 { 55 nship = nship + 1 56 let ev: *u8 = sys_mmap(64); pm_field_str(MG_PRINT, ids[i] as *u8, 7, ev) 57 if pm_organ_exists(ev) == 1 { nverified = nverified + 1 } 58 } 59 i = i + 1 60 } 61 g_p("SHIPPING materials=" as *u8); g_i(nship); g_p(" with a real toolpath organ on disk=" as *u8); g_i(nverified); g_p("\n" as *u8) 62 tot = tot + 1 63 if nship == 3 { if nverified == nship { pass = pass + 1; g_p("PASS T2 filament SHIPPING is REAL (every shipping material's G-code organ exists -- liar-killed)\n" as *u8) } else { g_p("FAIL T2 unverified shipping\n" as *u8) } } else { g_p("FAIL T2 nship=" as *u8); g_i(nship); g_p("\n" as *u8) } 64 65 // T3 honest counts 66 var cs: i64 = 0; var cm: i64 = 0; var cf: i64 = 0 67 i = 0 68 while i < n { 69 if pm_status_is(MG_PRINT, ids[i] as *u8, "SHIPPING" as *u8) == 1 { cs = cs + 1 } 70 if pm_status_is(MG_PRINT, ids[i] as *u8, "MODELED" as *u8) == 1 { cm = cm + 1 } 71 if pm_status_is(MG_PRINT, ids[i] as *u8, "FUTURE" as *u8) == 1 { cf = cf + 1 } 72 i = i + 1 73 } 74 g_p("status: SHIPPING=" as *u8); g_i(cs); g_p(" MODELED=" as *u8); g_i(cm); g_p(" FUTURE=" as *u8); g_i(cf); g_p("\n" as *u8) 75 tot = tot + 1 76 if cs == 3 { if cm == 2 { if cf == 2 { pass = pass + 1; g_p("PASS T3 honest: filament ships, concrete/clay MODELED, metal FUTURE (not overclaimed)\n" as *u8) } else { g_p("FAIL T3 future\n" as *u8) } } else { g_p("FAIL T3 modeled\n" as *u8) } } else { g_p("FAIL T3 shipping\n" as *u8) } 77 78 // T4 Cardinal 26 never-brick: firmware is SIMmed, never flashed 79 tot = tot + 1 80 if pm_organ_exists("nx_printer_fw_sim" as *u8) == 1 { pass = pass + 1; g_p("PASS T4 never-brick (Cardinal 26): printer firmware is SIMmed (nx_printer_fw_sim), registry emits no firmware\n" as *u8) } else { g_p("FAIL T4 fw_sim missing\n" as *u8) } 81 82 // T5 concrete <-> R-ECO tie 83 tot = tot + 1 84 var ok5: i64 = 1 85 if pm_status_is(MG_PRINT, "concrete" as *u8, "MODELED" as *u8) != 1 { ok5 = 0 } 86 let cfam: *u8 = sys_mmap(24); pm_field_str(MG_PRINT, "concrete" as *u8, 1, cfam) 87 if pm_streq(cfam, "PASTE" as *u8) != 1 { ok5 = 0 } 88 if pm_organ_exists("nx_ecodesign" as *u8) != 1 { ok5 = 0 } 89 if ok5 == 1 { pass = pass + 1; g_p("PASS T5 concrete (PASTE, MODELED) ties to R-ECO: the rainwater cistern is the first concrete-print demand\n" as *u8) } else { g_p("FAIL T5\n" as *u8) } 90 91 // T6 NO-OVERCLAIM: only FILAMENT family is ever SHIPPING 92 tot = tot + 1 93 var ok6: i64 = 1 94 i = 0 95 while i < n { 96 if pm_status_is(MG_PRINT, ids[i] as *u8, "SHIPPING" as *u8) == 1 { 97 let fam: *u8 = sys_mmap(24); pm_field_str(MG_PRINT, ids[i] as *u8, 1, fam) 98 if pm_streq(fam, "FILAMENT" as *u8) != 1 { ok6 = 0 } 99 } 100 i = i + 1 101 } 102 if ok6 == 1 { pass = pass + 1; g_p("PASS T6 no-overclaim: concrete/metal are NOT marked SHIPPING (only the real filament pipeline is)\n" as *u8) } else { g_p("FAIL T6 a non-filament claimed SHIPPING\n" as *u8) } 103 104 g_p("nx_print_material_gate pass=" as *u8); g_i(pass); g_p("/" as *u8); g_i(tot) 105 // MIGRATED onto nx_gate_verdict by nx_gate_dry_apply (D001, minimal form): every check 106 // row above is untouched, so the PASS/FAIL vector cannot change; only the hand-rolled 107 // verdict emission is replaced by the ONE shared base class. Proven by nx_gate_migrate verify. 108 let ctr__dry: *i64 = gv_ctr() 109 ctr__dry[0] = pass 110 ctr__dry[1] = tot 111 let rc__dry: i64 = gv_verdict("PRINT-MATERIAL-GATE" as *u8, ctr__dry, "multi-material ladder flagged: filament SHIPPING, concrete/metal the honest growth path, never-brick)" as *u8) 112 sys_exit(rc__dry) 113 return rc__dry 114}