code wiki / _hdl_build / nx_caretaker2_test.nx

nx_caretaker2_test.nx source

↩ module page · 43 lines · 3000 B

1// nx_caretaker2_test.nx -- the Caretaker's M2 upgrade (the growth loop's next pick): whole-ecosystem 2// prune PLAN, an ecosystem HEALTH metric, and REVERSIBILITY. Proves the gardener grew from one-cap 3// decisions to planning the whole garden and raising its health, reversibly. Exit 0 if all hold. 4// license_tier: ORIGINAL 5 6import "nx_caretaker.nx" 7import "nx_syscalls.nx" 8 9func ct_puts(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } sys_write(1, s, n); return 0 } 10func ct_num(v: i64) -> i64 { let bb: *u8 = sys_mmap(28); var m: i64=v; if m<0 {m=0-m}; let t: *u8 = sys_mmap(28); var k: i64=0; if m==0 {t[0]=48;k=1}; while m>0 {t[k]=48+(m%10); m=m/10; k=k+1}; var i: i64=0; while i<k {bb[i]=t[k-1-i]; i=i+1}; sys_write(1, bb, k); return 0 } 11 12func main() -> i64 { 13 ct_puts("=== CARETAKER M2: whole-garden prune plan + health + reversibility ===\n" as *u8) 14 let N: i64 = 5 15 let st: *i64 = sys_mmap(8*8) as *i64; let lb: *i64 = sys_mmap(8*8) as *i64; let cv: *i64 = sys_mmap(8*8) as *i64 16 st[0]=CARE_ACTIVE; lb[0]=1; cv[0]=0 17 st[1]=CARE_DUPLICATE; lb[1]=0; cv[1]=1 // safe prune 18 st[2]=CARE_DUPLICATE; lb[2]=1; cv[2]=1 // load-bearing -> keep 19 st[3]=CARE_SUPERSEDED; lb[3]=0; cv[3]=0 // uncovered -> keep 20 st[4]=CARE_SUPERSEDED; lb[4]=0; cv[4]=1 // safe prune 21 22 let plan: *i64 = sys_mmap(8*8) as *i64 23 let retires: i64 = care_plan(N, st, lb, cv, plan) 24 let funct: i64 = care_functionality(N, st, lb, cv) 25 let sprawl_before: i64 = care_sprawl(N, st) 26 let sprawl_after: i64 = sprawl_before - retires 27 let h_before: i64 = care_health(funct, sprawl_before) 28 let h_after: i64 = care_health(funct, sprawl_after) 29 ct_puts(" prune plan: " as *u8); ct_num(retires); ct_puts(" soft-retires; functionality=" as *u8); ct_num(funct); ct_puts("\n" as *u8) 30 ct_puts(" ecosystem health: " as *u8); ct_num(h_before); ct_puts(" -> " as *u8); ct_num(h_after); ct_puts(" (per-1000; higher=healthier)\n" as *u8) 31 ct_puts(" reversibility: restore a soft-retired -> " as *u8); ct_num(care_restore(CARE_SOFT_RETIRE)); ct_puts(" (0=KEEP/active again)\n" as *u8) 32 33 let r: *i64 = sys_mmap(8*8) as *i64 34 r[0] = 0; if retires == 2 { r[0] = 1 } // whole-garden plan: 2 safe prunes 35 r[1] = 0; if h_after > h_before { r[1] = 1 } // health improved 36 r[2] = 0; if care_restore(CARE_SOFT_RETIRE) == CARE_KEEP { r[2] = 1 } // reversible (additive-only) 37 r[3] = 0; if plan[2] == CARE_KEEP_LOADBEARING { if plan[3] == CARE_KEEP_UNCOVERED { r[3] = 1 } } // plan still protects 38 var pass: i64 = 0; var i: i64 = 0 39 while i < 4 { pass = pass + r[i]; i = i + 1 } 40 ct_puts("----\n passed " as *u8); ct_num(pass); ct_puts("/4\n" as *u8) 41 if pass == 4 { ct_puts(" CARETAKER LEVELED UP (M1->M2): plans the whole garden, raises ecosystem health, fully reversible. No regression.\n" as *u8); sys_exit(0); return 0 } 42 ct_puts(" FAIL\n" as *u8); sys_exit(1); return 1 43}