Digital-twin program · measured 2026-07-26 · the answer is no, and the way it fails is the interesting part
Our body generator needs an aim point: a number describing the shape we are trying to reach, extracted from reference photographs rather than guessed. The chain is three organs. nx_silhouette turns a photograph into an outline profile. nx_curvebench turns a profile into a single dimensionless curvature index. The same nx_curvebench measures our generated mesh, so a photograph and a body land on one scale.
The appeal is obvious: point it at enough reference photographs, take the median, aim at that. This page is the record of that idea being tested and failing, plus two real defects it exposed on the way.
53 studio frames, three subjects, one photographer, measured end to end. Then the only question that matters: does the number describe the body, or the photograph?
| Subject | Frames | Median curvature | Range within that one subject |
|---|---|---|---|
| A | 15 | 549 | 99 – 2137 (22×) |
| B | 18 | 580 | 39 – 2607 (67×) |
| C | 19 | 1114 | 99 – 42376 (428×) |
Between different women the medians span 2.0×. Within a single woman her own frames span 22× to 428×.
Within-subject variation exceeds between-subject variation by roughly ten to two hundred times. The metric cannot tell three different people apart. A curvature index taken from an uncontrolled photograph is measuring the pose and the crop, not the body.
Our generated body scores 1038. That sits comfortably inside the interquartile range of all three subjects. We could have published “our body falls within the reference distribution” — literally true, and completely worthless, because a range that wide would contain almost any body at all.
Law: before quoting agreement with a reference, check the reference’s own spread. Agreement with a distribution that wide is not evidence of anything.
The consequence for the program is concrete. Registration and pose normalisation are not an optional refinement to be added later, and the problem cannot be averaged away by collecting more photographs — noise of this magnitude does not converge on a body. More galleries do not help until pose is controlled.
Image rows count downward from the top of a picture. A mesh counts upward from the floor. The profile emitter used the natural loop index, so photo profiles ran head-to-feet while mesh profiles ran feet-to-head. Every landmark here is a fraction of stature — the waist is defined at 615/1000 above the ground — so a photograph would have had its waist read at mid-thigh and reported as a waist. A plausible number, no error, no symptom.
Six existing tests passed identically on the broken build and the fixed one, because every fixture was vertically symmetric: a full-height rectangle, an hourglass pinched exactly at the middle, another rectangle. None of them could tell the difference. We added a wedge fixture, unmistakably wide at one end, and ran the control: 6/7 RED on the old emitter, 7/7 GREEN on the fixed one.
Law: a symmetric witness cannot testify about orientation, however many of them you have.
Skin was detected by a colour rule — a chroma locus plus a red-over-green-over-blue ordering test. On a licensed full-body reference photograph it classified the entire frame as figure and returned waist and hip exactly equal with curvature exactly zero: a perfectly confident measurement of the photograph’s rectangle. It did not crash and it did not warn.
Seven green tests missed this because every fixture painted skin on a green field — the one background a colour rule is guaranteed to reject. The gate was measuring the fixture, not the organ. The organ now counts rows running border to border and refuses above a measured line, and a new test requires that a figure against a beige wall be refused rather than measured. Gate now 8/8.
Law: the decoy has to be the thing that actually fools it in the field.
Note what this was not. We had previously blamed the JPEG decoder. A proper marker walk showed the local corpus is 100% progressive with zero restart markers and decodes fine. The blocker was never decoding. It was segmentation.
Most reference frames are torso crops, and a crop normalises by the crop rather than by stature, silently relabelling mid-chest as the waist. We proposed detecting this by the profile’s dynamic range — a whole standing figure tapers hard at ankles and crown, a torso crop does not.
Measured: a known full standing body scores 156. Fifty gap-free photographic frames spread from 3 to 946, straight through it. The reference sits in the middle of the distribution it was supposed to be separated from. No threshold was applied. The value is still reported as evidence, with callers told explicitly that it does not classify.
Law: a discriminator not shown to separate two known populations is a guess with a unit. Enforcing this one would have refused real bodies and admitted real crops, silently, in both directions.
The organ reported a waist-to-hip ratio beside published anthropometric targets. It is not that quantity. It is a front-view outline ratio, and in a standing figure the arms hang beside the waist and fall inside the waist band. Our mesh reads 954 and photographic frames 805–1073 — values at or above unity that no real waist-to-hip ratio reaches. Both paths carry the bias identically, so photo-versus-mesh comparison stays valid, but the absolute number is not a WHR and must never be quoted as one. The output now says so in band.
nx_silhouette — 8/8 GREEN, now refuses frames it cannot segmentnx_curvebench — 7/7 GREEN, gains a profile verb so a photograph and a mesh are measured by one implementation on one scaleEverything on this page is a measurement or a refutation. Where a number moved the wrong way, or an idea of ours died, it is recorded here in place rather than removed.