code wiki / (root) / nx_forge_curves.nx

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}