nx_xport_gate.nx
buildroot/runtime/nx_xport_gate.nx
about
nx_xport_gate.nx -- GATE for DC12: one authored asset into four consumers, measured by one ruler.
The claim under test is not "the exporters run". It is that the geometry a consumer RECEIVES is the
geometry that was authored, within a bound that was derived rather than chosen. So every number below
comes back OUT OF AN ARTIFACT ON DISK, and the ruler is nx_mmdev's md_measure -- the estate's one
millimetre deviation ruler, already proven to read a known 5.0 mm lift as 5.0 mm.
Three things make this more than a green light:
- a POSITIVE CONTROL: the source measured against ITSELF must read exactly zero on every axis, so the
ruler is known to be wired and oriented before any consumer claim rests on it;
- an ANTI-VACUITY tooth: one vertex is moved a known 3.0 mm and must be DETECTED at 3.0 mm, so a
comparator that always answered zero could not pass;
- a MIRROR that has ZERO deviation and is still wrong. It is here because it proves the deviation
ruler alone is insufficient, which is the entire reason orientation and scale are separate axes.
The fixture is assembled at RUNTIME under /tmp/nx_xport_gate so this gate never shares scratch with a
production beat, and it is idempotent: re-running overwrites its own artifacts and asserts nothing
about what was there before.
license_tier: ORIGINAL No hw writes (Rule 26). expect_exit: 0
dependencies 6 imports · 0 importers
imports: nx_syscalls.nxnx_gate_verdict.nxnx_vecmath.nxnx_nxmesh_lib.nxnx_mmdev_lib.nxnx_xport_lib.nx
imported by: nobody (leaf or entry point)
structs
| none |
consts
| 29 | const XG_DIR: *u8 = "/tmp/nx_xport_gate" |
| 30 | const XG_EMPTY: *u8 = "/tmp/nx_xport_gate/empty" |
| 31 | const XG_MODE_0755: i64 = 493 |
| 36 | const XG_SUB: i64 = 4 |
| 37 | const XG_BX: i64 = 4000 |
| 38 | const XG_BY: i64 = 17000 |
| 39 | const XG_BZ: i64 = 2500 |
| 40 | const XG_FACES: i64 = 6 |
| 44 | const XG_PERT: i64 = 30 |
| 47 | const XG_PI: i64 = 1 |
| 48 | const XG_PJ: i64 = 1 |
| 49 | const XG_FACE_PX: i64 = 3 |
| 53 | const XG_SLACK: i64 = 2 |
| 56 | const XG_SCALE_NUM: i64 = 5 |
| 57 | const XG_SCALE_DEN: i64 = 4 |
functions
| 59 | func xg_tpf() -> i64 { return 2 * XG_SUB * XG_SUB } |
| 60 | func xg_ntris() -> i64 { return XG_FACES * xg_tpf() } |
| 61 | func xg_pert_tri() -> i64 { return XG_FACE_PX * xg_tpf() + 2 * (XG_PJ * XG_SUB + XG_PI) } |
| 66 | func xg_facetab(t: *i64) -> i64 |
| 75 | func xg_pt(t: *i64, f: i64, a: i64, b: i64, axis: i64) -> i64 |
| 79 | func xg_box(buf: *u8) -> i64 |
| 121 | func xg_copy(src: *u8, dst: *u8) -> i64 |
| 130 | func xg_perturb(buf: *u8) -> i64 |
| 147 | func xg_mirror(src: *u8, dst: *u8) -> i64 |
| 169 | func xg_rescale(src: *u8, dst: *u8) -> i64 |
| 190 | func xg_eq(a: i64, b: i64) -> i64 { if a == b { return 1 } return 0 } |
| 191 | func xg_near(a: i64, b: i64) -> i64 |
| 200 | func xg_report(res: *i64, c: i64) -> i64 |
| 227 | func xg_teeth(res: *i64, c: i64, n1: *u8, n2: *u8, n3: *u8, n4: *u8, n5: *u8, ctr: *i64) -> i64 |
| 246 | func main() -> i64 |