nx_lean_stream_ingest.nx source
↩ module page · 65 lines · 1964 B
1// nx_lean_stream_ingest.nx -- bridge nx_lean_ingest -> nx_ingest_runner.
2//
3// Output JSONL row per decl: {"source":"lean","kind":N,"name":"..."}
4//
5// genealogy_id: lean_to_qed_2026 + ingest_runner_composition
6// lineage_id: source_adapter
7
8// nx_safety_envelope:
9// intended_use: AUTO_APPLIED -- primitive-specific tuning queued
10// sil_target: SIL1
11// evidence: [bulk_applied_2026-05-16, see-file-comment-for-detail]
12// verdict: NOT_YET_EVALUATED
13
14import "nx_syscalls.nx"
15import "nx_tier.nx"
16import "nx_lean_ingest.nx"
17import "nx_ingest_runner.nx"
18
19func nx_lean_strlen(s: *u8) -> nx_size {
20 var n: nx_size = 0
21 while s[n] != 0 { n = n + 1 }
22 return n
23}
24
25func nx_lean_str_copy(dst: *u8, off: nx_size, src: *u8) -> nx_size {
26 var i: nx_size = 0
27 while src[i] != 0 {
28 dst[off + i] = src[i]
29 i = i + 1
30 }
31 return off + i
32}
33
34func nx_lean_row_build(d: *LeanDecl, out: *u8) -> nx_size {
35 let p1: *u8 = "{\"source\":\"lean\",\"kind\":" as *u8
36 var o: nx_size = nx_lean_str_copy(out, 0, p1)
37 let k: nx_int = d.kind as nx_int
38 out[o] = (0x30 + k) as u8
39 o = o + 1
40 let p2: *u8 = ",\"name\":\"" as *u8
41 o = nx_lean_str_copy(out, o, p2)
42 o = nx_lean_str_copy(out, o, d.name)
43 let p3: *u8 = "\"}" as *u8
44 o = nx_lean_str_copy(out, o, p3)
45 return o
46}
47
48func nx_lean_stream_offer_all(
49 db: *LeanDb,
50 run: *NxIngestRun,
51 row_buf: *u8
52) -> nx_int {
53 var n_emitted: nx_int = 0
54 var i: nx_int = 0
55 while i < db.n_decls {
56 let d: *LeanDecl = nx_lean_decl_at(db, i)
57 let row_len: nx_size = nx_lean_row_build(d, row_buf)
58 let key_len: nx_size = nx_lean_strlen(d.name)
59 let v: nx_int = nx_ingest_run_offer(run, d.name, key_len, row_buf, row_len)
60 if v == NX_OFFER_EMITTED { n_emitted = n_emitted + 1 }
61 if v == NX_OFFER_BUDGET_HALT { return n_emitted }
62 i = i + 1
63 }
64 return n_emitted
65}