code wiki / _hdl_build / nx_artloop.nx
nx_artloop.nx
buildroot/runtime/_hdl_build/nx_artloop.nx
about
nx_artloop.nx -- AL1: THE RECURSIVE ART-LOOP BEAT (operator 2026-08-09: "i want nishi ecosystem to
gain these functionalities as a recursive learning setup so that it can keep growing" + "you need
to have benchmarks and oracles so you arent just generating junk").
One beat = one unattended cycle of the emit-score-look loop, clock-plane scheduled:
fork the DEPLOYED engine `sweep` (6 procedurally-derived material families rendered, scored,
contact-sheeted to the served site by the engine itself), then bank the cycle APPEND-ONLY.
ORACLES -- junk cannot pass, and a drifting instrument cannot silently bless anything:
O1 INSTRUMENT SANITY: the caricature controls must hold their banked bands EVERY cycle --
flat_control < 300 (TOY) and squares_control in [598,658] (banked 628); plus a LIVE benchmark
re-score: breeders1 must hold [779,799] (banked 789). Any drift => the CRITIC moved => RED,
and no other number this cycle is believable (stale-instrument law).
O2 JUNK FLOOR: the shipped-default variant must clear squares_control + 120. A frame that cannot
beat a literal random-squares mosaic by a real margin is junk => RED.
O3 RATCHET: best= is the historical max of the default variant's STRUCTURE score (the composite
is a structure floor, NEVER quality -- caricature conviction 2026-08-09); dropping below the
banked best is a regression => RED. The record still lands FIRST: report, never hide.
JOURNAL: knowledge/status/artloop.jrnl, append-only via full-rewrite to .tmp + sys_renameat
(atomic -- a crash never truncates history). One line per cycle, RAW sweep receipt included
(bank the raw record; derived analysis is downstream's job). PICKS stay judged by eyes (AL2).
license_tier: ORIGINAL expect_exit: 0
dependencies 2 imports · 0 importers
imports: nx_syscalls.nxnx_tool_run.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| 24 | const AL_CAP: i64 = 65536 |
| 25 | const AL_JCAP: i64 = 2097152 |
functions
| 27 | func aw(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } |
| 28 | func acat(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 } called by 1: main |
| 29 | func anum(o: *u8, at: i64, v: i64) -> i64 |
| 39 | func apn(v: i64) -> i64 { let b: *u8 = sys_mmap(32); let e: i64 = anum(b,0,v); sys_write(1,b,e); return 0 } |
| 42 | func afind(hay: *u8, n: i64, from: i64, needle: *u8) -> i64 |
| 56 | func aint(b: *u8, pos: i64, n: i64) -> i64 |
| 69 | func ascore(art: *u8) -> i64 |
| 85 | func main() -> i64 |