code wiki / _hdl_build / nx_vizsla_graph.nx

nx_vizsla_graph.nx source

↩ module page · 357 lines · 14027 B

1// nx_vizsla_graph.nx -- NISHI VIZSLA: INTRO-GRAPH / WHO-KNOWS-WHOM (PRM/CRM depth, the marquee feature Clay / 2// Affinity sell as "warm intro paths"). Operator 2026-06-23: real-system depth. Models the relationship NETWORK 3// as undirected edges between people ("a knows b") on the sovereign seg_store plane (additive "edge:" CID 4// records) and answers the killer question: to reach someone you don't know directly, WHO in your network can 5// introduce you? = BFS shortest path. Computed locally; the social graph never leaves the machine (no cloud 6// graph-mining / no contact-scraping for ad targeting -- the privacy exceed). 7// link <prefix> <a> <b> <date> record an undirected edge a--b (additive, idempotent) 8// neighbors <prefix> <id> everyone directly connected to <id> 9// path <prefix> <from> <to> shortest intro path from <from> to <to>; the intermediates = introducers 10// Integer-only, deterministic. license_tier: ORIGINAL 11import "nx_syscalls.nx" 12import "nx_canon_cid.nx" 13import "nx_seg_store.nx" 14const K_MAGIC_1970: i64 = 1970 15const K_MAGIC_4096: i64 = 4096 16const K_MAGIC_2048: i64 = 2048 17const K_MAGIC_1024: i64 = 1024 18const K_MAGIC_65536: i64 = 65536 19 20func vx_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } 21func vx_p(s: *u8) -> i64 { sys_write(1, s, vx_slen(s)); return 0 } 22 23func vx_eq(a: *u8, b: *u8) -> i64 { 24 var i: i64 = 0 25 var go: i64 = 1 26 while go == 1 { if a[i] != b[i] { return 0 } if a[i] == (0 as u8) { return 1 } i = i + 1 } 27 return 0 28} 29 30func vx_dup(s: *u8) -> *u8 { 31 let n: i64 = vx_slen(s) 32 let d: *u8 = sys_mmap(n + 2) 33 var i: i64 = 0 34 while i <= n { d[i] = s[i]; i = i + 1 } 35 return d 36} 37 38// lexicographic a > b (byte compare) -- for canonical edge orientation so a--b and b--a dedup to one record 39func vx_lex_gt(a: *u8, b: *u8) -> i64 { 40 var i: i64 = 0 41 var go: i64 = 1 42 while go == 1 { 43 let ca: i64 = a[i] as i64 44 let cb: i64 = b[i] as i64 45 if ca != cb { if ca > cb { return 1 } return 0 } 46 if ca == 0 { return 0 } 47 i = i + 1 48 } 49 return 0 50} 51 52func vx_cat(dst: *u8, off: i64, s: *u8) -> i64 { 53 var i: i64 = 0 54 while s[i] != (0 as u8) { dst[off + i] = s[i]; i = i + 1 } 55 return off + i 56} 57 58func vx_catn(dst: *u8, off: i64, v: i64) -> i64 { 59 var o: i64 = off 60 var m: i64 = v 61 if m < 0 { dst[o] = 45 as u8; o = o + 1; m = 0 - m } 62 let t: *u8 = sys_mmap(28) 63 var k: i64 = 0 64 if m == 0 { t[0] = 48 as u8; k = 1 } 65 while m > 0 { t[k] = (48 + (m % 10)) as u8; m = m / 10; k = k + 1 } 66 var i: i64 = 0 67 while i < k { dst[o + i] = t[k - 1 - i]; i = i + 1 } 68 return o + k 69} 70 71func vx_kmemeq(b: *u8, off: i64, n: i64, s: *u8) -> i64 { 72 if vx_slen(s) != n { return 0 } 73 var i: i64 = 0 74 while i < n { if b[off + i] != s[i] { return 0 } i = i + 1 } 75 return 1 76} 77 78func vx_iskind(b: *u8, koff: i64, kl: i64, pfx: *u8) -> i64 { 79 let pl: i64 = vx_slen(pfx) 80 if kl <= pl { return 0 } 81 return vx_kmemeq(b, koff, pl, pfx) 82} 83 84func vx_field(rec: *u8, rl: i64, want: *u8, out: *u8, cap: i64) -> i64 { 85 if rl < 8 { return 0 } 86 let nf: i64 = ss_r32(rec, 4) 87 var off: i64 = 8 88 var fi: i64 = 0 89 while fi < nf { 90 if off + 8 > rl { return 0 } 91 let kl: i64 = ss_r32(rec, off) 92 let koff: i64 = off + 4 93 let vl: i64 = ss_r32(rec, koff + kl) 94 let voff: i64 = koff + kl + 4 95 if vx_kmemeq(rec, koff, kl, want) == 1 { 96 var t: i64 = 0 97 while t < vl { if t < cap - 1 { out[t] = rec[voff + t] } t = t + 1 } 98 if t > cap - 1 { t = cap - 1 } 99 out[t] = 0 as u8 100 return 1 101 } 102 off = voff + vl 103 fi = fi + 1 104 } 105 return 0 106} 107 108func vx_datedays(s: *u8) -> i64 { 109 let nums: *i64 = sys_mmap(8 * 4) as *i64 110 var nn: i64 = 0 111 var cur: i64 = 0 112 var indig: i64 = 0 113 var i: i64 = 0 114 var go: i64 = 1 115 while go == 1 { 116 let c: i64 = s[i] as i64 117 var isd: i64 = 0 118 if c >= 48 { if c <= 57 { isd = 1 } } 119 if isd == 1 { cur = cur * 10 + (c - 48); indig = 1 } 120 if isd == 0 { if indig == 1 { if nn < 4 { nums[nn] = cur; nn = nn + 1 } cur = 0; indig = 0 } } 121 if c == 0 { go = 0 } 122 i = i + 1 123 } 124 if nn != 3 { return 0 - 1 } 125 var y: i64 = nums[0] 126 let m: i64 = nums[1] 127 let d: i64 = nums[2] 128 if y < K_MAGIC_1970 { return 0 - 1 } 129 if m < 1 { return 0 - 1 } 130 if m > 12 { return 0 - 1 } 131 if d < 1 { return 0 - 1 } 132 if d > 31 { return 0 - 1 } 133 return 1 134} 135 136// collect edge: records -> ef[],et[] (string ids); returns count 137func vx_collect_edges(prefix: *u8, ef: *i64, et: *i64) -> i64 { 138 var n: i64 = 0 139 let segs: *i64 = sys_mmap(8 * 260) as *i64 140 let nseg: i64 = ss_manifest(prefix, segs) 141 let fa: *u8 = sys_mmap(128) 142 let fb: *u8 = sys_mmap(128) 143 var s: i64 = 0 144 while s < nseg { 145 let path: *u8 = sys_mmap(512) 146 var po: i64 = 0 147 po = vx_cat(path, po, prefix); po = vx_cat(path, po, segs[s] as *u8); po = vx_cat(path, po, ".docs" as *u8) 148 path[po] = 0 as u8 149 let szp: *i64 = sys_mmap(16) as *i64 150 let b: *u8 = ss_readall(path, szp) 151 let sz: i64 = szp[0] 152 var j: i64 = 0 153 while j + 9 <= sz { 154 let kind: i64 = b[j] 155 let kl: i64 = ss_r32(b, j + 1) 156 let koff: i64 = j + 5 157 let vl: i64 = ss_r32(b, koff + kl) 158 let voff: i64 = koff + kl + 4 159 var take: i64 = 0 160 if kind == 1 { take = vx_iskind(b, koff, kl, "edge:" as *u8) } 161 if take == 1 { 162 let rec: *u8 = (b as i64 + voff) as *u8 163 if vx_field(rec, vl, "a" as *u8, fa, 128) == 1 { 164 vx_field(rec, vl, "b" as *u8, fb, 128) 165 if n < K_MAGIC_4096 { ef[n] = vx_dup(fa) as i64; et[n] = vx_dup(fb) as i64; n = n + 1 } 166 } 167 } 168 j = voff + vl 169 } 170 s = s + 1 171 } 172 return n 173} 174 175func vx_intern(nid: *i64, nnp: *i64, s: *u8) -> i64 { 176 var i: i64 = 0 177 while i < nnp[0] { if vx_eq(nid[i] as *u8, s) == 1 { return i } i = i + 1 } 178 if nnp[0] < K_MAGIC_2048 { nid[nnp[0]] = vx_dup(s) as i64; let r: i64 = nnp[0]; nnp[0] = nnp[0] + 1; return r } 179 return 0 - 1 180} 181 182// ---------------- LINK ---------------- 183func vx_cmd_link(argc: i64, argv: *i64) -> i64 { 184 if argc < 6 { vx_p("VIZSLA-GRAPH link needs <prefix> <a> <b> <date> -- fail loud\n" as *u8); return 1 } 185 let prefix: *u8 = argv[2] as *u8 186 let a: *u8 = argv[3] as *u8 187 let b: *u8 = argv[4] as *u8 188 let date: *u8 = argv[5] as *u8 189 if vx_datedays(date) < 0 { vx_p("VIZSLA-GRAPH link: bad date (YYYY-MM-DD) -- fail loud\n" as *u8); return 1 } 190 if vx_eq(a, b) == 1 { vx_p("VIZSLA-GRAPH link: a==b refused (self-loop) -- fail loud\n" as *u8); return 1 } 191 192 // canonical edge orientation (lexicographic) so a--b and b--a dedup to one record 193 var lo: *u8 = a 194 var hi: *u8 = b 195 if vx_lex_gt(a, b) == 1 { lo = b; hi = a } 196 197 let keys: *i64 = sys_mmap(8 * 8) as *i64 198 let vals: *i64 = sys_mmap(8 * 8) as *i64 199 keys[0] = "kind" as *u8 as i64; keys[1] = "a" as *u8 as i64; keys[2] = "b" as *u8 as i64; keys[3] = "date" as *u8 as i64 200 vals[0] = "edge" as *u8 as i64; vals[1] = lo as i64; vals[2] = hi as i64; vals[3] = date as i64 201 202 let enc: *u8 = sys_mmap(K_MAGIC_2048) 203 let el: i64 = canon_encode(keys, vals, 4, enc) 204 let cid: *u8 = sys_mmap(96) 205 cid_of(enc, el, cid) 206 let kbuf: *u8 = sys_mmap(160) 207 var ko: i64 = 0 208 ko = vx_cat(kbuf, ko, "edge:" as *u8); ko = vx_cat(kbuf, ko, cid); kbuf[ko] = 0 as u8 209 210 var new: i64 = 1 211 let pp: *i64 = sys_mmap(16) as *i64 212 let ll: *i64 = sys_mmap(16) as *i64 213 if ss_get_idx(prefix, kbuf, pp, ll) == 1 { new = 0 } 214 var committed: i64 = 0 215 let segid: i64 = sys_now_us() 216 if new == 1 { 217 let wr: *i64 = ss_begin() 218 if ss_add(wr, 1, kbuf, enc, el) != 0 { vx_p("VIZSLA-GRAPH link: writer full -- fail loud\n" as *u8); return 1 } 219 if ss_commit(prefix, wr, segid) != 0 { vx_p("VIZSLA-GRAPH link: commit FAILED -- fail loud\n" as *u8); return 1 } 220 committed = 1 221 } 222 let rep: *u8 = sys_mmap(K_MAGIC_1024) 223 var o: i64 = 0 224 o = vx_cat(rep, o, "VIZSLA-GRAPH-LINK a=" as *u8); o = vx_cat(rep, o, a) 225 o = vx_cat(rep, o, " b=" as *u8); o = vx_cat(rep, o, b) 226 o = vx_cat(rep, o, " new=" as *u8); o = vx_catn(rep, o, new) 227 o = vx_cat(rep, o, " segment=" as *u8) 228 if committed == 1 { o = vx_cat(rep, o, "seg-" as *u8); o = vx_catn(rep, o, segid) } else { o = vx_cat(rep, o, "none" as *u8) } 229 o = vx_cat(rep, o, "\n" as *u8) 230 sys_write(1, rep, o) 231 return 0 232} 233 234// ---------------- NEIGHBORS ---------------- 235func vx_cmd_neighbors(argc: i64, argv: *i64) -> i64 { 236 if argc < 4 { vx_p("VIZSLA-GRAPH neighbors needs <prefix> <id> -- fail loud\n" as *u8); return 1 } 237 let prefix: *u8 = argv[2] as *u8 238 let id: *u8 = argv[3] as *u8 239 let ef: *i64 = sys_mmap(8 * K_MAGIC_4096) as *i64 240 let et: *i64 = sys_mmap(8 * K_MAGIC_4096) as *i64 241 let ne: i64 = vx_collect_edges(prefix, ef, et) 242 let seen: *i64 = sys_mmap(8 * K_MAGIC_2048) as *i64 243 var nse: i64 = 0 244 let rep: *u8 = sys_mmap(K_MAGIC_65536) 245 var o: i64 = 0 246 o = vx_cat(rep, o, "VIZSLA-GRAPH-NEIGHBORS id=" as *u8); o = vx_cat(rep, o, id); o = vx_cat(rep, o, " nodes=" as *u8) 247 var cnt: i64 = 0 248 var e: i64 = 0 249 while e < ne { 250 var other: i64 = 0 251 if vx_eq(ef[e] as *u8, id) == 1 { other = et[e] } 252 if vx_eq(et[e] as *u8, id) == 1 { other = ef[e] } 253 if other != 0 { 254 var dup: i64 = 0 255 var k: i64 = 0 256 while k < nse { if vx_eq(seen[k] as *u8, other as *u8) == 1 { dup = 1; k = nse } k = k + 1 } 257 if dup == 0 { if nse < K_MAGIC_2048 { seen[nse] = other; nse = nse + 1 } if cnt > 0 { o = vx_cat(rep, o, "," as *u8) } o = vx_cat(rep, o, other as *u8); cnt = cnt + 1 } 258 } 259 e = e + 1 260 } 261 if cnt == 0 { o = vx_cat(rep, o, "-" as *u8) } 262 o = vx_cat(rep, o, " count=" as *u8); o = vx_catn(rep, o, cnt); o = vx_cat(rep, o, "\n" as *u8) 263 sys_write(1, rep, o) 264 return 0 265} 266 267// ---------------- PATH (BFS shortest intro path) ---------------- 268func vx_cmd_path(argc: i64, argv: *i64) -> i64 { 269 if argc < 5 { vx_p("VIZSLA-GRAPH path needs <prefix> <from> <to> -- fail loud\n" as *u8); return 1 } 270 let prefix: *u8 = argv[2] as *u8 271 let from: *u8 = argv[3] as *u8 272 let to: *u8 = argv[4] as *u8 273 let ef: *i64 = sys_mmap(8 * K_MAGIC_4096) as *i64 274 let et: *i64 = sys_mmap(8 * K_MAGIC_4096) as *i64 275 let ne: i64 = vx_collect_edges(prefix, ef, et) 276 277 // intern nodes; build edge index pairs 278 let nid: *i64 = sys_mmap(8 * K_MAGIC_2048) as *i64 279 let nnp: *i64 = sys_mmap(16) as *i64 280 nnp[0] = 0 281 let eu: *i64 = sys_mmap(8 * K_MAGIC_4096) as *i64 282 let ev: *i64 = sys_mmap(8 * K_MAGIC_4096) as *i64 283 var e: i64 = 0 284 while e < ne { eu[e] = vx_intern(nid, nnp, ef[e] as *u8); ev[e] = vx_intern(nid, nnp, et[e] as *u8); e = e + 1 } 285 let si: i64 = vx_intern(nid, nnp, from) 286 let ti: i64 = vx_intern(nid, nnp, to) 287 let nn: i64 = nnp[0] 288 289 // BFS 290 let dist: *i64 = sys_mmap(8 * K_MAGIC_2048) as *i64 291 let par: *i64 = sys_mmap(8 * K_MAGIC_2048) as *i64 292 var z: i64 = 0 293 while z < nn { dist[z] = 0 - 1; par[z] = 0 - 1; z = z + 1 } 294 let q: *i64 = sys_mmap(8 * K_MAGIC_2048) as *i64 295 var qh: i64 = 0 296 var qt: i64 = 0 297 dist[si] = 0; q[qt] = si; qt = qt + 1 298 var found: i64 = 0 299 while qh < qt { 300 let u: i64 = q[qh]; qh = qh + 1 301 if u == ti { found = 1; qh = qt } 302 else { 303 var k: i64 = 0 304 while k < ne { 305 var v: i64 = 0 - 1 306 if eu[k] == u { v = ev[k] } 307 if ev[k] == u { v = eu[k] } 308 if v >= 0 { if dist[v] < 0 { dist[v] = dist[u] + 1; par[v] = u; q[qt] = v; qt = qt + 1 } } 309 k = k + 1 310 } 311 } 312 } 313 314 let rep: *u8 = sys_mmap(K_MAGIC_65536) 315 var o: i64 = 0 316 if dist[ti] < 0 { 317 o = vx_cat(rep, o, "VIZSLA-GRAPH-PATH from=" as *u8); o = vx_cat(rep, o, from) 318 o = vx_cat(rep, o, " to=" as *u8); o = vx_cat(rep, o, to) 319 o = vx_cat(rep, o, " length=-1 via=NONE path=NONE\n" as *u8) 320 sys_write(1, rep, o) 321 return 0 322 } 323 // reconstruct path ti -> si via parents, then reverse 324 let stack: *i64 = sys_mmap(8 * K_MAGIC_2048) as *i64 325 var sp: i64 = 0 326 var cur: i64 = ti 327 var go: i64 = 1 328 while go == 1 { stack[sp] = cur; sp = sp + 1; if cur == si { go = 0 } else { cur = par[cur] } } 329 let plen: i64 = dist[ti] 330 o = vx_cat(rep, o, "VIZSLA-GRAPH-PATH from=" as *u8); o = vx_cat(rep, o, from) 331 o = vx_cat(rep, o, " to=" as *u8); o = vx_cat(rep, o, to) 332 o = vx_cat(rep, o, " length=" as *u8); o = vx_catn(rep, o, plen) 333 // via = intermediates (exclude endpoints) 334 o = vx_cat(rep, o, " via=" as *u8) 335 var vc: i64 = 0 336 var i: i64 = sp - 2 337 while i >= 1 { if vc > 0 { o = vx_cat(rep, o, "," as *u8) } o = vx_cat(rep, o, nid[stack[i]] as *u8); vc = vc + 1; i = i - 1 } 338 if vc == 0 { o = vx_cat(rep, o, "-" as *u8) } 339 // full path from>..>to 340 o = vx_cat(rep, o, " path=" as *u8) 341 var p: i64 = sp - 1 342 var first: i64 = 1 343 while p >= 0 { if first == 0 { o = vx_cat(rep, o, ">" as *u8) } o = vx_cat(rep, o, nid[stack[p]] as *u8); first = 0; p = p - 1 } 344 o = vx_cat(rep, o, "\n" as *u8) 345 sys_write(1, rep, o) 346 return 0 347} 348 349func main(argc: i64, argv: *i64) -> i64 { 350 if argc < 2 { vx_p("VIZSLA-GRAPH usage: link|neighbors|path -- fail loud\n" as *u8); return 1 } 351 let cmd: *u8 = argv[1] as *u8 352 if vx_eq(cmd, "link" as *u8) == 1 { return vx_cmd_link(argc, argv) } 353 if vx_eq(cmd, "neighbors" as *u8) == 1 { return vx_cmd_neighbors(argc, argv) } 354 if vx_eq(cmd, "path" as *u8) == 1 { return vx_cmd_path(argc, argv) } 355 vx_p("VIZSLA-GRAPH unknown command (link|neighbors|path) -- fail loud\n" as *u8) 356 return 1 357}