code wiki / _hdl_build / nx_vizsla_plan_gate.nx
nx_vizsla_plan_gate.nx
buildroot/runtime/_hdl_build/nx_vizsla_plan_gate.nx
about
nx_vizsla_plan_gate.nx -- VIZSLA PLANNER gate: priority/deps/critical-path/milestones/
timeblock proven against HAND-COMPUTED fixtures. COMPOSITION: the timeblock rows load a real
calendar via nx_vizsla_calendar and place tasks into ITS free windows.
plan "trip" (CONF u4=5 u3=10 u2=30 -- DIFFERENT from the 2/7/30 defaults so the config path is
load-bearing: invites at 5 days out grades u4/score48; the default bands would say u3/38):
venue jason 07-09 120m imp5 deps - today 07-07 -> READY u4 score50
invites maria 07-12 60m imp4 deps venue -> BLOCKED u4 score48
food jason 07-20 90m imp3 deps invites -> BLOCKED u2 score26
music dave 07-20 45m imp2 deps venue -> BLOCKED u2 score24
budget maria 07-05 30m imp5 deps - + DONE marker -> DONE
MILE m1 07-15: due<=07-15 = venue,invites,budget -> 3 tasks, 1 done, pct=33
critical path: venue(120)>invites(60)>food(90) = 270 min
verdict: tasks=5 done=1 ready=1 blocked=3 late=0 pct=20 critical_min=270
today=07-10 re-run: venue OVERDUE -> urg5 score60 late=1; verdict late=1
plan "day" + jason's calendar (meeting 10:00-12:00), timeblock 07-08 bounds 08:00-22:00:
free [480,600)+[720,1320) = 720 min; priority deep(50) email(38) mega(22)
deep 120m -> 08:00-10:00; email 60m -> 12:00-13:00; mega 700m -> UNPLACED (no window fits)
verdict placed=2 unplaced=1 used_min=180 free_min=720
plan "cyc": a<->b dependency cycle -> board exits 1 naming stuck=a,b
Rows: 1 plan-load 2 idempotent-reload 3 board-ready-priority 4 board-conf-loadbearing
5 board-done 6 board-verdict 7 critical-path 8 milestone-pct 9 board-overdue
10 timeblock-place-first 11 timeblock-next-window 12 timeblock-verdict
13 cycle-detected[neg] 14 board-determinism 15 loud-fail-bad-date[neg]
16 loud-fail-unknown-plan[neg]
Evidence: VIZSLA-PLAN-GATE -> stdout + knowledge/status/vizsla_gate.log; exit 0 iff 16/16.
spec: knowledge/research/2026-06-22-vizsla-sclass-roadmap.md 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
| 31 | func pg_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } |
| 32 | func pg_p(s: *u8) -> i64 { sys_write(1, s, pg_slen(s)); return 0 } |
| 34 | func pg_cat(dst: *u8, off: i64, s: *u8) -> i64 |
| 40 | func pg_catn(dst: *u8, off: i64, v: i64) -> i64 |
| 53 | func pg_write(path: *u8, content: *u8) -> i64 |
| 61 | func pg_readall(path: *u8, szout: *i64) -> *u8 |
| 78 | func pg_runv(elf: *u8, args: *i64, outpath: *u8) -> i64 |
| 108 | func pg_has(path: *u8, needle: *u8) -> i64 |
| 127 | func pg_fileeq(p1: *u8, p2: *u8) -> i64 |
| 142 | func pg_row(name: *u8, pass: i64) -> i64 |
| 149 | func pg_args(a1: *u8, a2: *u8, a3: *u8, a4: *u8, a5: *u8, a6: *u8, a7: *u8, a8: *u8) -> *i64 |
| 163 | func pg_ensure(elf: *u8, organ: *u8) -> i64 |
| 171 | func pg_mkpfx(tag: *u8, us: i64) -> *u8 |
| 181 | func main(argc: i64, argv: *i64) -> i64 |