nx_de_referee_lib.nx
buildroot/runtime/nx_de_referee_lib.nx
about
nx_de_referee_lib.nx -- THE PER-REGION CIEDE2000 REFEREE: rung ST1 of /compare/skintwin (2026-09-03)
WHY THIS IS THE HIGHEST-VALUE RUNG ON THAT BOARD. nx_colorsci_lib has carried cs_de2000 -- the colour
difference the whole field states its errors in -- since 2026-08-24, and MEASURED with corpus_complete=1
it has ZERO adopters outside the garment-print lane. Until something in the render lane calls it, every
quality claim about a rendered human is an assertion about MECHANISM, not about appearance. The chromophore
stack can be perfectly derived and still look wrong, and nothing in the estate could say so in a number.
This file is the thing that can say so.
IT COMPOSES, IT DOES NOT RE-RULE. The colour difference itself is cs_de2000, untouched: this file adds only
the AGGREGATION -- per region, worst region, mean, and a verdict against a declared tolerance. There is
exactly one CIEDE2000 in this estate and it is not here.
THE THREE LAWS THIS FILE EXISTS TO ENFORCE, each of which the estate has been bitten by before:
1. ABSTAIN, NEVER ACQUIT. A region with no samples is UNOBSERVED. It is not a pass. A referee that
silently counts an unmeasured region as agreement is worse than no referee, because its green is
indistinguishable from a real one.
2. A TOOTH THAT PASSES ON THE EMPTY SET IS NOT A TOOTH. If nothing was measured, the verdict is ABSTAIN.
Zero regions must never return PASS, however tight the tolerance.
3. THE DENOMINATOR TRAVELS WITH THE VERDICT. measured + unobserved always equals the declared region
count, and both halves are written to the output so a caller can reconcile them rather than trust a
bare number.
The TOLERANCE is an ARGUMENT, not a constant. A bar for a print proof and a bar for a screen render are
different numbers with the same units, and a lib that picks one has decided something it has no standing
to decide. The caller declares it and the gate prints it.
license_tier: ORIGINAL No hw writes (Rule 26). LIB (no main).
dependencies 3 imports · 1 importers
imports: nx_syscalls.nxnx_fixq30_lib.nxnx_colorsci_lib.nx
imported by: nx_de_referee_gate.nx
structs
| none |
consts
| 32 | const DR_REFUSED: i64 = 0 - 1 |
| 34 | const DR_PASS: i64 = 0 |
| 35 | const DR_FAIL: i64 = 1 |
| 36 | const DR_ABSTAIN: i64 = 2 |
| 38 | const DR_UNOBSERVED: i64 = 0 - 1 |
| 41 | const DR_O_VERDICT: i64 = 0 |
| 42 | const DR_O_WORST_IDX: i64 = 1 |
| 43 | const DR_O_WORST_DE: i64 = 2 |
| 44 | const DR_O_MEAN_DE: i64 = 3 |
| 45 | const DR_O_MEASURED: i64 = 4 |
| 46 | const DR_O_UNOBSERVED: i64 = 5 |
| 47 | const DR_O_DECLARED: i64 = 6 |
| 48 | const DR_O_SLOTS: i64 = 7 |
| 49 | const DR_SLOT: i64 = 8 |
| 50 | const DR_LAB: i64 = 3 |
functions
| 54 | func dr_region_de(cs: *i64, ref3: *i64, rnd3: *i64) -> i64 |
| 63 | func dr_run(cs: *i64, refs: *i64, rnds: *i64, counts: *i64, n: i64, tol: i64, out: *i64) -> i64 |
| 123 | func dr_verdict_name(v: i64) -> *u8 called by 1: main |