nx_forge_curves.nx source
↩ module page · 80 lines · 4035 B
1// nx_forge_curves.nx -- PASS@N CURVE HARNESS (dossier N3's remaining adversary: "per-tier
2// pass-at-1 vs pass-at-N curves must be published so an insufficient tier is measured not
3// asserted"). Runs the ENGINE's pure sampling stage (maxc=1, no repair advantage) per fbench
4// task with nsamples=N and records AT WHICH SAMPLE k GREEN landed (engine rc 100+k) or -40.
5// pass@k for the row = 1 if greenk>0 && greenk<=k. Emits append-only rows to
6// knowledge/forge/pass_curves.tsv: CURVE|tier|task|nsamples|greenk|rc|us
7// (derivable into pass@1..pass@N columns by any reader; the /compare/coding page consumes this).
8// The pfx route (engine sample stage) makes N samples ~1 prefill + N generations = affordable.
9// MEASUREMENT organ (expect_exit 0: the rows are the deliverable, RED runs are honest rows).
10// usage: nx_forge_curves <tier-label> <port> <nsamples> <temp_pm> <chat>
11// license_tier: ORIGINAL expect_exit: 0
12import "nx_forge_engine.nx"
13import "nx_sov_ledger.nx"
14
15// pass@N curve row -> SOVEREIGN store (nx_sov_ledger / seg_store; NO flat TSV, per the no-TSV law).
16// typed int record keyed by "<tier>:<task>": [nsamples, greenk, rc, us]; latest-wins on re-run.
17func cv_row(tier: *u8, task: *u8, nsamples: i64, greenk: i64, rc: i64) -> i64 {
18 let key: *u8 = sys_mmap(128) as *u8
19 var o: i64 = 0
20 var i: i64 = 0
21 while tier[i] != (0 as u8) { key[o] = tier[i]; o = o + 1; i = i + 1 }
22 key[o] = 58 as u8; o = o + 1
23 i = 0
24 while task[i] != (0 as u8) { key[o] = task[i]; o = o + 1; i = i + 1 }
25 key[o] = 0 as u8
26 let vals: *i64 = sys_mmap(4 * 8) as *i64
27 vals[0] = nsamples
28 vals[1] = greenk
29 vals[2] = rc
30 vals[3] = sys_now_us()
31 sov_put_ints("knowledge/store/pass_curves" as *u8, key, vals, 4)
32 return 0
33}
34
35// one task through the pure sampling curve: engine maxc=1 (single greedy attempt = pass@1
36// signal via rc==1) + nsamples sampled. greenk: 0=greedy-green, k=sample-k-green, -1=none.
37func cv_task(tier: *u8, tag: *u8, organ: *u8, taskf: *u8, expectf: *u8, packf: *u8, port: i64, nsamples: i64, temp_pm: i64, chat: i64) -> i64 {
38 let rc: i64 = fe_run(organ, taskf, expectf, packf, port, 1, 400, chat, nsamples, temp_pm)
39 var greenk: i64 = 0 - 1
40 if rc >= 1 && rc <= 7 { greenk = 0 }
41 if rc >= 100 { greenk = rc - 100 }
42 cv_row(tier, tag, nsamples, greenk, rc)
43 std_puts("CURVE " as *u8)
44 std_puts(tag)
45 std_puts(" greenk=" as *u8)
46 std_pdec(greenk)
47 std_puts(" rc=" as *u8)
48 std_pdec(rc)
49 std_puts("\n" as *u8)
50 return rc
51}
52
53func main(argc: i64, argv: *i64) -> i64 {
54 if argc < 6 {
55 std_putln("usage: nx_forge_curves <tier-label> <port> <nsamples> <temp_pm> <chat>" as *u8)
56 sys_exit(2)
57 return 2
58 }
59 let a1: i64 = argv[1]
60 let tier: *u8 = a1 as *u8
61 let a2: i64 = argv[2]
62 let p2: *u8 = a2 as *u8
63 let port: i64 = std_atoi(p2)
64 let a3: i64 = argv[3]
65 let p3: *u8 = a3 as *u8
66 let nsamples: i64 = std_atoi(p3)
67 let a4: i64 = argv[4]
68 let p4: *u8 = a4 as *u8
69 let temp_pm: i64 = std_atoi(p4)
70 let a5: i64 = argv[5]
71 let p5: *u8 = a5 as *u8
72 let chat: i64 = std_atoi(p5)
73 std_putln("FORGE-CURVES: pass@N per task (engine sampling stage, pfx-backed)" as *u8)
74 cv_task(tier, "T1" as *u8, "nx_fcv_t1" as *u8, "knowledge/forge/fix/flp_task_t1.txt" as *u8, "knowledge/forge/fix/expect_lT1.bin" as *u8, "knowledge/forge/nishilang_pack_mini_v1.txt" as *u8, port, nsamples, temp_pm, chat)
75 cv_task(tier, "T2" as *u8, "nx_fcv_t2" as *u8, "knowledge/forge/fix/flp_task_t2.txt" as *u8, "knowledge/forge/fix/expect_lT2.bin" as *u8, "knowledge/forge/nishilang_pack_mini_v1.txt" as *u8, port, nsamples, temp_pm, chat)
76 cv_task(tier, "T3" as *u8, "nx_fcv_t3" as *u8, "knowledge/forge/fix/flp_task_t3.txt" as *u8, "knowledge/forge/fix/expect_lT3.bin" as *u8, "knowledge/forge/nishilang_pack_mini_v1.txt" as *u8, port, nsamples, temp_pm, chat)
77 std_putln("FORGE-CURVES done (rows appended to knowledge/forge/pass_curves.tsv)" as *u8)
78 sys_exit(0)
79 return 0
80}