code wiki / _hdl_build / nx_lifecycle_gate.nx

nx_lifecycle_gate.nx source

↩ module page · 75 lines · 4820 B

1// nx_lifecycle_gate.nx -- GATE: the wear/repair/ETERNAL lifecycle twin on the refrigerator. Parts carry wear-life (days), 2// part cost, labor cost, replaceable: 0 Compressor(5475d) 1 DoorSeal(1825d) 2 ControlBoard(3650d) 3 SteelShell(10950d). 3// T1 ETERNAL -- all parts replaceable -> the fridge is eternal (swap each as it wears, forever). 4// T2 LIMITED -- make the shell non-replaceable -> not eternal; system life capped at the shell's 10950 days. 5// T3 REPLACE-DAY-- compressor labor($80) > part($45) -> replace at wear-out (X=5475d); a cheap-labor part -> replace early at 80%. 6// T4 EVOLVING -- replacing the control board with a better one each cycle: cap 100 -> 200 over 4 cycles. 7// T5 MAINT-COST -- over a 30-year (10950d) horizon the compressor is replaced 2x = 25000c of parts+labor. 8// T6 NEVER-BRICK-- deterministic. 9// GREEN iff all. Sovereign nx_cc->nxasm. expect_exit: 0 license_tier: ORIGINAL 10import "nx_lifecycle.nx" 11import "nx_syscalls.nx" 12 13func w(s: *u8) -> i64 { var n: i64=0; while s[n]!=(0 as u8){n=n+1} sys_write(1,s,n); return 0 } 14func wn(v: i64) -> i64 { var m: i64=v; if m<0{w("-" as *u8);m=0-m} let t:*u8=sys_mmap(24); var k:i64=0; if m==0{t[0]=48 as u8;k=1} while m>0{t[k]=(48+(m%10)) as u8;m=m/10;k=k+1} var i:i64=0; let o:*u8=sys_mmap(24); while i<k{o[i]=t[k-1-i];i=i+1} sys_write(1,o,k); return 0 } 15 16func main() -> i64 { 17 w("=== nx_lifecycle_gate: wear/repair/ETERNAL lifecycle twin (refrigerator) ===\n" as *u8) 18 var pass: i64 = 0; var total: i64 = 0 19 let n: i64 = 4 20 let nm: *i64=sys_mmap(8*8) as *i64 21 let life: *i64=sys_mmap(8*8) as *i64 22 let part: *i64=sys_mmap(8*8) as *i64 23 let labor: *i64=sys_mmap(8*8) as *i64 24 let repl: *i64=sys_mmap(8*8) as *i64 25 nm[0]="Compressor" as *u8 as i64; life[0]=5475; part[0]=4500; labor[0]=8000; repl[0]=1 26 nm[1]="DoorSeal" as *u8 as i64; life[1]=1825; part[1]=1000; labor[1]=2000; repl[1]=1 27 nm[2]="ControlBoard" as *u8 as i64; life[2]=3650; part[2]=205; labor[2]=3000; repl[2]=1 28 nm[3]="SteelShell" as *u8 as i64; life[3]=10950; part[3]=3000; labor[3]=20000; repl[3]=1 29 30 // emit per-part lifecycle 31 w(" --- LIFECYCLE (wear-life / recommended replace-day) ---\n" as *u8) 32 var i: i64 = 0 33 while i < n { 34 w(" " as *u8); w(nm[i] as *u8); w(" life=" as *u8); wn(life[i]); w("d replace@" as *u8); wn(lc_replace_day(life[i], part[i], labor[i])); w("d\n" as *u8) 35 i = i + 1 36 } 37 38 // T1 eternal 39 let et: i64 = lc_is_eternal(repl, n) 40 total=total+1; if et==1 { pass=pass+1; w(" [PASS] " as *u8) } else { w(" [FAIL] " as *u8) } 41 w("T1 ETERNAL: all parts replaceable -> eternal=" as *u8); wn(et); w(" (swap each as it wears, forever)\n" as *u8) 42 43 // T2 limited 44 repl[3] = 0 45 let et2: i64 = lc_is_eternal(repl, n) 46 let cap_life: i64 = lc_bottleneck_life(life, repl, n) 47 repl[3] = 1 48 total=total+1; if et2==0 { if cap_life==10950 { pass=pass+1; w(" [PASS] " as *u8) } else { w(" [FAIL] " as *u8) } } else { w(" [FAIL] " as *u8) } 49 w("T2 LIMITED: shell non-replaceable -> eternal=" as *u8); wn(et2); w(" system life capped at " as *u8); wn(cap_life); w("d\n" as *u8) 50 51 // T3 replace-day 52 let rd: i64 = lc_replace_day(life[0], part[0], labor[0]) 53 let rd_cheap: i64 = lc_replace_day(1000, 5000, 500) 54 total=total+1; if rd==5475 { if rd_cheap==800 { pass=pass+1; w(" [PASS] " as *u8) } else { w(" [FAIL] " as *u8) } } else { w(" [FAIL] " as *u8) } 55 w("T3 REPLACE-DAY: compressor (labor>part) @" as *u8); wn(rd); w("d (wear-out); cheap-labor part @" as *u8); wn(rd_cheap); w("d (proactive 80%)\n" as *u8) 56 57 // T4 evolving 58 let cap: i64 = lc_evolving_cap(100, 25, 4) 59 total=total+1; if cap==200 { pass=pass+1; w(" [PASS] " as *u8) } else { w(" [FAIL] " as *u8) } 60 w("T4 EVOLVING: control board replaced with better parts, capability 100 -> " as *u8); wn(cap); w(" over 4 cycles\n" as *u8) 61 62 // T5 maintenance cost 63 let mc: i64 = lc_maint_cost(part[0], labor[0], 10950, life[0]) 64 total=total+1; if mc==25000 { pass=pass+1; w(" [PASS] " as *u8) } else { w(" [FAIL] " as *u8) } 65 w("T5 MAINT-COST: compressor over 30y = " as *u8); wn(mc); w("c (2 replacements x parts+labor)\n" as *u8) 66 67 // T6 never-brick 68 let a: i64 = lc_maint_cost(part[0], labor[0], 10950, life[0]) 69 total=total+1; if a==mc { pass=pass+1; w(" [PASS] " as *u8) } else { w(" [FAIL] " as *u8) } 70 w("T6 never-brick: deterministic (" as *u8); wn(a); w("==" as *u8); wn(mc); w(")\n" as *u8) 71 72 w("\n=== nx_lifecycle_gate " as *u8); wn(pass); w("/" as *u8); wn(total) 73 if pass == total { w(" GREEN (lifecycle twin: eternal / evolving / limited regimes, wear-life + labor-vs-part replace timing, maintenance cost)\n" as *u8); sys_exit(0); return 0 } 74 w(" RED\n" as *u8); sys_exit(1); return 1 75}