code wiki / _hdl_build / nx_vizsla_digest.nx
nx_vizsla_digest.nx
buildroot/runtime/_hdl_build/nx_vizsla_digest.nx
about
nx_vizsla_digest.nx -- NISHI VIZSLA V5: the proactive DAILY DIGEST.
Operator directive 2026-06-14: make the assistant PROACTIVE -- it tells you
what to do today before you ask. This is the consigliere's daily brief
ACROSS the whole assistant: it COMPOSES the already-gated organs (it does NOT
re-implement them -- rule 22, composition over duplication) into one report:
1) RELATIONSHIPS to tend -> nx_vizsla_relate brief
2) NOTES to send (drafted) -> nx_vizsla_notes draftdue
3) BILLS due/overdue -> nx_vizsla_bills status (OPTIONAL: only if the
conf names BILLS_PREFIX + BILLS_FILE)
-- ENGAGEMENT-PARTNER sections (2026-07-08, operator: "engagement partner ...
birthday and important event reminder"), each OPTIONAL like bills:
4) TODAY'S CALENDAR -> nx_vizsla_calendar day (CAL_PREFIX)
5) REMINDERS DUE -> nx_vizsla_remind due (REMIND_CONTACTS +
REMIND_LEADS; calendar side = CAL_PREFIX if set;
optional REMIND_SENT ledger dedups delivery)
6) PLAN status -> nx_vizsla_plan board (PLAN_PREFIX + PLAN_NAME)
7) VENUE hunt -> nx_vizsla_venue board (VENUE_PREFIX + VENUE_EVENT)
designed to be run on a pulse/schedule each day; the consolidated verdict
aggregates the sub-reports' counts. Determinism: today via argv.
Command: digest <digest.conf> <today>
digest.conf (line records, # comments) names where the data lives:
RELATE_PREFIX <store-prefix> (nx_vizsla_relate store)
RELATE_CONTACTS <contacts.txt>
NOTES_PREFIX <store-prefix> (nx_vizsla_notes store)
NOTES_CONF <notes_conf.txt> (occasions + windows)
NOTES_TEMPLATES <note_templates.txt>
It forks the BLESSED organs _offc/nx_vizsla_relate.elf + _offc/nx_vizsla_notes.elf
(so run from the nxc2 dir). Loud-fail: missing conf / missing key /
a sub-organ that errors.
HONEST SCOPE: the digest PRODUCES the day's actionable report + logs it; the
actual PUSH (email/notification to your phone) is an outward-facing boundary
step (consent-gated). "Automatic each day" = this organ on a pulse/cron.
module: nishi-core.vizsla.digest
depends: nishi-core.lib.syscalls
capability: VIZSLA_DAILY_DIGEST
spec: knowledge/specs/2026-06-10-nishi-vizsla-ladder.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
| 41 | const K_MAGIC_65536: i64 = 65536 |
| 42 | const K_MAGIC_262144: i64 = 262144 |
functions
| 44 | func dg_slen(s: *u8) -> i64 |
| 50 | func dg_p(s: *u8) -> i64 |
| 55 | func dg_eq(a: *u8, b: *u8) -> i64 |
| 66 | func dg_isws(c: i64) -> i64 called by 1: dg_tok |
| 73 | func dg_tok(b: *u8, off: i64, lend: i64, dst: *u8, cap: i64) -> i64 |
| 95 | func dg_cat(dst: *u8, off: i64, s: *u8) -> i64 called by 1: dg_cmd_digest |
| 101 | func dg_catn(dst: *u8, off: i64, v: i64) -> i64 |
| 114 | func dg_readall(path: *u8, szout: *i64) -> *u8 |
| 133 | func dg_run(elf: *u8, a0: *u8, a1: *u8, a2: *u8, a3: *u8, a4: *u8, outpath: *u8) -> i64 |
| 160 | func dg_run6(elf: *u8, a0: *u8, a1: *u8, a2: *u8, a3: *u8, a4: *u8, a5: *u8, outpath: *u8) -> i64 |
| 189 | func dg_extract(buf: *u8, sz: i64, key: *u8) -> i64 |
| 221 | func dg_find(buf: *u8, sz: i64, needle: *u8) -> i64 |
| 237 | func dg_conf_get(cb: *u8, csz: i64, key: *u8, out: *u8, cap: i64) -> i64 |
| 265 | func dg_cmd_digest(argc: i64, argv: *i64) -> i64 |
| 531 | func main(argc: i64, argv: *i64) -> i64 |