AAAAA_IMPROVEMENT_REGISTER_2026-08-06.md

pipelines/AAAAA_IMPROVEMENT_REGISTER_2026-08-06.md

THE AAAAA IMPROVEMENT REGISTER — 2026-08-06

What this is. Josh asked one question: *"what are you using that we need to improve on?"* Six

domain lanes read their own records cold — character 3D, creatures, music, animation, world and

rendering, engine tooling, garments and texture — and returned the tools actually in use, the

measured ceiling each one hits, and what would move it. This file is the synthesis: every improvement

across all six domains, ranked by slice impact ÷ cost, each row carrying the measured number and

the record it came from, its cost class, and the queue wave it belongs to.

Authority. PROPOSAL-TIER. This register ranks work; it rules nothing. Canon, the CVD, and Josh's

rulings bind every row in it. Where a row proposes a NEW wave, the wave is named so it can be

appended to docs/HANDOFF_2026-08-05_ACCOUNT_SWITCH.md section 8.7 (the standing queue) rather than

run beside it.

---

1. Executive summary — the ten-line answer

1. Four of the things we use are at their measured ceiling; most of the stack is not the problem, and the records say which is which rather than leaving it to taste.

2. TripoSG mesh lift and the ratified MV-Adapter texture route are PROVEN and are NOT the ceiling — 0.9883 texel observation on the serpent rebuild, 151 of 187 creature meshes staged, 61 of 61 lookdev values landed, GPU p99 13.282 ms inside a 16.67 ms budget with headroom and nothing to spend it on.

3. Ceiling one is RETOPOLOGY: AutoRemesher, the only quad-retopo tool in the stack, produced literally zero quads on the face (remesh_used=false, out_quads=0, CHAR_0001_FACE_finish.json), so no stage anywhere emits a shared-topology cage — and continuous aging (a RULING), every facial rig, morph-target customization and 187 aging meshes all sit behind that one missing stage.

4. Ceiling two is ARCHETYPE COVERAGE: one motion solver (LIMBLESS) serves 13 of 187 creature rows (6.95%), the elevation and marks tools are keyed to that single rig by construction, and no coat or groom stage exists at all for the 62 QUADRUPED and 11 ARBOREAL_PRIMATE rows.

5. Ceiling three is ACE-Step's PROMPT WINDOW: 56-59% of every derived music instruction is shed before generation to fit 189 usable caption tokens, the six dimensions pinned at full error are dimension-for-dimension the shed ones, and the one experiment that would separate "the generator cannot" from "the instruction never arrived" ran on the wrong checkpoint and self-declares admissible=false.

6. Ceiling four is UE 5.8's PYTHON SURFACE: it cannot create-and-register a component, wire a graph node, write a Niagara module input, or read per-LOD triangles — and we already own the fix pattern (a headless-callable UFUNCTION in Source/HumanityEditor), have instantiated it twice, and have written 17 probe scripts to rediscover the same absences instead.

