code wiki / _hdl_build / nx_asset_page.nx
nx_asset_page.nx
buildroot/runtime/_hdl_build/nx_asset_page.nx
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
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
structs
| none |
consts
| 32 | const AP_MAGIC_1160: i64 = 1160 |
| 37 | const AP_COLS: i64 = 6 |
| 38 | const AP_CAP: i64 = 262144 |
| 39 | const AP_OUT: i64 = 524288 |
| 40 | const AP_TAB: i64 = 9 |
| 41 | const AP_NL: i64 = 10 |
| 42 | const AP_PATHCAP: i64 = 1024 |
functions
| 44 | func ap_len(s: *u8) -> i64 { var n: i64 = 0; while s[n] != (0 as u8) { n = n + 1 } return n } |
| 45 | func ap_puts(s: *u8) -> i64 { sys_write(1, s, ap_len(s)); return 0 } |
| 46 | func ap_num(v: i64) -> i64 { nxi_out(v); return 0 } |
| 47 | func ap_read(path: *u8, buf: *u8, cap: i64) -> i64 |
| 61 | func ap_app(dst: *u8, off: i64, s: *u8) -> i64 |
| 68 | func ap_appesc(dst: *u8, off: i64, src: *u8, a: i64, b: i64) -> i64 |
| 81 | func ap_eol(buf: *u8, n: i64, i: i64) -> i64 |
| 89 | func ap_cols(buf: *u8, ls: i64, le: i64, col: *i64) -> i64 |
| 110 | func ap_is(buf: *u8, a: i64, b: i64, lit: *u8) -> i64 |
| 123 | func ap_sup(m: *u8, mn: i64, ls: i64, le: i64) -> i64 |
| 156 | func ap_pass(m: *u8, mn: i64, out: *u8, optr: *i64, mode: i64) -> i64 |
| 225 | func ap_dec(dst: *u8, off: i64, v: i64) -> i64 |
| 237 | func ap_deci(dst: *u8, off: i64, v: i64) -> i64 |
| 244 | func ap_int(m: *u8, a: i64, b: i64) -> i64 called by 1: ap_radar |
| 256 | func ap_dirx(k: i64) -> i64 called by 1: ap_radar |
| 264 | func ap_diry(k: i64) -> i64 called by 1: ap_radar |
| 277 | func ap_radar(m: *u8, mn: i64, out: *u8, optr: *i64) -> i64 |
| 388 | func ap_panel(m: *u8, mn: i64, out: *u8, optr: *i64, trow: *u8, tarow: *u8, tlit: *u8, tname: *u8) -> i64 |
| 470 | func main(argc: i64, argv: *i64) -> i64 |