Asset pipeline · Session log
Eleven merges, and the hero never moved
A round on mob detail in Brooklyn Dead. Three mobs turned out to have a chest one tenth of a millimetre deep, two of my own rulings were falsified by the gates I asked for, and the most useful output of the day was three separate refusals.
· brooklyn-dead @ af708d5 · detail gate 207/221

What moved
- detail gate
- 207 / 221
- 115 / 128
- chest depth, 3 mobs
- 86 – 152 mm
- 0.20 mm
- neck escape
- 1.2 – 17.0 mm
- 83 – 110 mm
- body contact pairs
- 13
- 86
- tops on BasicZ1
- 8 of 8
- 0 of 8
- SK_Hero
- byte-identical
Eleven passes, each on its own branch, merged and re-gated on trunk. Artefacts regenerated after every merge, never resolved by hand.
The round, in order
The mobs stop walking like the player
Four bodies with distinct silhouettes, corrupt mass and asymmetric heads all played Walk_Loop — the hero’s own clip. A gait is now a row in the profile table, three mechanisms deep.
The brief was half wrong and the gate said so. A layer of pure constant offsets is decoration: the mob stands differently and moves identically.
Offsets alone score 0.0215° dynamic against a measured instrument floor of 0.0269° — literally zero. Arm-into-body contact 37 → 0 on the Breaker.
hero’s walk
own gaitThe neck anchor was innocent
I ruled that build_neck anchored to nothing and ordered the fix, bounded at 6 mm with a per-region falsifier. The falsifier earned its keep.
Over budget and ineffective. The mobs’ neck bases were already on the torso axis — there was nothing to re-anchor.
The anchored neck moves the hero +7.180 mm — over its own 6 mm budget — and closes 0.038 mm of BasicZ1’s 83.21 mm escape.
Every hair shell was fitted to the hero’s skull
The mobs were bald against a 352 KB hair system. Hair is a row now, costing 2.8–4.9% of the tri budget and displacing zero growth triangles — the corruption cap was never binding.
Underneath was one default: _head_bvhs lofted from FRAME_PRESETS unconditionally, so every clamp, cull, lift and sink query answered about the wrong head.
Median error −35.1 mm on the Crier — hair floating off the head — to +52.2 mm on the Fused: skull straight through the hair.
The suit bay was touching the van
Both complaints were real and both of my diagnoses were wrong. The 3.76 m I kept quoting is an interact anchor, and RIG-01’s anchor is its side door.
And SUBJECT_FRAME_FRAC cancels for a standing subject — standing_span multiplies by it and frame_width divides. Tuning it would have moved nothing while looking like a fix.
Measured against bodywork the rack sat 0.03 m off the van. Framing 59–62% → 65–71%, with the printer, vat and gunsmith bit-identical.
0.03 m
1.34 mFour clips refuse the phase lag, on their own evidence
All 53 clips ship the gait on all four mobs. Roll, Jump, Jump_Land and Vault take the offsets and swing scale without the lag — measured at bake time, not branched.
The lag breaks on one-shots, not on violent clips, which is not what I predicted when I flagged Roll as the risk.
Loop seams run 0.00–0.649° on 208 of 212 clip-instances, then 29.3 / 50.6 / 53.4 / 85.5. A lag on Vault produced 99.2° of arm travel in one frame.
Three mobs had a ribbon where a ribcage should be
_no_undercut measures overhang in world Y. On a leaning frame the spine carries the chest front forward faster than any depth can, so the clamp is unsatisfiable and returns its own floor — reporting success.
The priced fix would have taken the hero’s chest down 17.64 mm. Scoping it structurally — the datum is the running maximum of the spine curve — made it a no-op on the hero by construction.
Minimum chest-ring depth 0.100 mm on three of four mobs. Hero displacement after the fix: 0.0000 mm in every region of both frames.
0.20 mm
151.62 mmThe motion gate graded a clip that does not ship
The gait was baked into all four GLBs and proved from the bytes. t9_motion went on grading the unlayered source, so six of thirteen failures were measured on geometry the game does not contain.
It reported the Breaker’s pelvis × elbow_L at 66.1 mm where the gait pass measured 17.1. Body-only contact 86 pairs → 13.
A ladder brackets a crossing; it does not measure one
S_ARM_OUT_DEG exists so the constants cannot quietly stop being what their comments say. It caught exactly that — the arm clearance had been derived against mobs whose chests were 0.1 mm deep.
I read the coarse ladder’s next rung as the answer and reported a 25% widening. Swept properly in degrees, the real move is 0.45%.
Zero arm pairs first at 22.1°, not the 27.5° the six-point ladder implied. The residue at 22.0 was one pair at 0.239 mm.
The material rename was measured, then declined
Mob hair wearing M_Hero_Hair would put every zombie in the player’s runtime tint table. The concern was well-formed — the table is name-keyed on resource_name.
Nothing leaks. The tint walks the player’s own subtree, no mob source references the appearance layer, the write is on a duplicate under two regression tests, and the two GLBs are separate imports so equal names are unequal resources.
A rename would move MobRigCache’s merged-surface count, which tests assert. It would cost something and buy nothing.
The gash was two bugs
Facial hair rode SKULL/FACE from FRAME_MASC unscaled — the same defect as the hair one, in the half nobody had wired. Fixed first, wired second.
Then patch dropped whole columns. Making the unit a cell exposed the second half: the hole radius was derived from a width and applied in two dimensions.
21.7 mm against a 20 mm row pitch takes a column top to bottom — the same gash by another route, with every number green.

cheek_mange earned a style rather than a dial value: its footprint is one no dial reaches — 25 legal combinations and not one empties the philtrum while both cheeks carry hair.The extents gate could not see head, hair or beard
It was written when a mob was a body, and three subsystems landed on top of it. For hair the envelope is not inside the head — hair extends past the skull. It is a bounded allowance around the surface it grows from, anchored on the same float that brakes _lift_clear.
It went red on its first run, and reported rather than fixed: Mob_Fused_Head reaches 2.5 mm above the bind-pose crown. Not the hair — the skull.
Positive control caught at 5.2×: with the brake removed the crown reads 203.8 mm against a 39.2 mm allowance.
What is still open
The brute’s shoulders
The Fused and Breaker fail the axilla gate, and closing it costs shoulder_width 0.336 → 0.265 — 23.5% off the shoulder band, which inverts a slab into a pear. I refused it. The ribcage work changed the stakes: the Breaker now has a garment on the other side of that trade.
The Fused’s crown
2.5 mm above SK_Girl’s bind envelope — the engine contract. Small, and a fused frame decision rather than a bug.
Two corrections
I quoted check_gait.py as 60/60 for three merges when it had been 57/60 — verified once, then repeated as current while the ground moved. One of the three failures was my own stale-baseline defect, the same pinned-commit pattern I had fixed in the neighbouring file an hour earlier.
And the arm anchor above. A ladder’s next rung is not a measurement, and reading it as one nearly bought a 25% wider arm swing on every mob to close a quarter of a millimetre.
The most useful output of the day was three separate refusals: a fix that was over budget and ineffective, a widening that was a misread ladder, and a rename that would have cost something and bought nothing.
Gates at close — build_detail_mobs 207/221 · check_gait 61/61 PASS · check_gait_export 47/48
Frozen — SK_Hero.glb 4833793441261a55… · Wardrobe 0839880763b9aa78… · manifest d9e793d810418ed0…
Deliberately failing — E6_Crier at 1.94×, an export-path decision left at the measurement rather than closed by widening a bound.