code wiki / _hdl_build / nx_vizsla_venue.nx
nx_vizsla_venue.nx
buildroot/runtime/_hdl_build/nx_vizsla_venue.nx
about
nx_vizsla_venue.nx -- NISHI VIZSLA VENUE PIPELINE: coordinate finding + hiring buildings.
Operator 2026-07-07: "coordinating the finding and hiring of buildings". The deal-pipeline
pattern (nx_vizsla_deal precedent) applied to venue hire: REQUIREMENTS -> CANDIDATES ->
additive STAGE history (found/contacted/quoted/visited/booked/rejected, latest-by-date wins,
nothing destroyed) -> integer FIT SCORE vs the requirement -> a BOOKED venue emits the exact
calendar EVENT line so the hire lands on the group calendar (composes nx_vizsla_calendar's
load format -- the bridge is data, not a fork).
Records (load <file> <prefix> [segid], additive + CID-idempotent):
REQ <event> <capacity> <budget_cents> <date> <start_min> <dur_min> -> "req:"
VENUE <event> <vid> <capacity> <cost_cents> <contact> <name> -> "ven:"
STAGE <date> <event> <vid> <found|contacted|quoted|visited|booked|rejected> -> "stg:"
Command:
board <prefix> <event>
per candidate: latest stage + fit score = cap_ok*50 + within_budget*30 +
((budget-cost)*20)/budget (cheaper = better, integer) with over_budget/too_small flags;
sorted score desc / cost asc / vid. best = top non-rejected. A booked venue emits
VIZSLA-VEN-BOOKED + VIZSLA-VEN-CAL-LINE "EVENT venue-<event> <date> <start> <dur> <name>".
Loud-fail: missing REQ, unknown event, bad stage word, bad numbers/dates.
Score weights 50/30/20 are the documented v1 model (single place, swap for CONF rows when
multi-event tuning is real -- rule 11 exception documented, not buried).
spec: knowledge/research/2026-06-22-vizsla-sclass-roadmap.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
| 26 | const K_MAGIC_1970: i64 = 1970 |
| 27 | const K_MAGIC_146097: i64 = 146097 |
| 28 | const K_MAGIC_719468: i64 = 719468 |
| 29 | const K_MAGIC_2048: i64 = 2048 |
| 30 | const K_MAGIC_1440: i64 = 1440 |
| 31 | const K_MAGIC_4096: i64 = 4096 |
| 32 | const K_MAGIC_65536: i64 = 65536 |
functions
| 34 | func vv_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } |
| 35 | func vv_p(s: *u8) -> i64 { sys_write(1, s, vv_slen(s)); return 0 } |
| 37 | func vv_eq(a: *u8, b: *u8) -> i64 |
| 48 | func vv_cmp(a: *u8, b: *u8) -> i64 called by 1: vv_cmd_board |
| 62 | func vv_dup(s: *u8) -> *u8 |
| 70 | func vv_atoi(s: *u8) -> i64 |
| 81 | func vv_digits(s: *u8) -> i64 called by 1: vv_cmd_load |
| 93 | func vv_isws(c: i64) -> i64 called by 1: vv_tok |
| 100 | func vv_tok(b: *u8, off: i64, lend: i64, dst: *u8, cap: i64) -> i64 |
| 122 | func vv_cat(dst: *u8, off: i64, s: *u8) -> i64 |
| 128 | func vv_catn(dst: *u8, off: i64, v: i64) -> i64 |
| 141 | func vv_kmemeq(b: *u8, off: i64, n: i64, s: *u8) -> i64 |
| 151 | func vv_field(rec: *u8, rl: i64, want: *u8, out: *u8, cap: i64) -> i64 |
| 178 | func vv_iskind(b: *u8, koff: i64, kl: i64, pfx: *u8) -> i64 |
| 183 | func vv_datedays(s: *u8) -> i64 |
| 224 | func vv_find(list: *i64, n: i64, s: *u8) -> i64 |
| 233 | func vv_stage_ok(s: *u8) -> i64 |
| 243 | func vv_put(keys: *i64, vals: *i64, nf: i64, kp: *u8, st: *i64) -> i64 |
| 276 | func vv_cmd_load(argc: i64, argv: *i64) -> i64 |
| 443 | func vv_cmd_board(argc: i64, argv: *i64) -> i64 |
| 676 | func main(argc: i64, argv: *i64) -> i64 |