COMPLETENESS_CRITIC_POSTMORTEM.md

pipelines/COMPLETENESS_CRITIC_POSTMORTEM.md

COMPLETENESS CRITIC — the five-lane post-mortem evidence wave

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.

DERIVATION

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:

head_band_NOT_SCORED_BECAUSE / SILHOUETTE_NOT_SCORED_BECAUSE; file is 2,957 lines

VERDICT.refused, POINT_COUNTS parsed with json, not read from a lane's quote

NOT 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.

---

1. SPOT-CHECKS I RAN MYSELF (six, against the returns' own citations)

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.

---

2. THE CLAIM I FOUND OVERSTATED (RC1's budget finding)

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:

What RC1 left out, and it changes the finding:

docstring 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.

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.

stage, 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.

---

3. RC-BY-RC ADJUDICABILITY

RCLane verdictMy readAdjudicable now?
RC1CONFIRMED core / PARTIAL first clauseCore 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.
RC2CONFIRMED + strengthenedCONFIRMED, 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).
RC3CONFIRMEDCONFIRMED as a PROCESS failure (SC-4). The actual question — does native texture LOOK closer — is untouched.Process: yes. Quality: NO, needs the GPU run.
RC44 findingsThe 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.
RC5CONFIRMED + designedCONFIRMED and re-verified (SC-6). Designed, unarmed; every band is a procedure. Two hard blockers (§4).Design yes. Instrument no.
RC6not on the charterNominated: PUBLICATION DISCIPLINE. Nothing gates the path from a render to Josh's eyes.YES, and it is the cheapest fix in the wave.

RC6 — the cause nobody owns

Every one of the five lanes found a piece of this and none owns the whole:

lookdev render"*) — RC3 and RC5 both quote it;

exists — 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.

---

4. WHAT IS MISSING FOR ADJUDICATION

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.

---

5. THE ZERO-TOKEN WORK THAT IS FULLY SPECIFIED AND READY

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_evalno 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.

---

6. THE SEQUENCING CONFLICT NOBODY RESOLVED

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.

---

7. THE HONEST COUNTERWEIGHT

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.

Generated by harness/site/structure_site.py — the URL path is the repo path. review root