Skip to content

fix: recompose the four genuine framing defects (worklist drained)#110

Merged
TMHSDigital merged 5 commits into
mainfrom
fix/framing-recomposition
Jul 23, 2026
Merged

fix: recompose the four genuine framing defects (worklist drained)#110
TMHSDigital merged 5 commits into
mainfrom
fix/framing-recomposition

Conversation

@TMHSDigital

Copy link
Copy Markdown
Owner

Recompose the four genuine framing defects

Final pass on the framing worklist. The corrected survey (#109) left four examples whose subjects were genuinely mis-framed — not camera-nudge cases. All four are recomposed, gated with check_framing, and verified on both binaries. The worklist is drained; no example needed a deviation classification (none is a radiating/world/atmosphere subject — all are objects on stages).

Corrected worklist consumed

example defect (corrected survey)
depsgraph-export left cube amputated at left+bottom edges; fill 0.984x
vertex-weight-limit base cropped at bottom; off-center dead space; 0.247x/0.861y
triangulate-tangents under-filled buckler; 0.334x/0.661y
text-version-stamp under-filled; dead lower third; 0.663x/0.567y

Before → after (gated render numbers, 5.1.2; 4.5.11 identical unless noted)

example before after what changed
depsgraph-export 0.984x/0.822y, touch L+B 0.812x/0.622y, L0.069 R0.119 B0.178 T0.200 aim-based camera (0,-9.6,2.6)→(0,0,0.9); pair recentered (subject was 5.9 units wide vs a 5.3-unit frame)
vertex-weight-limit 0.247x/0.861y, touch B 0.206x/0.867y, L0.378 R0.416 B0.050 T0.083 more frontal camera (4.6,-8.2,2.3), aim 1.5→1.25; base fully in frame. x stays narrow by subject geometry; band met on y
triangulate-tangents 0.334x/0.661y 0.459x/0.833y, L0.278 R0.262 B0.039 T0.039 2×-class move-in, 5 iterations (4.1/4.8/5.6/6.2/6.35 + aim split at 1.42) around the leaning disc's span. More than reframe (disclosed): Key 500→320, Glint 400→150 to clear a pre-existing dome blowout the larger subject exposed (30.7 % of the dome region ≥ 252 → max 231, near-white 0.00 %; old hero clipped in the same region at smaller scale)
text-version-stamp 0.663x/0.567y 0.719x/0.478y, L0.025 R0.025 B0.039 T0.144 aim-based camera (0,-6.0,1.5)→(0,0,1.05); dead third gone. Side margins bind at 0.025 via the underline bar (widest element). 4.5.11: 0.716x — the constant-width scaling absorbs the longer "4.5.11 LTS" body

No check code or closed forms changed; every example's printed check values are unchanged (depsgraph 8/98/98; vwl influence/pose/LBS numbers; tt tris=720 + error suite; tvs body/extents/faces=2917). No closed form needed re-falsification.

Contract legibility (Pass 2 falsification variants, all rendered live)

  • depsgraph-export — broken (subsurf cleared) renders two faceted cubes vs working cube + smooth dome (mean |Δ| 4.53, 2.91 % pixels differ): the evaluated-vs-base witness is visible in the reframe.
  • vertex-weight-limit — broken (no prune) is pixel-identical by design: pruning preserves the pose, so the influence-cap contract is numeric; the still witnesses the rig and pruned-weight zones. Named, not hidden.
  • triangulate-tangents — broken (back cap dissolved to an ngon, no calc_tangents) is pixel-identical: the concentric sweep is UV/bump-driven, so the mikktspace contract is numeric; the still witnesses the UV layout/rings. Named, not hidden.
  • text-version-stamp — broken (stale "9.9.9" body) is unmistakable at the reframed size; the live-version witness strengthened.

Contact sheets (Pass 5)

Calibration luminance: armature-bend 70.8 / damped-track-aim 44.5 / bmesh-gear 77.7.

Per-criterion verdicts: stage darkness ✓ all; wedge warmth ✓ all; saturation ✓ all (materials untouched); thumbnail legibility ✓ all four (rings, arm, stamp, cube/dome all read at cell scale). tt dome no longer clips; no visible light shapes anywhere.

Visual-pass log

  • Pass 1 (full size + helper numbers): dgx 1 iteration; vwl 2 (first stop still cropped the base and overshot 0.917y); tt 5 (the leaning disc+stand span fights the frame — distance/aim split needed); tvs 2 (first stop left hero fill at 0.609 — the bar, not the stamp, was filling the frame).
  • Pass 2: variants above — visible difference named for each.
  • Pass 3 (100 % crops): no clipping after the tt relight (dome max 231); no visible helpers; dgx cube edges clean; vwl base fully in frame; tvs bar crisp.
  • Pass 4 (Playwright, full-page captures): index at 1280/390 plus all four detail pages — new heroes, teaches, witnesses, and the framing-gate README line all correct; generated HTML read character by character (alts complete, no truncation).
  • Pass 5: sheets above.

Runtime

Check-only (smoke invocations) for all four, both binaries: exit 0; 753–857 ms (5.1.2), 614–636 ms (4.5.11) — unchanged paths. Local binaries: .scratch/blender-5.1.2-windows-x64/blender.exe (reports Blender 5.1.2), .scratch/blender-4.5.11-windows-x64/blender.exe (reports Blender 4.5.11 LTS). CI floats within series per CLAUDE.md.

Live-run vs inspection-only

  • Live run (5.1.2): all reframe iterations, gate runs, falsification probes (lens breaks, exit 10 ×4), Pass-2 variant renders, webp conversion, contact sheets, gallery regen, Playwright captures, dome blowout measurements.
  • Live run (4.5.11): all four render paths + check-only.
  • Inspection only: the luminance-range judgments on the two pre-existing brighter stages (shader-node-group from fix: corrected framing survey + marginal camera-nudge sweep (7 examples) #109, text-version-stamp here), and the assumption that CI smoke runtimes track local timings.

The rotated base cube plus the evaluated dome spanned ~5.9 units against
a 5.3-unit frame: the cube was cut by the left and bottom edges (fill
0.984x, touch L+B). Reframed to an aim-based camera at (0,-9.6,2.6)
tracking (0,0,0.9) — the full pair now sits at fill 0.812x/0.622y with
margins L0.069 R0.119 B0.178 T0.200, and the faceted-base vs
subsurf-dome comparison that is the contract reads undiminished. Render
path gated with check_framing (exit 10); check values unchanged
(base=8, eval=98, exported=98). Gate falsified at lens 64 (fill 0.988
FAIL, exit 10) and restored. Pass-2 variant (subsurf cleared) renders
two cubes — the broken contract is visible in the reframe. Identical
framing numbers on 4.5.11.

Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
The mech arm's round base was cropped by the bottom edge and the subject
drifted right-of-center with dead space (touch B, fill 0.247x/0.861y).
Reframed more frontal at (4.6,-8.2,2.3) with the aim dropped 1.5 -> 1.25,
landing fill 0.206x/0.867y with margins L0.378 R0.416 B0.050 T0.083 —
base fully in frame, lean balanced, teal pruned-weight zones and claw
still legible. The x-fill stays narrow by subject geometry; the band's
single-axis rule is met on y. Render path gated with check_framing
(exit 10); check values unchanged (influence counts, unit sums, pose
preservation, LBS error all print as before). Gate falsified at lens 66
(fill 1.000 FAIL, exit 10) and restored. Pass-2 variant (no prune) is
pixel-identical by design — pruning preserves the pose, so the
influence-cap contract is numeric and the still witnesses the rig and
zones; reported as such. Identical framing numbers on 4.5.11.

Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
The buckler sat at 0.334x fill adrift in the stage. A 2x-class move-in
iterations (4.1/4.8/5.6 overshot the leaning disc's vertical span into
B+T edge touch; settled at (0.6,-6.35,2.62) aim (0,0,1.42)) lands fill
0.459x/0.833y with margins L0.278 R0.262 B0.039 T0.039, and the
concentric tangent rings now read across the whole face. More than
reframe, disclosed: the larger subject exposed a pre-existing blown
region on the evidence dome (30.7% of the dome region >= 252) — Key
500->320 and Glint 400->150 clear it (max 231, near-white 0.00%) with
the anisotropic sweep still driving the rings; the old hero clipped in
the same region at smaller scale. Render path gated with check_framing
(exit 10); check values unchanged (tris=720, unit/dot/btn/uv errors all
print as before). Gate falsified at lens 70 (fill 0.972 FAIL, exit 10)
and restored. Pass-2 variant (cap dissolved to an ngon, no
calc_tangents) is pixel-identical — the ring sweep is UV/bump-driven
and the mikktspace contract is numeric; reported as such. Identical
framing numbers on 4.5.11.

Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
The stamp sat at 0.663x fill with a dead lower third (fixed-pitch
camera at (0,-8.5,1.15)). Reframed to an aim-based camera at
(0,-6.0,1.5) tracking the stamp's vertical center — hero fill
0.719x/0.478y (the bar is the widest element, so side margins bind at
L/R 0.025; the stamp's constant-width scaling keeps any version-string
length in frame, confirmed on 4.5.11's longer "4.5.11 LTS" body at
0.716x). Caption, stamp, and underline bar now balance the frame and
the live version string reads unmistakably. Render path gated with
check_framing (exit 10); check values unchanged (body, flat vs solid
extents, faces=2917). Gate falsified at lens 64 (fill 0.922 FAIL,
exit 10) and restored. Pass-2 variant (stale "9.9.9" body) is
unmistakable at the reframed size. The pre-existing AgX default and
lighter studio variant are left untouched (accepted look, flagged).

Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
All four recomposition cases are restaged and gated; the worklist entry
flips to DRAINED with the before/after numbers. Nothing framing-related
remains: marginal cases swept, deviations documented, the sky-texture
artifact report-only, and future examples inherit the gate at authoring
time.

Signed-off-by: fOuttaMyPaint <TMhospitalitystrategies@gmail.com>
@github-actions github-actions Bot added the documentation Improvements or additions to documentation label Jul 23, 2026
@TMHSDigital
TMHSDigital merged commit a65cb38 into main Jul 23, 2026
9 checks passed
@TMHSDigital
TMHSDigital deleted the fix/framing-recomposition branch July 23, 2026 03:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant