code wiki / _hdl_build / nx_vizsla_calendar_conflict_gate.nx
nx_vizsla_calendar_conflict_gate.nx
buildroot/runtime/_hdl_build/nx_vizsla_calendar_conflict_gate.nx
about
nx_vizsla_calendar_conflict_gate.nx -- VIZSLA R-CAL.2 gate: conflict detection (overlap scan across the
expanded occurrences + single events) is gate-proven against construction-known fixtures with HAND-COMPUTED
overlaps (oracle in THIS header). 100% sovereign: self-writes fixtures via the organ's syscalls, forks the
organ, greps stdout.
fixture (seg-7001), single EVENTs + one DAILY RRULE:
meeting 06-22 09:00 +60 -> [540,600)
call 06-22 09:30 +30 -> [570,600)
after 06-22 10:00 +30 -> [600,630) (back-to-back with meeting/call -- MUST NOT conflict)
lunch 06-22 12:00 +60 -> [720,780)
solo 06-23 09:00 +60 -> [540,600) (different day)
standup 06-22 09:15 +30 DAILY x1 -> [555,585) (a RECURRING occurrence that overlaps meeting AND call)
W1 conflicts 06-22..06-22 (sorted meeting/standup/call/after/lunch) =>
meeting x standup [555,585)=09:15-09:45 ; meeting x call [570,600)=09:30-10:00 ;
standup x call [570,585)=09:30-09:45 (after is adjacent -> NO clash) => occurrences=5 conflicts=3
W2 conflicts 06-23..06-23 => only solo => occurrences=1 conflicts=0 (no false positive)
Rows:
1 conflict-load 6 records -> new=6 seg-7001
2 conflict-overlap-events meeting x call line exact (two single events)
3 conflict-recurring meeting x standup line exact (the RRULE occurrence participates)
4 conflict-three-way standup x call line exact
5 conflict-verdict occurrences=5 conflicts=3 (adjacency 'after' counted but NOT a clash)
6 no-conflict-other-day W2 occurrences=1 conflicts=0 (day isolation, no false positive)
7 conflict-determinism W1 byte-identical twice
8 loud-fail-bad-date conflicts from=2026-13-99 => exit 1 [negative control]
Evidence: VIZSLA-CAL-CONFLICT-GATE -> stdout + knowledge/status/vizsla_gate.log; exit 0 iff 8/8.
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 og_slen(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } |
| 32 | func og_p(s: *u8) -> i64 { sys_write(1, s, og_slen(s)); return 0 } |
| 34 | func og_cat(dst: *u8, off: i64, s: *u8) -> i64 called by 1: main |
| 40 | func og_catn(dst: *u8, off: i64, v: i64) -> i64 |
| 53 | func og_write(path: *u8, content: *u8) -> i64 |
| 61 | func og_readall(path: *u8, szout: *i64) -> *u8 |
| 78 | func og_runv(elf: *u8, args: *i64, outpath: *u8) -> i64 |
| 108 | func og_has(path: *u8, needle: *u8) -> i64 |
| 127 | func og_fileeq(p1: *u8, p2: *u8) -> i64 |
| 142 | func og_row(name: *u8, pass: i64) -> i64 |
| 149 | func og_args(a1: *u8, a2: *u8, a3: *u8, a4: *u8, a5: *u8) -> *i64 |
| 160 | func main(argc: i64, argv: *i64) -> i64 |