assets/RC2_HEAD_ASSEMBLY_VS_PLATES.md
Read-only lane. Nothing under C:/dev/humanity-forgotten or C:/dev/Humanity/Humanity was created,
modified or deleted. Working crops live beside this file under crops/.
---
python harness/route.py has no work-kind covering a 3D-pipeline post-mortem, so no read-set was
resolved. What I read instead, in full:
build/3d/finish_a14/render_textured.py (194 L)build/3d/finish_a14/renders/textured_tt/TURNTABLE_TEX_A14_TEX_V3.json (161 L)build/3d/finish_a14/v3/graft/GRAFT_A14_V3B_SKIRT_BALD.json (296 L)build/3d/finish_a14/v3/metrics/NECK_GATE_A14_SKIRT.json (341 L)build/3d/cage/CAGE_BENCH_SPEC.md (104 L)build/3d/cage/cage_source/CAGE_SOURCE_RECORD.json (excluded_shells + anatomy blocks)build/3d/finish_a14/texture/BASECOLOR_BAKE_A14.json (full)build/3d/eval/thousand_point/EVAL_A14_ASSET_TEXTURE_LEG.json (lens battery + verdict)build/3d/finish_a14/bake_plates.py (L55-95, L168-292 read directly; grep-indexed elsewhere)build/3d/cage/bench_cage.py L1535-1605harness/asset_factory/thousand_point_eval.py L121-131 (the VIEWS roster)A14_TEX_V3_az*.png turntable frames (az000/045/090/180 in full, others sampled), FINAL_A14_V3B_az090.png (untextured control),
A14_BASECOLOR.1001/1002.png (atlases), CHAR_0001_EXEMPLAR_BODY_14_V3_BALD_W1344.png (bake
source), CHAR_0001_FLOOR14_head_clean_1344.png (head plate).
Authored judgment, no canon home: the qualitative visual reads in §3. Every one is paired with a
measurement or a citation; where a read is unsupported it is marked OPINION.
---
build/3d/finish_a14/renders/textured_tt/A14_TEX_V3_az{000,045,090,135,180,225,270,315}.png
— 868×1400, EEVEE, written 2026-08-07 21:12:55-56. Record:
renders/textured_tt/TURNTABLE_TEX_A14_TEX_V3.json.
Mesh uv/A14_PARTITIONED.obj + garment uv/TROUSERS_A14_MID_UV.obj; figure height 166.804 cm.
This is the newest render artifact anywhere in build/3d/** and is the turntable Josh graded.
Delivered scale: figure spans y=74..1324 (1250 px) in a 1400 px frame. Head height =
1250 × 22.055/166.72 = 165 px. Brow-to-chin is roughly 70 px. An eye is ~12 px wide.
---
WRAP_A14_V3B_SKIRT.obj (NRICP-wrapped cage) → GRAFT_A14_V3B_SKIRT_BALD.obj → partition/UV →
A14_PARTITIONED.obj. Head = one material slot M_HEAD_FACE, 23,552 faces, UDIM tile 1002.
GRAFT_A14_V3B_SKIRT_BALD.json:295 —
"NO texture, NO hair, NO ears -- the cage the head is wrapped on is a bare skull by construction,
and hair and ears are their own stages. NOT a photoreal pass."
That line was written for the STRUCTURE stage. A texture was then bound over the same mesh and the
result was presented as a character turntable. Nothing between those two steps re-stated the scope.
cage_source/CAGE_SOURCE_RECORD.json, excluded_shells: the authored head assembly has 11 shells /
110,840 verts. The cage took the head shell only (15,969 v). Excluded: ear_l 720 v, ear_r 720 v,
eye_l/eye_r 704 v each, cornea_l/cornea_r 320 v each, scalp 15,697 v, hair 29,760 v /
1,488 cards, lashbrow 816 v.
Reason recorded verbatim:
"EXCLUDED ON CANON GROUNDS, not on geometry grounds. The elven ear pick is RULED -- Josh
2026-08-06, verbatim 'Agreed on ear pick' ... The ears ride the wrap as a rigid follower keyed to
the skull, or they get their own cage instance -- that is a director call, not a solver default.
NAMED OWED for the pick wave."
The NAMED OWED was never taken. **The one head feature Josh personally ruled on is the one feature
the 3D head does not have.**
Geometric confirmation (my measurement, A14_PARTITIONED.obj, 0.5 cm z-slices, |x|max per slice):
z 146.0 5.33 z 150.0 6.22 z 154.0 7.89 z 158.0 7.77 z 148.0 5.94 z 152.0 6.96 z 155.0 8.11 z 160.0 7.67
Monotone rise to a single maximum at z=155.0 (x=8.105, y=-1.816) then monotone fall. That is a bare
parietal eminence. A protruding ear produces a local maximum at z≈150-153 and a bimodal x
distribution; there is neither.
Nuance — there IS crumpled geometry at the ear site. The untextured control render
(renders/final_V3B/FINAL_A14_V3B_az090.png, material-blind clay, so anything visible is geometry)
shows a small puckered ear-shaped scar flush with the dome. Mechanism: the NRICP wrap conformed an
earless cage onto a target that HAD ears, so the skull surface was dragged locally toward the ear
without ever leaving the dome. bench_cage.py:1546 documents exactly this and then **removes it
from scoring**:
"The cage carries NO ears by ruled canon ... and both targets carry protruding ears, so this
landmark pair is inflated under ANY correct alignment"
→ companion metric landmark_max_frac_excluding_ears. The ear region is measured, declared
unscoreable, and dropped. So the ear-scar is invisible to every gate.
In the textured frame the projection then paints a **photographic ear from the plate onto the
smooth dome** (crops/HEAD_az090.png). What reads as a pointed ear in profile is a flat picture of
an ear on a skull that has none.
Same record: hair 29,760 v / 1,488 cards excluded — "A card field has no surface for a cage to
conform to, and a cage vertex must never snap to a strand." Correct as a solver decision. But the
character's canonical silhouette read is tousled hair (see §3.1), and no stage re-adds it.
eye_l/eye_r/cornea_l/cornea_r/lashbrow all excluded. The head has no eyeball geometry. The
eyes in the render are painted sockets. anatomy.face_bearing_components shows the only extra
shells are two 136-vert eyelid-margin annuli.
GRAFT_A14_V3B_SKIRT_BALD.json: head cut at z=143.815 (0.85 cm below the chin), body cut at
z=141.915, joined by a 14-ring cubic-Hermite neck bridge (2,786 tris) spanning 1.9 cm. Perimeters
matched to 0.12 cm (30.4061 vs 30.5285). Head tapered ×0.87993.
Geometrically this is clean — nonmanifold_edges: 0, winding_defects: 0. **The seam is not a
geometry failure; it is a texture failure.** M_BODY_R14_NECK_SEAM is its own region on tile 1001
while the head is on tile 1002, baked from different plate views with different solved azimuths
(front 5.0°, side 84.0°). The two atlases do not agree in tone across that boundary, which renders
as the hard dark ring visible at az000/045/090/180.
Residual: neck_min_after_graft.residual_frac = -0.07002 — the joined neck is 7% thinner than the
spec's own neck_base_cm. Reads as the over-long, over-thin neck in the front view.
---
A/B images built for this lane:
crops/AB_FACE_turntable_vs_plate.png — head, matched heightcrops/AB_BODY_turntable_vs_plate.png — full figure, matched heightcrops/AB_bakesource_vs_headplate.png — bake source vs available head plateCHAR_0001_FLOOR14_head_clean_1344.png (1344×1344) and the bake's own front plate both show the
same character: an adolescent boy — broad flat cheek planes, wide-set steady eyes with real
irises and catchlights, a firm straight mouth, a defined jaw angle, **large pointed elven ears
protruding well past the skull**, and (in the head plate) tousled blond hair that carries the
silhouette.
Even the bake's own source at 144×170 px reads as a clearly better character than the 3D result at
the same display size. That is the finding in one sentence.
| # | Divergence | Evidence |
|---|---|---|
| 1 | Ears absent. Plate: large pointed elven ears. 3D: smooth dome + painted ear photo. | §2.3; crops/AB_FACE_turntable_vs_plate.png |
| 2 | Hair absent. Plate silhouette is hair-led. 3D is a bald egg. | §2.4 |
| 3 | Identity/sex flips. Plate = adolescent boy. 3D = androgynous-to-feminine: narrow face, dark smoky sockets, small pursed mouth, no jaw angle. | crops/AB_FACE_turntable_vs_plate.png (OPINION, corroborated by #4) |
| 4 | Cranium shape wrong. 3D skull is a tall narrow egg; plate is broader and lower. | L03 worst landmarks are ALL face-oval/temple/jaw: 162,127,21,234,93,54 (left) and 454,356,323,361 (right mirror). The divergence is concentrated on the outline, not the interior. |
| 5 | Face too small and too low on the skull. 3D brow-to-chin ≈45% of head height; plate ≈62%. Enormous forehead. | crops/AB_FACE_turntable_vs_plate.png (OPINION — a projection-registration read) |
| 6 | Eyes are hollows. No eyeball, no cornea, no lashes. | §2.5 |
| 7 | UV seams printed into the albedo. Dark wiry crackle over chin/jaw, bright vertical seam down the cranium, stair-stepped island borders across the skull. | crops/HEAD_az000.png, crops/HEAD_az090.png, crops/ATLAS_1002_head.png |
| 8 | Texture mush. Atlas 1002 is blurred low-frequency blobs, concentric ringing on the cranium island, a solid flat orange fill polygon lower-left, black speckle. No pores, no brow strands. | crops/ATLAS_1002_head.png; §4 |
| 9 | Hard dark neck ring + a second lighter ring below. | §2.6; az000/045/090/180 |
| 10 | Body reads emaciated, not the plate's lean healthy adolescent: over-carved ribs/obliques, no pec mass, stick arms, narrow sloped shoulders. | L02 front RED, worst region R07_THORAX, ±5.8-6.0 cm |
| 11 | Underwear is flat cream; plate is black. Grey mannequin band above it. | M_GARMENT_UNDERWEAR_TROUSERS → tile 1021, no atlas exists — flat_slots in the turntable record. Doll zone is PROJECTION_REFUSED_BY_DESIGN. |
| 12 | Blue-grey shards at armpits, flanks, hips, knuckles. | §4.3 — measured as plate backdrop |
| 13 | Hands are mitten claws with fused fingers, dark smears, black notches; ragged stair-stepped rim down the outer forearm. | crops/SHARD_right_arm.png; R13_HAND observed_fraction 0.4907 |
---
texture/BASECOLOR_BAKE_A14.json, plates[] — exactly three, all kind: body:
| view | plate | size | figure_h_px | px_per_cm |
|---|---|---|---|---|
| front | CHAR_0001_EXEMPLAR_BODY_14_V3_BALD_W1344.png | 326×1344 | 1089 | 6.53 |
| back | ..._BACK_W1344.png | 325×1344 | 1008 | 6.04 |
| side | ..._SIDE_W1344.png | 331×1344 | 1057 | 6.34 |
A whole figure inside 326 px of width. Head height in the source = 1089/7.5592 = 144 px; head
width ≈ 16.2 cm × 6.53 = 106 px. So the entire head is sourced from roughly **106 × 144 px ≈
15,000 pixels, and is projected onto UDIM 1002 covering 2,871,281 texels. Roughly 190× more
texels than source pixels**. That is the mush, and no shader or lighting change touches it.
build/3d/finish_a14/bake_plates.py:210-217:
"the mouth came back soft -- and the cause is resolution, not fill: at 6.5 plate pixels per
centimetre a full-body plate spends about forty pixels on a mouth. The FACE plate is the same
1344 px spent on a head, roughly six times the sampling, and the BUST plate covers the jaw and
neck at a three-quarter angle the body plates never see."
The roster (harness/asset_factory/thousand_point_eval.py:121-131) carries five views: three body,
plus three_quarter (bust) and face. Both head plates EXIST on disk at the expected names:
CHAR_0001_EXEMPLAR_FACE_14_V3_W1344.png — 506×1344CHAR_0001_EXEMPLAR_BUST_14_V3_BALD_34_W1344.png — 436×1344The default is head_plates=True (bake_plates.py:184), flag is --no-head-plates.
Timeline (git, ISO):
| time | event |
|---|---|
| 21:12:38 | BASECOLOR_BAKE_A14.json written — three body plates, no kind/used_for keys |
| 21:12:56 | textured turntable written — the graded artifact |
| 22:12:45 | e045b2b2 — bake_plates.py already contains head_plates (3 hits) |
| 22:39:26 | bc093158 — "one rasteriser, not two -- and the crop solves stop being the whole run" |
The bake record lacks the kind and used_for keys that the head-plate branch emits
(bake_plates.py:261-262), and carries no REFUSED plate entries (the failure path at
bake_plates.py:236-238 would have recorded one). Conclusion: **at bake time the head-plate code
path did not exist yet.** It landed ~1 hour later and the texture was never re-baked.
Josh graded an artifact that was one hour stale relative to its own tooling.
BASECOLOR_BAKE_A14.json, tiles:
observed_fraction 0.84737 → 438,236 texels invented by nearest-validfill. That is the concentric ringing on the cranium island.
observed_fraction 0.7731 → 558,292 texels invented (22.7%).R13_HAND observed_fraction 0.4907 — over half the hand is invented.Backdrop contamination, my measurement:
skin albedo. 758 of them render visibly on the figure in az000 alone.
bake_plates.py:245-249 describes this exact defect ("sighted on the first correct bake as
blue-grey chips down the outer arms and across the knuckles") and adds the erosion + region-label-
buffer fixes. The graded bake ran with figure_mask_eroded_px: 1 — one pixel — which was not enough.
Colour registration failure, region_palette_check:
| region | baked | plate | Δ |
|---|---|---|---|
| R11_FOREARM | [171,121,86] | [41,40,43] | 130.0 |
| R12_WRIST | [158,115,88] | [36,36,38] | 122.0 |
| R05_PELVIC_GIRDLE | [129,109,94] | [97,76,57] | 36.7 |
The plate-side medians for forearm and wrist are near-black — the comparison is sampling off-figure.
worst_max_abs_channel_delta: 130.0 rides in the record and did not stop the turntable.
BASECOLOR_BAKE_A14.json HONEST_TIER: "The plates are lit, so their lighting is baked into the
albedo -- this is a projected basecolor and not a de-lit one". bake_plates.py:455-456 notes a
standard making de-light MANDATORY for plate-derived basecolor. It was not applied. One map only —
no normal, no roughness, no ORM, no subsurface. Then re-lit by three EEVEE area lamps
(render_textured.py:130-141). Double-shaded by construction.
---
build/3d/eval/thousand_point/EVAL_A14_ASSET_TEXTURE_LEG.json, 16,288 measured points.
The bar it quotes (_bar) is Josh, 2026-08-07: *"identical-identical -- body 1:1 to the exemplar
pick, face 1:1 structural and feel to the exemplar bust, textures and palettes identical by number,
photoreal polish identical; proportion review at EVERY angle."*
Verdict per lens:
| lens | verdict |
|---|---|
| L01_proportion | GREEN |
| L02_silhouette | RED |
| L03_face_structure | RED |
| L04_tone | REFUSED — "the mesh carries no texture" |
| L05_colour | REFUSED — "the mesh carries no texture" |
| L06_seam_continuity | AMBER |
| L07_anatomical_plausibility | GREEN |
| L08_equip_swap_readiness | READY_STATIC |
The harness was right and was overtaken.
Per-point RMS over interocular 0.0396. Worst landmarks are the face outline (§3.2 #4).
z≈126 cm, and the two sides err in opposite directions (right Δ −0.0359, left Δ +0.0350) —
the chest is not merely too narrow, it is asymmetric about the plate's own axis.
A14_ASSET.obj, before the 21:12texture existed. No lens has ever scored the textured asset. Tone and colour — the two lenses
that would have caught the backdrop contamination, the 130-Δ palette error and the flat cream
underwear — are armed and have never fired.
So two RED lenses and two never-fired lenses stood between the asset and Josh, and the turntable
went out anyway. The gap is not missing instrumentation; it is that **nothing blocks a render on a
RED lens, and nothing requires the eval to be re-run against the artifact actually being shown.**
---
RC2 as stated: CONFIRMED, with one correction and one amplification.
Stated: *"the head is a bare cage wrap (no ears by scope, no hair by design, mushy at render scale)
grafted onto a fitted body — the 2D exemplar stack is strong; the 3D assembly threw its quality
away."*
Confirmed:
restoration logged as NAMED OWED and never taken (§2.3).
from ~106×144 px of source across 2.87 M texels (§1, §4.1).
UDIM boundary, not a geometry defect (§2.6).
Correction: "the 2D exemplar stack is strong" is only half true and the distinction matters.
The *dedicated head plates* are strong — FACE_14_V3_W1344 at 506×1344, BUST_14..._34_W1344 at
436×1344, FLOOR14_head_clean_1344 at 1344×1344. The *body* plate stack is natively small: the W1344
body plates are upscales of 211×870 originals, and BUST_NATIVE is 153×134. So "the 3D assembly
threw the quality away" is right about the head — a 506×1344 face plate sat on disk unused — and
is wrong about the body, where the source itself is thin. A body-texture fix that only re-runs
the projection will not reach the bar; the body needs a genuinely higher-resolution plate.
Amplification — the sharpest single fact in this lane: the graded turntable was baked
*one hour before* the head-plate code path existed, and was never re-baked (§4.2). The mush Josh
graded is not evidence that the approach cannot work. It is evidence that a stale artifact was
shown. That does not excuse the result — it relocates the defect from "the technique is far off" to
"the loop shipped an artifact its own tooling had already superseded, past two RED lenses and two
lenses that had never fired."
On the framing "why is this still so far off after thousands of iterations": the iterations were
real but they were spent on the *measurable* sub-problems — neck girth to 0.12 cm, zero non-manifold
edges, azimuth-monotone collar rings, a defensible ear-exclusion ruling. Each is correct in
isolation. Not one of them owns the question "does the assembled head read as this character."
L03_face_structure is the closest thing to that lens and it was RED and non-blocking. This is RC1
and RC5 arriving through the head: the chain optimized numbers, and the one number that was about
the LOOK could not stop anything.
---
Findings for the director, not edits.
1. Re-bake with the head plates. The path exists and is default-on today. ~3.5× linear sampling
on the face plus a three-quarter view that covers the jaw and neck the body plates never see.
Zero new code. This is the largest single gain available and it is already written.
2. Restore the ears. The NAMED OWED at CAGE_SOURCE_RECORD.json excluded_shells.reasons.ear_l/ear_r
— rigid follower keyed to the skull, or their own cage instance. Director call, per the record.
Until then a Josh-ruled canon feature is missing and no gate reports it.
3. Re-run the eval against the textured asset so L04_tone and L05_colour fire for the first time.
They are armed and refusing, not absent.
4. Make a RED lens block a publish. Two REDs and a worst_max_abs_channel_delta: 130.0 did not
stop the turntable.
5. Bake the garment tile 1021. flat_slots: [M_GARMENT_UNDERWEAR_TROUSERS] — the cream shorts
are a declared hole; the plate's underwear is black.
6. Raise the erosion and keep the region-label buffer. 34,676 backdrop texels at 1 px erosion;
the fix is on disk and unexercised.
7. De-light the projection before it is called albedo, per the standard cited at
bake_plates.py:455-456.
8. Body plates at real resolution. Unlike the head, this one cannot be fixed by re-running —
the native source is 211×870.
9. Hair and eyes are unowned stages. Excluded for good reasons, never scheduled. No character
read is achievable without them.