code wiki / _hdl_build / nx_asset_page.nx

nx_asset_page.nx

buildroot/runtime/_hdl_build/nx_asset_page.nx

37825 B800 linesdepth 6pulls 8 transitivereach 0 importersview sourcekind tooltopic asset
docsdependenciesstructsconstsfunctions

about

nx_asset_page.nx -- THE /exceed ASSET-PAGE EMITTER (debt 1785877956, three-tier display doctrine). Point at an asset MANIFEST (judged measurements as DATA) -> emit the per-asset three-tier page. Operator 2026-08-04: "shown on nishifamily.com and not just asserted... point an asset and you can publish a page with the judge and measurements and gaps and all that." nx_asset_page <manifest.tsv> <out.html> [pubprefix] [relpath] manifest rows (tab-separated, first col = row type; unknown types are IGNORED additively): meta \t <slug> \t <format> \t <title> tasset\t <1|2|3> \t <glb|img> \t <href> \t <label> (a tier's DISPLAYED artifact, site-relative) lic \t <field> \t <value> (asset license meta, displayed verbatim) tier \t <1|2|3> \t <state> \t <note> (state: LIVE|PARTIAL|OPEN -- badged honestly) THE THREE SHOWINGS ARE SIDE BY SIDE, ALWAYS (operator 2026-08-04: "its three things to show and we have to get them side by side"): every page renders exactly three panels in one grid row -- ORIGINAL / MIGRATED / IMPROVED. A tier without a tasset row renders a visible OPEN slot naming its rung; absence is shown, never hidden in a footnote. judge \t <organ> \t <axis> \t <value> \t <unit> \t <evidence> gap \t <axis> \t <ours> \t <best> \t <holder> FAIL-CLOSED (the pub-house law: a page nothing judged is an ASSERTION, not a showcase): exit 3 manifest unreadable/empty exit 4 no meta row exit 5 ZERO judge rows -- refuses to emit a judgeless page exit 6 ZERO tier rows -- refuses a page that hides the tier ladder With [pubprefix relpath] the emitted page SELF-REGISTERS on the pub plane (pl_register_asset, idempotent) so it is never an orphan on the desk it was born on. license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0

dependencies 4 imports · 0 importers

nx_syscalls.nx nx_itoa_lib.nx nx_pub_lib.nx nx_store_seed_lib.nx nx_asset_page.nx

imports: nx_syscalls.nxnx_itoa_lib.nxnx_pub_lib.nxnx_store_seed_lib.nx

imported by: nobody (leaf or entry point)

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

main ap_is ap_len ap_len ↻ ap_puts sys_write ap_len ↻ sys_exit sys_mmap sts_load ss_open_cached ssc_init sys_mmap ↻ ssc_sig_of ss_cat sys_fstatat ssc_streq ss_open ss_open2 sys_mmap ↻ ss_manifest_dyn ss_manifest_file_dyn ss_cat ↻ ss_loadfile sys_map_file ss_readall ss_load_aux2 sys_mmap ↻ ss_cat ↻ ss_loadfile ↻ ss_r32 sys_munmap ssl_total_keys ss_r32 ↻ ssl_pow2 ssl_build ss_r32 ↻ ssl_hash_entry ssl_key_eq ss_r32 ↻

structs

none

consts

32const AP_MAGIC_1160: i64 = 1160
37const AP_COLS: i64 = 6
38const AP_CAP: i64 = 262144
39const AP_OUT: i64 = 524288
40const AP_TAB: i64 = 9
41const AP_NL: i64 = 10
42const AP_PATHCAP: i64 = 1024

functions

44func ap_len(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n }
called by 3: ap_putsap_ismain
45func ap_puts(s: *u8) -> i64 { sys_write(1, s, ap_len(s)); return 0 }
called by 1: main calls 2: sys_writeap_len
46func ap_num(v: i64) -> i64 { nxi_out(v); return 0 }
called by 1: main calls 1: nxi_out
47func ap_read(path: *u8, buf: *u8, cap: i64) -> i64
called by 1: main calls 3: sys_openat_rdsys_readsys_close
61func ap_app(dst: *u8, off: i64, s: *u8) -> i64
68func ap_appesc(dst: *u8, off: i64, src: *u8, a: i64, b: i64) -> i64
called by 4: ap_passap_radarap_panelmain calls 1: ap_app
81func ap_eol(buf: *u8, n: i64, i: i64) -> i64
89func ap_cols(buf: *u8, ls: i64, le: i64, col: *i64) -> i64
110func ap_is(buf: *u8, a: i64, b: i64, lit: *u8) -> i64
123func ap_sup(m: *u8, mn: i64, ls: i64, le: i64) -> i64
156func ap_pass(m: *u8, mn: i64, out: *u8, optr: *i64, mode: i64) -> i64
225func ap_dec(dst: *u8, off: i64, v: i64) -> i64
237func ap_deci(dst: *u8, off: i64, v: i64) -> i64
called by 1: ap_radar calls 1: ap_dec
244func ap_int(m: *u8, a: i64, b: i64) -> i64
called by 1: ap_radar
256func ap_dirx(k: i64) -> i64
called by 1: ap_radar
264func ap_diry(k: i64) -> i64
called by 1: ap_radar
277func ap_radar(m: *u8, mn: i64, out: *u8, optr: *i64) -> i64
388func ap_panel(m: *u8, mn: i64, out: *u8, optr: *i64, trow: *u8, tarow: *u8, tlit: *u8, tname: *u8) -> i64
470func main(argc: i64, argv: *i64) -> i64