7. Two instruments we currently trust are actively misleading us: the foot-slide mean (four waves proved no content clears it — Epic's own motion-matched library made the whole-run number WORSE, 0.5650 to 0.6726) and a far-field artifact probe pinned to a camera station that silently moved 3.65 km horizontally and 802 m down under an unchanged site id.

8. The cheapest wins on this register are not new tools at all — they are passes we already own and have simply not run: the protagonist's body is a flat cream CONSTANT sampling zero textures across the lower two-thirds of every frame, twelve authored creature animations are unbindable behind a patch already written out verbatim, and the pivot head's de-light pass exists and was never run on it.

9. Exactly two rows on this register need money — canopy substrate and a real hit-reaction set — and neither of them is the $1,000 music corpus, which has no lever on this generator until the 189-token question is settled.

10. Ranked by slice impact ÷ cost the top twelve rows are all free/config or a single tooling-day, and the binding constraint (the wrap cage) ranks thirtieth by ratio and FIRST by absolute impact — which is exactly why it gets its own wave instead of competing with the finish passes for the same hours.

---

2. How this register is scored

Slice impact (I), 1-5, measured against THE JOSH GATE — the AAAAA-polished PROLOGUE→CH 13 slice,

not the whole arc.

Cost (C), 1-5, in the four declared classes.

placement, a record emit, or a commit of a patch that is already written out verbatim.

chain, a first install, or GPU-hours as the dominant cost.

Rank = I ÷ C, ties broken by absolute impact. The ratio deliberately floats cheap finishes above

the binding constraint. That is the correct read, not a defect in the scoring: the finish passes and

the wrap-cage engineering are different lanes that do not compete for the same hands, and section 5

names the binding constraints separately so they are never lost inside a ranked list.

Wave column. Q1-Q10 are the standing queue in HANDOFF section 8.7. Six NEW waves are proposed

here and named in section 6; they are beyond the floor of what Josh asked for and are NAMED as such

so they can be vetoed.

---

3. THE RANKED REGISTER

3.1 Tier A — ratio 3.0 and above (free/config, real slice movement)

#ChangeThe AAAAA gap it closes — measured number and recordCost classWaveI÷C
1Land the creature skeletal-bind patch: add ResolveSkeletal(CanonId) to HumanityGeneratedMesh, branch it ahead of the static path in Bind, load the creature idle after the HumanityEnemyCharacter call site, bind Row.PhaseAnim per attack in AuthorMovesetCR_0001 and CR_0002 both read binder_resolves = STATIC, skeletal_visible_at_runtime = false; 12 authored assets (8 AnimSequences + 4 AnimMontages, windows read back off the saved asset) have never been bound by anything. GAME:QA/bench/creature_rig_truth.json .runtime_bind; patch written verbatim at GAME:QA/bench/CREATURE_ANIM_CXX_GAP.mdfree/config (C1) — patch pre-written with its own verification checklistQ15.0
2Run the BODY texture batch pass on the shipped protagonistThe Body slot is a flat cream CONSTANT sampling ZERO textures over 45,110 verts occupying the lower two-thirds of every full-body frame — the only known_limits.still_open item with no route question attached. build/3d/characters/CHAR_0001_HEAD_AUTHORED_RECORD.json /body_half + known_limits.still_open[0]; the MV-Adapter route is ratified and has run on 9 assetsfree/config (C1)NEW Q05.0
3Land the twelfth DR-2 asset class (Animation / montage; resolver key canon_id + presentation_tier_ref; drop path /Game/Animations/<class>/AM_<ability_id>) with the generation_* / asset_licence_ref / animation_source column family, in one commit with a single fidelity-baseline re-emit0 of 1,415 registry columns carry `anim\montage\mocap\keyframe\lip\viseme\facial\shot\camera\perform (2 hits, both an unrelated duration_class), positive-controlled against 65 columns for mesh\generation. docs/pipeline_review/gap_audit_2026-07-29/LANE_animation-cinematics.md` finding 2; tracked OPEN as GAP-199/GAP-200free/config (C1) — schema plus one baseline re-emit; already RULED as STACK_CONFLICT C-13NEW Q04.0
4Import and bind the substrate rows already licence-paired on disk48 ACQUIRED_UNBOUND + 6 PLANNED_NOT_IMPORTED rows off an 86-row / 10.12 GB acquisition with sha drift 0; delivered understory density 0.27369/m² against a 0.35 target. GAME:QA/bench/world/substrate_acquisition_manifest.json bind_state_countsfree/config (C1)NEW W84.0
5Rule the 42 NEEDS_CANON_BODY_PLAN folklore body plans (the anatomy reference and the archetype map both refuse to guess and say so)42 of 187 roster rows = 22.5% are unmeasurable by tooth T7 and unriggable by any solver until the ruling lands; no tooling change can touch them. GAME:QA/bench/creature_archetype_census.json .archetypesfree/config (C1) — a director ruling, no engineeringQ34.0
6Run the de-light pass on the pivot head's basecolorThe pivot ships 1 basecolor + 2 constants; the plate's own lighting is baked in, the warm transmission is PAINTED INTO basecolor and does not respond to a light change, and the de-light pass exists and was simply not run on this asset. build/3d/characters/CHAR_0001_FACE_PIVOT_RECORD.json /gaps_named_not_papered_over[1] (APP-C5)free/config (C1)NEW Q03.0
7Re-run the 8-dimension two-pole control-surface probe on the PINNED acestep-v15-turbo configbuild/audio/proof/run_probe.json shows dit=acestep-v15-xl-sft — the checkpoint the proof itself demonstrates receives no caption conditioning; control_surface.json self-declares positive_controls_responded=false, admissible=false, both controls flat (centroid spread 3.7 Hz, bpm spread 0.0). The apparatus, spec and poles all exist; only the checkpoint was wrongfree/config (C1) — one GPU run (~2 min) plus ~16 min CPU measurementNEW QM3.0
8Place a site marker at the W4 stand under the SUBJECT-named id blocky_probe_inerie_2200m and repoint both far-field probes at itcomposed_view_04 moved 3.65 km horizontally and 802 m down under one unchanged site id (W4 elev 913.8 m → W5 elev 111.59 m); the artifact probe photographs understory foliage believing it frames a 2.2 km cone, and three mask-authority ablation numbers were already RETRACTED for it. GAME:QA/bench/world/blocky_station_drift_W7a_20260806T042431Z.jsonfree/config (C1)NEW W83.0
9Card the 61 Okami and 9 AC2 FLAC files already on disk at D:/audio/exemplars/Corpus is 4 ACQUIRED / 178 MISSING / 0 CARDED against a 182-row target, with three of seven purpose classes at zero anchor (EXPLORATION 48 rows, MELANCHOLIC 23, TENSION 21); the Flores exploration target is currently derived from a Deus Ex ambient cue chosen because it is the reference that exists. build/audio/exemplars/CORPUS.json (182 rows, verified at HEAD); 132 cards on diskfree/config (C1) — $0, ~70 min local CPUNEW QM3.0
10Run the cold re-judge on the elevated CR_0002 and import it, retiring the 25-bone v1 rig and the mis-authored tail-swipe clip in the same commitThe one creature that completed every stage is still not imported; /Game/Creatures/CR_0002 carries the OLD 25-bone v1 rig and a Strike_guardian_tail_swipe the rebuild correctly WITHHELD. Gallery reads 152 creature cards, 6 in engine, 0 AAAAA-VERIFIED. GAME:QA/bench/limbless_assets_CR_0002.json; build/gallery/gallery_data.jsonfree/config (C1) — runs existing tools; clears 2 of 3 T7 waiversQ13.0
11Navigation obstacle relevance: hand-place ONE static trunk inside the invoker radius and re-run the 8-bearing ringCONTROL n4 FAILED — max_ratio 1.0000 and mean_ratio 1.0000 over 6 non-partial paths; six bearings returned two-point paths of exactly 3000.0 cm for a 3000.0 cm straight line, so 159 solid trunks and per-tier affects_navigation reached the world and NOT the navigation data. GAME:QA/bench/world/navmesh_L5a_20260806T044944Z.jsonfree/config (C1)NEW W83.0
12Settle the foot-slide STATISTIC rather than chasing its mean: take the three sprint readings BUG-0048 asks for, then either land a four-band-passing statistic or record the mean as diagnostic-only at walk with the median scoredAt foot_cycle_ratio 1.0050 — a gait with no stride deficit left to remove — the four mean bands still read 0.3787 / 0.4208 / 0.3798 / 0.3195, mean_bands_green_at_cycle_unity = 0 of 4; 0 of 120 swept contact windows put walk inside the band on any content; two independently authored AAA sets both floor at 0.32-0.36 at walk. GAME:QA/bench/stridefix_ab_ingame.json, contact_window_sweep.json, fg02_probe_shipped.json / fg02_probe_gas.jsonfree/config (C1) — three runs and a decision; the 2× mutation arm stays HARD REDQ93.0

3.2 Tier B — ratio 2.0 to 2.5 (one tooling-day, or free/config at lower impact)

#ChangeThe AAAAA gap it closes — measured number and recordCost classWaveI÷C
13Convert the pivot head's 2,558 strand shells into hair CARDS with alpha, using the proven emitter (1,488-card groom against authored T_HAIR_BCA / T_HAIR_FLOW, ramp de-clipped 0.3146 → 0.0000)Closes three measured ceilings in one pass — the LOD floor (LOD2 = LOD3 = 51,492 tris, cause proven to be the shell count by a topology-free control at 51,282), the texture hole (~19.3% unobserved, concentrated on the back of the head where strand mass occludes the six views), and the loudest appeal gap against the floor sheet's soft flyaway mass. build/3d/characters/CHAR_0001_FACE_PIVOT_RECORD.json /lods + /texture; the record calls it "the highest-value next step by a wide margin"tooling-day (C2)NEW Q02.5
14Graft the authored eye aperture and refractive cornea onto the pivot candidate (490 quads removed, 136 bridge edges, lid margin on its own UV island, cornea apex 0.03 cm behind the lid plane, IPD 5.44 cm) plus the MI_CHAR_0001_Eye / MI_CHAR_0001_Cornea slots0 refractive corneas, 0 apertures on the generated route — the eyes are painted on a closed surface and "THE ROUTE DOES NOT SOLVE THIS AND WAS NEVER GOING TO". APP-C3 is the one rubric check the generated route structurally cannot satisfy. CHAR_0001_FACE_PIVOT_RECORD.json /gaps_named_not_papered_over[0]tooling-day (C2) — geometry and material slots both already survived an engine importNEW Q02.5
15Author the SSS / ORM / normal stack for the pivot head, porting the incumbent's emitters (T_HEAD_SSS thin-tissue transmission, T_HEAD_ORM authored cavity AO, five-layer T_HEAD_N, micro-relief normal_map_x std 0.03289 → 0.09387)The pivot's mesh reads BELOW the RULED age-band floor and the record names the gap as "materials and hair rather than the face"; the candidate reads as sculpted ribbons over waxy skin. CHAR_0001_FACE_PIVOT_RECORD.json /VERDICT_vs_the_floortooling-day (C2)NEW Q02.0
16Decouple the elevation and marks arc parameter from bl_limbless_rig: recover the per-vertex body parameter from ANY rig's weighted-mean bone index along a named chainbl_creature_elevation.py recovers its arc parameter from the limbless rigger's authored weights by its own docstring, so elevation and marks cannot run on any creature that rigger did not touch — 13 of 187 rows. GAME:QA/bench/creature_archetype_census.json .coveragetooling-day (C2) — the maths is already index-basedQ12.0
17Populate T0_Boss_Attack_Rail from the fight-grammar tables the 29 bestiary sheets already carry (body origin, tell_shape_class, counter_class, part_ref, phase_index)0 rows against 27 authored columns, re-derived at HEAD — every armed tooth on it (MFL-C3, MFL-C12) is PASS-on-empty. registries/T0_Boss_Attack_Rail [DRAFT v0.1]/Sheet1.csvtooling-day (C2)Q22.0
18Populate hitzone_parts beyond the single populated boss row and add the tooth asserting the three-currency payout the runtime already supports (DamageMultiplier, BreakThreshold, DisablesAttackId, TellSlowMult, carve material)hitzone_parts 1/284; phase_trigger 0/284; escalation_vector 0/284; phase_voice_array 0/284; boss_sfx_id_ref_array 0/284; voice_signature_ref 0/284 — against composure_nodes 283/284. Re-derived at HEAD from registries/T0_Boss_Encounter_Registry [DRAFT v0.1]/Sheet1.csvtooling-day (C2)Q92.0
19Take the MetaHuman body for the ADULT and ADOLESCENT bands now, through the verified head-only seam, leaving the child band on our own solve64 of 167 cast rows never appear as a child at all and ADOLESCENT/ADULT is where the arc spends most of its length; the gate is already spent (credential persisted 360.552 s → 4.39 s silent, 2,325 assets mount, 30 continuous constraints over Height 110-240 cm honoured to ±0.35 cm on real geometry). build/3d/characters/METAHUMAN_CAPABILITY_RECORD.json. It does NOT unblock the child band — 0 of 30 constraints is age, all 18 archetypes adulttooling-day (C2) — capability measured and installedQ72.0
20Replace the deterministic rotation cursor in HumanityAttackComponent::SelectNextAttack with the weighted P(move\state) selection COMBAT_ENCOUNTER_SYSTEM section 8 already rules, and emit a per-encounter selection logThe runtime is commented "Deterministic rotation through the moveset (the variety home)"; MFL-C2 names this a CONTRADICTION rather than a gap and the single highest-leverage axis. GAME:Source/Humanity/Private/Combat/HumanityAttackComponent.cpptooling-day (C2)Q92.0
21Add UHumanityEditorUtil::AddAndRegisterComponent — a HUMANITYEDITOR_API static UFUNCTION doing NewObject + RegisterComponent + AddInstanceComponentThe highest-recurrence engine gap: three unrelated lanes worked around it separately, and the first dressing pass shipped 12,014 individual StaticMeshActors before the workaround was found (actor count 12,067 → 265 after). GAME:Tools/dress_flores_look.py, Tools/world/bind_pcg_density.py, Tools/anim/capture_creature_motion.py; captured traceback in QA/bench/world/pcg_bind_20260805T113812Z.jsontooling-day (C2) — one function; the module and its Build.cs already existNEW QE2.0
22Insert a garment-shaped pre-UV decimation stage into the fitted_garment route, run as a LADDER (134k baseline / 60k / 24k), each rung re-unwrapped, re-baked and re-judged coldLOD0 is 134,136 + 91,260 + 21,408 = 246,804 tris for the set; the chest alone is 6.34× its own 21,154-tri base body and 5.59× the steam_deck_minimum floor. Every other asset class passes through finish_mesh2.pre_decimate; both garment staging scripts write straight into the finish layout and neither contains the string "decimate". build/3d/characters/CHAR_0001_ARRIVAL_SET_V3_IMPORT_MANIFEST.json; UE read-back GAME:QA/bench/char_0001_arrival_set_import_result.jsontooling-day ×2 (C2) — invalidates the AO bake and the authored atlas, so stages 4-6 re-runNEW QG — must precede Q42.0
23Close the ornament motif gap with a MOTIF LADDER (raise period_mm so a leaf cell clears ~12 texels instead of 7.0; drop AA sigma from 0.7 once the stroke is wide enough) and turn the file's own comment into a refusal on texels-per-strokeThe cold judge named it as the one gap: the motif reads as a fine cord rather than the plate's leaf-and-vine. Derivable from the record's own numbers — at 0.3812 mm/texel the 8 mm band is 21.0 texels, a leaf cell 7.0, the dark stroke ~3.1 texels, then a 0.7-texel Gaussian (23% of its own width) at 29% contrast before BC compression. build/3d/characters/CHAR_0001_OUTFIT_V3_APPEAL_JUDGE.json, CHAR_0001_OUTFIT_V3_TEXTURE.jsontooling-day (C2) — re-author of the atlas only, no re-unwrap, no re-bakeNEW QG2.0
24Freeze creature AI during any look-or-motion A/B captureOFF-arm spread at the two creature stations is 0.0339 and 0.0330 against 0.0020 at the readable control station, because the subject WANDERS between runs and the subject box lands on different pixels — so no lever smaller than ~25% of base luma is measurable. GAME:QA/bugs/BUG-0054.json, which names it "the cheap fix and it is not built"free/config (C1) — a capture-harness flagQ82.0
25Re-run the mask-authority ablation at the RESTORED station with its own repeatability pair, then run the surviving candidate (replace flat_m with a constant)Six single-subsystem lighting ablations move the blocky artifact by at most 2.7%; the W5 material fix moved it 0.2846 → 0.2834 lit and one cluster is unchanged by every arm. The UNLIT arm eliminated the heightfield as a source of base COLOUR, which is not the same as eliminating it as the source of the NORMAL. GAME:QA/bench/world/blocky_mechanism_W5.json, WORLD_RUNG_W5.mdfree/config (C1) — one material build and one capture per arm; depends on row 8NEW W82.0
26BUG-0054 arms A and B: run the creature rim at tens of thousands of candelas and rotate placement azimuth to 120-140° off camera instead of 180°The rim is arithmetic-dead: 45.0 cd at 232.0 cm = 8.36 lux = 0.0065% of the 128,000 lux key, and this map's own FILL of 300 lux is called "a trace" — the rim is 36× weaker than a trace. Placed 185 cm behind / 140 cm up = 37.1°, so camera-facing pixels get N·L = −0.797 clamped to ZERO. GAME:QA/bugs/BUG-0054.jsonfree/config (C1) — one cvar and one placement; depends on row 24Q82.0
27Wire masterpiece_proof.py --self-test (25 controls) into harness/gates_config.json beside the 9 other music_* gates0 appearances of masterpiece_proof in gates_config.json while music_battery, music_picks, music_cards, music_seams, music_orchestrate, music_stack, music_acquire, music_recompose_realise, music_compose_arm_b are all wired. The config's own note for gates 55-57 states the rule this violates: a check not in the runner is not armedfree/config (C1) — one config entryNEW QM2.0
28Card the pole_turbo / pole_base / probe WAVs and emit the three-checkpoint comparison as a script-written poles.jsonThe most load-bearing single claim in the music lane — that turbo conditions and base/xl-sft do not (turbo 1892 → 2138 Hz; base 1378 → 1304 wrong direction; xl-sft 1980 → 1976 no separation) — exists only in prose and a code comment. The WAVs exist; pole_turbo/s.json carries only generation metadatafree/config (C1) — ~12 min local measurementNEW QM2.0
29Prune the three unused material slots per garment piece before exportUE reads material_slot_count 4 on every piece with exactly ONE used, sitting on the steam_deck_minimum cap of 4 with 3 dead entries, in front of a doctrine gate whose stated tier is automated slot count per asset. GAME:QA/bench/char_0001_arrival_set_import_result.json; bl_split_skinned_pieces.py already identifies the used slotfree/config (C1)NEW QG2.0

3.3 Tier C — ratio 1.25 to 1.67 (the structural work, including both binding constraints)

#ChangeThe AAAAA gap it closes — measured number and recordCost classWaveI÷C
30Build the SPRAWLING_QUADRUPED then QUADRUPED solver, reusing the limbless chain maths plus four foot-planted limb chains with ground contact (CR_0001's rig already exists as a BRANCHING_TREE: one spine plus four 3-bone limb chains branching at spine_02/03/07)Solver coverage 13 of 187 = 6.95% → 79 of 187 = 42.2% in one archetype. Every quadruped in the roster is motionless by construction. GAME:QA/bench/creature_archetype_census.json .coverage, whose own routing note reads "NEXT — CR_0001 already has the rig"tooling-day ×3 (C3) — chain maths, bake path, readback teeth and render-report instrument all proven on LIMBLESSQ11.67
31Author section 10 (physical_profile) on the other 28 bestiary sheets1 of 29 sheets carries the ruled physical panel (sheets_scanned: 1, 10 zones, 7 elements on CR_0002 alone) — 28 named gaps. The template, the fixed table headers, the parser and the derivation grid all exist and author no magnitude; the sheets are the only missing input. build/creature_physical/INDEX.jsontooling-day ×3 (C3) — authoring volumeQ21.33
32Treat the 189-token window as a design parameter: split each cue into two or three conditioned passes (or generate stem-wise) so a different subset of the 21 dimensions gets full bandwidth per pass, and drive the structurally post-hoc dimensions at the arrangement layer instead of through the captionRoughly half the residual scalar distance sits in dimensions whose clauses are dropped for space — 46.6% / 52.7% / 63.4% of scalar error in dimensions that did not move AT ALL between two very different captions, with 9, 8 and 11 of 21 dimensions identical-error. build/audio/proof/diffs/MPX_*_r1.diff.json vs *_r2.diff.json; spec_r2.json clauses_shed_to_fit_encoder_window. Tutti arrivals are 0.0/min on all six generated tracks against targets of 1.358, 5.939 and 12.290model-swap (C3) — pipeline design plus GPU runsNEW QM1.33
33Write Tools/npz_to_bvh.py and prove the chain end to end on ONE clip: NPZ → BVH → Blender headless FBX bake → UE import → IK Retargeter → a playing AnimSequenceThe entire generated-motion lane is licence-cleared, budgeted and completely unexercised — Kimodo-SOMA-RP-v1.1/SEED/G1 and ARDY-Core all read SHIPPABLE under the NVIDIA Open Model License, and the one format-chain link the contract specifies does not exist. GAME:QA/bench/LICENCE_SITTING_2026-08-02.md; docs/pipeline_review/tech_research/PIPE_ANIMATION_2026-07-29.md section 3. It is ENGINE-class under the reuse directive, so game #2 inherits itmodel-swap (C3) — one exporter plus a first installNEW QM/QE boundary — animation sourcing1.33
34Add a WRAP / RETOPO stage: one shared-topology head cage wrapped onto each generated shell so every face on every route shares a vertex orderTHE BINDING CONSTRAINT. The stack's one retopo tool measured out at zero — remesh_used=false, out_quads=0, "AutoRemesher produced no usable quad mesh" (build/3d/candidates/face_pivot/CHAR_0001_FACE_finish.json). Costs, all measured: continuous aging is a RULING and V2_ROUTING_RATIFIED.json states flat that "two age states generated independently CANNOT be blended — there is no vertex correspondence to blend along" against 187 aging meshes and 103 characters touching a child band; 0 face bones on either route (Bones=89, no FACS rig); the LOD chain floors at 51,492; CVD Selection 3 face/skin-tone customization needs morph targets on a shared cage; 1 of 167 cast rows has been through the rubrictooling-day ×5 (C4) — needs a WRAP solver, not another remesherNEW QA — gates Q71.25
35Take the canopy substrate acquisition through the Fab RustDesk touchpoint (Josh signs in at the editor's Fab browser, scoped to canopy tree models + understory plants), then bindDelivered canopy density 0.0/m² against a 0.02/m² target while ground clutter already hits 1.8014 against 1.8. The biome file states it outright: the canopy "is the layer that most decides whether a frame reads as jungle" and is kept deliberately EMPTY rather than substituted. The renderer is measured NOT to be the ceiling — the CINE_TIER A/B proved the profile reaches the renderer (0 of 4 identical frames) and the cine frame still read as a flat plain with ~8 countable plants. GAME:Tools/world/biomes/flores_monsoon.json; QA/bench/world/runtime_density_W5_BOUND_TO_RESHOOT_20260805T161310Z.json; WORLD_RUNG_W1.mdspend (C4) — human-gated; the Fab plugin exposes no acquisition API and carries no reusable credentialNEW W81.25
36Acquire or generate a real hit-reaction set (light flinch, heavy flinch, stagger, per approach direction) and swap it into the three-tier roster ordered by the already-measured absorption depths 20.62 / 35.32 / 49.22 cm"There is no authored hit-reaction mocap in this project" — verbatim, GAME:TODO_CANON.md. The roster is Epic LANDING clips repurposed. The runtime is proven: reactions 2/2 played, nudge_fallback 0, both delivery paths exercised, both tiers resolved from numbers the runtime already computed. GAME:QA/combat_feel/combat_feel_20260805T110859Z.json. The ledger's own words: swapping in real clips is a table edit whose ordering claim is already armedspend (C4) — or model-swap once row 33 landsQ91.25

3.4 Tier D — ratio 1.0 to 1.5 (real, sequenced behind the tiers above)

#ChangeThe AAAAA gap it closes — measured number and recordCost classWaveI÷C
37Add UHumanityMeshInspector::GetSkeletalLODStats returning per-LOD tris/verts/sections/bones off GetResourceForRendering()->LODRenderDataPer-LOD absorption is UNMEASURED on the protagonist head after a rung that added 18.73% LOD0 triangles (85,764 vs 72,236; shipped default 96,280 vs 82,752), because UE 5.8's Python exposes no lod_info on SkeletalMesh. Four character import manifests currently carry Blender-measured per-LOD tris instead — an artifact-side number for an engine-side question. build/3d/characters/CHAR_0001_HEAD_AUTHORED_RECORD.json triangle_budget.per_lod_absorption, which specifies this exact APItooling-day (C2) — read-only traversalNEW QE1.5
38Publish Tools/ue_api_surface.py emitting a committed QA/bench/UE58_PYTHON_SURFACE.json capability record, positive-controlled (every "absent" verified against a symbol known present in the same run)17 probe_*.py scripts under Tools/ and 8 separate d127_niagara_*.json records exist purely to rediscover the same surface; two absent symbols were independently rediscovered by three lanes. Makes "is this reachable from Python?" a lookup rather than a commandlet runtooling-day (C2)NEW QE1.5
39Capture the contact-displacement frame sequence W6 was asked for — a walk through grass with the flattening and the recovery visible against a static backgroundThe interaction axis reads BELOW against the teacher with every claim on it a log line rather than a look; press 1.0 and a 10.72 s fitted recovery (against 7.0 s configured, reproduced within 0.01 s) are invisible in prose and obvious in six frames. GAME:QA/bench/world/world_comparator_score_W6_interaction.json, WORLD_RUNG_W6.md. No capture_script_world_* targets it todaytooling-day (C2) — the UI gate already makes frames cleanNEW W81.5
40Arm a triangle-budget tooth reading the spec-class column from T1_Build_Pipeline_Contracts rather than a typed constant, WARN-with-a-number rather than refusing, mutation-proven on the 134,136-tri chestNo gate anywhere in harness/ or the game repo reads a triangle budget; the LOD tooth checks orphan_vertices == 0 and bbox drift only. The head record already had to write "per-LOD absorption UNMEASURED" for the same reason. The contract self-tags every number ILLUSTRATIVE-until-5090-benchmark, which is why a hard refusal would assert more than its authoritytooling-day (C2)NEW QG1.5
41Separate the AO out of garment basecolor into an ORM channel and derive an ornament normal map from the same field the ornament is painted fromThe atlas multiplies a 0.74-1.00 occlusion range directly into albedo, so engine AO/GI double-darkens every crease the bake already darkened; and 5 mm of authored relief has no normal support. The photo book derives tier GREYBOX on all three pieces because derive_tier wants a full PBR set. build/3d/characters/CHAR_0001_OUTFIT_V3_TEXTURE.json; author_outfit_ornament.pytooling-day (C2)NEW QG1.5
42Replace the whole-body PCA silhouette proof with the doctrine's own DISTANCE test for telegraph claims: black-fill wind-up vs idle at the shipped combat camera distance, requiring the breakable part to occupy a measured silhouette fractionThe epaxial ridge — built expressly because "a painted highlight does not survive in a silhouette" — measures at compactness delta +0.00101 and hull-fill delta +0.00184, indistinguishable. Strike legibility: venom spit 0.0961, constriction lunge 0.4877, coil press 0.7071, all BELOW IdleCoiled 1.8235 and Slither 1.9026 — the MFL-C4 class the judge failed it on. build/3d/silhouette/CR_0002_elevation/SILHOUETTE_PROOF.json; build/3d/creature_rig/CR_0002_MOTION.jsontooling-day (C2)Q11.5
43Add a single-clause probe mode: for each dimension pinned at full error, generate with a caption carrying ONLY the invariants plus that one clause, so nothing is shedSix dimensions sit at error 1.0 in BOTH revisions — time_to_full_texture_s, tuttis_per_min, raises_per_min, dynamic_range_db, note_rate_per_s, onset_type — and all six appear in the shed list of the sample that pins them. "The lever does not move the machine" and "the lever was never connected" are not distinguished by any record in the lane. build/audio/proof/TABLES.md cross-read against spec_r2.jsontooling-day (C2) + GPUNEW QM1.5
44Parameterize the CHAR_0001-shaped scripts into a per-character path keyed on the cast matrix, and emit an APP-C8 coverage number per wave closeAgainst the ruling's own scope ("Everyone needs to be good looking… Same with all our characters and companions"): 1 of 167 cast rows through the rubric, 187 meshes required once aging is counted, 103 characters touching a child band, CHILD_LATE_AGE_12 specified with 0 meshes solved. build/3d/characters/CHAR_AGE_BAND_MATRIX.json; METAHUMAN_CAPABILITY_RECORD.json /cast_scaletooling-day ×3 (C3) — must FOLLOW row 34 or it bakes the correspondence gap into 167 assetsQ71.0
45Attribute the game-thread tail one level deeper and repair Tools/world/run_world_loop_fps.py --csv-channels, which returns BLOCKED because the loop capture session lands outside the projectFrameTime p99 61.486 ms against GPUTime p99 13.282 ms inside a 16.67 ms budget; GameThreadTime p99 23.73 ms with a 5297.497 ms worst sample over 9038 samples. Every rung since W5 has known the tail is not the GPU and none has named what it is; the per-station fps table has been unmeasured for two rungs. GAME:QA/bench/world/world_comparator_score_W5_selfview.json, WORLD_RUNG_W5.mdtooling-day ×3 (C3)NEW W81.0
46Generalize the sample-on-predicate capture primitive: snapshot the first frame on which Predicate(Context) is true, bounded by N retries, instead of per-assert constantsThe capture race is closed for exactly one station kind by two hard-coded constants (WindowStationMaxRetries 30, WindowStopAlphaMax 0.55f); every future MOMENTARY assert — parry window, breath window, chain-pip fill, i-frame — re-hits the same AwaitInput + 14-settle-frame race that made a pass "close to a coin flip" (gd_03 alpha 0.647, gd_04 alpha −1.00 0.61 s later, whole windup 0.55 s). GAME:Source/Humanity/Public/QA/HumanityLoopQADriver.htooling-day ×3 (C3) — pairs with the telegraph-LEDGER patternQ91.0
47Add a coat / groom stage to the factory (cards or strands, plus its licence read), keyed to archetype the way the pose clause now is73 rows (62 QUADRUPED + 11 ARBOREAL_PRIMATE) cannot reach AAAAA as bald shells no matter how good the rig is. A grep for `groom\fur\hair card\xgen\fibermesh across harness/, build/3d/schema/ and GAME:Tools` returns only the CHAR_0001 head's hair cards and the rubric's lens list — zero creature-coat tooling existstooling-day ×5 (C4)Q81.0
48Add UHumanityDataTableUtil::GetRowAsJson / GetAllRowsAsJson wrapping FTableRowBase export for C++ USTRUCT row typesget_data_table_row_from_name and get_data_table_as_json are both absent (probed live), so audio_asset_audit.py reconstructs rows column-wise — which only works when the auditor knows the exact column name in advance, so a renamed column reads as an empty audit rather than a failuretooling-day (C2)NEW QE1.0
49Add UHumanitySkeletonUtil::GetReferencePoseTransforms returning per-bone local and component-space transformsReference-pose local transforms are not exposed, so rig_truth.py derives chain geometry from IMPORTED BOUNDS and bone ORDER only — which the file itself flags as "a weaker input than real bone lengths" the solver has to be told it receivedtooling-day (C2)NEW QE1.0
50Add the tail-side strike term to the limbless solverThe solver gates strikes on s > 1 − strike_fraction and s=1 is the HEAD, so a tail attack has no tail-side term; the rebuild correctly WITHHELD the 8th clip while the shipped v1 asset still carries a tail swipe animated as a head lunge with 152 cm of head travel. build/3d/creature_rig/CR_0002_MOTION.jsontooling-day (C2)Q11.0
51Retire the ordinal-station class defect generally: every probe asserts its SUBJECT (a station id naming what it frames, plus an in-frame check that the intended feature is present)Row 8 was caught only because a human compared two committed camera plans; the next solver re-run gets the same silent drift for free. An instrument that cannot fail loudly reports the world as something it is nottooling-day (C2)NEW W81.0
52Build MASTERPIECE_STANDARD.md as a DECLARED-PARTIAL artifact: derive bands for classes with enough cards after the Okami/AC2 carding, print the under-carded classes as an explicit unbuilt list0 of 7 purpose classes have derived bands and the file does not exist in docs/proposals/music/ (which holds 8 other music artifacts), so rung 3's positive control has no population to rank and the proof scores against single reference cardstooling-day (C2) — deterministic derivation plus one critic passNEW QM1.0
53Author the animation craft doctrine (commit-versus-cancel, root-motion policy, hit-reaction taxonomy, follow-through and settle, per-tier fluidity vocabulary), paired one-to-one with ENGINE_OPTIMIZATION_DOCTRINE section 5.4T1_Combat_System_Spec contains "animation" ×0 and "VFX" ×0 against a "parry" ×14 positive control; the DR-2 prompt composer and every hand-authoring pass have no craft vocabulary to quote, and the per-tier fluidity the 248/372 ladder sells is undefined. The audio lane got its equivalent authored BEFORE any hero-theme work. Tracked as GAP-204, HIGH register, owned by no ranktooling-day ×2 (C2/3)Q91.0

3.5 Tier E — ratio below 1.0, and the bookkeeping the anti-orphan doctrine still requires

#ChangeThe AAAAA gap it closes — measured number and recordCost classWaveI÷C
54Add UHumanityNiagaraUtil::SetModuleInputScalar/Vector/Bool wrapping the FInstancedStruct write, plus the matching read5 of the 9 shipped element-contract parameters (ScaleCm, Beat, Tier, Silhouette, Motion) are consumed only by C++ because module inputs are neither writable nor readable from Python; the owner-transform substitute for ScaleCm was tested and REFUTED. GAME:QA/bench/d127_niagara_link_witness.json. Carries a recorded editor hazard: re-creating a loaded UNiagaraSystem in-session takes the editor downtooling-day ×3 (C3) — needs a NiagaraEditor dependencyNEW QE0.67
55Add UHumanityAnimGraphUtil::InsertWarpNode using FGraphNodeCreator + the K2 schemaAll four AnimationWarping node classes ARE python-bound and ABP_Unarmed's AnimGraph IS enumerable (6 nodes); what is absent is any entry point that CREATES a node or LINKS two pins, and a new_object node comes up with ZERO pins because AllocateDefaultPins is editor-only C++. Deprioritised on EVIDENCE, not effort: arm C's cycle-unity control already answered the question arm W was built to ask. GAME:QA/bench/stridefix_ab_ingame.json .arm_w_stride_warpingtooling-day ×3 (C3)NEW QE0.67
56Supply an EXTENDED-pose CR_0002 mesh or authored skin weights in place of bone-heat binding, then re-measure p99 edge stretchUncoiled serpent locomotion is a routed DEFECT, not a tuning choice: a bone-heat rig bound in a tight coil shares bones between touching turns. p99 edge stretch 11.73 first pass → 2.82 after retune; worst single edge on the shipped idle 6.1179. GAME:QA/creature_anim/CR_0002/frames/render_report.jsontooling-day ×3 (C3) — belongs to the 3D laneQ10.67
57Board the LOD0-density debt where a record can carry it: a known_limits block on the arrival-set manifest with per-piece counts beside the cited budget and ratios, plus the DOC_MAP status cell — emitted, not typedThe debt exists ONLY in a commit message. grep "LOD0 is heavy" over the working tree returns nothing outside git history, and 134136 appears on exactly one line of one record as a bare count with no budget beside it. It is on no known_limits, in no DOC_MAP row, and in no gap register — so the only way to learn the shipped garment is 5.59× its cited budget is git log --grep, which no downstream lane runsfree/config (C1)NEW QG1.0
58Re-emit build/art/asset_factory/ASSET_FACTORY_CENSUS.mdAFC_08 still reads "should exist 152 slice / 187 arc, exists 0, stack NONE_PROVEN, gap 187" — emitted 2026-08-05, one day stale, after the LIMBLESS solver landed 08-06. The factory's own priority board ranks a solved-for-one-archetype class as P0-BLOCKED and hides where the real zero isfree/config (C1)Q11.0
59Record the AO bake resolution on the garment texture record and check it against the atlasThe record carries atlas_size: 4096 and nothing about the AO; bake_outfit_ao.py's SIZE default is 2048 and the ornament author resizes AO BILINEAR to atlas size. If the delivered AO used the default, the tonal-range channel is authored at half resolution and upsampled, and no record on disk says either wayfree/config (C1)NEW QG1.0
60Refresh CHAR_0001_ARRIVAL_OUTFIT_DESIGN.md section 9 "What is owed"It is stale by one commit and contradicts the disk: it reads "the asset currently carries no basecolor of its own. It must not be imported" and "Not imported to the game repo, and deliberately so", while the set is textured, cleared and imported. The two GENUINELY open items must survive the edit — the soaked and mud-caked variant (a Ch-2 canon consumer) is not built, and the tunic still reads boxy at the hipfree/config (C1)NEW QG1.0

---

4. What is NOT on this register, and why

Ruling work OUT on evidence is as much of a finding as ranking work in. These were considered and

rejected, each on a measurement rather than a preference.

in as ONE controlled variable, made the whole-run number WORSE (0.5650 → 0.6726) and jog and sprint

with it. Two independently authored AAA sets both floor at 0.32-0.36 at walk on their own authored

paces. The band is a statistic problem (row 12), not a content problem.

answered arm W's question: at foot_cycle_ratio 1.0050 there is no stride deficit left to remove

and 0 of 4 bands are green. Row 55 buys future AnimGraph automation, not this band, and is ranked

accordingly.

contact fraction to 0.000-0.035 against an armed floor of 0.10. A gate that passes by measuring

nothing is the failure mode this repo has already minted gates against.

a 189-token window. The spend has no lever on THIS generator until rows 7 and 43 return, and rows 9

and 28 buy the same class of information for $0.

current evidence, which is the point of rows 7 and 43. The turbo config demonstrably lands the meta

channel exactly (global_bpm error 0.000 on two of three samples, total_length_s under 0.004 on

all three) and steers several surviving clauses; nothing on disk shows what it does with the other

16 dimensions because they were never in the prompt.

the routing record already names the shape of the fix: a WRAP solver conforming a cage that already

has correspondence, not a second attempt at deriving one.

renderer and the frame still reads thin; the light rig is physical with 61 of 61 values landed; the

fill A/B came back NOISE on all five metrics and the fill stays off as a ruling. The world's

ceiling is substrate (row 35) and the game thread (row 45).

---

5. The binding constraints, held out of the ratio ranking on purpose

Four constraints bind, and none of them wins on ratio. They are named here so a ranked list cannot

bury them.

lacks and nothing joins them: the AUTHORED head has correspondence and parametric control

(skull_head_units 6.5673 against the canon target 6.567272) and is judged BELOW on appeal 4 of 4

plus once more on fixed frames; the PIVOT head has appeal and no correspondence at all. Everything

downstream — aging, FACS, LODs, customization, roster scale — is downstream of that one gap.

field the marks register through are all keyed to the LIMBLESS chain. 13 of 187 rows served; 42

more blocked upstream on a canon ruling (row 5) that no tool can unblock.

dimensions pinned at full error are the shed ones. The experiment that separates the two

explanations is complete and inadmissible.

pattern and has instantiated it twice. Every lane instead writes a probe and ships a weaker

substitute measurement, then names it honestly — and the honest names accumulate as permanent

UNMEASURED cells, permanently non-data-driven parameters, and one fully authored asset set that

cannot render.

A fifth thing binds nothing but costs everything: two instruments are lying. The foot-slide mean

and the drifted far-field station both produce plausible numbers about the wrong subject. Rows 8, 12

and 51 close that class, and they are cheap.

---

6. The waves this register proposes

The standing queue (HANDOFF section 8.7) is Q1-Q10 and is asset-wave shaped. Six gaps in it surfaced

while ranking. These are BEYOND the floor of what was asked and are named so Josh can veto any of

them; none of them reorders an existing Q wave except where stated.

WaveWhat it isWhy it is not already a Q waveRows
Q0 — THE UNRUN-PASS FINISH WAVERuns first: every pass we already own, on assets already shipped or already authored. Zero new tooling, mostly zero GPUThe queue is shaped around producing NEW assets; nothing in it finishes the ones already in the game, which is where the cheapest visible slice movement is2, 3, 6, 13, 14, 15
QA — THE CORRESPONDENCE WAVEThe wrap cage and everything that becomes possible behind it: continuous aging, FACS conform, morph-target customization, per-cast reuseQ7 (companions and named NPCs) is written to start "the moment CHAR_0001's face lands" — but the face landing is not the gate; correspondence is. Q7 cannot deliver its own aging requirement without this34, then 44
QM — THE MUSIC WAVEThe music program has NO wave in the standing queue at allA whole domain with a live generation loop, a 182-row corpus target and a $1,000 spend question is unscheduled7, 9, 27, 28, 32, 43, 52
QE — THE EDITOR-MODULE WAVEOne sitting that lands the Source/HumanityEditor UFUNCTION set and retires the Python-surface tax across every laneIt is cross-cutting, so no asset wave owns it and every asset wave pays for it21, 37, 38, 48, 49, 54, 55
W8 — THE WORLD INSTRUMENT AND SUBSTRATE WAVERestore the drifted station, bind the substrate already on disk, take canopy through the RustDesk touchpoint, and attribute the game-thread tailThe world lane runs its own W-rungs outside the Q queue; W8 is its next rung and needs the Q-queue's scheduling to reach the Fab touchpoint4, 8, 11, 25, 35, 39, 45, 51
QG — THE GARMENT CLASS-RULE WAVEFix the fitted_garment route before it is copiedThis is an ORDERING finding, not just a new wave. The ratified routing row advertises the garment route to its next consumer "the Ch-2 hood lane first", and Q4 (equipment burn-down) is queued to run it. Q4 as currently ordered copies a 5.59×-over-budget LOD0 into every hood, cloak and armour piece22, 23, 29, 40, 41, 57, 59, 60

---

7. Provenance

Six domain reads, each cold against its own records, synthesized here 2026-08-06. Spot-verified at

HEAD by the synthesizer rather than carried on trust: remesh_used=false / out_quads=0 /

topology_route=tri_decimate / uv_area_utilization=0.5577 in the face finish record;

admissible=false and positive_controls_responded=false in control_surface.json; 182 corpus rows

at 4 ACQUIRED / 178 MISSING against 132 formula cards on disk; T0_Boss_Attack_Rail at 27 columns

and 0 data rows; T0_Creature_Roster at 187 rows; the three garment LOD0 triangle counts in the

arrival-set manifest; and the existence of all eleven cited canon-side record files.

Every number in this register belongs to the lane that measured it. Where a lane declared a figure

UNMEASURED, INADMISSIBLE, or RETRACTED, this file carries that word rather than a substitute.

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