code wiki / (root) / nx_plan_svc_test.nx

nx_plan_svc_test.nx source

↩ module page · 237 lines · 11338 B

1// nx_plan_svc_test.nx -- gate for the production-plan facade. Drives the 2// assess verb the way an operator would -- a product concept as one argv -- and 3// proves the plan JSON names the right next gap, action, and (when legally 4// blocked) the offending ingredient. Fourth facade, same base. 5// expect_exit: 0 license_tier: ORIGINAL 6import "nx_syscalls.nx" 7import "nx_service.nx" 8import "nx_supp_ingredient.nx" 9import "nx_prodready.nx" 10import "nx_plan_svc.nx" 11 12func t_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 13func t_putn(v: i64) -> i64 { let bb: *u8 = sys_mmap(28); var m: i64 = v; if m < 0 { m = 0 - m; sys_write(1, "-" as *u8, 1) } let t: *u8 = sys_mmap(28); var k: i64 = 0; if m == 0 { t[0] = 48 as u8; k = 1 } while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } var i: i64 = 0; while i < k { bb[i] = t[k - 1 - i]; i = i + 1 } sys_write(1, bb, k); return 0 } 14 15func j_has(j: *NxJson, needle: *u8) -> i64 { 16 var nn: i64 = 0 17 while needle[nn] != (0 as u8) { nn = nn + 1 } 18 if nn == 0 { return 0 } 19 let b: *u8 = j.buf 20 let last: i64 = j.off - nn 21 var i: i64 = 0 22 var found: i64 = 0 23 while i <= last { 24 if found == 0 { 25 var m: i64 = 0 26 var ok: i64 = 1 27 while m < nn { if b[i + m] != needle[m] { ok = 0 } m = m + 1 } 28 if ok == 1 { found = 1 } 29 } 30 i = i + 1 31 } 32 return found 33} 34 35func numstr(v: i64) -> *u8 { 36 let b: *u8 = sys_mmap(24) 37 var m: i64 = v 38 if m < 0 { m = 0 - m } 39 if m == 0 { b[0] = 48 as u8; b[1] = 0 as u8; return b } 40 let t: *u8 = sys_mmap(24) 41 var k: i64 = 0 42 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 43 var i: i64 = 0 44 while i < k { b[i] = t[k - 1 - i]; i = i + 1 } 45 b[k] = 0 as u8 46 return b 47} 48 49// Full 13-token argv for assess: verb + 11 concept args. 50func mk_assess(mask: i64, market: i64, fmt: i64, retail: i64, margin: i64, servings: i64, maxu: i64, idr: i64, gmp: i64, cl: i64, coa: i64) -> *i64 { 51 let av: *i64 = sys_mmap(128) 52 av[0] = "nx_plan_svc" as i64 53 av[1] = "assess" as i64 54 av[2] = numstr(mask) as i64 55 av[3] = numstr(market) as i64 56 av[4] = numstr(fmt) as i64 57 av[5] = numstr(retail) as i64 58 av[6] = numstr(margin) as i64 59 av[7] = numstr(servings) as i64 60 av[8] = numstr(maxu) as i64 61 av[9] = numstr(idr) as i64 62 av[10] = numstr(gmp) as i64 63 av[11] = numstr(cl) as i64 64 av[12] = numstr(coa) as i64 65 return av 66} 67 68func main() -> i64 { 69 var pass: i64 = 0 70 var total: i64 = 0 71 72 // masks 73 let mask_ready: i64 = (1 << SI_PYCNOGENOL) | (1 << SI_PANAX_GINSENG) 74 let mask_drug: i64 = mask_ready | (1 << SI_OXYTOCIN) 75 76 // --- T1 describe --- 77 total = total + 1 78 let j1: *NxJson = nx_json_new(4096) 79 let av1: *i64 = sys_mmap(64) 80 av1[0] = "nx_plan_svc" as i64 81 av1[1] = "describe" as i64 82 plan_dispatch(2, av1, j1) 83 let d1: i64 = j_has(j1, "\"svc\":\"plan\"" as *u8) 84 let d2: i64 = j_has(j1, "\"readiness_dimensions\":7" as *u8) 85 t_puts("T1 plan describe: svc=" as *u8); t_putn(d1); t_puts(" dims7=" as *u8); t_putn(d2); t_puts(": " as *u8) 86 if d1 == 1 { if d2 == 1 { pass = pass + 1; t_puts("PASS\n" as *u8) } else { t_puts("FAIL\n" as *u8) } } else { t_puts("FAIL\n" as *u8) } 87 88 // --- T2 a fully-prepared powder product: PRODUCTION READY, score 1000 --- 89 total = total + 1 90 let j2: *NxJson = nx_json_new(4096) 91 let av2: *i64 = mk_assess(mask_ready, 0, 2, 3999, 700, 30, 2, 1, 1, 1, 1) 92 plan_dispatch(13, av2, j2) 93 let ready: i64 = j_has(j2, "\"production_ready\":true" as *u8) 94 let score: i64 = j_has(j2, "\"readiness_permil\":1000" as *u8) 95 let nogap: i64 = j_has(j2, "\"next_gap\":-1" as *u8) 96 t_puts("T2 prepared powder: ready=" as *u8); t_putn(ready); t_puts(" score1000=" as *u8); t_putn(score); t_puts(" nogap=" as *u8); t_putn(nogap); t_puts(": " as *u8) 97 var ok2: i64 = 1 98 if ready != 1 { ok2 = 0 } 99 if score != 1 { ok2 = 0 } 100 if nogap != 1 { ok2 = 0 } 101 if ok2 == 1 { pass = pass + 1; t_puts("PASS\n" as *u8) } else { t_puts("FAIL\n" as *u8) } 102 103 // --- T3 THE KILL-ORDER PLAN: a drug ingredient blocks at LEGAL and the 104 // plan NAMES the offender + the action --- 105 total = total + 1 106 let j3: *NxJson = nx_json_new(4096) 107 let av3: *i64 = mk_assess(mask_drug, 0, 2, 3999, 700, 30, 2, 1, 1, 1, 1) 108 plan_dispatch(13, av3, j3) 109 let gap0: i64 = j_has(j3, "\"next_gap\":0" as *u8) 110 let named: i64 = j_has(j3, "\"unlawful_ingredient\":\"Oxytocin\"" as *u8) 111 let action: i64 = j_has(j3, "remove the unlawful ingredient" as *u8) 112 let notready: i64 = j_has(j3, "\"production_ready\":false" as *u8) 113 t_puts("T3 +oxytocin plan: gap0=" as *u8); t_putn(gap0); t_puts(" names-oxytocin=" as *u8); t_putn(named); t_puts(" action=" as *u8); t_putn(action); t_puts(" not-ready=" as *u8); t_putn(notready); t_puts(": " as *u8) 114 var ok3: i64 = 1 115 if gap0 != 1 { ok3 = 0 } 116 if named != 1 { ok3 = 0 } 117 if action != 1 { ok3 = 0 } 118 if notready != 1 { ok3 = 0 } 119 if ok3 == 1 { pass = pass + 1; t_puts("PASS\n" as *u8) } else { t_puts("FAIL\n" as *u8) } 120 121 // --- T4 the reference stack in CAPSULES blocks at FORMAT with the 122 // switch-to-powder action --- 123 total = total + 1 124 let mask_full: i64 = (1 << SI_L_CITRULLINE) | (1 << SI_PYCNOGENOL) | (1 << SI_ASHWAGANDHA) | (1 << SI_MACA) | (1 << SI_TRIBULUS) | (1 << SI_PANAX_GINSENG) | (1 << SI_GINKGO) 125 let j4: *NxJson = nx_json_new(4096) 126 let av4: *i64 = mk_assess(mask_full, 0, 1, 3999, 700, 30, 2, 1, 1, 1, 1) 127 plan_dispatch(13, av4, j4) 128 let gap1: i64 = j_has(j4, "\"next_gap\":1" as *u8) 129 let powder_action: i64 = j_has(j4, "switch to powder" as *u8) 130 t_puts("T4 full stack in capsules: FORMAT gap=" as *u8); t_putn(gap1); t_puts(" powder-action=" as *u8); t_putn(powder_action); t_puts(": " as *u8) 131 if gap1 == 1 { if powder_action == 1 { pass = pass + 1; t_puts("PASS\n" as *u8) } else { t_puts("FAIL\n" as *u8) } } else { t_puts("FAIL\n" as *u8) } 132 133 // --- T5 same full stack as POWDER at a margin it actually clears (600, 134 // since the 7-ingredient powder makes ~666): format+economics pass, 135 // so the gap correctly moves to the first open attestation, IDENTITY. 136 // (At a 700 target it would block at ECONOMICS -- the engine is right, 137 // the 7-stack is a low-margin product.) --- 138 total = total + 1 139 let j5: *NxJson = nx_json_new(4096) 140 let av5: *i64 = mk_assess(mask_full, 0, 2, 3999, 600, 30, 2, 0, 0, 0, 0) 141 plan_dispatch(13, av5, j5) 142 let gap3: i64 = j_has(j5, "\"next_gap\":3" as *u8) 143 let id_action: i64 = j_has(j5, "identity testing" as *u8) 144 let attest4: i64 = j_has(j5, "\"open_attestations\":4" as *u8) 145 let noblock: i64 = j_has(j5, "\"open_computed_blockers\":0" as *u8) 146 t_puts("T5 full powder, no attestations: gap3=" as *u8); t_putn(gap3); t_puts(" id-action=" as *u8); t_putn(id_action); t_puts(" 4-attest=" as *u8); t_putn(attest4); t_puts(" 0-blockers=" as *u8); t_putn(noblock); t_puts(": " as *u8) 147 var ok5: i64 = 1 148 if gap3 != 1 { ok5 = 0 } 149 if id_action != 1 { ok5 = 0 } 150 if attest4 != 1 { ok5 = 0 } 151 if noblock != 1 { ok5 = 0 } 152 if ok5 == 1 { pass = pass + 1; t_puts("PASS\n" as *u8) } else { t_puts("FAIL\n" as *u8) } 153 154 // --- T6 ECONOMICS gap: a too-low price blocks at dimension 2 --- 155 total = total + 1 156 let j6: *NxJson = nx_json_new(4096) 157 let av6: *i64 = mk_assess(mask_ready, 0, 2, 300, 700, 30, 2, 1, 1, 1, 1) 158 plan_dispatch(13, av6, j6) 159 let gap2: i64 = j_has(j6, "\"next_gap\":2" as *u8) 160 let econ_action: i64 = j_has(j6, "raise price" as *u8) 161 t_puts("T6 $3.00 retail: ECONOMICS gap=" as *u8); t_putn(gap2); t_puts(" action=" as *u8); t_putn(econ_action); t_puts(": " as *u8) 162 if gap2 == 1 { if econ_action == 1 { pass = pass + 1; t_puts("PASS\n" as *u8) } else { t_puts("FAIL\n" as *u8) } } else { t_puts("FAIL\n" as *u8) } 163 164 // --- T7 empty mask is a structured 400 --- 165 total = total + 1 166 let j7: *NxJson = nx_json_new(4096) 167 let av7: *i64 = mk_assess(0, 0, 2, 3999, 700, 30, 2, 1, 1, 1, 1) 168 plan_dispatch(13, av7, j7) 169 let e400: i64 = j_has(j7, "\"status\":400" as *u8) 170 t_puts("T7 empty mask -> 400=" as *u8); t_putn(e400); t_puts(": " as *u8) 171 if e400 == 1 { pass = pass + 1; t_puts("PASS\n" as *u8) } else { t_puts("FAIL\n" as *u8) } 172 173 // --- T8 BELARUS/EAEU: same lawful stack, ready given attestations --- 174 total = total + 1 175 let j8: *NxJson = nx_json_new(4096) 176 let av8: *i64 = mk_assess(mask_ready, 1, 2, 3999, 700, 30, 2, 1, 1, 1, 1) 177 plan_dispatch(13, av8, j8) 178 let eaeu_ready: i64 = j_has(j8, "\"production_ready\":true" as *u8) 179 t_puts("T8 EAEU/Belarus prepared: ready=" as *u8); t_putn(eaeu_ready); t_puts(": " as *u8) 180 if eaeu_ready == 1 { pass = pass + 1; t_puts("PASS\n" as *u8) } else { t_puts("FAIL\n" as *u8) } 181 182 // --- T9 unknown verb -> 404 + nonzero exit --- 183 total = total + 1 184 let j9: *NxJson = nx_json_new(4096) 185 let av9: *i64 = sys_mmap(64) 186 av9[0] = "nx_plan_svc" as i64 187 av9[1] = "bogus" as i64 188 let rc9: i64 = plan_dispatch(2, av9, j9) 189 let e404: i64 = j_has(j9, "\"status\":404" as *u8) 190 t_puts("T9 unknown verb rc=" as *u8); t_putn(rc9); t_puts(" 404=" as *u8); t_putn(e404); t_puts(": " as *u8) 191 if rc9 != 0 { if e404 == 1 { pass = pass + 1; t_puts("PASS\n" as *u8) } else { t_puts("FAIL\n" as *u8) } } else { t_puts("FAIL\n" as *u8) } 192 193 // --- T10 WORKFLOW: the readiness score climbs monotonically as each 194 // attestation is closed -- a progress bar toward market --- 195 total = total + 1 196 var flags: i64 = 0 197 var prev: i64 = 0 - 1 198 var ok10: i64 = 1 199 var step: i64 = 0 200 while step <= 4 { 201 let idr: i64 = 0 202 let gmp: i64 = 0 203 let cl: i64 = 0 204 let coa: i64 = 0 205 var a: i64 = 0 206 var b: i64 = 0 207 var c: i64 = 0 208 var d: i64 = 0 209 if step >= 1 { a = 1 } 210 if step >= 2 { b = 1 } 211 if step >= 3 { c = 1 } 212 if step >= 4 { d = 1 } 213 let jx: *NxJson = nx_json_new(4096) 214 let avx: *i64 = mk_assess(mask_ready, 0, 2, 3999, 700, 30, 2, a, b, c, d) 215 plan_dispatch(13, avx, jx) 216 // read readiness by counting: 3 computed always pass here, +step attestations 217 let want: i64 = (3 + step) * 1000 / 7 218 let wbuf: *u8 = numstr(want) 219 let key: *u8 = sys_mmap(64) 220 var ki: i64 = 0 221 let pfx: *u8 = "\"readiness_permil\":" as *u8 222 while pfx[ki] != (0 as u8) { key[ki] = pfx[ki]; ki = ki + 1 } 223 var wi: i64 = 0 224 while wbuf[wi] != (0 as u8) { key[ki] = wbuf[wi]; ki = ki + 1; wi = wi + 1 } 225 key[ki] = 0 as u8 226 if j_has(jx, key) != 1 { ok10 = 0 } 227 if want < prev { ok10 = 0 } 228 prev = want 229 step = step + 1 230 } 231 t_puts("T10 readiness climbs monotonically as attestations close: " as *u8) 232 if ok10 == 1 { pass = pass + 1; t_puts("PASS\n" as *u8) } else { t_puts("FAIL\n" as *u8) } 233 234 t_puts("PLAN-SVC-GATE passed " as *u8); t_putn(pass); t_puts("/" as *u8); t_putn(total) 235 if pass == total { t_puts(" verdict=GREEN\n" as *u8); sys_exit(0); return 0 } 236 t_puts(" verdict=RED\n" as *u8); sys_exit(1); return 1 237}