code wiki / _hdl_build / nx_product_score.nx

nx_product_score.nx source

↩ module page · 167 lines · 11978 B

1// nx_product_score.nx -- dmkt lane (atlas-product arc). The DECISION layer the design-to-market model was 2// missing: an HONEST product-viability scorecard. Reads the sibling foundation (dmktneeds- needs plane + 3// dmktcap- capability plane), matches each need to a fulfilling LIVE capability (need-id substring in a 4// cap's keyword note, cap status=LIVE = the same fulfilment edge nx_product_atlas_build uses), and emits a 5// per-need coverage + a GO/NO-GO-class verdict. ★NO FAKE NUMBERS (operator law): a need covered by a 6// *_research_fetch cap is DATA-PENDING (the fetch must RUN for real demand/cost figures) -- reported as 7// PENDING, never as a fabricated GO. Composition: fork-captures nx_store_put.elf load (no schema drift). 8// READ-ONLY; scorecard to stdout + atomic knowledge/status/product_score.out. 9// nx_product_score [needs-prefix] [caps-prefix] 10// ENVELOPE: 64 needs, 64 caps, declared. exit: 0 | 4 planes-unreadable | 2 usage-ok(defaults). 11// license_tier: ORIGINAL expect_exit: 0 12import "nx_tool_run.nx" 13const K_MAGIC_60000: i64 = 60000 14const K_MAGIC_131072: i64 = 131072 15const K_MAGIC_65536: i64 = 65536 16 17func pc_b(rep: *u8, pos: i64, s: *u8) -> i64 { var p: i64 = pos; var i: i64 = 0; while s[i] != (0 as u8) { if p < K_MAGIC_60000 { rep[p] = s[i]; p = p + 1 } i = i + 1 } return p } 18func pc_bn(rep: *u8, pos: i64, v: i64) -> i64 { var p: i64 = pos; var m: i64 = v; if m < 0 { if p < K_MAGIC_60000 { rep[p] = 45 as u8; p = p + 1 } m = 0 - m } 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 { if p < K_MAGIC_60000 { rep[p] = t[k - 1 - i]; p = p + 1 } i = i + 1 } return p } 19func pc_q(rep: *u8, pos: i64) -> i64 { var p: i64 = pos; if p < K_MAGIC_60000 { rep[p] = 34 as u8; p = p + 1 } return p } 20func pc_je(rep: *u8, pos: i64, src: *u8, s: i64, e: i64) -> i64 { 21 var p: i64 = pos; var i: i64 = s 22 while i < e { let c: i64 = src[i]; if c == 34 { if p < K_MAGIC_60000 { rep[p] = 92 as u8; p = p + 1 } if p < K_MAGIC_60000 { rep[p] = 34 as u8; p = p + 1 } } else { if c == 92 { if p < K_MAGIC_60000 { rep[p] = 92 as u8; p = p + 1 } if p < K_MAGIC_60000 { rep[p] = 92 as u8; p = p + 1 } } else { if c < 32 { if p < K_MAGIC_60000 { rep[p] = 32 as u8; p = p + 1 } } else { if p < K_MAGIC_60000 { rep[p] = c as u8; p = p + 1 } } } } i = i + 1 } 23 return p 24} 25func pc_load(prefix: *u8, out: *u8, cap: i64) -> i64 { 26 let SP: *u8 = "/volume1/homes/elderwesto/nishihost/nx_store_put.elf" as *u8 27 let av: *i64 = sys_mmap(16 * 8) as *i64 28 av[0] = SP as i64; av[1] = prefix as i64; av[2] = "load" as *u8 as i64; av[3] = 0 29 let olen: *i64 = sys_mmap(16) as *i64 30 let rc: i64 = tr_run_capture(SP, av, out, cap, olen) 31 if rc == 127 { return 0 - 1 } 32 return olen[0] 33} 34// field [idx] of row [ls,le): returns fstart, writes fend to feo[0] 35func pc_field(buf: *u8, ls: i64, le: i64, idx: i64, feo: *i64) -> i64 { 36 var f: i64 = 0 37 var s: i64 = ls 38 var i: i64 = ls 39 while i <= le { 40 var isend: i64 = 0 41 if i == le { isend = 1 } else { if buf[i] == (9 as u8) { isend = 1 } } 42 if isend == 1 { if f == idx { feo[0] = i; return s } f = f + 1; s = i + 1 } 43 i = i + 1 44 } 45 feo[0] = le 46 return le 47} 48// is [na,nb) of a present as substring in [cs,ce) of c? 49func pc_sub(a: *u8, na: i64, nb: i64, c: *u8, cs: i64, ce: i64) -> i64 { 50 let pl: i64 = nb - na 51 if pl < 3 { return 0 } 52 var i: i64 = cs 53 while i + pl <= ce { 54 var k: i64 = 0; var m: i64 = 1 55 while k < pl { if c[i + k] != a[na + k] { m = 0; k = pl } else { k = k + 1 } } 56 if m == 1 { return 1 } 57 i = i + 1 58 } 59 return 0 60} 61func pc_islive(buf: *u8, s: i64, e: i64) -> i64 { if e - s < 4 { return 0 } if buf[s] == (76 as u8) { if buf[s+1] == (73 as u8) { if buf[s+2] == (86 as u8) { if buf[s+3] == (69 as u8) { return 1 } } } } return 0 } 62// does [s,e) of buf contain 'fetch'? 63func pc_isfetch(buf: *u8, s: i64, e: i64) -> i64 { 64 var i: i64 = s 65 while i + 5 <= e { if buf[i] == (102 as u8) { if buf[i+1] == (101 as u8) { if buf[i+2] == (116 as u8) { if buf[i+3] == (99 as u8) { if buf[i+4] == (104 as u8) { return 1 } } } } } i = i + 1 } 66 return 0 67} 68func main(argc: i64, argv: *i64) -> i64 { 69 var needsp: *u8 = "knowledge/store/dmktneeds-" as *u8 70 var capsp: *u8 = "knowledge/store/dmktcap-" as *u8 71 if argc >= 2 { needsp = argv[1] as *u8 } 72 if argc >= 3 { capsp = argv[2] as *u8 } 73 let cap: i64 = K_MAGIC_131072 74 let nbuf: *u8 = sys_mmap(cap + 16) 75 let cbuf: *u8 = sys_mmap(cap + 16) 76 let nn: i64 = pc_load(needsp, nbuf, cap) 77 let cn: i64 = pc_load(capsp, cbuf, cap) 78 if nn < 0 { sys_write(1, "PRODUCT-SCORE verdict=PLANES-UNREADABLE needs\n" as *u8, 45); sys_exit(4); return 4 } 79 if cn < 0 { sys_write(1, "PRODUCT-SCORE verdict=PLANES-UNREADABLE caps\n" as *u8, 44); sys_exit(4); return 4 } 80 // index cap rows 81 let cls: *i64 = sys_mmap(64 * 8) as *i64 82 let cle: *i64 = sys_mmap(64 * 8) as *i64 83 var ncap: i64 = 0 84 var i: i64 = 0 85 var s: i64 = 0 86 while i <= cn { var isend: i64 = 0; if i == cn { isend = 1 } else { if cbuf[i] == (10 as u8) { isend = 1 } } if isend == 1 { if i > s { if ncap < 64 { cls[ncap] = s; cle[ncap] = i; ncap = ncap + 1 } } s = i + 1 } i = i + 1 } 87 let rep: *u8 = sys_mmap(K_MAGIC_65536) 88 let feo: *i64 = sys_mmap(16) as *i64 89 var p: i64 = 0 90 p = pc_b(rep, p, "{" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, "v" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":1," as *u8) 91 p = pc_q(rep, p); p = pc_b(rep, p, "kind" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, "product_viability" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, "," as *u8) 92 p = pc_q(rep, p); p = pc_b(rep, p, "source" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, "dmktneeds- x dmktcap- (need-id-in-cap-note && cap=LIVE)" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, "," as *u8) 93 p = pc_q(rep, p); p = pc_b(rep, p, "needs" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":[" as *u8) 94 var total: i64 = 0 95 var covered: i64 = 0 96 var design_ready: i64 = 0 97 var data_pending: i64 = 0 98 var first: i64 = 1 99 // iterate need rows 100 var ni: i64 = 0 101 var ns: i64 = 0 102 while ni <= nn { 103 var isend: i64 = 0 104 if ni == nn { isend = 1 } else { if nbuf[ni] == (10 as u8) { isend = 1 } } 105 if isend == 1 { 106 if ni > ns { 107 total = total + 1 108 let nid_s: i64 = pc_field(nbuf, ns, ni, 0, feo); let nid_e: i64 = feo[0] 109 // find a LIVE cap whose note (field6) contains this need-id 110 var cover: i64 = 0 111 var matchcap_s: i64 = 0 112 var matchcap_e: i64 = 0 113 var isfetch: i64 = 0 114 var k: i64 = 0 115 while k < ncap { 116 let cst_s: i64 = pc_field(cbuf, cls[k], cle[k], 3, feo); let cst_e: i64 = feo[0] 117 if pc_islive(cbuf, cst_s, cst_e) == 1 { 118 let cnote_s: i64 = pc_field(cbuf, cls[k], cle[k], 6, feo); let cnote_e: i64 = feo[0] 119 if pc_sub(nbuf, nid_s, nid_e, cbuf, cnote_s, cnote_e) == 1 { 120 cover = 1 121 let cid_s: i64 = pc_field(cbuf, cls[k], cle[k], 0, feo); let cid_e: i64 = feo[0] 122 matchcap_s = cid_s; matchcap_e = cid_e 123 if pc_isfetch(cbuf, cid_s, cid_e) == 1 { isfetch = 1 } 124 k = ncap 125 } else { k = k + 1 } 126 } else { k = k + 1 } 127 } 128 if first == 1 { first = 0 } else { p = pc_b(rep, p, "," as *u8) } 129 p = pc_b(rep, p, "{" as *u8) 130 p = pc_q(rep, p); p = pc_b(rep, p, "need" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_q(rep, p); p = pc_je(rep, p, nbuf, nid_s, nid_e); p = pc_q(rep, p); p = pc_b(rep, p, "," as *u8) 131 if cover == 1 { 132 covered = covered + 1 133 p = pc_q(rep, p); p = pc_b(rep, p, "covered_by" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_q(rep, p); p = pc_je(rep, p, cbuf, matchcap_s, matchcap_e); p = pc_q(rep, p); p = pc_b(rep, p, "," as *u8) 134 p = pc_q(rep, p); p = pc_b(rep, p, "class" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_q(rep, p) 135 if isfetch == 1 { data_pending = data_pending + 1; p = pc_b(rep, p, "data-fetch-PENDING" as *u8) } else { design_ready = design_ready + 1; p = pc_b(rep, p, "design-deterministic" as *u8) } 136 p = pc_q(rep, p) 137 } else { 138 p = pc_q(rep, p); p = pc_b(rep, p, "covered_by" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":null," as *u8) 139 p = pc_q(rep, p); p = pc_b(rep, p, "class" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, "UNCOVERED-gap" as *u8); p = pc_q(rep, p) 140 } 141 p = pc_b(rep, p, "}" as *u8) 142 } 143 ns = ni + 1 144 } 145 ni = ni + 1 146 } 147 p = pc_b(rep, p, "]," as *u8) 148 p = pc_q(rep, p); p = pc_b(rep, p, "coverage" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":{" as *u8) 149 p = pc_q(rep, p); p = pc_b(rep, p, "total" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_bn(rep, p, total); p = pc_b(rep, p, "," as *u8) 150 p = pc_q(rep, p); p = pc_b(rep, p, "covered" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_bn(rep, p, covered); p = pc_b(rep, p, "," as *u8) 151 p = pc_q(rep, p); p = pc_b(rep, p, "design_ready" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_bn(rep, p, design_ready); p = pc_b(rep, p, "," as *u8) 152 p = pc_q(rep, p); p = pc_b(rep, p, "data_pending" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_bn(rep, p, data_pending); p = pc_b(rep, p, "}," as *u8) 153 p = pc_q(rep, p); p = pc_b(rep, p, "verdict" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_q(rep, p) 154 if covered < total { p = pc_b(rep, p, "NO-GO-CAPABILITY-GAP" as *u8) } else { if data_pending > 0 { p = pc_b(rep, p, "DESIGN-READY / DATA-PENDING" as *u8) } else { p = pc_b(rep, p, "READY" as *u8) } } 155 p = pc_q(rep, p); p = pc_b(rep, p, "," as *u8) 156 p = pc_q(rep, p); p = pc_b(rep, p, "verdict_detail" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, "coverage=covered/total; design_ready caps are deterministic (CAD/render); data_pending caps are *_research_fetch that MUST RUN for real demand/cost before an honest GO-NO-GO -- NO fabricated market/cost figures here (operator no-fake-numbers law)." as *u8); p = pc_q(rep, p); p = pc_b(rep, p, "," as *u8) 157 p = pc_q(rep, p); p = pc_b(rep, p, "envelope" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":{" as *u8) 158 p = pc_q(rep, p); p = pc_b(rep, p, "needs_scanned" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_bn(rep, p, total); p = pc_b(rep, p, "," as *u8) 159 p = pc_q(rep, p); p = pc_b(rep, p, "caps_scanned" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_bn(rep, p, ncap); p = pc_b(rep, p, "," as *u8) 160 p = pc_q(rep, p); p = pc_b(rep, p, "note" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, ":" as *u8); p = pc_q(rep, p); p = pc_b(rep, p, "single-product model (nx_product_atlas_build foundation); multi-product RANKING rides a product-scoped needs plane = next rung" as *u8); p = pc_q(rep, p) 161 p = pc_b(rep, p, "}}" as *u8) 162 sys_write(1, rep, p) 163 let tfd: i64 = sys_openat_wr("knowledge/status/product_score.out.tmp" as *u8, 420) 164 if tfd >= 0 { sys_write(tfd, rep, p); sys_close(tfd); sys_renameat("knowledge/status/product_score.out.tmp" as *u8, "knowledge/status/product_score.out" as *u8) } 165 sys_exit(0) 166 return 0 167}