nx_nxa_morf_gate.nx
buildroot/runtime/nx_nxa_morf_gate.nx
about
nx_nxa_morf_gate.nx -- FACE AND MORF ARE GEOMETRY, NOT TAGS.
The subject organ closes the last two ABSENT rows on nx_asset_floor_gate. That gate's own law is
the reason this one exists:
PRESENCE OF A SECTION IS NOT PRESENCE OF THE CAPABILITY.
A FACE section holding zero indices and a MORF section holding zero deltas would flip the floor
score to 7/7 while the character remained exactly as expressionless as before. So every tooth
here asks a question a tag cannot answer:
- does FACE carry real vertex membership, and is every index inside the mesh
- does MORF carry a displacement set for every declared channel, each with a NON-EMPTY support
- does full weight produce EXACTLY the stored vertex deltas, including unchanged non-FACE
vertices, independently of the subject's stdout (zero taper at a support edge is allowed)
- is a zero weight BYTE-IDENTICAL to the input (a no-op morph must be provably a no-op; size
equality would not do, so this compares every byte)
- is derive DETERMINISTIC (two runs, byte-identical)
The negative controls are real artifacts, not fixtures invented to fail: the banked pre-change
asset (which genuinely lacks both sections) and a malformed channel spec.
This gate re-declares the section layout rather than importing it from the subject. That is
deliberate: an independent reader is a witness, whereas sharing the subject's own accessor would
let one bug agree with itself.
license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
dependencies 5 imports · 0 importers
imports: nx_syscalls.nxnx_gate_verdict.nxnx_gatekit_lib.nxnx_nxa.nxnx_estate_path.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
| 29 | const MG_ELF: *u8 = "./nx_nxa_morf.elf" |
| 30 | const MG_DIR: *u8 = "/tmp/nxmorfgate" |
| 31 | const MG_PRE: *u8 = "knowledge/bank/ref9d.nxa.premorf-20260823" |
| 32 | const MG_D1: *u8 = "/tmp/nxmorfgate/d1.nxa" |
| 33 | const MG_D2: *u8 = "/tmp/nxmorfgate/d2.nxa" |
| 34 | const MG_E0: *u8 = "/tmp/nxmorfgate/e0.nxa" |
| 35 | const MG_EU: *u8 = "/tmp/nxmorfgate/eu.nxa" |
| 36 | const MG_EBAD: *u8 = "/tmp/nxmorfgate/ebad.nxa" |
| 37 | const MG_CAP: i64 = 65536 |
| 38 | const MG_MODE: i64 = 493 |
| 41 | const MG_HDR: i64 = 32 |
| 42 | const MG_TOCE: i64 = 32 |
| 43 | const MG_W: i64 = 8 |
| 45 | const MG_FACE_HDR: i64 = 4 |
| 47 | const MG_MORF_HDR: i64 = 4 |
| 48 | const MG_CHANREC: i64 = 2 |
| 49 | const MG_CONF: *u8 = "knowledge/facs_au.conf" |
| 50 | const MG_UNIT: i64 = 1000 |
| 52 | const MG_SPEC_ZERO: *u8 = "0:0" |
| 53 | const MG_SPEC_BAD: *u8 = "notaspec" |
functions
| 58 | func mg_pathlen(p: *u8) -> i64 |
| 63 | func mg_join(a: *u8,b: *u8) -> *u8 |
| 70 | func mg_basename(p: *u8) -> i64 called by 1: main |
| 84 | func mg_rd(b: *u8, off: i64) -> i64 |
| 88 | func mg_tageq(b: *u8, off: i64, t: *u8) -> i64 |
| 94 | func mg_sec(b: *u8, ns: i64, t: *u8) -> i64 |
| 103 | func mg_nsec(b: *u8) -> i64 { return mg_rd(b, 16) } |
| 107 | func mg_same(a: *u8, b: *u8) -> i64 |
| 126 | func mg_conf_tags(tags: *i64, b: *u8, n: i64) -> i64 called by 1: main |
| 150 | func mg_container(b: *u8, n: i64) -> i64 |
| 167 | func mg_words(b: *u8, tag: *u8) -> i64 |
| 179 | func mg_eval_exact(d: *u8, fo: i64, mo: i64, vo: i64, nv: i64, nf: i64, nc: i64, ch: i64, path: *u8) -> i64 |
| 213 | func main(argc: i64, argv: *i64) -> i64 |