nx_rvc_gate.nx
buildroot/runtime/nx_rvc_gate.nx
about
nx_rvc_gate.nx -- THE VERDICT GATE for nishios NO3 (nx_rvc_run_suite, watch symbol rvc_run_suite).
SUBJECT: the nx_rvc_run_suite ELF, forked for real (argv[1] overrides; default the serving-root
_offc copy). It runs the organ's SELF-CONTAINED `selftest`, which builds a synthetic RV64 program
in memory (no third-party corpus, so this gate is non-vacuous on the NAS where there is no gcc):
the program stores two known words to a signature region, writes tohost, then loops. The runner's
OWN compare core (the same rvc_run_img the real suite uses) is then exercised three ways:
good a correct reference -> verdict PASS (T1)
corrupt a WRONG reference word -> verdict FAIL (T2, THE KNOWN-FAILING CONTROL: a comparator that
always PASSed -- a vacuous suite -- fails HERE,
so no pass count can be quoted from a blind ruler)
illegal a bad instruction word -> verdict UNSUPPORTED, not a silent PASS/FAIL (T3)
empty a nonexistent pin -> zero runs, RED at the caller (T4, neg-control-empty-corpus)
T5 requires the runner's own aggregate self-verdict GREEN and exit 0 (partition + all four held).
The full per-group compliance numbers (I/M/C/privilege/Zifencei against the pinned repo references)
are the LOCAL WITNESS (bench/riscv-arch-test/nishios_NO3_local_witness.txt) -- the third-party
gcc assembler and the 12 MB corpus are laptop-only by the estate's no-gcc-on-NAS design; this gate
proves the RUNNER MECHANISM everywhere, which is what makes that witness trustworthy.
license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
dependencies 3 imports · 0 importers
imports: nx_syscalls.nxnx_gate_verdict.nxnx_tool_run.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
| 25 | const RVG_SUBJECT_DEFAULT: *u8 = "_offc/nx_rvc_run_suite.elf\x00" |
| 26 | const RVG_CAP: i64 = 262144 |
| 27 | const RVG_TIMEOUT_MS: i64 = 60000 // the selftest runs a handful of tiny programs; a minute is a hang |
functions
| 29 | func main(argc: i64, argv: *i64) -> i64 |