code wiki / (root) / nx_asset_page_gate.nx

nx_asset_page_gate.nx

buildroot/runtime/nx_asset_page_gate.nx

4216 B49 linesdepth 3pulls 4 transitivereach 0 importersview sourcekind gate/prooftopic asset
docsdependenciesstructsconstsfunctions

about

nx_asset_page_gate.nx -- the referee for nx_asset_page_lib (2026-09-17): the asset page emits the viewer script only when a tier shows a GLB canvas. Planted manifests, in-process: an image-only manifest needs no viewer, a GLB tier on either direction (tasset, tasset2) needs it, and the predicate reads the FORMAT column -- the word glb in a label, in an evidence column, in a judge axis or on a row type that merely starts with tasset does not count. A CRLF manifest is read the same as an LF one. The emitter's wiring is proven end to end by the media-judge workflow plan, whose last row is nx_page_verify over the live page. license_tier: ORIGINAL No hw writes (Rule 26).

dependencies 3 imports · 0 importers

nx_syscalls.nx nx_gate_verdict.nx nx_asset_page_lib.nx nx_asset_page_gate.nx

imports: nx_syscalls.nxnx_gate_verdict.nxnx_asset_page_lib.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main gv_head gv_puts sys_write gv_ctr sys_mmap nxa_die sys_write ↻ sys_exit nxa_lock_take nxa_lock_addr sys_write ↻ nxa_lock_give nxa_lock_addr ↻ nxa_report_overrun sys_write ↻ nxa_dump_printable sys_write ↻ nxa_dump_sizes sys_write ↻ gv_check_eq gv_check gv_puts ↻ gv_puts ↻ gv_num sys_mmap ↻ sys_write ↻ sys_munmap ag_has apl_has_glb sys_mmap ↻ apl_col apl_is ag_len apl_has_glb ↻ sys_mmap ↻ apl_col ↻ ag_len ↻ gv_values_head gv_puts ↻

structs

none

consts

12const AG_IMG_ONLY: *u8 = "meta\tdiora14\timg\tMedia judged\ntasset\t1\timg\t/compare/x/a.jpg\tORIGINAL\ntasset\t2\timg\t/compare/x/b.png\tMEASURED\ntier\t1\tLIVE\tnote\njudge\tnx_photomark\tface_found\t1\tflag\tevidence\n"
13const AG_GLB_TIER: *u8 = "meta\tkk\tglb\tA mesh\ntasset\t1\tglb\t/exceed/kk/a.glb\tORIGINAL\ntier\t1\tLIVE\tnote\njudge\torgan\taxis\t1\tunit\tevidence\n"
14const AG_GLB_OUTBOUND: *u8 = "meta\tkk\timg\tA mesh\ntasset\t1\timg\t/x/a.png\tORIGINAL\ntasset2\t3\tglb\t/exceed/kk/c.glb\tIMPROVED\ntier\t1\tLIVE\tnote\n"
15const AG_GLB_IN_LABEL: *u8 = "meta\tkk\timg\tA mesh\ntasset\t1\timg\t/x/a.png\tglb\ntier\t1\tLIVE\tthe glb is coming\n"
16const AG_GLB_IN_JUDGE: *u8 = "meta\tkk\timg\tA mesh\ntasset\t1\timg\t/x/a.png\tORIGINAL\njudge\tnx_mesh\tglb\t1\tglb\tglb\n"
17const AG_GLB_ON_LOOKALIKE: *u8 = "meta\tkk\timg\tA mesh\ntassetx\t1\tglb\t/x/a.glb\tORIGINAL\n"
18const AG_GLB_CRLF: *u8 = "meta\tkk\tglb\tA mesh\r\ntasset\t1\tglb\r\n"
19const AG_GLB_UPPER: *u8 = "meta\tkk\tglb\tA mesh\ntasset\t1\tGLB\t/x/a.glb\tORIGINAL\n"
20const AG_COL_LINE: *u8 = "tasset\t2\tglb\t/x/y.glb\tlabel"
21const AG_COL_FORMAT_LEN: i64 = 3
22const AG_COL_ABSENT: i64 = 9
23const AG_I64: i64 = 8

functions

25func ag_len(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
called by 2: ag_hasmain
26func ag_has(s: *u8) -> i64 { return apl_has_glb(s, ag_len(s)) }
called by 1: main calls 2: apl_has_glbag_len
28func main(argc: i64, argv: *i64) -> i64