code wiki / (root) / nx_maint_unify_test.nx

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}