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 2 imports · 0 importers
imports: nx_syscalls.nxnx_gate_verdict.nx
imported by: nobody (leaf or entry point)
structs
| none |
consts
| none |
functions
| 33 | func ig_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } |
| 34 | func ig_p(s: *u8) -> i64 { sys_write(1, s, ig_slen(s)); return 0 } |
| 36 | func ig_cat(dst: *u8, off: i64, s: *u8) -> i64 |
| 42 | func ig_catn(dst: *u8, off: i64, v: i64) -> i64 |
| 55 | func ig_write(path: *u8, content: *u8) -> i64 |
| 63 | func ig_readall(path: *u8, szout: *i64) -> *u8 |
| 80 | func ig_runv(elf: *u8, args: *i64, outpath: *u8) -> i64 |
| 110 | func ig_has(path: *u8, needle: *u8) -> i64 |
| 129 | func ig_count(path: *u8, needle: *u8) -> i64 |
| 149 | func ig_crlf_lines(path: *u8) -> i64 |
| 168 | func ig_maxline(path: *u8) -> i64 |
| 190 | func ig_fileeq(p1: *u8, p2: *u8) -> i64 |
| 205 | func ig_row(name: *u8, pass: i64) -> i64 |
| 212 | func ig_args(a1: *u8, a2: *u8, a3: *u8, a4: *u8, a5: *u8) -> *i64 |
| 223 | func ig_ensure(elf: *u8, organ: *u8) -> i64 |
| 231 | func main(argc: i64, argv: *i64) -> i64 |