Fig. 8 · Review mockup

Annotation-induced
reflow flash, reviewed.

The convex_hull_trick scene, step 0 → 1. An \annotate spawn grows the target primitive's bounding box; downstream arrays snap down +52 px with no transition. Three treatments are compared side-by-side: the current pipeline, Approach A alone, and the recommended A + B hybrid.

2026-04-24
docs/archive/
annotation-reflow-flash
/08-review-mockup
current frame 0 / 1
i current pipeline fail

Uncorrected — the flash.

The set_min_arrow_above guard at _html_stitcher.py:163 silently evaluates to False for Array and DPTable. y_cursor is re-accumulated every frame; the downstream translate jumps with no transition.

00 76 152
reserved
0
?
?
?
?
0
?
?
?
?
+52 px snap
nums
3
1
4
1
5
h
0
?
?
?
?
+ h[1]²
dp
0
?
?
?
?
Δy downstream
+52 px · snap
arrow draw-in
pop (no fade)
reduced-motion
same — snap
goldens
pinned to broken
ii approach A structural

Reserve-gutter, pre-scanned.

Max-bbox pre-scan in the stitcher walks every frame, annotates each primitive, reads bounding_box(), emits reserved_offsets into _emit_frame_svg. Downstream primitives sit at their final y from step 0.

00 76 152
reserved · max_bbox
nums
3
1
4
1
5
h
0
?
?
?
?
+ h[1]²
dp
0
?
?
?
?
Δy downstream
0 px
arrow draw-in
pop (no fade)
reduced-motion
identical · no motion needed
goldens
re-pin ≈ 8-20
iii A + B · ship ship

Gutter, plus a measured tween.

A preserves layout; B adds a 220 ms group-translate tween and a 280 ms stroke-dasharray draw for the arrow. If Δy = 0 the tween is a no-op. Gated by _canAnim; reduced-motion snaps.

00 76 152
reserved · max_bbox
nums
3
1
4
1
5
h
0
?
?
?
?
+ h[1]²
dp
0
?
?
?
?
Δy downstream
0 px · tween no-op
arrow draw-in
280 ms · ease-out
reduced-motion
instant · gated
goldens
same as A · JS-only polish