code wiki / _hdl_build / nx_vizsla_jobs.nx
nx_vizsla_jobs.nx
buildroot/runtime/_hdl_build/nx_vizsla_jobs.nx
about
nx_vizsla_jobs.nx -- NISHI VIZSLA V2a: the job-search engine (career domain).
Fills career/AUTHOR (job-search-engine) + career/EDITOR (application-tracker)
from the V0 gap profile. V2a = match scoring + tracker + cadence against a
FIXTURE-ORACLE corpus; V2b (named follow-on, Market Researcher lane) = live
posting census via own-TLS entity-gather feeding the same postings format.
Commands (argv[1]):
match <profile> <postings> [log] score every posting for every SEEK
member: score = sum of that member's
SKILL weights whose term appears in
the posting's term list. Rank rows
score-desc (file order breaks ties);
zero-score postings are PRINTED not
dropped (matched= counts score>0).
track <appfile> <prefix> [segid] APP rows -> canonical records -> CID
keys "app:nxc1-..." on seg_store =
IDEMPOTENT additive application
history (same law/substrate as V1).
cadence <prefix> <profile> walk the app history chronologically;
LAST status per posting wins; posting
whose last status is not in the
profile's CLOSED set gets a follow-up
row. Closed apps are suppressed from
cadence but stay in history (additive).
File formats (line records, # comments; ALL model data in files, law 11/25):
profile: SEEK <member>
SKILL <member> <weight> <term>
CLOSED <status> (statuses that need no follow-up)
postings: POST <id> <pay_cents> <term> <term> ...
apps: APP <date> <post-id> <member> <status> <note>
Determinism: stdout has no clocks; epoch headers go to logs only (match log
argv-overridable; track/cadence log derived from store prefix = fixture
isolation). Loud-fail law: missing files, SKILL for unknown member,
non-digit pay/weight = exit 1 named.
EXCEED (V2a): ranking is the FAMILY'S fit function -- data-edited skill
weights -- not an ad-funded board's pay-to-play order; cadence is the
editor-fill that closes application loops. Reach EXCEED lands with V2b.
spec: knowledge/specs/2026-06-10-nishi-vizsla-ladder.md license_tier: ORIGINAL
dependencies 3 imports · 0 importers
imports: nx_syscalls.nxnx_canon_cid.nxnx_seg_store.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
| 44 | const K_MAGIC_4096: i64 = 4096 |
| 45 | const K_MAGIC_131072: i64 = 131072 |
| 46 | const K_MAGIC_2048: i64 = 2048 |
| 47 | const K_MAGIC_65536: i64 = 65536 |
functions
| 49 | func vj_slen(s: *u8) -> i64 |
| 55 | func vj_p(s: *u8) -> i64 |
| 60 | func vj_eq(a: *u8, b: *u8) -> i64 |
| 71 | func vj_dup(s: *u8) -> *u8 |
| 79 | func vj_atoi(s: *u8) -> i64 |
| 90 | func vj_digits(s: *u8) -> i64 called by 1: vj_cmd_match |
| 102 | func vj_isws(c: i64) -> i64 called by 1: vj_tok |
| 109 | func vj_tok(b: *u8, off: i64, lend: i64, dst: *u8, cap: i64) -> i64 |
| 131 | func vj_cat(dst: *u8, off: i64, s: *u8) -> i64 |
| 137 | func vj_catn(dst: *u8, off: i64, v: i64) -> i64 |
| 150 | func vj_find(list: *i64, n: i64, s: *u8) -> i64 |
| 159 | func vj_kmemeq(b: *u8, off: i64, n: i64, s: *u8) -> i64 |
| 169 | func vj_field(rec: *u8, rl: i64, want: *u8, out: *u8, cap: i64) -> i64 |
| 196 | func vj_isapp(b: *u8, koff: i64, kl: i64) -> i64 |
| 201 | func vj_log(lpath: *u8, tag: *u8, rep: *u8, o: i64) -> i64 |
| 217 | func vj_prefixlog(prefix: *u8, out: *u8) -> i64 |
| 227 | func vj_score(sk: *i64, mi: i64, terms: *i64, nterm: i64) -> i64 |
| 243 | func vj_cmd_match(argc: i64, argv: *i64) -> i64 |
| 410 | func vj_cmd_track(argc: i64, argv: *i64) -> i64 |
| 535 | func vj_cmd_cadence(argc: i64, argv: *i64) -> i64 |
| 657 | func main(argc: i64, argv: *i64) -> i64 |