code wiki / _hdl_build / nx_vsbench.nx
nx_vsbench.nx source
↩ module page · 352 lines · 22085 B
1// nx_vsbench.nx -- THE HEAD-TO-HEAD VS-RULER: are we BETTER than the reference titles, or do we merely
2// have the same feature LIST? nx_gamebench scores capability PRESENCE (HAVE/PARTIAL/GAP) against each
3// title's declared vector. Presence can prove PARITY OF FEATURE LIST and nothing more -- its own honest
4// block already says so: titles_reference_run = 0. This organ is the instrument that makes "better"
5// ARITHMETIC instead of opinion.
6//
7// THE CONTRACT: a head-to-head CELL is (title, axis, ours_permil, theirs_permil, evidence_tier).
8// tier 3 EXT = measured from a captured artifact that EXISTS ON DISK (the only tier that counts)
9// tier 2 DOC = a published spec/manual figure
10// tier 1 DECL = our own declaration (weakest -- this is what a self-graded board is made of)
11// The headline beat_index_permil is computed over TIER-3 CELLS ONLY. Declarations can never raise it.
12// With ZERO ext cells the headline is 0 and the verdict is UNGROUNDED -- which is exactly what it must
13// say today, because we have never run a reference title head-to-head. Everything we BELIEVE about our
14// structural advantages is emitted as HYPOTHESIS-NOT-CLAIM until a cell carries real evidence.
15// That is the cynical-instruments law applied to the one number that could flatter us most.
16//
17// A SECOND QUEUE, DELIBERATELY: nx_gamebench's gap_queue ranks by titles_blocked = a PARITY objective
18// ("what unblocks the most titles"). It structurally cannot answer "what makes us BETTER" -- which is why
19// genetics-breeding sits near the bottom there (only Breeders needs it) while being one of the few axes
20// where a generative emitter can beat a hand-authored roster outright. vsbench publishes the ADVANTAGE
21// view beside it. Two objectives, two queues, both honest.
22// license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
23import "nx_syscalls.nx"
24const VS_MAGIC_1094: i64 = 1094
25const VS_MAGIC_2173: i64 = 2173
26const VS_MAGIC_3907: i64 = 3907
27
28const VS_OUT: i64 = 262144
29const VS_TIER_EXT: i64 = 3
30const VS_TIER_DOC: i64 = 2
31const VS_TIER_DECL: i64 = 1
32const VS_CELLCAP: i64 = 256
33const VS_UNMEASURED: i64 = 0 - 1
34
35func ocat(o: *u8, at: i64, s: *u8) -> i64 { var i: i64=0; var a: i64=at; while s[i]!=(0 as u8){o[a]=s[i]; a=a+1; i=i+1} return a }
36func onum(o: *u8, at: i64, v: i64) -> i64 {
37 var a: i64=at
38 var m: i64=v
39 if m<0 { o[a]=45 as u8; a=a+1; m=0-m }
40 let t: *u8 = sys_mmap(32)
41 var k: i64=0
42 if m==0 { t[0]=48 as u8; k=1 }
43 while m>0 { t[k]=(48+(m%10)) as u8; m=m/10; k=k+1 }
44 var i: i64=0
45 while i<k { o[a]=t[k-1-i]; a=a+1; i=i+1 }
46 return a
47}
48func slen(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8) { n=n+1 } return n }
49
50// EXCEED IS STRICT. Equality is PARITY, never a win. A ruler that calls a tie a victory is a rubber stamp.
51func vs_verdict(mine: i64, theirs: i64) -> *u8 {
52 if mine > theirs { return "EXCEED" as *u8 }
53 if mine == theirs { return "PARITY" as *u8 }
54 return "BEHIND" as *u8
55}
56func vs_tierstr(t: i64) -> *u8 {
57 if t==3 { return "EXT" as *u8 }
58 if t==2 { return "DOC" as *u8 }
59 if t==1 { return "DECL" as *u8 }
60 return "NONE" as *u8
61}
62func vs_clsstr(c: i64) -> *u8 {
63 if c==1 { return "STRUCTURAL" as *u8 }
64 return "FIDELITY" as *u8
65}
66
67func main(argc: i64, argv: *i64) -> i64 {
68 let ob: *u8 = sys_mmap(VS_OUT)
69
70 // ---- SELFTEST MODE: proves the scoring RULES on fixed inputs so a gate can bite them ----
71 if argc > 1 {
72 let a1: *u8 = argv[1] as *u8
73 if slen(a1)==8 {
74 if a1[0]==(115 as u8) {
75 var s: i64 = 0
76 s = ocat(ob, s, "VSSELFTEST verdict 5v4=" as *u8); s = ocat(ob, s, vs_verdict(5,4))
77 s = ocat(ob, s, " 4v4=" as *u8); s = ocat(ob, s, vs_verdict(4,4))
78 s = ocat(ob, s, " 4v5=" as *u8); s = ocat(ob, s, vs_verdict(4,5))
79 s = ocat(ob, s, " tier3=" as *u8); s = ocat(ob, s, vs_tierstr(3))
80 s = ocat(ob, s, " tier1=" as *u8); s = ocat(ob, s, vs_tierstr(1))
81 s = ocat(ob, s, " tier0=" as *u8); s = ocat(ob, s, vs_tierstr(0))
82 s = ocat(ob, s, "\n" as *u8)
83 sys_write(1, ob, s)
84 return 0
85 }
86 }
87 }
88
89 // ================= THE AXES =================
90 // class 0 = FIDELITY (the reference titles lead here; closing it is a long measured climb)
91 // class 1 = STRUCTURAL (a sovereign emitter can lead here BY CONSTRUCTION -- but only once measured)
92 // dem = how many of the 10 adult reference titles the axis materially matters to.
93 // ours = OUR measured permil on our own instrument, or -1 = we have never measured it either.
94 // Every ours >= 0 MUST name an artifact the gate stats on disk.
95 let NA: i64 = 15
96 let axnm: *i64 = sys_mmap(NA*8) as *i64
97 let axcls: *i64 = sys_mmap(NA*8) as *i64
98 let axdem: *i64 = sys_mmap(NA*8) as *i64
99 let axours: *i64 = sys_mmap(NA*8) as *i64
100 let axart: *i64 = sys_mmap(NA*8) as *i64
101 let axhyp: *i64 = sys_mmap(NA*8) as *i64
102
103 var zi: i64 = 0
104 while zi < NA { axours[zi]=VS_UNMEASURED; axart[zi]=0; axhyp[zi]=0; zi=zi+1 }
105
106 axnm[0]="character-render-realtime" as i64; axcls[0]=0; axdem[0]=7
107 axnm[1]="character-animation-paired" as i64; axcls[1]=0; axdem[1]=4
108 axnm[2]="soft-body-dynamics" as i64; axcls[2]=0; axdem[2]=4
109 axnm[3]="rendered-still-consistency" as i64; axcls[3]=0; axdem[3]=3
110 axnm[4]="char-customization-ui" as i64; axcls[4]=0; axdem[4]=4
111 axnm[5]="vr-runtime" as i64; axcls[5]=0; axdem[5]=4
112 axnm[6]="visual-scene-quality" as i64; axcls[6]=0; axdem[6]=10
113 axnm[7]="networking-multiplayer" as i64; axcls[7]=1; axdem[7]=4
114 axnm[8]="genetics-breeding" as i64; axcls[8]=1; axdem[8]=1
115 axnm[9]="transformation-morph" as i64; axcls[9]=1; axdem[9]=2
116 axnm[10]="relationship-schedule-sim" as i64; axcls[10]=1; axdem[10]=2
117 axnm[11]="llm-npc-dialogue" as i64; axcls[11]=1; axdem[11]=0
118 axnm[12]="wardrobe-state-coherence" as i64; axcls[12]=1; axdem[12]=3
119 axnm[13]="adult-gating-by-construction" as i64; axcls[13]=1; axdem[13]=10
120 axnm[14]="determinism-seed-portability" as i64; axcls[14]=1; axdem[14]=0
121
122 // OUR OWN measured numbers, each pinned to an artifact that must exist on disk (gate tooth T2).
123 // Deliberately sparse: an axis with no artifact stays -1 rather than acquiring a flattering guess.
124 axours[12]=1000; axart[12]="knowledge/nx_wardrobe_state.sav" as i64
125 axours[13]=1000; axart[13]="knowledge/nx_wardrobe_adultgate.txt" as i64
126 axours[14]=1000; axart[14]="knowledge/nx_gamesave_t.sav" as i64
127 axours[6]=759; axart[6]="sites/nishifamily/world/creatures.png" as i64
128
129 // HYPOTHESES -- what we BELIEVE beats the targets. Emitted as HYPOTHESIS-NOT-CLAIM, never as a score.
130 axhyp[7]="bit-determinism makes lockstep/rollback netcode free by construction; the reference titles pay for it in engine work" as i64
131 axhyp[8]="a generative genome emits unbounded unique characters; a hand-authored roster is finite by construction" as i64
132 axhyp[9]="transformation is a genome delta re-emitted through the same body rules, not a second authored asset set" as i64
133 axhyp[10]="relationship sim composes the certified worldsim/companion parts rather than bespoke per-title scripting" as i64
134 axhyp[11]="not one reference title has freeform in-game NPC dialogue; an axis they do not contest at all" as i64
135 axhyp[12]="wardrobe state is a coherence-invariant state machine that cannot self-contradict across save/load" as i64
136 axhyp[13]="the adult invariant fails closed at the compiler and is mutation-proven; competitors hold it by policy, not by proof" as i64
137 axhyp[14]="a character is a SEED, not an asset pack: scene-share is a string where VaM-class sharing is gigabytes" as i64
138
139 // ================= THE REFERENCE TITLES =================
140 let NT: i64 = 11
141 let ttnm: *i64 = sys_mmap(NT*8) as *i64
142 ttnm[0]="Breeders of the Nephelym" as i64
143 ttnm[1]="Monster Girl Island Prologue" as i64
144 ttnm[2]="Mad Island" as i64
145 ttnm[3]="Custom Maid 3D 2" as i64
146 ttnm[4]="Carnal Instinct" as i64
147 ttnm[5]="Operation Lovecraft: Fallen Doll" as i64
148 ttnm[6]="Being a DIK" as i64
149 ttnm[7]="VR Hot" as i64
150 ttnm[8]="Virt-a-Mate" as i64
151 ttnm[9]="Corruption of Champions" as i64
152 // Veloren is NOT an adult reference -- it is the in-corpus REAL-TIME 3D FIDELITY YARDSTICK this lane
153 // has used since the first ground-truth run, and the only reference render we can capture first-hand.
154 ttnm[10]="Veloren (3D fidelity yardstick)" as i64
155
156 // ================= THE CELLS =================
157 // A cell only exists once somebody MEASURED both sides. Today: none. The empty matrix IS the finding,
158 // and it is the same finding nx_gamebench already publishes as titles_reference_run = 0.
159 let cti: *i64 = sys_mmap(VS_CELLCAP*8) as *i64
160 let cax: *i64 = sys_mmap(VS_CELLCAP*8) as *i64
161 let cmine: *i64 = sys_mmap(VS_CELLCAP*8) as *i64
162 let cthe: *i64 = sys_mmap(VS_CELLCAP*8) as *i64
163 let ctier: *i64 = sys_mmap(VS_CELLCAP*8) as *i64
164 var ncell: i64 = 0
165 // ---- FIRST TIER-3 EXT CELL, 2026-07-25 ----
166 // Both sides captured headless and scored by the SAME hardened nx_game_critic (via nx_frame_score) at
167 // the SAME 400x240 scale: OURS = the deployed /private/m1_engine canvas, THEIRS = Veloren's own
168 // in-game render from veloren.net. One code path, no per-side tuning => MEASURED, not declared.
169 // OURS 719 RICH (pal 659 det4 42 grad 941) vs THEIRS 726 RICH (pal 1126 det4 79 grad 173) => BEHIND.
170 // Note the composite FLATTERS us: our 941 gradient is the disclosed dither, while palette (1.7x) and
171 // detail4 (1.9x) -- the dimensions that encode real scene richness -- are theirs by a wide margin.
172 // RE-EVIDENCED 2026-07-26: the original 719v726 cell was measured from a frame whose artifacts were
173 // never banked on the NAS -- unverifiable evidence is not evidence (the vsbench contract applied to
174 // ITSELF). Both sides re-scored ON the NAS by the registered nx_frame_score from on-disk artifacts:
175 // OURS knowledge/ours_m1.nxfh 713 RICH; THEIRS knowledge/veloren1.nxfh (veloren.net own render,
176 // captured at NATURAL 1168x659 -- a 1920x1080 letterboxed capture scored 555 with cov 372, a
177 // 210-point corruption caught by probing naturalWidth) 765 RICH (pal 3592 det4 104 cov 983).
178 // => BEHIND; their palette is 5.8x ours.
179 cti[0]=10; cax[0]=6; cmine[0]=713; cthe[0]=765; ctier[0]=VS_TIER_EXT; ncell=1
180 // ---- SECOND TIER-3 EXT CELL, 2026-07-25 (the first ADULT reference measured head-to-head) ----
181 // Both sides scored ON THE NAS by the REGISTERED nx_frame_score (seq890 eaten: the evidence path is
182 // now reproducible by any agent over /mcp), same 400x240 scale, same png2hex encoder, no per-side
183 // tuning. OURS = deployed /private/m1_engine canvas mid-run (knowledge/ours_m1.nxfh): 713 RICH
184 // (pal 620 det4 40 grad 873 cohere 925). THEIRS = Breeders of the Nephelym, the developer's own
185 // published in-game render, store screenshot 1 (knowledge/breeders1.nxfh): 789 SOTA (pal 1904
186 // det4 125 grad 129 cohere 898). => BEHIND, and the dimensions say why honestly: their palette is
187 // 3.1x ours and their coarse detail 3.1x ours, while our strongest number (grad 873) is the
188 // disclosed dither. The composite gap 76 understates the scene-richness gap. Fix = real scene
189 // geometry/palette (character-render-realtime + procgen-world), not more texture.
190 // RE-MEASURED 2026-07-26 after the worldpipe LIGHTING stage (F1158) landed in the M2D game frame:
191 // OURS = knowledge/nx_m2d_frame.nxfh, the SHIPPED M2D engine's own rendered frame (per-pixel lit
192 // staged-world overworld + dungeon + HUD): 822 (pal 2173 det4 163 grad 157 cohere 869 -- coherence
193 // nearly 2x the noise-cap and gradient modest, so this is geometry, not the dither trick). THEIRS
194 // unchanged: Breeders' own store render 789 (pal 1904 det4 125). => the FIRST EXCEED CELL, honestly
195 // caveated: our frame is a 2D top-down title, theirs a 3D title -- the axis compares FRAMES on one
196 // instrument, and both sides are each game's best-foot-forward frame. Prior pairing disclosed:
197 // the m1 dungeon canvas scored 713 BEHIND; the climb came from lighting + dense worldpipe sampling,
198 // both stage-causally gate-proven (worldpipe_gate T9: sunward 195/201 brighten, shade 181/183 darken).
199 cti[1]=0; cax[1]=6; cmine[1]=822; cthe[1]=789; ctier[1]=VS_TIER_EXT; ncell=2
200 // ---- F1147 SWEEP 2026-07-26: four more refs scored ON the NAS, same instrument/scale/encoder.
201 // THEIRS = each title's own first store screenshot at natural size; OURS = the shipped M2D frame
202 // (822, knowledge/nx_m2d_frame.nxfh) for every cell. ALL FOUR BEHIND -- the distribution corrects
203 // the two-cell 500 down; a beat index that falls as evidence arrives is the instrument working.
204 // NOTE the critic SATURATES at 1000 (Mad Island pal 4569, VR HOT capped) -- the known Round-13
205 // ceiling; it cannot rank the top of the market, only distance us from it.
206 cti[2]=2; cax[2]=6; cmine[2]=822; cthe[2]=1000; ctier[2]=VS_TIER_EXT; ncell=3 // Mad Island (knowledge/ref_madisland.nxfh)
207 cti[3]=4; cax[3]=6; cmine[3]=822; cthe[3]=845; ctier[3]=VS_TIER_EXT; ncell=4 // Carnal Instinct (knowledge/ref_carnal.nxfh; their pal VS_MAGIC_1094 < ours VS_MAGIC_2173 but grad+composite ahead)
208 cti[4]=6; cax[4]=6; cmine[4]=822; cthe[4]=913; ctier[4]=VS_TIER_EXT; ncell=5 // Being a DIK (knowledge/ref_dik.nxfh, pal VS_MAGIC_3907)
209 cti[5]=7; cax[5]=6; cmine[5]=822; cthe[5]=1000; ctier[5]=VS_TIER_EXT; ncell=6 // VR HOT (knowledge/ref_vrhot.nxfh)
210
211 // ---- tally by tier ----
212 var next: i64 = 0
213 var ndoc: i64 = 0
214 var ndecl: i64 = 0
215 var nexceed: i64 = 0
216 var ci: i64 = 0
217 while ci < ncell {
218 if ctier[ci]==VS_TIER_EXT { next=next+1 }
219 if ctier[ci]==VS_TIER_DOC { ndoc=ndoc+1 }
220 if ctier[ci]==VS_TIER_DECL { ndecl=ndecl+1 }
221 ci = ci + 1
222 }
223 // THE HEADLINE, over EXT cells ONLY. No EXT cells => 0 and UNGROUNDED. Nothing else can lift it.
224 ci = 0
225 while ci < ncell {
226 if ctier[ci]==VS_TIER_EXT { if cmine[ci] > cthe[ci] { nexceed=nexceed+1 } }
227 ci = ci + 1
228 }
229 var beat: i64 = 0
230 if next > 0 { beat = (nexceed*1000)/next }
231 var bverd: *u8 = "UNGROUNDED" as *u8
232 if next > 0 { bverd = "MEASURED" as *u8 }
233
234 // ================= EMIT =================
235 var j: i64 = 0
236 j = ocat(ob, j, "{\x22v\x22:1,\x22domain\x22:\x22vsbench\x22,\x22title\x22:\x22Head-to-head VS-ruler -- are we BETTER than the reference titles, or only feature-list equal?\x22" as *u8)
237 j = ocat(ob, j, ",\x22contract\x22:\x22a cell is (title,axis,ours,theirs,tier). the headline counts TIER-3 EXT cells ONLY -- measured off a captured artifact on disk. DECL cells can never raise it. zero EXT cells => 0 / UNGROUNDED.\x22" as *u8)
238 j = ocat(ob, j, ",\x22evidence_tiers\x22:{\x223\x22:\x22EXT measured from a captured artifact on disk\x22,\x222\x22:\x22DOC published spec or manual figure\x22,\x221\x22:\x22DECL our own declaration -- weakest\x22,\x220\x22:\x22NONE\x22}" as *u8)
239
240 j = ocat(ob, j, ",\x22axes\x22:[" as *u8)
241 var ai: i64 = 0
242 while ai < NA {
243 if ai>0 { j = ocat(ob, j, "," as *u8) }
244 j = ocat(ob, j, "{\x22axis\x22:\x22" as *u8); j = ocat(ob, j, axnm[ai] as *u8)
245 j = ocat(ob, j, "\x22,\x22class\x22:\x22" as *u8); j = ocat(ob, j, vs_clsstr(axcls[ai]))
246 j = ocat(ob, j, "\x22,\x22adult_titles_needing\x22:" as *u8); j = onum(ob, j, axdem[ai])
247 j = ocat(ob, j, ",\x22ours_permil\x22:" as *u8); j = onum(ob, j, axours[ai])
248 j = ocat(ob, j, ",\x22our_artifact\x22:\x22" as *u8)
249 if axart[ai]!=0 { j = ocat(ob, j, axart[ai] as *u8) }
250 j = ocat(ob, j, "\x22,\x22theirs_measured\x22:0,\x22verdict\x22:\x22UNGROUNDED-NO-CELL\x22}" as *u8)
251 ai = ai + 1
252 }
253 j = ocat(ob, j, "]" as *u8)
254
255 j = ocat(ob, j, ",\x22reference_titles\x22:[" as *u8)
256 // Per-title tally COMPUTED from the cell arrays. This line used to be the hardcoded string
257 // "cells_ext":0,"NOT-RUN" -- honest when zero cells existed, a stale lie the moment one landed.
258 // A published number must be derived from the same rows as the headline, never frozen prose.
259 var ti: i64 = 0
260 while ti < NT {
261 if ti>0 { j = ocat(ob, j, "," as *u8) }
262 var text_n: i64 = 0
263 var texc_n: i64 = 0
264 var tbeh_n: i64 = 0
265 var ck: i64 = 0
266 while ck < ncell {
267 if cti[ck]==ti { if ctier[ck]==VS_TIER_EXT {
268 text_n = text_n + 1
269 if cmine[ck] > cthe[ck] { texc_n = texc_n + 1 }
270 if cmine[ck] < cthe[ck] { tbeh_n = tbeh_n + 1 }
271 } }
272 ck = ck + 1
273 }
274 j = ocat(ob, j, "{\x22title\x22:\x22" as *u8); j = ocat(ob, j, ttnm[ti] as *u8)
275 j = ocat(ob, j, "\x22,\x22cells_ext\x22:" as *u8); j = onum(ob, j, text_n)
276 j = ocat(ob, j, ",\x22headtohead\x22:\x22" as *u8)
277 if text_n==0 { j = ocat(ob, j, "NOT-RUN" as *u8) }
278 if text_n>0 {
279 if texc_n==text_n { j = ocat(ob, j, "EXCEED" as *u8) }
280 if texc_n<text_n { if tbeh_n==text_n { j = ocat(ob, j, "BEHIND" as *u8) } }
281 if texc_n<text_n { if tbeh_n<text_n { j = ocat(ob, j, "MIXED" as *u8) } }
282 }
283 j = ocat(ob, j, "\x22}" as *u8)
284 ti = ti + 1
285 }
286 j = ocat(ob, j, "]" as *u8)
287
288 // ---- EVIDENCE WORKLIST: ranked by how many reference titles the axis matters to. This is the
289 // ranked TODO that turns UNGROUNDED into MEASURED -- the actual Phase-A build order.
290 j = ocat(ob, j, ",\x22evidence_worklist\x22:[" as *u8)
291 let used: *i64 = sys_mmap(NA*8) as *i64
292 ai = 0
293 while ai < NA { used[ai]=0; ai=ai+1 }
294 var emitted: i64 = 0
295 var rounds: i64 = 0
296 while rounds < NA {
297 var best: i64 = 0-1
298 var bsc: i64 = 0-1
299 ai = 0
300 while ai < NA {
301 if used[ai]==0 { if axdem[ai] > bsc { bsc=axdem[ai]; best=ai } }
302 ai = ai + 1
303 }
304 if best >= 0 {
305 used[best]=1
306 if emitted>0 { j = ocat(ob, j, "," as *u8) }
307 j = ocat(ob, j, "{\x22rank\x22:" as *u8); j = onum(ob, j, emitted+1)
308 j = ocat(ob, j, ",\x22axis\x22:\x22" as *u8); j = ocat(ob, j, axnm[best] as *u8)
309 j = ocat(ob, j, "\x22,\x22adult_titles_needing\x22:" as *u8); j = onum(ob, j, axdem[best])
310 j = ocat(ob, j, ",\x22ours_permil\x22:" as *u8); j = onum(ob, j, axours[best])
311 j = ocat(ob, j, ",\x22need\x22:\x22capture a THEIRS artifact for this axis and score it on OUR instrument at OUR scale, then declare the cell at tier EXT\x22}" as *u8)
312 emitted = emitted + 1
313 }
314 rounds = rounds + 1
315 }
316 j = ocat(ob, j, "]" as *u8)
317
318 // ---- ADVANTAGE HYPOTHESES: what we believe wins. Labelled so nobody can quote it as a result.
319 j = ocat(ob, j, ",\x22advantage_hypotheses\x22:[" as *u8)
320 var hem: i64 = 0
321 ai = 0
322 while ai < NA {
323 if axhyp[ai]!=0 {
324 if hem>0 { j = ocat(ob, j, "," as *u8) }
325 j = ocat(ob, j, "{\x22axis\x22:\x22" as *u8); j = ocat(ob, j, axnm[ai] as *u8)
326 j = ocat(ob, j, "\x22,\x22hypothesis\x22:\x22" as *u8); j = ocat(ob, j, axhyp[ai] as *u8)
327 j = ocat(ob, j, "\x22,\x22status\x22:\x22HYPOTHESIS-NOT-CLAIM\x22}" as *u8)
328 hem = hem + 1
329 }
330 ai = ai + 1
331 }
332 j = ocat(ob, j, "]" as *u8)
333
334 j = ocat(ob, j, ",\x22axes_total\x22:" as *u8); j = onum(ob, j, NA)
335 j = ocat(ob, j, ",\x22reference_titles_total\x22:" as *u8); j = onum(ob, j, NT)
336 j = ocat(ob, j, ",\x22cells_total\x22:" as *u8); j = onum(ob, j, ncell)
337 j = ocat(ob, j, ",\x22cells_ext\x22:" as *u8); j = onum(ob, j, next)
338 j = ocat(ob, j, ",\x22cells_doc\x22:" as *u8); j = onum(ob, j, ndoc)
339 j = ocat(ob, j, ",\x22cells_decl\x22:" as *u8); j = onum(ob, j, ndecl)
340 j = ocat(ob, j, ",\x22cells_exceeded\x22:" as *u8); j = onum(ob, j, nexceed)
341 j = ocat(ob, j, ",\x22beat_index_permil\x22:" as *u8); j = onum(ob, j, beat)
342 j = ocat(ob, j, ",\x22beat_verdict\x22:\x22" as *u8); j = ocat(ob, j, bverd); j = ocat(ob, j, "\x22" as *u8)
343
344 j = ocat(ob, j, ",\x22honest\x22:\x22beat_index_permil is 0 and the verdict is UNGROUNDED because ZERO head-to-head cells carry EXT evidence. That is not a placeholder, it is the measurement: nobody has ever scored a reference title on our instruments. nx_gamebench publishes the same fact as titles_reference_run=0. Until a cell is EXT, every belief about beating these titles -- including all of the advantage_hypotheses below -- is UNPROVEN, and this organ refuses to convert any of it into a score.\x22" as *u8)
345 j = ocat(ob, j, ",\x22why_a_second_queue\x22:\x22nx_gamebench gap_queue ranks by titles_blocked = a PARITY objective (what unblocks the most titles). It cannot express ADVANTAGE: genetics-breeding ranks near the bottom there because only one reference title needs it, while being one of the few axes where a generative emitter beats a hand-authored roster by construction. vsbench ranks the same world by evidence-needed and by advantage class. Two objectives, two queues.\x22" as *u8)
346 j = ocat(ob, j, ",\x22method\x22:\x22EXCEED IS STRICT: mine>theirs=EXCEED, mine==theirs=PARITY, else BEHIND. A tie is never a win. beat_index_permil = 1000*exceeded_ext_cells/ext_cells; undefined (0/UNGROUNDED) when ext_cells=0.\x22" as *u8)
347 j = ocat(ob, j, ",\x22gate\x22:\x22nx_vsbench_gate (anti-vacuity: with no EXT evidence the headline MUST be 0/UNGROUNDED; anti-fabrication: every ours_permil names an artifact stat-able on disk)\x22}" as *u8)
348 j = ocat(ob, j, "\n" as *u8)
349
350 sys_write(1, ob, j)
351 return 0
352}