code wiki / _hdl_build / _sponsor_review_gate_authored.nx
_sponsor_review_gate_authored.nx source
↩ module page · 196 lines · 8233 B
1// _sponsor_review_gate_authored.nx -- gate for the executive-sponsor loop.
2// Proves the FULL subjective lifecycle on a scratch queue with the REAL
3// reconcile elf and the sponsor core -- no mocks:
4// 1. CTRL (TODO, MARK green, NO ASK) -> reconcile -> DONE (objective
5// rows never wait for the sponsor: the doctrine's other half)
6// 2. SV1 (TODO, MARK green, ||ASK=result) -> reconcile -> VIEW not DONE
7// 3. APPROVE SV2 (VIEW) -> DONE
8// 4. DENY SV3 <feedback> (VIEW) -> NOVEL + PREF row appended
9// 5. APPROVE SV4 (TODO) -> REFUSED (illegal transition)
10// 6. APPROVE NOSUCH -> REFUSED (unknown id)
11// 7. SV5 (NOVEL ||ASK=spec) -> SPONSOR-SPEC census row
12// 8. re-run -> idempotent (applied=0, no
13// duplicate PREF row)
14// Markers: SRG-*; final SPONSORGATE row -> knowledge/status/sponsor_review.log
15// license_tier: ORIGINAL
16
17import "nx_sponsor_core.nx"
18
19func srg_p(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 }
20func srg_f(fd: i64, s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(fd,s,n); return 0 }
21
22func srg_chk(label: *u8, ok: i64, bad: *i64) -> i64 {
23 srg_p("SRG-" as *u8)
24 srg_p(label)
25 if ok == 1 { srg_p(" ok\n" as *u8) } else { srg_p(" BAD\n" as *u8); bad[0] = bad[0] + 1 }
26 return 0
27}
28
29func srg_seed_queue(qp: *u8) -> i64 {
30 let fd: i64 = sys_openat_wr(qp, 0x1a4)
31 if fd < 0 { return 0 }
32 srg_f(fd, "# scratch queue for the sponsor gate\n" as *u8)
33 srg_f(fd, "CTRL\tX\t9\tS\tBuilder\tTODO\t-\tg||MARK=/tmp/_sr_toy.log::SRTOY::verdict=GREEN\tobjective row flows to DONE\n" as *u8)
34 srg_f(fd, "SV1\tX\t8\tS\tBuilder\tTODO\t-\tg||MARK=/tmp/_sr_toy.log::SRTOY::verdict=GREEN||ASK=result\tsubjective deliverable -> VIEW\n" as *u8)
35 srg_f(fd, "SV2\tX\t7\tS\tBuilder\tVIEW\t-\tg||ASK=result\tawaiting viewpoint (approve me)\n" as *u8)
36 srg_f(fd, "SV3\tX\t6\tS\tBuilder\tVIEW\t-\tg||ASK=result\tawaiting viewpoint (deny me)\n" as *u8)
37 srg_f(fd, "SV4\tX\t5\tS\tBuilder\tTODO\t-\tg\tillegal approve target\n" as *u8)
38 srg_f(fd, "SV5\tX\t4\tS\tPM\tNOVEL\t-\tco-spec-this||ASK=spec\tsubjective feature choice (needs us both)\n" as *u8)
39 srg_f(fd, "SV6\tX\t3\tS\tBuilder\tVIEW\t-\tg||ASK=result\tawaiting viewpoint (restart me)\n" as *u8)
40 srg_f(fd, "SV7\tX\t2\tS\tBuilder\tVIEW\t-\tg||ASK=result\tawaiting viewpoint (kill me)\n" as *u8)
41 srg_f(fd, "SV8\tX\t1\tS\tBuilder\tNOVEL\t-\tg\traised hand to be flagged no-roi\n" as *u8)
42 var i: i64 = 0
43 while i < 16 { srg_f(fd, "\n" as *u8); i = i + 1 }
44 sys_close(fd)
45 return 1
46}
47
48func srg_seed_decisions(dp: *u8) -> i64 {
49 let fd: i64 = sys_openat_wr(dp, 0x1a4)
50 if fd < 0 { return 0 }
51 srg_f(fd, "# scratch decisions\n" as *u8)
52 srg_f(fd, "APPROVE SV2 clean exceed on the privacy axis ship it\n" as *u8)
53 srg_f(fd, "REWORK SV3 needs richer drilldowns and cohort view\n" as *u8)
54 srg_f(fd, "RESTART SV6 wrong direction entirely re-spec against the callout\n" as *u8)
55 srg_f(fd, "DENY SV7 duplicative of existing W5 rows no roi\n" as *u8)
56 srg_f(fd, "DENY SV8 flagging the novel: no roi vs existing rows\n" as *u8)
57 srg_f(fd, "APPROVE SV4\n" as *u8)
58 srg_f(fd, "APPROVE NOSUCH\n" as *u8)
59 // pad against shorter rewrites of earlier longer runs (no O_TRUNC)
60 var i: i64 = 0
61 while i < 8 { srg_f(fd, "\n" as *u8); i = i + 1 }
62 sys_close(fd)
63 return 1
64}
65
66func srg_status_of(qp: *u8, id: *u8) -> i64 {
67 return sr_status(qp, id)
68}
69
70func srg_count(path: *u8, pat: *u8) -> i64 {
71 let buf: *u8 = sys_mmap(262144)
72 let fd: i64 = sys_openat_rd(path)
73 if fd < 0 { return 0 }
74 var n: i64 = 0
75 var r: i64 = sys_read(fd, buf, 262143)
76 while r > 0 { n = n + r; r = sys_read(fd, buf + n, 262143 - n) }
77 sys_close(fd)
78 var pl: i64 = 0
79 while pat[pl] != (0 as u8) { pl = pl + 1 }
80 var c: i64 = 0
81 var i: i64 = 0
82 while i < n {
83 if wd_at(buf, n, i, pat, pl) == 1 { c = c + 1 }
84 i = i + 1
85 }
86 return c
87}
88
89// spawn the durable reconcile elf on the scratch queue
90func srg_reconcile(qp: *u8) -> i64 {
91 let argv: *i64 = sys_mmap(32) as *i64
92 argv[0] = "_offc/nx_reconcile.elf" as *u8 as i64
93 argv[1] = qp as i64
94 argv[2] = 0
95 let envp: *i64 = sys_mmap(16) as *i64
96 envp[0] = 0
97 let pid: i64 = sys_fork()
98 if pid == 0 {
99 sys_execve("_offc/nx_reconcile.elf" as *u8, argv, envp)
100 sys_exit(127)
101 }
102 let st: *i64 = sys_mmap(16) as *i64
103 sys_wait4(pid, st, 0)
104 return (st[0] >> 8) & 0xff
105}
106
107func main() -> i64 {
108 let badv: *i64 = sys_mmap(16) as *i64
109 badv[0] = 0
110 srg_p("=== sponsor-review gate (executive-sponsor loop) ===\n" as *u8)
111 let qp: *u8 = "/tmp/_sr_scratch_queue.tsv" as *u8
112 let dp: *u8 = "/tmp/_sr_decisions.tsv" as *u8
113 let pp: *u8 = "/tmp/_sr_prefs.tsv" as *u8
114 let lp: *u8 = "/tmp/_sr_review.log" as *u8
115
116 if srg_seed_queue(qp) != 1 { srg_p("SPONSORGATE verdict=RED reason=seed-fail\n" as *u8); sys_exit(98) }
117 let tf: i64 = sys_openat_append("/tmp/_sr_toy.log" as *u8, 0x1a4)
118 if tf >= 0 { srg_f(tf, "SRTOY verdict=GREEN\n" as *u8); sys_close(tf) }
119
120 // reconcile: objective CTRL -> DONE; subjective SV1 -> VIEW
121 srg_reconcile(qp)
122 var c: i64 = 0
123 if srg_status_of(qp, "CTRL" as *u8) == 68 { c = 1 }
124 srg_chk("OBJECTIVE-STILL-DONE" as *u8, c, badv)
125 c = 0
126 if srg_status_of(qp, "SV1" as *u8) == 86 { c = 1 }
127 srg_chk("ASKRESULT-TO-VIEW" as *u8, c, badv)
128
129 // sponsor decisions (all four verbs, every reason captured)
130 srg_seed_decisions(dp)
131 let base_pref: i64 = srg_count(pp, "PREF id=SV3 action=REWORK" as *u8)
132 sr_run(qp, dp, pp, lp)
133 c = 0
134 if srg_status_of(qp, "SV2" as *u8) == 68 { c = 1 }
135 srg_chk("APPROVE-VIEW-TO-DONE" as *u8, c, badv)
136 c = 0
137 if srg_status_of(qp, "SV3" as *u8) == 78 { c = 1 }
138 srg_chk("REWORK-VIEW-TO-NOVEL" as *u8, c, badv)
139 c = 0
140 if srg_status_of(qp, "SV6" as *u8) == 78 { c = 1 }
141 srg_chk("RESTART-VIEW-TO-NOVEL" as *u8, c, badv)
142 c = 0
143 if srg_status_of(qp, "SV7" as *u8) == 75 { c = 1 }
144 srg_chk("DENY-VIEW-TO-KILLED" as *u8, c, badv)
145 c = 0
146 if srg_status_of(qp, "SV8" as *u8) == 75 { c = 1 }
147 srg_chk("DENY-NOVEL-TO-KILLED" as *u8, c, badv)
148 c = 0
149 if srg_status_of(qp, "SV4" as *u8) == 84 { c = 1 }
150 srg_chk("ILLEGAL-APPROVE-UNTOUCHED" as *u8, c, badv)
151 c = 0
152 if srg_count(pp, "PREF id=SV3 action=REWORK" as *u8) - base_pref == 1 { c = 1 }
153 srg_chk("PREF-LEARNED" as *u8, c, badv)
154 c = 0
155 var c4: i64 = 0
156 if srg_count(pp, "action=APPROVE feedback=clean exceed" as *u8) >= 1 { c4 = c4 + 1 }
157 if srg_count(pp, "PREF id=SV6 action=RESTART" as *u8) >= 1 { c4 = c4 + 1 }
158 if srg_count(pp, "PREF id=SV7 action=DENY" as *u8) >= 1 { c4 = c4 + 1 }
159 if c4 == 3 { c = 1 }
160 srg_chk("ALL-VERBS-CAPTURED" as *u8, c, badv)
161 c = 0
162 if srg_count(lp, "SPONSOR REFUSED" as *u8) >= 2 { c = 1 }
163 srg_chk("REFUSALS-LOUD" as *u8, c, badv)
164 c = 0
165 if srg_count(lp, "SPONSOR-SPEC id=SV5" as *u8) >= 1 { c = 1 }
166 srg_chk("ASKSPEC-CENSUS" as *u8, c, badv)
167
168 // idempotency: second pass moves nothing, learns nothing twice
169 sr_run(qp, dp, pp, lp)
170 c = 0
171 if srg_status_of(qp, "SV3" as *u8) == 78 { c = 1 }
172 srg_chk("IDEMPOTENT-STATUS" as *u8, c, badv)
173 c = 0
174 if srg_count(pp, "PREF id=SV3 action=REWORK" as *u8) - base_pref == 1 { c = 1 }
175 srg_chk("IDEMPOTENT-PREFS" as *u8, c, badv)
176
177 let lg: i64 = sys_openat_append("knowledge/status/sponsor_review.log" as *u8, 0x1a4)
178 var rcg: i64 = 0
179 if badv[0] == 0 {
180 srg_p("SPONSORGATE checks=14/14 verdict=GREEN\n" as *u8)
181 if lg >= 0 {
182 srg_f(lg, "SPONSORGATE checks=14/14 verdict=GREEN epoch=" as *u8)
183 wd_wn(lg, sys_now_realtime_sec())
184 srg_f(lg, "\n" as *u8)
185 }
186 } else {
187 srg_p("SPONSORGATE verdict=RED bad=" as *u8)
188 wd_wn(1, badv[0])
189 srg_p("\n" as *u8)
190 if lg >= 0 { srg_f(lg, "SPONSORGATE verdict=RED\n" as *u8) }
191 rcg = badv[0]
192 }
193 if lg >= 0 { sys_close(lg) }
194 sys_exit(rcg)
195 return rcg
196}