code wiki / _hdl_build / nx_prospector.nx
nx_prospector.nx source
↩ module page · 75 lines · 6149 B
1// nx_prospector.nx -- the CONTENT/BACKLOG MINER ("Prospector"), owned by the LIBRARIAN (operator: "do we have
2// a content miner... to make sure we are getting our backlog autonomously built until we truly have plans for
3// ALL our digital and physical projects with clear targets to s-class or s-class-exceed"). Distinct from the
4// Researcher (which mines EXTERNAL knowledge): the Prospector mines the PROJECT SPACE -- it surveys every
5// project (digital + physical) against COVERAGE criteria (has a PLAN? a SPEC? an S-CLASS TARGET?), and any
6// project missing one is a GAP it files to the backlog. Runs in the autonomous loop -> the backlog self-builds
7// until 100% coverage. Feeds the Researcher (spec the gap) + the PM (prioritize). license_tier: ORIGINAL
8import "nx_pm_review_log.nx"
9import "nx_syscalls.nx"
10
11func pr_puts(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
12func pr_n(v: i64) -> i64 { let b: *u8=sys_mmap(28); var m: i64=v; 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{b[i]=t[k-1-i];i=i+1}; sys_write(1,b,k); return 0 }
13
14const DOM_DIGITAL: i64 = 0
15const DOM_PHYSICAL: i64 = 1
16const NPj: i64 = 20
17
18func main() -> i64 {
19 let name:*i64=sys_mmap(8*NPj) as *i64; let dom:*i64=sys_mmap(8*NPj) as *i64
20 let plan:*i64=sys_mmap(8*NPj) as *i64; let spec:*i64=sys_mmap(8*NPj) as *i64; let tgt:*i64=sys_mmap(8*NPj) as *i64
21 // DIGITAL projects (plan? spec? S-class target?) -- honest current coverage
22 name[0]="andelinwest site+brand" as *u8 as i64; dom[0]=DOM_DIGITAL; plan[0]=1; spec[0]=1; tgt[0]=1
23 name[1]="CMS / WYSIWYG" as *u8 as i64; dom[1]=DOM_DIGITAL; plan[1]=1; spec[1]=1; tgt[1]=1
24 name[2]="hosting platform" as *u8 as i64; dom[2]=DOM_DIGITAL; plan[2]=1; spec[2]=1; tgt[2]=1
25 name[3]="compiler (NishiLang->x86)" as *u8 as i64; dom[3]=DOM_DIGITAL; plan[3]=1; spec[3]=0; tgt[3]=1
26 name[4]="toolchain / linker (nxasm)" as *u8 as i64; dom[4]=DOM_DIGITAL; plan[4]=1; spec[4]=0; tgt[4]=1
27 name[5]="crypto" as *u8 as i64; dom[5]=DOM_DIGITAL; plan[5]=1; spec[5]=0; tgt[5]=1
28 name[6]="TLS / HTTPS" as *u8 as i64; dom[6]=DOM_DIGITAL; plan[6]=1; spec[6]=0; tgt[6]=1
29 name[7]="SSH client" as *u8 as i64; dom[7]=DOM_DIGITAL; plan[7]=1; spec[7]=0; tgt[7]=1
30 name[8]="onsite search (BM25)" as *u8 as i64; dom[8]=DOM_DIGITAL; plan[8]=1; spec[8]=0; tgt[8]=1
31 name[9]="wiki / roadmap dashboard" as *u8 as i64; dom[9]=DOM_DIGITAL; plan[9]=1; spec[9]=1; tgt[9]=1
32 name[10]="e-reader / unified format" as *u8 as i64; dom[10]=DOM_DIGITAL; plan[10]=1; spec[10]=1; tgt[10]=1
33 name[11]="information management / Library" as *u8 as i64; dom[11]=DOM_DIGITAL; plan[11]=1; spec[11]=1; tgt[11]=1
34 // PHYSICAL projects -- we USE them but have NO plan/spec/S-class target as projects (operator-enumerable)
35 name[12]="NAS hosting hardware" as *u8 as i64; dom[12]=DOM_PHYSICAL; plan[12]=0; spec[12]=0; tgt[12]=0
36 name[13]="RTX 5080 / image-gen" as *u8 as i64; dom[13]=DOM_PHYSICAL; plan[13]=0; spec[13]=0; tgt[13]=0
37 name[14]="(physical registry incomplete -- enumerate: solar? crops? robotics?)" as *u8 as i64; dom[14]=DOM_PHYSICAL; plan[14]=0; spec[14]=0; tgt[14]=0
38 // IMMERSIVE-REALISM cluster (operator: "full immersive realism starting with z-image-turbo across vr/video/games + authoring")
39 name[15]="image-gen (Z-Image-Turbo)" as *u8 as i64; dom[15]=DOM_DIGITAL; plan[15]=1; spec[15]=0; tgt[15]=0
40 name[16]="VR / immersive realism" as *u8 as i64; dom[16]=DOM_DIGITAL; plan[16]=0; spec[16]=0; tgt[16]=0
41 name[17]="video generation" as *u8 as i64; dom[17]=DOM_DIGITAL; plan[17]=0; spec[17]=0; tgt[17]=0
42 name[18]="games / interactive" as *u8 as i64; dom[18]=DOM_DIGITAL; plan[18]=0; spec[18]=0; tgt[18]=0
43 name[19]="authoring tools (scene/3D/content)" as *u8 as i64; dom[19]=DOM_DIGITAL; plan[19]=0; spec[19]=0; tgt[19]=0
44
45 let ifd: i64 = pm_open("/tmp/nishi_issues.log" as *u8)
46 pm_w(ifd, "\n# PROSPECTOR SURVEY 2026-06-06 (coverage gaps -> backlog)\n" as *u8)
47
48 pr_puts("=== PROSPECTOR -- mining the project space for coverage gaps (plan / spec / S-class target) ===\n\n" as *u8)
49 var covered: i64=0; var gaps: i64=0; var phys_gap: i64=0; var i: i64=0
50 while i < NPj {
51 let full: i64 = plan[i] * spec[i] * tgt[i]
52 pr_puts(" ["); if dom[i]==DOM_DIGITAL { pr_puts("DIGITAL " as *u8) } else { pr_puts("PHYSICAL" as *u8) }
53 pr_puts("] " as *u8); pr_puts(name[i] as *u8)
54 pr_puts(" plan=" as *u8); pr_n(plan[i]); pr_puts(" spec=" as *u8); pr_n(spec[i]); pr_puts(" target=" as *u8); pr_n(tgt[i])
55 if full == 1 { pr_puts(" -> COVERED\n" as *u8); covered = covered + 1 }
56 else {
57 pr_puts(" -> GAP -> backlog\n" as *u8); gaps = gaps + 1
58 if dom[i]==DOM_PHYSICAL { phys_gap = phys_gap + 1 }
59 pm_w(ifd, "PROSPECT-GAP project=" as *u8); pm_w(ifd, name[i] as *u8)
60 if plan[i]==0 { pm_w(ifd, " missing=PLAN" as *u8) }
61 if spec[i]==0 { pm_w(ifd, " missing=SPEC" as *u8) }
62 if tgt[i]==0 { pm_w(ifd, " missing=S-CLASS-TARGET" as *u8) }
63 pm_w(ifd, " -> Researcher specs it / PM prioritizes\n" as *u8)
64 }
65 i = i + 1
66 }
67 sys_close(ifd)
68
69 let cov_pct: i64 = covered * 100 / NPj
70 pr_puts("\n>>> COVERAGE: " as *u8); pr_n(covered); pr_puts("/" as *u8); pr_n(NPj); pr_puts(" projects fully planned+spec'd+S-class-targeted = " as *u8); pr_n(cov_pct); pr_puts("%\n" as *u8)
71 pr_puts(">>> GAPS filed to the backlog: " as *u8); pr_n(gaps); pr_puts(" (of which PHYSICAL: " as *u8); pr_n(phys_gap); pr_puts(" -- the physical registry needs operator enumeration; the Prospector won't invent projects).\n" as *u8)
72 pr_puts(">>> DONE-condition: coverage=100% (every digital+physical project has a plan, a spec, and an S-class target).\n" as *u8)
73 pr_puts(">>> OWNER: Librarian runs the Prospector each loop beat; Researcher specs each gap; PM prioritizes. The backlog self-builds.\n" as *u8)
74 sys_exit(0); return 0
75}