code wiki / _hdl_build / nx_evidence_gate.nx
nx_evidence_gate.nx source
↩ module page · 110 lines · 5761 B
1// nx_evidence_gate.nx -- GATE for graded evidence admission. Every tooth carries its OPPOSITE,
2// because the failure this organ exists to prevent is evidence that LOOKS like corroboration.
3// Verdict emission inherits nx_gate_verdict (D001). license_tier: ORIGINAL expect_exit: 0
4import "nx_syscalls.nx"
5import "nx_evidence.nx"
6import "nx_gate_verdict.nx"
7
8const EVG_BUF: i64 = 8192
9const EVG_IC_GOV: i64 = 1
10const EVG_IC_VENDOR: i64 = 2
11const EVG_IC_CONSUMER: i64 = 3
12const EVG_REL_OK: i64 = 2
13const EVG_CRED_OK: i64 = 2
14const EVG_REL_CANNOT_JUDGE: i64 = 6
15const EVG_REL_INVALID: i64 = 9
16
17// build a plane row without relying on escape handling in string literals
18func evg_row(buf: *u8, o: i64, id: *u8, class: *u8, ic: i64, rel: i64, cred: i64, party: i64, method: i64) -> i64 {
19 var p: i64 = o
20 p = lc_lit(buf, p, id)
21 buf[p] = 9 as u8; p = p + 1
22 p = lc_lit(buf, p, class)
23 buf[p] = 9 as u8; p = p + 1
24 p = lc_num(buf, p, ic)
25 buf[p] = 9 as u8; p = p + 1
26 p = lc_num(buf, p, rel)
27 buf[p] = 9 as u8; p = p + 1
28 p = lc_num(buf, p, cred)
29 buf[p] = 9 as u8; p = p + 1
30 p = lc_num(buf, p, party)
31 buf[p] = 9 as u8; p = p + 1
32 p = lc_num(buf, p, method)
33 buf[p] = 9 as u8; p = p + 1
34 p = lc_lit(buf, p, "https://example.gov/x" as *u8)
35 buf[p] = 9 as u8; p = p + 1
36 p = lc_lit(buf, p, "a claim" as *u8)
37 buf[p] = 10 as u8; p = p + 1
38 return p
39}
40
41func evg_chk(name: *u8, got: i64, want: i64, ctr: *i64) -> i64 {
42 ctr[1] = ctr[1] + 1
43 if got == want { ctr[0] = ctr[0] + 1; sys_write(1, " PASS " as *u8, 7) } else { sys_write(1, " FAIL " as *u8, 7) }
44 var n: i64 = 0
45 while name[n] != (0 as u8) { n = n + 1 }
46 sys_write(1, name, n)
47 sys_write(1, "\n" as *u8, 1)
48 return 0
49}
50
51func main(argc: i64, argv: *i64) -> i64 {
52 let ctr: *i64 = gv_ctr()
53 ctr[0] = 0
54 ctr[1] = 0
55 let scratch: *u8 = sys_mmap(SP_FLDBUF)
56 let k: *i64 = sys_mmap(64) as *i64
57 let DEM: *u8 = "demand" as *u8
58
59 // T1 TWO DISTINCT incentive classes, both actionable -> CORROBORATED, counts as 2
60 let b1: *u8 = sys_mmap(EVG_BUF)
61 var n1: i64 = evg_row(b1, 0, "d1" as *u8, DEM, EVG_IC_GOV, EVG_REL_OK, EVG_CRED_OK, SG_PRIMARY, SG_M_MEASURED)
62 n1 = evg_row(b1, n1, "d2" as *u8, DEM, EVG_IC_CONSUMER, EVG_REL_OK, EVG_CRED_OK, SG_PRIMARY, SG_M_MEASURED)
63 evg_chk("two DISTINCT incentive classes -> corroborated" as *u8, ev_admit(b1, n1, DEM, scratch, k), 2, ctr)
64 evg_chk(" ... and counts_as = 2" as *u8, ev_count(b1, n1, DEM, scratch), 2, ctr)
65
66 // T2 ★THE ECHO TOOTH -- same two rows, SAME incentive class. Still 2 admitted, but ZERO counted.
67 // One voice repeated is indistinguishable from no voice for a decision.
68 let b2: *u8 = sys_mmap(EVG_BUF)
69 var n2: i64 = evg_row(b2, 0, "e1" as *u8, DEM, EVG_IC_GOV, EVG_REL_OK, EVG_CRED_OK, SG_PRIMARY, SG_M_MEASURED)
70 n2 = evg_row(b2, n2, "e2" as *u8, DEM, EVG_IC_GOV, EVG_REL_OK, EVG_CRED_OK, SG_PRIMARY, SG_M_MEASURED)
71 evg_chk("same incentive class -> still 2 ADMITTED (grading unaffected)" as *u8, ev_admit(b2, n2, DEM, scratch, k), 2, ctr)
72 evg_chk(" ... but counts_as = 0 (ECHO, not corroboration)" as *u8, ev_count(b2, n2, DEM, scratch), 0, ctr)
73
74 // T3 Admiralty F reliability = honest cannot-judge -> NEVER actionable, owes a fetch-task
75 let b3: *u8 = sys_mmap(EVG_BUF)
76 let n3: i64 = evg_row(b3, 0, "u1" as *u8, DEM, EVG_IC_GOV, EVG_REL_CANNOT_JUDGE, EVG_CRED_OK, SG_PRIMARY, SG_M_MEASURED)
77 ev_admit(b3, n3, DEM, scratch, k)
78 evg_chk("reliability F -> 0 admitted" as *u8, k[1], 0, ctr)
79 evg_chk(" ... counted as unactionable-owes-fetch, not silently dropped" as *u8, k[2], 1, ctr)
80
81 // T4 out-of-range grades are a DEFECT, not a default
82 let b4: *u8 = sys_mmap(EVG_BUF)
83 let n4: i64 = evg_row(b4, 0, "i1" as *u8, DEM, EVG_IC_GOV, EVG_REL_INVALID, EVG_CRED_OK, SG_PRIMARY, SG_M_MEASURED)
84 ev_admit(b4, n4, DEM, scratch, k)
85 evg_chk("invalid grade -> counted INVALID, never admitted" as *u8, k[3], 1, ctr)
86
87 // T5 ★AN UNACTIONABLE ROW MUST NOT BUY INDEPENDENCE IT DID NOT EARN. One admitted (gov) plus one
88 // unactionable (vendor) is still ONE voice. Without this the cheapest way to fake corroboration
89 // would be to add a source too weak to judge.
90 let b5: *u8 = sys_mmap(EVG_BUF)
91 var n5: i64 = evg_row(b5, 0, "a1" as *u8, DEM, EVG_IC_GOV, EVG_REL_OK, EVG_CRED_OK, SG_PRIMARY, SG_M_MEASURED)
92 n5 = evg_row(b5, n5, "u2" as *u8, DEM, EVG_IC_VENDOR, EVG_REL_CANNOT_JUDGE, EVG_CRED_OK, SG_PRIMARY, SG_M_MEASURED)
93 ev_admit(b5, n5, DEM, scratch, k)
94 evg_chk("unactionable row does NOT add a distinct class" as *u8, k[4], 1, ctr)
95 evg_chk(" ... so the set stays an ECHO and counts 0" as *u8, ev_count(b5, n5, DEM, scratch), 0, ctr)
96
97 // T6 CLASS FILTER: failure-mode evidence is not demand evidence. A CPSC recall proves the
98 // category breaks, never that anyone will buy. Conflating them was the original defect.
99 let b6: *u8 = sys_mmap(EVG_BUF)
100 var n6: i64 = evg_row(b6, 0, "f1" as *u8, "failure" as *u8, EVG_IC_GOV, EVG_REL_OK, EVG_CRED_OK, SG_PRIMARY, SG_M_MEASURED)
101 n6 = evg_row(b6, n6, "f2" as *u8, "failure" as *u8, EVG_IC_CONSUMER, EVG_REL_OK, EVG_CRED_OK, SG_PRIMARY, SG_M_MEASURED)
102 ev_admit(b6, n6, DEM, scratch, k)
103 evg_chk("failure-class rows do NOT count as demand evidence" as *u8, k[0], 0, ctr)
104 ev_admit(b6, n6, "failure" as *u8, scratch, k)
105 evg_chk(" ... but DO count under their own class (OPPOSITE)" as *u8, k[1], 2, ctr)
106
107 let rc: i64 = gv_verdict("EVIDENCE-GATE" as *u8, ctr, "admission is valid + actionable + INDEPENDENT; an echo counts as zero; an unactionable source cannot buy corroboration; failure-mode evidence is not demand evidence" as *u8)
108 sys_exit(rc)
109 return rc
110}