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}