nx_asset_merkle_gate.nx
buildroot/runtime/nx_asset_merkle_gate.nx
about
nx_asset_merkle_gate.nx -- KAT + TEETH for nx_asset_merkle (R8: whole-inventory Merkle root).
(T1) DETERMINISM / order-independent: root[A,B,C,D] == root[D,C,B,A] (same SET -> same root)
(T2) TAMPER: change one record's bytes -> the whole-inventory root CHANGES
(T3) COMPLETENESS: drop one record -> the root CHANGES (an omission cannot hide)
(T4) INCLUSION: a member's CID is a leaf; a well-formed but absent CID is NOT (no false inclusion)
Verdict appended to knowledge/status/asset_merkle_gate.log (additive law #13).
expect_exit: 0 license_tier: ORIGINAL
dependencies 6 imports · 0 importers
imports: nx_syscalls.nxnx_canon_cid.nxnx_asset_record.nxnx_asset_catalog.nxnx_asset_merkle.nxnx_gate_verdict.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
| 17 | func g_puts(logfd: i64, s: *u8) -> i64 |
| 24 | func g_putn(logfd: i64, v: i64) -> i64 |
| 38 | func g_streq(a: *u8, b: *u8) -> i64 |
| 47 | func E() -> *u8 { return "\x00" as *u8 } called by 1: mk_asset |
| 48 | func sset(a: *i64, i: i64, s: *u8) -> i64 { a[i] = s as i64; return 0 } called by 1: mk_asset |
| 51 | func mk_asset(typ: *u8, cls: *u8, tags: *u8, id: *u8, out: *u8) -> i64 |
| 67 | func gt_prefix(prefix: *u8, base: *u8, salt: i64) -> i64 |
| 83 | func build_abcd(recs: *i64, lens: *i64) -> i64 |
| 92 | func root_of(salt: i64, recs: *i64, lens: *i64, n: i64, out_root: *u8) -> i64 |
| 101 | func gt_determinism(logfd: i64) -> i64 |
| 115 | func gt_tamper(logfd: i64) -> i64 |
| 130 | func gt_completeness(logfd: i64) -> i64 |
| 141 | func gt_inclusion(logfd: i64) -> i64 |
| 159 | func main() -> i64 |