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}