nx_maint_unify_test.nx source
↩ module page · 75 lines · 3765 B
1// nx_maint_unify_test.nx -- gate for R3 unify (one health language).
2//
3// Proves each kernel's verdicts map to the common severity scale, the UNIFORM
4// SAFETY guarantee (overheat / ground-fault / overload / burst all -> SAFETY
5// regardless of kernel), a dispatch liar-kill (verdict 3 -> SAFETY for
6// electrical [OVERLOAD] but DEGRADED for thermal [DEGRADED_CAPACITY]), and the
7// unified MaintResult row.
8//
9// expect_exit: 0
10//
11// license_tier: ORIGINAL
12
13import "nx_syscalls_x86_64.nx"
14import "nx_maint_unify.nx"
15
16func main() -> i64 {
17 if nx_health_is_valid(NX_HEALTH_SAFETY) != 1 { return 1 }
18 if nx_health_is_valid(NX_HEALTH_N) != 0 { return 2 }
19
20 // ---- thermal ----
21 if nx_health_from_thermal(NX_HVAC_EFFICIENT) != NX_HEALTH_OK { return 10 }
22 if nx_health_from_thermal(NX_HVAC_SHORT_CYCLING) != NX_HEALTH_DEGRADED { return 11 }
23 if nx_health_from_thermal(NX_HVAC_POOR_TRACKING) != NX_HEALTH_WATCH { return 12 }
24 if nx_health_from_thermal(NX_HVAC_IDLE) != NX_HEALTH_IDLE { return 13 }
25
26 // ---- rotating ----
27 if nx_health_from_rot(NX_ROT_HEALTHY) != NX_HEALTH_OK { return 20 }
28 if nx_health_from_rot(NX_ROT_ROUGH_WARNING) != NX_HEALTH_WATCH { return 21 }
29 if nx_health_from_rot(NX_ROT_BEARING_WEAR) != NX_HEALTH_URGENT { return 22 }
30 if nx_health_from_rot(NX_ROT_OVERHEAT) != NX_HEALTH_SAFETY { return 23 }
31
32 // ---- consumable ----
33 if nx_health_from_cons(NX_CONS_OK) != NX_HEALTH_OK { return 30 }
34 if nx_health_from_cons(NX_CONS_DUE) != NX_HEALTH_DEGRADED { return 31 }
35 if nx_health_from_cons(NX_CONS_OVERDUE) != NX_HEALTH_URGENT { return 32 }
36
37 // ---- fluid ----
38 if nx_health_from_fluid(NX_FLUID_SEALED) != NX_HEALTH_OK { return 40 }
39 if nx_health_from_fluid(NX_FLUID_SEEPAGE) != NX_HEALTH_WATCH { return 41 }
40 if nx_health_from_fluid(NX_FLUID_RAPID_LOSS) != NX_HEALTH_SAFETY { return 42 }
41 if nx_health_from_fluid(NX_FLUID_NO_PRESSURE) != NX_HEALTH_URGENT { return 43 }
42
43 // ---- electrical ----
44 if nx_health_from_elec(NX_ELEC_NOMINAL) != NX_HEALTH_OK { return 50 }
45 if nx_health_from_elec(NX_ELEC_HIGH_LOAD) != NX_HEALTH_WATCH { return 51 }
46 if nx_health_from_elec(NX_ELEC_VOLTAGE_SAG) != NX_HEALTH_DEGRADED { return 52 }
47 if nx_health_from_elec(NX_ELEC_OVERLOAD) != NX_HEALTH_SAFETY { return 53 }
48 if nx_health_from_elec(NX_ELEC_GROUND_FAULT) != NX_HEALTH_SAFETY { return 54 }
49
50 // ===== UNIFORM SAFETY GUARANTEE (the cross-kernel invariant) =====
51 if nx_maint_severity(NX_MK_ROTATING, NX_ROT_OVERHEAT) != NX_HEALTH_SAFETY { return 60 }
52 if nx_maint_severity(NX_MK_ELECTRICAL, NX_ELEC_GROUND_FAULT) != NX_HEALTH_SAFETY { return 61 }
53 if nx_maint_severity(NX_MK_ELECTRICAL, NX_ELEC_OVERLOAD) != NX_HEALTH_SAFETY { return 62 }
54 if nx_maint_severity(NX_MK_FLUID, NX_FLUID_RAPID_LOSS) != NX_HEALTH_SAFETY { return 63 }
55
56 // ===== LIAR-KILL: verdict 3 maps differently by kernel ==========
57 // 3 = OVERLOAD (electrical -> SAFETY) but = DEGRADED_CAPACITY (thermal -> DEGRADED).
58 let s_elec: i64 = nx_maint_severity(NX_MK_ELECTRICAL, 3)
59 let s_therm: i64 = nx_maint_severity(NX_MK_THERMAL, 3)
60 if s_elec != NX_HEALTH_SAFETY { return 70 }
61 if s_therm != NX_HEALTH_DEGRADED { return 71 }
62 if s_elec == s_therm { return 72 }
63
64 // ===== unified MaintResult row =================================
65 let res: *MaintResult = sys_mmap(64) as *MaintResult
66 nx_maint_result_fill(1, NX_MK_ROTATING, NX_ROT_BEARING_WEAR, 392, res)
67 if res.severity != NX_HEALTH_URGENT { return 80 }
68 if res.kernel != NX_MK_ROTATING { return 81 }
69 if res.headline != 392 { return 82 }
70
71 // ===== unknown kernel -> UNKNOWN (first-class) =================
72 if nx_maint_severity(NX_MK_NONE, 1) != NX_HEALTH_UNKNOWN { return 90 }
73
74 return 0
75}