code wiki / _hdl_build / nx_vizsla_import_gate.nx
nx_vizsla_import_gate.nx
buildroot/runtime/_hdl_build/nx_vizsla_import_gate.nx
about
nx_vizsla_import_gate.nx -- VIZSLA import gate: parsing LinkedIn + vCard exports into a tenant's people is
gate-proven against construction-known fixtures (oracle in THIS header). 100% sovereign: self-writes the
.vcf + .csv fixtures, forks nx_vizsla_import, greps the tenant files + the resulting brief.
vCard fixture: John Smith (BDAY 1985-07-03) + Mary Jones (no bday) -> CONTACT john-smith/mary-jones network.
LinkedIn fixture (preamble + header + 2 rows): Bob Lee (Connected 15 Jun 2026) + Sue Park (03 May 2026)
-> CONTACT bob-lee/sue-park network + TOUCH 2026-06-15/2026-05-03 (connection date).
brief @2026-06-22: john-smith+mary-jones = FOLLOWUP NEW (no touch); john-smith BIRTHDAY 07-03 in 11d;
bob-lee+sue-park = FRESH (their connect-date TOUCH anchors them) = the value of importing the date.
Rows:
1 vcard-import imported=2 skipped=0
2 vcard-contact-bday CONTACT john-smith John-Smith network 07-03 (name sanitize + BDAY->MM-DD)
3 vcard-nobday CONTACT mary-jones Mary-Jones network -
4 vcard-idempotent re-import => imported=0 skipped=2 (dedup vs existing)
5 linkedin-import imported=2 skipped=0 (additive to the vCard contacts)
6 linkedin-touch TOUCH 2026-06-15 bob-lee connected-on-linkedin ("15 Jun 2026" month-name parse)
7 brief-bday BIRTHDAY contact=john-smith in=11d (vCard bday flows into the brief)
8 fresh-vs-new bob-lee NOT a FOLLOWUP (FRESH via connect-date) AND john-smith IS (no touch)
9 neg-control import linkedin on a non-CSV (vcf) file => exit 1
Evidence: VIZSLA-IMPORT-GATE -> stdout + knowledge/status/vizsla_gate.log; exit 0 iff 9/9.
license_tier: ORIGINAL
dependencies 1 imports · 0 importers
imports: nx_syscalls.nx
imported by: nobody (leaf or entry point)
call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown
structs
| none |
consts
| none |
functions
| 25 | func og_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } |
| 26 | func og_p(s: *u8) -> i64 { sys_write(1, s, og_slen(s)); return 0 } |
| 28 | func og_cat(dst: *u8, off: i64, s: *u8) -> i64 |
| 34 | func og_catn(dst: *u8, off: i64, v: i64) -> i64 |
| 47 | func og_write(path: *u8, content: *u8) -> i64 |
| 55 | func og_readall(path: *u8, szout: *i64) -> *u8 |
| 69 | func og_runv(elf: *u8, args: *i64, outpath: *u8) -> i64 |
| 94 | func og_has(path: *u8, needle: *u8) -> i64 |
| 111 | func og_row(name: *u8, pass: i64) -> i64 calls 1: og_p |
| 117 | func og_args(a1: *u8, a2: *u8, a3: *u8, a4: *u8, a5: *u8) -> *i64 |
| 123 | func og_join(base: *u8, name: *u8) -> *u8 |
| 130 | func main(argc: i64, argv: *i64) -> i64 |