nx_manga_rating_gate.nx
buildroot/runtime/nx_manga_rating_gate.nx
about
nx_manga_rating_gate.nx -- REFEREE for mangagen MG24 (mr_rate_row) and MG32 (mr_depiction_legal).
IN-PROCESS against nx_manga_rating_lib: the decision has ONE home, so the CLI and this gate cannot
drift into two different answers.
It proves the done-rules pre-declared on /compare/mangagen before the organ existed:
MG24 -- a rating row bound to the ASSET at emit, never to the account; a family-tier viewer cannot
be served an adult-rated asset, and an UNRATED asset is treated as GATED rather than safe.
MG32 -- the adult invariant fails closed at CONSTRUCTION, not by policy.
ANTI-VACUITY IS THE POINT. A guard that DENIES EVERYTHING passes every deny test ever written, so
every refusal tooth below is PAIRED with a positive control that must be ALLOWED: T2 against T1,
T12 against T11, T13 against T14. T10 requires the ladder to actually discriminate -- an
implementation that mapped every rating to the gated area would satisfy T5, T8 and T9 and still be
useless, and only T6, T7 and T10 refute it.
T17 is a CROSS-IDENTITY: this lane must never grow its own copy of the adult age, so the gate asserts
the imported WS_ADULT_AGE is still 18. If the character lane moves it, this gate says so.
license_tier: ORIGINAL expect_exit: 0
dependencies 3 imports · 0 importers
imports: nx_syscalls.nxnx_gate_verdict.nxnx_manga_rating_lib.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
| 22 | func mrg_eq(a: i64, b: i64) -> i64 { if a == b { return 1 } return 0 } called by 1: main |
| 24 | func main(argc: i64, argv: *i64) -> i64 |