pipelines/COMPLETENESS_CRITIC_POSTMORTEM.md
Fresh-context adversarial read of the RC1–RC5 returns against §8.14. Read-only; nothing created,
modified or deleted under C:/dev/humanity-forgotten or C:/dev/Humanity/Humanity. No GPU, no Blender,
no Unreal, .engine_lane_lock untouched. This file is the only write, and it is in scratchpad.
route.py carries no work-kind for a pipeline post-mortem critic (the router covers canon work kinds
— chapter/region/registry authoring). No proposal was substituted for a canon node. What I read
instead, first-hand and at source:
gates dict keys directly)surfaces[] (the four declared surfaces) head_band_NOT_SCORED_BECAUSE / SILHOUETTE_NOT_SCORED_BECAUSE; file is 2,957 lines
subject, VERDICT.per_lens, VERDICT.refused, POINT_COUNTS parsed with json, not read from a lane's quote
plates[] key setNOT DERIVED (authored judgment): the nomination of RC6 (publication discipline) as a sixth root
cause; the sequencing reconciliation of the four competing "do this first" claims; the composition
of the zero-token retrospective render ladder. None had a canon home because §8.14 lists five
candidate causes and none of them names the act of SHOWING the frame.
---
SC-1 — RC1: grep -c thousand_point harness/gates_config.json = 0 against 80 gates. CONFIRMED.
The gates dict carries exactly 80 entries and no thousand_point entry. The acceptance harness is
not armed and cannot block a stage. RC1 is exactly right.
SC-2 — RC2: bake_plates.py:184 ap.set_defaults(head_plates=True). CONFIRMED at source.
L182 is --no-head-plates (store_false); L184 sets the default True; L224 is the branch
if view["kind"] != "body" and not a.head_plates.
SC-3 — RC2: the bake record lacks the head-plate branch's keys. CONFIRMED at source.
BASECOLOR_BAKE_A14.json plates[] — all three entries carry exactly
`['view','plate','plate_sha256','solved_azimuth_deg','nominal_azimuth_deg','figure_height_px',
'px_per_cm','figure_mask_eroded_px','_erosion_basis','segmentation']. No kind, no used_for`, no
REFUSED entry. RC2's inference stands on real absence.
SC-4 — RC3: TRELLIS.2's PBR volume is discarded at the export line. CONFIRMED at source.
run_trellis2_a14.py L224-231 takes mesh.vertices and mesh.faces into
trimesh.Trimesh(vertices=V, faces=F, process=False) and exports. mesh.attrs / mesh.coords /
mesh.layout are never referenced anywhere in the file. The LicenceGuard at L44-54 blocking
nvdiffrast/nvdiffrec is also exactly as quoted.
SC-5 — RC1 vs RC2/RC3: WHAT DID THE EVAL ACTUALLY SCORE? RC1 IS WRONG, RC2/RC3 ARE RIGHT.
EVAL_A14_ASSET_TEXTURE_LEG.json subject.mesh = build/3d/finish_a14/uv/A14_ASSET.obj, and
VERDICT.refused reads *"the mesh carries no texture: materials present."* The eval emitted at
20:45; the atlases were written 21:12:33–21:12:38. RC1's derivation calls this file "the assembled
textured asset" — the tag says TEXTURE_LEG, the run did not have a texture. **No thousand-point
eval has ever scored a textured A14.** Neither lane states it that plainly and the director should.
SC-6 — RC1 vs RC5 on the head-band citation. RC5 is the correct cite.
head_band_NOT_SCORED_BECAUSE is EMITTED at L1987-1988 (RC5 cites L1985-1990). RC1's L1939-1943
lands on a source COMMENT at L1941 that quotes the same sentence. Both are real text; only one is
the mechanism. Cite the emission.
---
RC1: *"the graded asset carries 183,460 vertices and 362,119 triangles … ~15x over [the 24k LOD0
floor] — and harness gate asset_budgets did not fire on it."*
What is true at source:
T1_Build_Pipeline_Contracts [ACTIVE v1.0].md:187 — Creatures LOD0 24k at steam_deck_minimum. Real.subject.triangles = 362,119. Real.asset_budgets IS in gates_config (harness/check_asset_budgets.py --out harness/asset_budgets_scorecard).What RC1 left out, and it changes the finding:
ILLUSTRATIVE-until-5090-benchmark. The gate's owndocstring already adjudicates this ("ILLUSTRATIVE DOES NOT MEAN UNENFORCED") so the number is
checkable — but it is not a ship commitment and should not be reported as a contract violation.
docs/asset_budgets.json surfaces[] declares exactly four surfaces: build/3d/manifests/staging_manifest_*.json, build/3d/characters/*IMPORT_MANIFEST*.json,
build/3d/candidates/**/*LODS*.json, and GAME:QA/bench/*_import_result.json.
build/3d/finish_a14/ is not among them.** The gate did not "fail to fire on a violation" —
A14 is off-surface.
harness/asset_budgets_scorecard.json B2 = NOT_ARMED for 353 records *"measured BEFORE the LODstage, so there is no chain to check."* A14 is a pre-LOD hero source mesh in exactly that class.
Correct finding for the director: A14 has no LOD stage and is on no budget surface. That is a
real gap and a cheap fix (add the surface with an adapter, or declare it pre-LOD with an arming
condition). It is not a 15x budget breach.
---
| RC | Lane verdict | My read | Adjudicable now? |
|---|---|---|---|
| RC1 | CONFIRMED core / PARTIAL first clause | Core CONFIRMED and independently re-verified (SC-1). "Degrading" stays unmeasured — no before/after render exists at any stage. | First clause only. The rest needs §5's ladder. |
| RC2 | CONFIRMED + strengthened | CONFIRMED, and the strongest single finding in the wave: a 506×1344 face plate existed and was never used. | YES. One open sub-question (§4, RC2-a). |
| RC3 | CONFIRMED | CONFIRMED as a PROCESS failure (SC-4). The actual question — does native texture LOOK closer — is untouched. | Process: yes. Quality: NO, needs the GPU run. |
| RC4 | 4 findings | The NVIDIA half is answered decisively. The likeness half rests entirely on uncited web evidence with a licence-blocked lead candidate. | NVIDIA sub-question yes. Everything else no. |
| RC5 | CONFIRMED + designed | CONFIRMED and re-verified (SC-6). Designed, unarmed; every band is a procedure. Two hard blockers (§4). | Design yes. Instrument no. |
| RC6 | not on the charter | Nominated: PUBLICATION DISCIPLINE. Nothing gates the path from a render to Josh's eyes. | YES, and it is the cheapest fix in the wave. |
Every one of the five lanes found a piece of this and none owns the whole:
TURNTABLE_TEX_A14_TEX_V3.json HONEST_TIER: *"not alookdev render"*) — RC3 and RC5 both quote it;
delight_atlases.py (mtime 21:30, mandatory per LOOKDEV §5) had never run and no *_DELIT atlasexists — RC5 and I both verified;
Five independently-known defects, all knowable BEFORE the frame was shown, and there is no rule that
says a frame must carry a current verdict to reach Josh. §8.14's five candidates are all about how
the asset was MADE. None is about how it was SHOWN, and the showing is what produced the grade.
---
RC2-a — was the head-plate path ABSENT or DISABLED? RC2 reasons from missing keys (SC-3, solid)
but the decisive test is one read-only command nobody ran:
git show e045b2b2^:build/3d/finish_a14/bake_plates.py | grep -c head_plates. Zero = absent (a
timing accident). Non-zero = present and not taken (a discipline finding). Different fixes.
RC1-a — the magnitude of per-stage look loss. Unmeasured, and unmeasurable without renders.
See §5-C: the meshes are all on disk and the job costs zero tokens.
RC4-a — Seed3D 1.0's LICENSE is unread at file level and RC4 names it blocking, citing the
repo's own §9 Hunyuan trap (a lane read one clause, concluded clean, queued 14 GB, found the
disqualifying clause afterwards). Nothing downloads until that file is pinned to
docs/licence_records/.
RC4-b — RC4 carries no file:line citations at all. It is a web survey, and it proposes an
IN-PLACE SUPERSESSION of PIPE_CHARACTER_MODELS_2026-08-06 §3.1 (the class claim) and §3.2 (the
Pixal3D-over-TRELLIS.2 ranking) on that basis. Under contract item 4 that supersession should not
land until a second reader verifies the DreamCharacter-1 table. RC4 correctly did not apply it.
**RC4-c — RC4's Move 2 is a PURCHASE (~$20-40) plus an upload of unreleased character plates to
third-party SaaS.** Two separate approvals Josh has not given: the spend, and putting CHAR_0001's
exemplar plates on Rodin's and Tripo's servers. No lane flagged either. The IP-out question is not
delegated — it is not a creative-within-vision call.
RC5-a — ship-scale on-screen pixel height is undefined. RC5's L12/P3 pass cannot run without it
and no doc states it (docs/asset_budgets.json carries triangles, not screen footprints). Director or
engine lane must supply the number.
RC5-b — C1 corpus pair counts are uncounted. Under RC5's own n≥8 rule, back and
three_quarter may be DESCRIPTIVE-only and unable to gate. Counting is a five-minute CPU job and
determines whether the lens can gate at all on two of five views.
ROUND 2 IS UNCOMMITTED AND UNSCORED. git status shows build/3d/finish_a14/bake_plates.py,
uv/A14_PARTITIONED.mtl and uv/TROUSERS_A14_MID_UV.mtl modified. RC1 named it as a gap. Nobody
knows whether the arm-flank fix, the de-light wiring or the single-rasteriser change moves any
verdict, because no eval has run since 20:45.
HAIR AND EYES ARE UNOWNED. RC2 states they are "unowned stages, never scheduled" —
CAGE_SOURCE_RECORD.json shows 29,760 hair verts across 1,488 cards and both corneas available and
excluded. No lane produced the schedule, the owner or the cost. On a character turntable this is the
single largest missing content and it has no home.
THE GARMENT'S CONTRIBUTION TO THE GRADE IS UNADJUDICATED. RC5 established that the asset wears
Josh's own ruled cream elven short trousers while the age-14 plate wears black trunks, and that the
slot rendered FLAT because tile 1021 was never baked. Roughly a fifth of the front figure's area in
the graded frame is a ruled design change rendered untextured. Nobody asked how much of "pathetic"
is that, or whether Josh was told.
---
All local compute. No model tokens. Ordered so that nothing destroys evidence.
A — RE-BAKE WITH THE HEAD PLATES. CPU ONLY, NO GPU, MINUTES.
Verified: bake_plates.py imports argparse/hashlib/json/math/os/sys/time, numpy, and
thousand_point_eval — no torch, no bpy. RC2 recommended this as fix #1 but never said it needs
no GPU at all. head_plates defaults True (SC-2), so it is the plain invocation.
POSITIVE CONTROL: the new BASECOLOR_BAKE_A14.json plates[] must carry kind and used_for
keys. Their presence proves the branch ran; their absence means the run did nothing new (SC-3).
B — RUN delight_atlases.py. STAGE 4b, mandatory per LOOKDEV_STANDARD.md §5 ("There is no route
in which it is skipped"), has never run — no *_DELIT* atlas exists anywhere under
build/3d/finish_a14/. Until it runs, no frame from these atlases is an admissible polish claim.
C — THE RETROSPECTIVE STAGE LADDER. BLENDER, LOCAL, ZERO TOKENS. THIS IS THE ONE THAT MOVES RC1.
Every stage mesh for BOTH generator arms is already on disk (RC5 enumerated them):
graft/GRAFT_A14_{HI3DGEN,HI3DGEN_V2,HI3DGEN_V3,TRELLIS2,TRELLIS2_V3}.obj,
retopo/CLOSED_A14_{HI3DGEN,V3B}{,_fitted}.obj, retopo/CLOSED_BODY_V3MV.obj,
retopo/QUAD_A14_V3B.obj, uv/A14_PARTITIONED.obj, uv/A14_ASSET.obj.
Render every one MATERIAL-BLIND through the existing workbench rig (build/3d/cage/render_turntable.py
constants; render_textured.py is the same bpy path), one rig, one ortho scale, one frame — the law
is already written at LOOKDEV_STANDARD.md §3 ("the rig is a constant and the subject moves … any
change between two sheets is the ASSET changing, never the rig").
This produces the pre-change ladder that answers "which stage lost the look" with pictures, at zero
token cost, and RC5 is explicit that regenerating anything first destroys it. Do this before E.
D — RE-RUN thousand_point_eval AGAINST THE RE-BAKED ASSET. CPU. L04_tone and L05_colour would
fire for the first time in the harness's existence (SC-5). Expect the 130-delta palette error and
the backdrop contamination to become verdicts instead of record entries.
E — RC3's TRELLIS.2 NATIVE-PBR RUN. GPU, ~15 min, local, zero tokens — GATED ON TWO THINGS:
(i) the director rules the nvdiffrast evaluation-tier licence read (§3.3 "research or evaluation
purposes only"; a route-deciding bake-off is evaluation, the shipped artifact is what triggers the
prohibition), and (ii) the quarantine is enforced in code so no evaluation-tier output can reach a
ship path. RC3 authored the script but per lane law did not write it to the repo — it lives in
RC3's scratchpad detail file and must be reviewed before it runs.
VALIDITY GATE RC3 specified and the director must not skip: re-run geometry at seed 42 must
reproduce the mesh already on record. If geometry moved, texture is not the only variable and the
comparison is void.
F — PIN Seed3D 1.0's LICENSE. Zero cost, five minutes, blocking on any download.
G — COUNT THE C1 PAIRS per view (RC5-b). Five-minute CPU job; decides whether the likeness lens
can gate back and three_quarter at all.
---
Four lanes each nominate a different first move:
matter AFTER RC3 shows the native output is also short
artifacts are the only pre-change ladder that exists"**
They reconcile, and RC5's constraint is the binding one. A/B/C/D/F/G are all non-destructive and
zero-token; E writes new files but destroys nothing — the danger RC5 names is re-running the CHAIN
over the existing stage outputs, not adding a new generator arm beside them. So: A→B→C→D in one
sitting, F and G in parallel, E after C has banked the ladder.
RC4's strongest objection deserves to be carried to Josh verbatim, because it is the most useful
sentence in the wave: chasing a better generator may treat the wrong root cause — if RC1/RC2/RC3
are right, a better mesh feeds the same quality-destroying assembly. And its converse is the
argument for doing Move 2 anyway: if the PAID likeness leaders also miss our plates, the whole
post-mortem reframes away from tooling and onto the head/hair/skin stages.
---
RC4's own finding is the one nobody will want and it should reach Josh unsoftened: **not one paper
or gallery in the entire Aug-2026 sweep shows a photoreal human face** — DreamCharacter-1's SOTA
gallery is stylized. The prior survey's stated reason for that silence was wrong; its conclusion was
not. No candidate in RC4's list should be promised to Josh as closing the photoreal-child-face gap,
and the answer to "what ChatGPT does in 2D in one pass" is partly that 2D generation and 3D
character generation are not the same field and the 3D one has not got there yet.
That is not a defence of the chain. RC2 is decisive on its own terms: a 506×1344 face plate sat
unused while the head was projected from ~15,000 source pixels, the ears were removed on a canon
ruling and never restored, hair and eyes were never scheduled, and the frame was shown anyway.
Those are ours, they are cheap, and A/B/C/D fix or measure all of them without a token.