code wiki / _hdl_build / nx_vizsla_ops.nx
nx_vizsla_ops.nx
buildroot/runtime/_hdl_build/nx_vizsla_ops.nx
about
nx_vizsla_ops.nx -- NISHI VIZSLA V6: the PROJECTS + MAINTENANCE fabric.
Operator directive 2026-06-10: "pretty much everything can be broken down
into projects we need to do and maintenance we need to do -- from buying
stock or valuables to maintaining your oil." MAINTENANCE = recurring
cadence over owned assets (catalog interval x latest-done date); PROJECT =
finite ordered steps. The researched modern-American catalog
(knowledge/vizsla/maintenance_catalog.txt) is DATA -- operator callouts
enrich it by editing rows, never code (law 11/25). History = CID records
on seg_store: additive, idempotent, tamper-evident (same substrate as
V1/V2a/V2c). Feeds (LinkedIn / Rocket Money / PRM / IoT) land as DONE
events + asset rows -- named adapters in the spec.
Commands (argv[1]):
log <logfile> <prefix> [segid] DONE <date> <asset> <task> <note>
-> "mnt:" CID records;
STEPDONE <date> <proj> <seq> <note>
-> "stp:" CID records.
due <catalog> <assets> <prefix> <today> maintenance dashboard: per
HAVE-asset x class MAINT task,
LATEST done date wins; states
OK / DUE (due_in<=soon_days) /
OVERDUE / NEVER(schedule-first).
status <projects> <prefix> project dashboard: steps done /
total, next = lowest undone seq,
ACTIVE / COMPLETE.
Determinism: stdout has no clocks (`today` is argv; epochs -> prefix log).
Loud-fail law: missing files, HAVE referencing a class with no MAINT rows,
malformed dates/seq = exit 1 named.
EXCEED: one additive tamper-evident fabric for ALL family operations --
consumer tools silo these (CarFax vs Mint vs Todoist) with no shared
history, no time travel, no tamper evidence.
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
| 37 | const K_MAGIC_1970: i64 = 1970 |
| 38 | const K_MAGIC_146097: i64 = 146097 |
| 39 | const K_MAGIC_719468: i64 = 719468 |
| 40 | const K_MAGIC_2048: i64 = 2048 |
| 41 | const K_MAGIC_4096: i64 = 4096 |
| 42 | const K_MAGIC_1024: i64 = 1024 |
| 43 | const K_MAGIC_131072: i64 = 131072 |
| 44 | const K_MAGIC_65536: i64 = 65536 |
functions
| 46 | func vo_slen(s: *u8) -> i64 |
| 52 | func vo_p(s: *u8) -> i64 |
| 57 | func vo_eq(a: *u8, b: *u8) -> i64 |
| 68 | func vo_dup(s: *u8) -> *u8 |
| 76 | func vo_atoi(s: *u8) -> i64 |
| 87 | func vo_digits(s: *u8) -> i64 |
| 99 | func vo_isws(c: i64) -> i64 called by 1: vo_tok |
| 106 | func vo_tok(b: *u8, off: i64, lend: i64, dst: *u8, cap: i64) -> i64 |
| 128 | func vo_cat(dst: *u8, off: i64, s: *u8) -> i64 |
| 134 | func vo_catn(dst: *u8, off: i64, v: i64) -> i64 |
| 147 | func vo_find(list: *i64, n: i64, s: *u8) -> i64 |
| 156 | func vo_kmemeq(b: *u8, off: i64, n: i64, s: *u8) -> i64 |
| 166 | func vo_field(rec: *u8, rl: i64, want: *u8, out: *u8, cap: i64) -> i64 |
| 194 | func vo_iskind(b: *u8, koff: i64, kl: i64, pfx: *u8) -> i64 |
| 199 | func vo_log_append(prefix: *u8, tag: *u8, rep: *u8, o: i64) -> i64 called by 3: vo_cmd_logvo_cmd_duevo_cmd_status calls 7: sys_mmapvo_catsys_openat_appendvo_catnsys_now_realtime_secsys_write+1 |
| 221 | func vo_datedays(s: *u8) -> i64 |
| 265 | func vo_put(keys: *i64, vals: *i64, nf: i64, kp: *u8, st: *i64) -> i64 |
| 294 | func vo_cmd_log(argc: i64, argv: *i64) -> i64 |
| 415 | func vo_cmd_due(argc: i64, argv: *i64) -> i64 |
| 629 | func vo_dpair_has(d_proj: *i64, d_seq: *i64, ndone: i64, pi: i64, sq: i64) -> i64 called by 1: vo_stp_acc |
| 640 | func vo_stp_acc(rec: *u8, vl: i64, cx: *i64) -> i64 |
| 659 | func vo_cmd_status(argc: i64, argv: *i64) -> i64 |
| 815 | func main(argc: i64, argv: *i64) -> i64 |