nx_research_digest_gate.nx source
↩ module page · 104 lines · 4075 B
1// nx_research_digest_gate.nx -- end-to-end digest on a controlled corpus.
2// Proves: sources rank by relevance (irrelevant source last), each claim is
3// graded by INDEPENDENT corroboration, and a 3-mention ECHO claim scores
4// SINGLE while cross-class claims are CONFIRMED (independence > volume).
5
6import "nx_syscalls.nx"
7import "nx_bm25.nx"
8import "nx_research_corroborate.nx"
9import "nx_research_digest.nx"
10
11func _dlen(s: *u8) -> i64 {
12 var n: i64 = 0
13 while s[n] != (0 as u8) { n = n + 1 }
14 return n
15}
16
17func main() -> i64 {
18 let nsrc: i64 = 6
19 let src_ids: *i64 = sys_mmap(nsrc * 8) as *i64
20 let src_classes: *i64 = sys_mmap(nsrc * 8) as *i64
21 let src_texts: **u8 = sys_mmap(nsrc * 8) as **u8
22 let src_lens: *i64 = sys_mmap(nsrc * 8) as *i64
23
24 src_ids[0] = 1
25 src_classes[0] = 1
26 src_texts[0] = "gaussian splatting realtime radiance mesh export" as *u8
27 src_ids[1] = 2
28 src_classes[1] = 2
29 src_texts[1] = "gaussian splatting overtakes nerf speed" as *u8
30 src_ids[2] = 3
31 src_classes[2] = 5
32 src_texts[2] = "nerf gaussian instant ngp blog" as *u8
33 src_ids[3] = 4
34 src_classes[3] = 5
35 src_texts[3] = "nerf gaussian splatting blog" as *u8
36 src_ids[4] = 5
37 src_classes[4] = 3
38 src_texts[4] = "tripo single image mesh license apache" as *u8
39 src_ids[5] = 6
40 src_classes[5] = 5
41 src_texts[5] = "gaussian nerf blog" as *u8
42 var si: i64 = 0
43 while si < nsrc { src_lens[si] = _dlen(src_texts[si] as *u8); si = si + 1 }
44
45 let nclaims: i64 = 6
46 let claim_ids: *i64 = sys_mmap(nclaims * 8) as *i64
47 let claim_terms: **u8 = sys_mmap(nclaims * 8) as **u8
48 let claim_lens: *i64 = sys_mmap(nclaims * 8) as *i64
49 claim_ids[0] = 10
50 claim_terms[0] = "gaussian" as *u8
51 claim_ids[1] = 20
52 claim_terms[1] = "nerf" as *u8
53 claim_ids[2] = 30
54 claim_terms[2] = "tripo" as *u8
55 claim_ids[3] = 40
56 claim_terms[3] = "blog" as *u8
57 claim_ids[4] = 50
58 claim_terms[4] = "license" as *u8
59 claim_ids[5] = 60
60 claim_terms[5] = "deepfake" as *u8
61 var ci: i64 = 0
62 while ci < nclaims { claim_lens[ci] = _dlen(claim_terms[ci] as *u8); ci = ci + 1 }
63
64 let nterms: i64 = 2
65 let q_terms: **u8 = sys_mmap(nterms * 8) as **u8
66 let q_lens: *i64 = sys_mmap(nterms * 8) as *i64
67 q_terms[0] = "splatting" as *u8
68 q_terms[1] = "export" as *u8
69 q_lens[0] = _dlen(q_terms[0] as *u8)
70 q_lens[1] = _dlen(q_terms[1] as *u8)
71
72 let out_order: *i64 = sys_mmap(nsrc * 8) as *i64
73 let out_conf: *i64 = sys_mmap(nclaims * 8) as *i64
74 let corrob: *NxCorrob = nx_corrob_new(64)
75
76 if nx_research_digest(src_ids, src_classes, src_texts, src_lens, nsrc,
77 claim_ids, claim_terms, claim_lens, nclaims,
78 q_terms, q_lens, nterms,
79 out_order, out_conf, corrob) != 0 { return 1 }
80
81 // claim confidences
82 if out_conf[0] != NX_CORR_CONFIRMED { return 2 } // gaussian: classes {1,2,5}
83 if out_conf[1] != NX_CORR_CONFIRMED { return 3 } // nerf: {2,5}
84 if out_conf[2] != NX_CORR_SINGLE { return 4 } // tripo: {3}
85 if out_conf[3] != NX_CORR_SINGLE { return 5 } // blog: {5} only (3 echoes)
86 if out_conf[4] != NX_CORR_SINGLE { return 6 } // license: {3}
87 if out_conf[5] != NX_CORR_NONE { return 7 } // deepfake: none
88
89 // ECHO KILLER: "blog" mentioned 3x but all class 5 -> raw 3, confidence SINGLE,
90 // while cross-class "gaussian" is CONFIRMED. Independence > volume.
91 if nx_corrob_raw_count(corrob, 40) != 3 { return 8 }
92 if nx_corrob_independent_count(corrob, 40) != 1 { return 9 }
93 if nx_corrob_confidence(corrob, 10) <= nx_corrob_confidence(corrob, 40) { return 10 }
94
95 // citations for "blog" = the 3 distinct source ids that mention it
96 let cites: *i64 = sys_mmap(16 * 8) as *i64
97 if nx_corrob_cite(corrob, 40, cites, 16) != 3 { return 11 }
98
99 // ranking: idx 0 uniquely contains the discriminative term "export"
100 // (positive IDF, df=1/6), so it ranks FIRST
101 if out_order[0] != 0 { return 12 }
102
103 return 0
104}