code wiki / (root) / nx_tool_census_test.nx

nx_tool_census_test.nx source

↩ module page · 201 lines · 9906 B

1// nx_tool_census_test.nx -- KAT for bits-up tool census classifier. 2 3import "nx_syscalls.nx" 4import "nx_string_ops.nx" 5import "nx_grep.nx" 6import "nx_tool_census.nx" 7 8func main() -> i64 { 9 // ----- Allocate sample buffers ----- 10 let cap: nx_int = 256 11 let content: *u8 = sys_mmap(cap) 12 13 // ----- T1 Sealed-enum completeness ----- 14 var i: i64 = 0 15 while i < NX_TOOL_CENSUS_N { 16 if nx_tool_census_kind_is_valid(i) != 1 { return 1 + i } 17 i = i + 1 18 } 19 if nx_tool_census_kind_is_valid(0 - 1) != 0 { return 100 } 20 if nx_tool_census_kind_is_valid(NX_TOOL_CENSUS_N) != 0 { return 101 } 21 22 // ----- T2 Gate contribution mapping ----- 23 if nx_tool_census_kind_counts_toward_gate(NX_TOOL_CENSUS_TEST) != 0 { return 110 } 24 if nx_tool_census_kind_counts_toward_gate(NX_TOOL_CENSUS_OFFC) != 0 { return 111 } 25 if nx_tool_census_kind_counts_toward_gate(NX_TOOL_CENSUS_AUTO_GENERATED) != 0 { return 112 } 26 if nx_tool_census_kind_counts_toward_gate(NX_TOOL_CENSUS_HAND_WRITTEN_DECLARED) != 1 { return 113 } 27 if nx_tool_census_kind_counts_toward_gate(NX_TOOL_CENSUS_HAND_WRITTEN_UNDECLARED) != 1 { return 114 } 28 if nx_tool_census_kind_counts_toward_gate(NX_TOOL_CENSUS_NONE) != 0 { return 115 } 29 30 // ----- T3 TEST filename suffix wins ----- 31 // name = "nx_etg_test.nx" (14 bytes); content with autogen marker 32 // would still classify as TEST because suffix wins. 33 let name_test: *u8 = sys_mmap(32) 34 let bs_test: *u8 = "nx_etg_test.nx" 35 nx_str_slice_copy(bs_test, 0, 14, name_test, 32) 36 // Content with AUTO-GENERATED marker (would otherwise classify autogen). 37 let bs_autogen: *u8 = "// AUTO-GENERATED test stub" 38 nx_str_slice_copy(bs_autogen, 0, 27, content, cap) 39 let r3: i64 = nx_tool_census_classify(name_test, 14, content, 27) 40 if r3 != NX_TOOL_CENSUS_TEST { return 120 } 41 42 // ----- T4 OFFC filename prefix ----- 43 let name_offc: *u8 = sys_mmap(32) 44 let bs_offc: *u8 = "_offc_probe.nx" 45 nx_str_slice_copy(bs_offc, 0, 14, name_offc, 32) 46 let bs_canon: *u8 = "// Canonical: substrate-wide canonical X" 47 nx_str_slice_copy(bs_canon, 0, 41, content, cap) 48 let r4: i64 = nx_tool_census_classify(name_offc, 14, content, 41) 49 if r4 != NX_TOOL_CENSUS_OFFC { return 130 } 50 51 // ----- T5 AUTO_GENERATED (no test suffix, no offc prefix) ----- 52 let name_autogen: *u8 = sys_mmap(32) 53 let bs_addn: *u8 = "nx_add_42.nx" 54 nx_str_slice_copy(bs_addn, 0, 12, name_autogen, 32) 55 let bs_ag1: *u8 = "// AUTO-GENERATED from shape scalar_unary" 56 nx_str_slice_copy(bs_ag1, 0, 41, content, cap) 57 let r5: i64 = nx_tool_census_classify(name_autogen, 12, content, 41) 58 if r5 != NX_TOOL_CENSUS_AUTO_GENERATED { return 140 } 59 // Also try the lowercase + AUTOGEN variants 60 let bs_ag2: *u8 = "// auto-generated stub" 61 nx_str_slice_copy(bs_ag2, 0, 22, content, cap) 62 let r5b: i64 = nx_tool_census_classify(name_autogen, 12, content, 22) 63 if r5b != NX_TOOL_CENSUS_AUTO_GENERATED { return 141 } 64 let bs_ag3: *u8 = "// see AUTOGEN script" 65 nx_str_slice_copy(bs_ag3, 0, 21, content, cap) 66 let r5c: i64 = nx_tool_census_classify(name_autogen, 12, content, 21) 67 if r5c != NX_TOOL_CENSUS_AUTO_GENERATED { return 142 } 68 69 // ----- T6 HAND_WRITTEN_DECLARED (multiple lineage marker variants) ----- 70 let name_hand: *u8 = sys_mmap(32) 71 let bs_hand: *u8 = "nx_etg.nx" 72 nx_str_slice_copy(bs_hand, 0, 9, name_hand, 32) 73 // "Composes:" marker 74 let bs_c1: *u8 = "// Composes: nx_fnv.nx" 75 nx_str_slice_copy(bs_c1, 0, 22, content, cap) 76 let r6a: i64 = nx_tool_census_classify(name_hand, 9, content, 22) 77 if r6a != NX_TOOL_CENSUS_HAND_WRITTEN_DECLARED { return 150 } 78 // "Supersedes:" marker 79 let bs_c2: *u8 = "// Supersedes: older_X" 80 nx_str_slice_copy(bs_c2, 0, 22, content, cap) 81 let r6b: i64 = nx_tool_census_classify(name_hand, 9, content, 22) 82 if r6b != NX_TOOL_CENSUS_HAND_WRITTEN_DECLARED { return 151 } 83 // "Canonical:" marker 84 let bs_c3: *u8 = "// Canonical: the substrate root" 85 nx_str_slice_copy(bs_c3, 0, 32, content, cap) 86 let r6c: i64 = nx_tool_census_classify(name_hand, 9, content, 32) 87 if r6c != NX_TOOL_CENSUS_HAND_WRITTEN_DECLARED { return 152 } 88 // "genealogy_id:" marker 89 let bs_c4: *u8 = "// genealogy_id: hoare_1961_quicksort" 90 nx_str_slice_copy(bs_c4, 0, 37, content, cap) 91 let r6d: i64 = nx_tool_census_classify(name_hand, 9, content, 37) 92 if r6d != NX_TOOL_CENSUS_HAND_WRITTEN_DECLARED { return 153 } 93 // "Distinct from X because Y" marker -- requires BOTH tokens 94 let bs_c5: *u8 = "// Distinct from nx_raster because it uses Z-buffer" 95 nx_str_slice_copy(bs_c5, 0, 51, content, cap) 96 let r6e: i64 = nx_tool_census_classify(name_hand, 9, content, 51) 97 if r6e != NX_TOOL_CENSUS_HAND_WRITTEN_DECLARED { return 154 } 98 99 // ----- T7 HAND_WRITTEN_UNDECLARED (default) ----- 100 let bs_plain: *u8 = "// nx_widget.nx -- some primitive without lineage" 101 nx_str_slice_copy(bs_plain, 0, 49, content, cap) 102 let r7: i64 = nx_tool_census_classify(name_hand, 9, content, 49) 103 if r7 != NX_TOOL_CENSUS_HAND_WRITTEN_UNDECLARED { return 160 } 104 105 // ----- T8 Aggregator: init + accumulate + counts ----- 106 let counts_buf: *u8 = sys_mmap(128) 107 let counts: *NxToolCensusCounts = counts_buf as *NxToolCensusCounts 108 nx_tool_census_counts_init(counts) 109 if counts.n_total != 0 { return 170 } 110 if counts.n_hand_written != 0 { return 171 } 111 112 // Feed 5 synthetic samples and verify aggregation. 113 nx_tool_census_accumulate(counts, NX_TOOL_CENSUS_TEST) 114 nx_tool_census_accumulate(counts, NX_TOOL_CENSUS_OFFC) 115 nx_tool_census_accumulate(counts, NX_TOOL_CENSUS_AUTO_GENERATED) 116 nx_tool_census_accumulate(counts, NX_TOOL_CENSUS_HAND_WRITTEN_DECLARED) 117 nx_tool_census_accumulate(counts, NX_TOOL_CENSUS_HAND_WRITTEN_UNDECLARED) 118 119 if counts.n_total != 5 { return 180 } 120 if counts.n_test != 1 { return 181 } 121 if counts.n_offc != 1 { return 182 } 122 if counts.n_auto_generated != 1 { return 183 } 123 if counts.n_hand_written != 2 { return 184 } 124 if counts.n_declared != 1 { return 185 } 125 if counts.n_undeclared != 1 { return 186 } 126 127 // ----- T9 pct_declared = 50 (1 of 2 hand-written) ----- 128 if nx_tool_census_pct_declared(counts) != 50 { return 190 } 129 130 // ----- T10 pct_declared = 0 on zero hand_written (no div-by-zero) ----- 131 let counts2_buf: *u8 = sys_mmap(128) 132 let counts2: *NxToolCensusCounts = counts2_buf as *NxToolCensusCounts 133 nx_tool_census_counts_init(counts2) 134 if nx_tool_census_pct_declared(counts2) != 0 { return 200 } 135 136 // ----- T11 accumulate rejects invalid kind ----- 137 let rc_bad: i64 = nx_tool_census_accumulate(counts, 9999) 138 if rc_bad != -1 { return 210 } 139 140 // ----- T12 Ecosystem citizenship: outcome mapping ----- 141 // counts from T8: 5 total, 1 declared, 1 undeclared (50% declared) 142 if nx_tool_census_to_etg_outcome(counts) != NX_ETG_OUTCOME_CONFIRMED { return 220 } 143 144 // Build a counts struct at 0% declared -> FALSIFIED 145 let cz_buf: *u8 = sys_mmap(128) 146 let cz: *NxToolCensusCounts = cz_buf as *NxToolCensusCounts 147 nx_tool_census_counts_init(cz) 148 nx_tool_census_accumulate(cz, NX_TOOL_CENSUS_HAND_WRITTEN_UNDECLARED) 149 nx_tool_census_accumulate(cz, NX_TOOL_CENSUS_HAND_WRITTEN_UNDECLARED) 150 nx_tool_census_accumulate(cz, NX_TOOL_CENSUS_HAND_WRITTEN_UNDECLARED) 151 // 3 undeclared, 0 declared -> 0% -> FALSIFIED 152 if nx_tool_census_to_etg_outcome(cz) != NX_ETG_OUTCOME_FALSIFIED { return 221 } 153 154 // Build counts in INCONCLUSIVE band (1 of 4 declared = 25%) 155 let cmid_buf: *u8 = sys_mmap(128) 156 let cmid: *NxToolCensusCounts = cmid_buf as *NxToolCensusCounts 157 nx_tool_census_counts_init(cmid) 158 nx_tool_census_accumulate(cmid, NX_TOOL_CENSUS_HAND_WRITTEN_DECLARED) 159 nx_tool_census_accumulate(cmid, NX_TOOL_CENSUS_HAND_WRITTEN_UNDECLARED) 160 nx_tool_census_accumulate(cmid, NX_TOOL_CENSUS_HAND_WRITTEN_UNDECLARED) 161 nx_tool_census_accumulate(cmid, NX_TOOL_CENSUS_HAND_WRITTEN_UNDECLARED) 162 if nx_tool_census_to_etg_outcome(cmid) != NX_ETG_OUTCOME_INCONCLUSIVE { return 222 } 163 164 // Zero hand_written -> INCONCLUSIVE 165 let cnone_buf: *u8 = sys_mmap(128) 166 let cnone: *NxToolCensusCounts = cnone_buf as *NxToolCensusCounts 167 nx_tool_census_counts_init(cnone) 168 if nx_tool_census_to_etg_outcome(cnone) != NX_ETG_OUTCOME_INCONCLUSIVE { return 223 } 169 170 // ----- T13 nx_tool_census_attest emits valid NxEtgEntry ----- 171 let e_buf: *u8 = sys_mmap(128) 172 let e: *NxEtgEntry = e_buf as *NxEtgEntry 173 // counts from T8: 5 total, 2 hand-written, 1 declared, 1 undeclared 174 let rc_attest: i64 = nx_tool_census_attest(counts, e, 0xC0DEC0DE, 1, 20260520) 175 if rc_attest != 0 { return 230 } 176 if e.silicon_serial_hash != 0xC0DEC0DE { return 231 } 177 if e.probe_kind != NX_ETG_PROBE_AUDIT_TOOL_GENEALOGY { return 232 } 178 if e.claim_source != NX_ETG_CLAIM_PRIOR_CALIBRATION { return 233 } 179 if e.claim_value != 2 { return 234 } // n_hand_written 180 if e.measurement_value != 1 { return 235 } // n_declared 181 if e.outcome != NX_ETG_OUTCOME_CONFIRMED { return 236 } 182 if e.attestation_hash == 0 { return 237 } 183 184 // ----- T14 Attestation determinism cross-call ----- 185 let e2_buf: *u8 = sys_mmap(128) 186 let e2: *NxEtgEntry = e2_buf as *NxEtgEntry 187 nx_tool_census_attest(counts, e2, 0xC0DEC0DE, 1, 20260520) 188 if e2.attestation_hash != e.attestation_hash { return 240 } 189 190 // ----- T15 Flow signal: clear_goals ----- 191 // counts at 50% -> 1 192 if nx_tool_census_signal_clear_goals(counts) != 1 { return 250 } 193 // cz at 0% -> 0 194 if nx_tool_census_signal_clear_goals(cz) != 0 { return 251 } 195 // cmid at 25% -> 0 (below 50% threshold) 196 if nx_tool_census_signal_clear_goals(cmid) != 0 { return 252 } 197 // cnone (no hand_written) -> 0 198 if nx_tool_census_signal_clear_goals(cnone) != 0 { return 253 } 199 200 return 0 201}