code wiki / _hdl_build / nx_ecomat_beat_gate.nx

nx_ecomat_beat_gate.nx source

↩ module page · 56 lines · 3336 B

1// nx_ecomat_beat_gate.nx -- proves the flywheel BEAT composes: on a test store, MEASURE (with the 2// live-derive) -> TARGET -> PUBLISH all succeed and chain. Uses /tmp fixtures, never the real loop. 3// license_tier: ORIGINAL 4import "nx_ecomat_lib.nx" 5import "nx_registry_lock.nx" 6 7func main() -> i64 { 8 var fails: i64 = 0 9 let szp: *i64 = sys_mmap(16) as *i64 10 // controlled live autonomy meter 11 ss_writefile("/tmp/ecomat_beat_autolog" as *u8, "AUTMETER permil=341\n" as *u8, 20) 12 // test store: gdom (cur1<bar4 -> a target) + autonomy (stored cur5, but live-derives to level 2) 13 let w: *i64 = ss_begin() 14 ec_seed_one(w, 0, 1, 16, 1, 4, 8, 1, "gdom" as *u8, "b" as *u8, "nrung" as *u8) 15 ec_seed_one_ev(w, 1, 2, 13, 5, 5, 9, 1, 1, "autonomy" as *u8, "b" as *u8, "n" as *u8, "/tmp/ecomat_beat_autolog" as *u8, "permil=" as *u8) 16 ss_commit("/tmp/ecomat_beatstore" as *u8, w, sys_now_realtime_sec()) 17 let alog: *u8 = "/tmp/ecomat_beat_autolog" as *u8 18 19 // STAGE 1 MEASURE: gdom 1/bar4 + autonomy live-derived 2/bar5 => sum 3/9 => 333 (proves live-derive composed) 20 let out: *i64 = sys_mmap(256) 21 let v1: i64 = em_rollup_store("/tmp/ecomat_beatstore" as *u8, alog, out, 0) 22 _p("S1 measure : permil=" as *u8); _fn(1, out[0]); _p(" domains=" as *u8); _fn(1, out[2]); _p(" verdict=" as *u8); _fn(1, v1); _p("\n" as *u8) 23 if out[2] != 2 { fails = fails + 1 } 24 if out[0] != 333 { fails = fails + 1 } 25 if v1 != 0 { fails = fails + 1 } 26 27 // STAGE 2 TARGET: fresh test queue -> gdom emits 1 target (autonomy stored>=bar -> at-bar, no target) 28 ss_writefile("/tmp/ecomat_beatqueue" as *u8, "" as *u8, 0) 29 let qb: *u8 = ss_readall("/tmp/ecomat_beatqueue" as *u8, szp) 30 var qn: i64 = szp[0]; if qn < 0 { qn = 0 } 31 let lk: i64 = rt_lock("/tmp/ecomat_beatqueue.lock" as *u8) 32 let qf: i64 = sys_openat_append("/tmp/ecomat_beatqueue" as *u8, 0x1a4) 33 let tout: *i64 = sys_mmap(32) 34 et_emit_targets_core("/tmp/ecomat_beatstore" as *u8, qb, qn, qf, 0 - 1, tout) 35 if qf >= 0 { sys_close(qf) } 36 rt_unlock("/tmp/ecomat_beatqueue.lock" as *u8, lk) 37 _p("S2 target : emitted=" as *u8); _fn(1, tout[0]); _p(" done_marks=" as *u8); _fn(1, tout[1]); _p("\n" as *u8) 38 if tout[0] != 1 { fails = fails + 1 } 39 let q2: *u8 = ss_readall("/tmp/ecomat_beatqueue" as *u8, szp) 40 var qn2: i64 = szp[0]; if qn2 < 0 { qn2 = 0 } 41 if el_contains(q2, qn2, "GEN-MAT-gdom" as *u8) == 0 { fails = fails + 1 } 42 43 // STAGE 3 PUBLISH: page written, contains the live overall (333) + a domain 44 let pv: i64 = em_emit_page("/tmp/ecomat_beatstore" as *u8, alog, "/tmp/ecomat_beatpage.html" as *u8) 45 if pv != 0 { fails = fails + 1 } 46 let html: *u8 = ss_readall("/tmp/ecomat_beatpage.html" as *u8, szp) 47 var hn: i64 = szp[0]; if hn < 0 { hn = 0 } 48 if el_contains(html, hn, "333" as *u8) == 0 { fails = fails + 1 } 49 if el_contains(html, hn, "gdom" as *u8) == 0 { fails = fails + 1 } 50 51 _p("beat-gate compose (measure->target->publish) ... fails=" as *u8); _fn(1, fails); _p("\n" as *u8) 52 if fails == 0 { _p("GATE nx_ecomat_beat verdict=GREEN pass=8/8 (full flywheel cycle composes on a test store, live-derive included)\n" as *u8); sys_exit(0); return 0 } 53 _p("GATE nx_ecomat_beat verdict=RED fails=" as *u8); _fn(1, fails); _p("\n" as *u8) 54 sys_exit(1) 55 return 1 56}