code wiki / (root) / nx_share.nx

nx_share.nx source

↩ module page · 303 lines · 14366 B

1// nx_share.nx -- SHARING ring of the Relationship OS. Operator 2026-07-09: "share jobs or resources or all that 2// ... how a shared item can be stored and used and grow that persons opportunities." 3// SHARE-ITEM : a typed shared item -- job | resource | intro -- from one person in the graph to another, 4// PERSISTED on the sovereign append-only seg_store ("shr:"+cid canon records: itype,title,from,to, 5// note,reqs). Stored = never lost, tamper-evident, on your hardware. 6// SHARE-FIT : the GROWTH wire -- a shared JOB carries its requirement skill-csv; on receipt the recipient's 7// profile runs through the career matcher (nx_career match_score + skill_gap), so the share lands 8// WITH "your match: N/100" + the concrete gap plan. A share is not a link; it is a scored 9// opportunity + what to do about it. 10// SHARE-USE : the usage lifecycle (seen -> used -> outcome), additive "usg:" records -- what happened to the 11// share is part of the history. 12// SHARE-ATTR : warm-channel attribution -- per sharer: shared vs used counts -> strength permil. Measures WHOSE 13// shares actually move you (the nx_vizsla_recruiter warm-beats-cold doctrine, quantified). 14// Composes nx_career (matcher) + canon_cid + seg_store. Argless = selftest gate. license_tier: ORIGINAL expect_exit: 0 15import "nx_career.nx" 16import "nx_canon_cid.nx" 17import "nx_seg_store.nx" 18const K_MAGIC_4096: i64 = 4096 19const K_MAGIC_2048: i64 = 2048 20 21func sh_kmemeq(b: *u8, off: i64, n: i64, s: *u8) -> i64 { 22 if slen(s) != n { return 0 } 23 var i: i64 = 0 24 while i < n { if b[off + i] != s[i] { return 0 } i = i + 1 } 25 return 1 26} 27func sh_iskind(b: *u8, koff: i64, kl: i64, pfx: *u8) -> i64 { 28 if kl <= 4 { return 0 } 29 return sh_kmemeq(b, koff, 4, pfx) 30} 31func sh_field(rec: *u8, rl: i64, want: *u8, out: *u8, cap: i64) -> i64 { 32 if rl < 8 { return 0 } 33 let nf: i64 = ss_r32(rec, 4) 34 var off: i64 = 8 35 var fi: i64 = 0 36 while fi < nf { 37 if off + 8 > rl { return 0 } 38 let kl: i64 = ss_r32(rec, off) 39 let koff: i64 = off + 4 40 let vl: i64 = ss_r32(rec, koff + kl) 41 let voff: i64 = koff + kl + 4 42 if sh_kmemeq(rec, koff, kl, want) == 1 { 43 var t: i64 = 0 44 while t < vl { if t < cap - 1 { out[t] = rec[voff + t] } t = t + 1 } 45 if t > cap - 1 { t = cap - 1 } 46 out[t] = 0 as u8 47 return 1 48 } 49 off = voff + vl 50 fi = fi + 1 51 } 52 return 0 53} 54func sh_itype_ok(t: *u8) -> i64 { 55 if seq(t, "job" as *u8) == 1 { return 1 } 56 if seq(t, "resource" as *u8) == 1 { return 1 } 57 if seq(t, "intro" as *u8) == 1 { return 1 } 58 return 0 59} 60func sh_status_ok(s: *u8) -> i64 { 61 if seq(s, "seen" as *u8) == 1 { return 1 } 62 if seq(s, "used" as *u8) == 1 { return 1 } 63 if seq(s, "outcome" as *u8) == 1 { return 1 } 64 return 0 65} 66// save a share; a = [itype, title, from, to, note, reqs-or-empty]. VALIDATED (unknown itype = -1, nothing added) 67func sh_save(w: *i64, a: *i64) -> i64 { 68 if sh_itype_ok(a[0] as *u8) == 0 { p("SHARE-ITEM unknown type -- fail loud\n" as *u8); return 0 - 1 } 69 let keys: *i64 = sys_mmap(8 * 8) as *i64 70 let vals: *i64 = sys_mmap(8 * 8) as *i64 71 keys[0]="kind" as *u8 as i64; keys[1]="itype" as *u8 as i64; keys[2]="title" as *u8 as i64 72 keys[3]="from" as *u8 as i64; keys[4]="to" as *u8 as i64; keys[5]="note" as *u8 as i64; keys[6]="reqs" as *u8 as i64 73 vals[0]="shr" as *u8 as i64; vals[1]=a[0]; vals[2]=a[1]; vals[3]=a[2]; vals[4]=a[3]; vals[5]=a[4]; vals[6]=a[5] 74 let enc: *u8 = sys_mmap(K_MAGIC_4096) 75 let el: i64 = canon_encode(keys, vals, 7, enc) 76 let cid: *u8 = sys_mmap(96) 77 cid_of(enc, el, cid) 78 let key: *u8 = sys_mmap(128) 79 var ko: i64 = 0 80 ko = ss_cat(key, ko, "shr:" as *u8) 81 ko = ss_cat(key, ko, cid) 82 key[ko] = 0 as u8 83 return ss_add(w, 1, key, enc, el) 84} 85// record what happened to a share (join key = title + to). VALIDATED status. 86func sh_use(w: *i64, title: *u8, to: *u8, status: *u8) -> i64 { 87 if sh_status_ok(status) == 0 { p("SHARE-USE unknown status -- fail loud\n" as *u8); return 0 - 1 } 88 let keys: *i64 = sys_mmap(8 * 8) as *i64 89 let vals: *i64 = sys_mmap(8 * 8) as *i64 90 keys[0]="kind" as *u8 as i64; keys[1]="title" as *u8 as i64; keys[2]="to" as *u8 as i64; keys[3]="status" as *u8 as i64 91 vals[0]="usg" as *u8 as i64; vals[1]=title as i64; vals[2]=to as i64; vals[3]=status as i64 92 let enc: *u8 = sys_mmap(K_MAGIC_2048) 93 let el: i64 = canon_encode(keys, vals, 4, enc) 94 let cid: *u8 = sys_mmap(96) 95 cid_of(enc, el, cid) 96 let key: *u8 = sys_mmap(128) 97 var ko: i64 = 0 98 ko = ss_cat(key, ko, "usg:" as *u8) 99 ko = ss_cat(key, ko, cid) 100 key[ko] = 0 as u8 101 return ss_add(w, 1, key, enc, el) 102} 103// the recipient's inbox: every share to `person`, each JOB scored against `profile` ON RECEIPT (fitp[0] = last fit, 104// gapp[0] = last gap count -- the gate's oracles). returns item count. 105func sh_inbox(prefix: *u8, person: *u8, profile: *u8, fitp: *i64, gapp: *i64) -> i64 { 106 let segp: *i64 = sys_mmap(16) as *i64 107 let ns: i64 = ss_manifest_dyn(prefix, segp) // uncapped: sees the WHOLE store 108 let segs: *i64 = segp[0] as *i64 109 let f1: *u8 = sys_mmap(128) 110 let f2: *u8 = sys_mmap(256) 111 let f3: *u8 = sys_mmap(256) 112 let f4: *u8 = sys_mmap(256) 113 let f5: *u8 = sys_mmap(512) 114 let f6: *u8 = sys_mmap(512) 115 var cnt: i64 = 0 116 var s: i64 = 0 117 while s < ns { 118 let path: *u8 = sys_mmap(512) 119 var po: i64 = 0 120 po = ss_cat(path, po, prefix) 121 po = ss_cat(path, po, segs[s] as *u8) 122 po = ss_cat(path, po, ".docs" as *u8) 123 path[po] = 0 as u8 124 let szp: *i64 = sys_mmap(16) as *i64 125 let b: *u8 = ss_readall(path, szp) 126 let sz: i64 = szp[0] 127 var j: i64 = 0 128 while j + 9 <= sz { 129 let kl: i64 = ss_r32(b, j + 1) 130 let koff: i64 = j + 5 131 let vl: i64 = ss_r32(b, koff + kl) 132 let voff: i64 = koff + kl + 4 133 if b[j] == 1 { 134 if sh_iskind(b, koff, kl, "shr:" as *u8) == 1 { 135 let rec: *u8 = (b as i64 + voff) as *u8 136 sh_field(rec, vl, "to" as *u8, f4, 256) 137 if seq(f4, person) == 1 { 138 sh_field(rec, vl, "itype" as *u8, f1, 128) 139 sh_field(rec, vl, "title" as *u8, f2, 256) 140 sh_field(rec, vl, "from" as *u8, f3, 256) 141 sh_field(rec, vl, "note" as *u8, f5, 512) 142 sh_field(rec, vl, "reqs" as *u8, f6, 512) 143 cnt = cnt + 1 144 p(" SHARE-ITEM " as *u8); p(f1); p(" from=" as *u8); p(f3); p(" title=" as *u8); p(f2); p(" note=" as *u8); p(f5); p("\n" as *u8) 145 if seq(f1, "job" as *u8) == 1 { 146 if f6[0] != (0 as u8) { 147 // SHARE-FIT: score the shared job against the recipient's profile, gap plan included 148 let nb: *u8 = sys_mmap(64 * 16) 149 let nb2: *u8 = sys_mmap(64 * 16) 150 let hn: *i64 = sys_mmap(8 * 16) as *i64 151 let hl: *i64 = sys_mmap(8 * 16) as *i64 152 let rn: *i64 = sys_mmap(8 * 16) as *i64 153 let rl: *i64 = sys_mmap(8 * 16) as *i64 154 let hc: i64 = skills_parse(profile, hn, hl, 16, nb) 155 let rc: i64 = skills_parse(f6, rn, rl, 16, nb2) 156 let fit: i64 = match_score(hn, hl, hc, rn, rl, rc) 157 p(" SHARE-FIT your-match=" as *u8); pn(fit); p("/100 -- gap plan:\n" as *u8) 158 let g: i64 = skill_gap(hn, hl, hc, rn, rl, rc) 159 fitp[0] = fit 160 gapp[0] = g 161 } 162 } 163 } 164 } 165 } 166 j = voff + vl 167 } 168 s = s + 1 169 } 170 return cnt 171} 172// warm-channel attribution for one sharer: outp[0]=shared, outp[1]=used; returns strength permil (used*1000/shared) 173func sh_attribution(prefix: *u8, sharer: *u8, outp: *i64) -> i64 { 174 outp[0] = 0 175 outp[1] = 0 176 let segp: *i64 = sys_mmap(16) as *i64 177 let ns: i64 = ss_manifest_dyn(prefix, segp) // uncapped: sees the WHOLE store 178 let segs: *i64 = segp[0] as *i64 179 let f2: *u8 = sys_mmap(256) 180 let f3: *u8 = sys_mmap(256) 181 let st: *u8 = sys_mmap(128) 182 // collect this sharer's titles (bounded 64) 183 let titles: *i64 = sys_mmap(8 * 64) as *i64 184 var nt: i64 = 0 185 var s: i64 = 0 186 while s < ns { 187 let path: *u8 = sys_mmap(512) 188 var po: i64 = 0 189 po = ss_cat(path, po, prefix) 190 po = ss_cat(path, po, segs[s] as *u8) 191 po = ss_cat(path, po, ".docs" as *u8) 192 path[po] = 0 as u8 193 let szp: *i64 = sys_mmap(16) as *i64 194 let b: *u8 = ss_readall(path, szp) 195 let sz: i64 = szp[0] 196 var j: i64 = 0 197 while j + 9 <= sz { 198 let kl: i64 = ss_r32(b, j + 1) 199 let koff: i64 = j + 5 200 let vl: i64 = ss_r32(b, koff + kl) 201 let voff: i64 = koff + kl + 4 202 if b[j] == 1 { 203 let rec: *u8 = (b as i64 + voff) as *u8 204 if sh_iskind(b, koff, kl, "shr:" as *u8) == 1 { 205 sh_field(rec, vl, "from" as *u8, f3, 256) 206 if seq(f3, sharer) == 1 { 207 outp[0] = outp[0] + 1 208 sh_field(rec, vl, "title" as *u8, f2, 256) 209 if nt < 64 { 210 let dup: *u8 = sys_mmap(slen(f2) + 2) 211 var q: i64 = 0 212 while f2[q] != (0 as u8) { dup[q] = f2[q]; q = q + 1 } 213 dup[q] = 0 as u8 214 titles[nt] = dup as i64 215 nt = nt + 1 216 } 217 } 218 } 219 if sh_iskind(b, koff, kl, "usg:" as *u8) == 1 { 220 sh_field(rec, vl, "status" as *u8, st, 128) 221 if seq(st, "used" as *u8) == 1 { 222 sh_field(rec, vl, "title" as *u8, f2, 256) 223 var t: i64 = 0 224 while t < nt { if seq(titles[t] as *u8, f2) == 1 { outp[1] = outp[1] + 1; t = nt } else { t = t + 1 } } 225 } 226 } 227 } 228 j = voff + vl 229 } 230 s = s + 1 231 } 232 if outp[0] == 0 { return 0 } 233 return (outp[1] * 1000) / outp[0] 234} 235 236func main() -> i64 { 237 p("=== NX-SHARE SELFTEST (SHARE-ITEM stored -> SHARE-FIT grows opportunities -> SHARE-USE -> SHARE-ATTR) ===\n" as *u8) 238 var ok: i64 = 1 239 let mt: *u8 = sys_mmap(4) 240 mt[0] = 0 as u8 241 let prefix: *u8 = sys_mmap(128) 242 var po: i64 = 0 243 po = ss_cat(prefix, po, "/tmp/share_" as *u8) 244 po = ss_catn(prefix, po, sys_now_us()) 245 po = ss_cat(prefix, po, "_" as *u8) 246 prefix[po] = 0 as u8 247 248 // Marcus (recruiter) shares a JOB with its requirements; Dana shares a resource 249 let w: *i64 = ss_begin() 250 let a1: *i64 = sys_mmap(8 * 8) as *i64 251 a1[0]="job" as *u8 as i64; a1[1]="Sales Director at Riverside" as *u8 as i64; a1[2]="Marcus" as *u8 as i64 252 a1[3]="Emma" as *u8 as i64; a1[4]="They want someone exactly like you in two years" as *u8 as i64 253 a1[5]="sales:5,leadership:4,forecasting:3" as *u8 as i64 254 if sh_save(w, a1) != 0 { ok = 0 } 255 let a2: *i64 = sys_mmap(8 * 8) as *i64 256 a2[0]="resource" as *u8 as i64; a2[1]="Negotiation masterclass notes" as *u8 as i64; a2[2]="Dana" as *u8 as i64 257 a2[3]="Emma" as *u8 as i64; a2[4]="Read chapter 3 before your review" as *u8 as i64; a2[5]=mt as i64 258 if sh_save(w, a2) != 0 { ok = 0 } 259 if ss_commit(prefix, w, sys_now_us()) != 0 { p("commit1 FAILED -- fail loud\n" as *u8); return 1 } 260 261 // Emma's inbox: shares land WITH the fit + gap plan (opportunities grown, measurably) 262 p("-- Emma's share inbox (profile sales:4,crm:3,writing:5) --\n" as *u8) 263 let fitp: *i64 = sys_mmap(16) as *i64 264 let gapp: *i64 = sys_mmap(16) as *i64 265 fitp[0] = 0 - 1 266 gapp[0] = 0 - 1 267 let inb: i64 = sh_inbox(prefix, "Emma" as *u8, "sales:4,crm:3,writing:5" as *u8, fitp, gapp) 268 if inb != 2 { ok = 0 } 269 if fitp[0] != 26 { ok = 0 } 270 if gapp[0] != 3 { ok = 0 } 271 272 // Emma USES the shared job (applies through Marcus) 273 let w2: *i64 = ss_begin() 274 if sh_use(w2, "Sales Director at Riverside" as *u8, "Emma" as *u8, "used" as *u8) != 0 { ok = 0 } 275 if ss_commit(prefix, w2, sys_now_us()) != 0 { p("commit2 FAILED -- fail loud\n" as *u8); return 1 } 276 277 // attribution: Marcus's shares get USED (strength 1000), Dana's not yet (0) 278 let at: *i64 = sys_mmap(8 * 4) as *i64 279 let sm: i64 = sh_attribution(prefix, "Marcus" as *u8, at) 280 p(" SHARE-ATTR Marcus shared=" as *u8); pn(at[0]); p(" used=" as *u8); pn(at[1]); p(" strength=" as *u8); pn(sm); p(" permil\n" as *u8) 281 if at[0] != 1 { ok = 0 } 282 if at[1] != 1 { ok = 0 } 283 if sm != 1000 { ok = 0 } 284 let sd: i64 = sh_attribution(prefix, "Dana" as *u8, at) 285 p(" SHARE-ATTR Dana shared=" as *u8); pn(at[0]); p(" used=" as *u8); pn(at[1]); p(" strength=" as *u8); pn(sd); p(" permil\n" as *u8) 286 if at[0] != 1 { ok = 0 } 287 if at[1] != 0 { ok = 0 } 288 if sd != 0 { ok = 0 } 289 290 // loud-fail: unknown item type / unknown status never land 291 let w3: *i64 = ss_begin() 292 let ab: *i64 = sys_mmap(8 * 8) as *i64 293 ab[0]="gossip" as *u8 as i64; ab[1]="X" as *u8 as i64; ab[2]="Y" as *u8 as i64; ab[3]="Z" as *u8 as i64; ab[4]=mt as i64; ab[5]=mt as i64 294 let b1: i64 = sh_save(w3, ab) 295 let b2: i64 = sh_use(w3, "X" as *u8, "Y" as *u8, "ghosted" as *u8) 296 if b1 != (0 - 1) { ok = 0 } 297 if b2 != (0 - 1) { ok = 0 } 298 299 p("NX-SHARE-SELFTEST inbox=" as *u8); pn(inb); p(" fit=" as *u8); pn(fitp[0]); p(" gaps=" as *u8); pn(gapp[0]); p(" " as *u8) 300 if ok == 1 { p("verdict=GREEN (shared items stored + scored on receipt + usage tracked + warm channels attributed)\n" as *u8); return 0 } 301 p("verdict=RED\n" as *u8) 302 return 1 303}