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}