code wiki / (root) / nx_treaty_test.nx

nx_treaty_test.nx source

↩ module page · 105 lines · 4389 B

1// nx_treaty_test.nx -- smoke for nx_treaty. 2 3import "nx_syscalls.nx" 4import "nx_tier.nx" 5import "nx_budget.nx" 6import "nx_attention_class.nx" 7import "nx_evict_journal.nx" 8import "nx_treaty.nx" 9 10func main() -> i64 { 11 // 1: state enum sealed 12 if NX_TR_N_STATES != 4 { return 1 } 13 if nx_tr_state_is_valid(NX_TR_PROPOSED) != 1 { return 2 } 14 if nx_tr_state_is_valid(NX_TR_RELEASED) != 1 { return 3 } 15 if nx_tr_state_is_valid(-1) != 0 { return 4 } 16 if nx_tr_state_is_valid(4) != 0 { return 5 } 17 18 // 2: equal-priority treaty: dev cell + dev cell, 50/50 share 19 let t1: *NxTreaty = nx_treaty_propose(1, 20 100, NX_AC_DEV, 21 200, NX_AC_DEV, 22 512, 512, 1000) 23 if (t1 as i64) == 0 { return 6 } 24 if t1.state != NX_TR_PROPOSED { return 7 } 25 if t1.a_id != 100 { return 8 } 26 if t1.ram_share_a_q10 != 512 { return 9 } 27 28 // 3: accept transitions to ACTIVE 29 if nx_treaty_accept(t1, 2000) != NX_TREATY_OK { return 10 } 30 if t1.state != NX_TR_ACTIVE { return 11 } 31 if nx_treaty_is_active(t1) != 1 { return 12 } 32 33 // 4: party_share queries 34 if nx_treaty_party_share_q10(t1, 100, NX_RES_RAM) != 512 { return 13 } 35 if nx_treaty_party_share_q10(t1, 200, NX_RES_RAM) != 512 { return 14 } 36 if nx_treaty_party_share_q10(t1, 999, NX_RES_RAM) != -1 { return 15 } 37 38 // 5: PRIORITY INVERSION rejected -- foreground game (a) cannot 39 // propose to surrender VRAM to background inference (b) 40 let t_bad: *NxTreaty = nx_treaty_propose(2, 41 100, NX_AC_INTERACTIVE_FOREGROUND_GAME, 42 200, NX_AC_BACKGROUND_INFERENCE, 43 256, 256, 1000) 44 if (t_bad as i64) != 0 { return 16 } 45 46 // 6: NMS-via-Steam treaty -- both foreground (game + video call), 47 // Steam-NMS gets 60% VRAM, our gen-img cell gets 40% 48 let nms_steam: *NxTreaty = nx_treaty_propose(3, 49 1234, NX_AC_INTERACTIVE_FOREGROUND_GAME, // Steam-NMS pid 1234 50 5678, NX_AC_VIDEO_CALL, // gen-img cell 51 512, 614, 3000) // 60% VRAM to NMS 52 if (nms_steam as i64) == 0 { return 17 } 53 nx_treaty_accept(nms_steam, 3100) 54 if nx_treaty_party_share_q10(nms_steam, 1234, NX_RES_VRAM) != 614 { return 18 } 55 if nx_treaty_party_share_q10(nms_steam, 5678, NX_RES_VRAM) != 410 { return 19 } 56 57 // 7: breach check -- pool is 12GB VRAM. NMS gets 60% = 7.2GB. 58 // NMS observed 9GB (overshoot 1280 Q10) -> breach trigger. 59 let pool: nx_size = 12000000000 60 let breach1: nx_int = nx_treaty_check_breach(nms_steam, pool, 61 9000000000, 4000000000, NX_RES_VRAM, 4000) 62 if breach1 != 1 { return 20 } 63 if nms_steam.state != NX_TR_BREACHED { return 21 } 64 if nms_steam.breach_count != 1 { return 22 } 65 if nx_treaty_is_active(nms_steam) != 0 { return 23 } 66 67 // 8: renegotiate after breach -- NMS now agrees to 50/50 68 let rc_reneg: nx_int = nx_treaty_renegotiate_shares(nms_steam, 69 512, 512, 5000) 70 if rc_reneg != NX_TREATY_OK { return 24 } 71 if nms_steam.state != NX_TR_PROPOSED { return 25 } 72 // breach_count preserved across renegotiation 73 if nms_steam.breach_count != 1 { return 26 } 74 // accept again 75 nx_treaty_accept(nms_steam, 5100) 76 if nms_steam.state != NX_TR_ACTIVE { return 27 } 77 78 // 9: within-share consumption does NOT breach 79 let breach2: nx_int = nx_treaty_check_breach(nms_steam, pool, 80 5500000000, 5500000000, NX_RES_VRAM, 6000) 81 if breach2 != 0 { return 28 } 82 if nms_steam.state != NX_TR_ACTIVE { return 29 } 83 84 // 10: release dissolves the treaty 85 nx_treaty_release(nms_steam, 7000) 86 if nms_steam.state != NX_TR_RELEASED { return 30 } 87 if nx_treaty_is_active(nms_steam) != 0 { return 31 } 88 89 // 11: renegotiate on RELEASED treaty rejected 90 let rc_dead: nx_int = nx_treaty_renegotiate_shares(nms_steam, 91 500, 500, 8000) 92 if rc_dead != NX_TREATY_ERR_RELEASED { return 32 } 93 94 // 12: invalid shares (>1024 or <0) rejected 95 let rc_inv: nx_int = nx_treaty_renegotiate_shares(t1, 2000, 0, 9000) 96 if rc_inv != NX_TREATY_ERR_SHARES_INVALID { return 33 } 97 let rc_neg: nx_int = nx_treaty_renegotiate_shares(t1, -1, 0, 9000) 98 if rc_neg != NX_TREATY_ERR_SHARES_INVALID { return 34 } 99 100 // 13: accept on already-ACTIVE rejected 101 let rc_re_accept: nx_int = nx_treaty_accept(t1, 10000) 102 if rc_re_accept != NX_TREATY_ERR_NOT_PROPOSED { return 35 } 103 104 return 0 105}