code wiki / _hdl_build / nx_vizsla_ics_gate.nx
nx_vizsla_ics_gate.nx
buildroot/runtime/_hdl_build/nx_vizsla_ics_gate.nx
about
nx_vizsla_ics_gate.nx -- VIZSLA R-CAL.4 gate: RFC 5545 .ics EXPORT is gate-proven against
construction-known fixtures. GENUINE COMPOSITION: forks the blessed calendar organ to LOAD the
store, then the ics organ to EXPORT it -- the gate never fabricates store bytes itself.
fixture (loaded via nx_vizsla_calendar, seg-6201):
EVENT launch 2026-06-20 10:00 +90 title "pizza,night;launch" (TEXT-escape exercise)
EVENT ride 2026-07-03 08:00 +120 title 86-char token (75-octet folding exercise)
EVENT far 2026-09-01 08:00 +60 out-of-window (exclusion exercise)
RRULE standup 2026-06-01 WEEKLY/2 x6 -> native RRULE passthrough
RRULE bday 2024-02-29 YEARLY/1 x50 -> intersects window via last-occurrence (2073)
window 2026-06-01..2026-07-31 => events=2 rules=2 => 4 VEVENTs.
Rows:
1 export-ok exit 0 + VIZSLA-ICS-VERDICT events=2 rules=2
2 vcalendar-frame BEGIN:VCALENDAR + VERSION:2.0 + PRODID + END:VCALENDAR
3 crlf-strict every LF preceded by CR (RFC5545 line ends), >=10 lines
4 vevent-count exactly 4 BEGIN:VEVENT
5 dtstart-dtend launch DTSTART:20260620T100000 + DTEND:20260620T113000
6 uid-stable UID:launch-20260620@nishi.vizsla
7 rrule-weekly RRULE:FREQ=WEEKLY;INTERVAL=2;COUNT=6
8 rrule-yearly RRULE:FREQ=YEARLY;INTERVAL=1;COUNT=50
9 summary-escaping SUMMARY:pizza\,night\;launch (backslash-escaped , and ;)
10 fold-75 no physical line >75 octets + a CRLF+space continuation + folded=1
11 window-exclusion UID:far- ABSENT (out-of-window event not exported)
12 export-determinism two exports byte-identical (no clocks in the artifact)
13 loud-fail-bad-date export from=2026-13-99 => exit 1 [negative control]
14 loud-fail-unwritable export into a nonexistent dir => exit 1 [negative control]
Evidence: VIZSLA-ICS-GATE -> stdout + knowledge/status/vizsla_gate.log; exit 0 iff 14/14.
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
| 32 | func ig_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } |
| 33 | func ig_p(s: *u8) -> i64 { sys_write(1, s, ig_slen(s)); return 0 } |
| 35 | func ig_cat(dst: *u8, off: i64, s: *u8) -> i64 called by 1: main |
| 41 | func ig_catn(dst: *u8, off: i64, v: i64) -> i64 |
| 54 | func ig_write(path: *u8, content: *u8) -> i64 |
| 62 | func ig_readall(path: *u8, szout: *i64) -> *u8 |
| 79 | func ig_runv(elf: *u8, args: *i64, outpath: *u8) -> i64 |
| 109 | func ig_has(path: *u8, needle: *u8) -> i64 |
| 128 | func ig_count(path: *u8, needle: *u8) -> i64 |
| 148 | func ig_crlf_lines(path: *u8) -> i64 |
| 167 | func ig_maxline(path: *u8) -> i64 |
| 189 | func ig_fileeq(p1: *u8, p2: *u8) -> i64 |
| 204 | func ig_row(name: *u8, pass: i64) -> i64 |
| 211 | func ig_args(a1: *u8, a2: *u8, a3: *u8, a4: *u8, a5: *u8) -> *i64 |
| 222 | func ig_ensure(elf: *u8, organ: *u8) -> i64 |
| 230 | func main(argc: i64, argv: *i64) -> i64 |