{"n": 1, "stage": "01 features", "attempt": "stroke features for all 4,164 dog doodles (aspect, mirror symmetry, top-band mass by side, top profile by thirds, leg runs, leg rows); automatic classes; contact sheets", "saw": "classes are rough: \"lie\" pool full of front faces with floppy ears, many side views mislabeled; facing guess usable", "decision": "automatic classes only narrow the search; poses are labelled by eye from sheets (auto-*, pool-lie-*, short-*)"}
{"n": 2, "stage": "02 library", "attempt": "picked 45 dogs of one construction family (round or floppy-eared head, oval/box body, stick legs): 27 standing/crouching, 3 front/sitting, 15 lying; labelled facing, posture, head, leg spread, face-to-viewer, rest", "saw": "lying dogs are rare (about 15 usable among the ~180 widest drawings looked at); facing labels agree with a stroke-measured head-side guess on 40/42", "decision": "allow a rigid mirror per candidate (doubles facings without bending)"}
{"n": 3, "stage": "set", "attempt": "house #36, door, moon, face, hands, stairs, tree, fence from their category files", "saw": "house #36 walls lower than a 2 m door", "decision": "house #3 (box + roof, no door of its own), larger than frame so the roof crops"}
{"n": 4, "stage": "03 decoder v1", "attempt": "Viterbi over 87 candidates x hold counter, on twos; emission from act values", "saw": "approach swap at 15.08 s (+0.37), lie at 24.0 (+0.21): the act values ease, the decoder followed them", "decision": "state-keyed targets: from the frame the state changes, the target is the new state pose"}
{"n": 5, "stage": "03 decoder v2", "attempt": "turning windows at 3.42 and 7.46 s demanding a front / face-to-viewer drawing", "saw": "at 3.42 the dog showed a front-sitting drawing until 3.83: the 3.6 s still showed no turned back; the refusal was averaged into a front view", "decision": "removed the 3.42 window (cut straight to the back, the protected key pose); kept 7.46 where sitting up facing us then standing reads as turning back to look"}
{"n": 6, "stage": "04 render tests", "attempt": "frames 10, 86, 170, 456, 620, 672", "saw": "door frame stuck out past the slanted house wall; tree cluttered the steps; voice arcs too small to see; low hand short of the doorway", "decision": "house moved right and lit interior clipped at the jamb; tree removed; arcs enlarged; hand set into the doorway"}
{"n": 7, "stage": "full film v1", "attempt": "render + checks", "saw": "invariants 1, 3, 4 held; lying drawings jumped 0.125 m between substitutions (bbox-centre registration); dog small in the wide frame; title subtitle ran off the card", "decision": "register each drawing by its ink centroid; dog sizes +15%; wrap title"}
{"n": 8, "stage": "05 sound v1", "attempt": "spectrogram + RMS per 0.5 s (no listening possible here)", "saw": "pencil scratch broadband and loud, calls 20-26% RMS vs 1-9% elsewhere", "decision": "pencil down 4x, calls down ~30%; still the loudest event (commands should be hard)"}
{"n": 9, "stage": "full film v2", "attempt": "render + checks", "saw": "all six choices within 0.25 s on screen (largest +0.25 for stopping the backing, measured from ink motion; the swap itself +0.17); centroid never past 0.579 m; end 40% of the body inside the door frame, 44% of its ink in the lit doorway; approach 3.404 m measured vs 3.406 m score; 30 swaps, min hold 6 frames, all on twos", "decision": "end card still named a removed tree: fixed text and re-rendered"}
{"n": 10, "stage": "final", "attempt": "frames looked at: title, 1.3, 2.0, 3.6, 5.0, 7.6, 8.0, 15, 18.5, 23.95, 26.7, 28.0 s, end card", "saw": "each choice reads as a drawing change; at 28 s the head is in the lit doorway (dark lines) and the body outside (pale lines); the 7.8-14.7 s watch is a held drawing for 6.8 s", "decision": "stop: watchable, invariants hold; independent critic not run by this swarm"}
{"n": 11, "stage": "critic round 1", "attempt": "independent critic: DOES NOT PASS (reference stronger)", "saw": "walk cycled three dogs every 0.33-0.67 s; held drawings slid with static legs; approach head level; look-in face-on; refusal lost 4.5-5.7 s in an unfaceable curl; backing read weak", "decision": "repair all five conditions inside the doctrine (whole drawings, never bent)"}
{"n": 12, "stage": "09/10 search", "attempt": "head-low pool over all 4,164 (back highest, both ends lower; 336 drawings, 5 sheets looked at) and a stride-twin search by blurred-raster distance to #135 with head drop >= 8% of height", "saw": "raster distance alone ranked floppy-eared faces high; by eye #1309 is the twin: dome body, small round head low at the chest, three splayed legs vs #135 two", "decision": "walk pair {135, 1309}; #2830 measured level (head top 0.7 px under the back), not head-low; #3537 (box head in profile, snout left) for looking in; dropped 2098, 3283, 2250"}
{"n": 13, "stage": "03 decoder v3", "attempt": "hold counter to 24 twos; inside retreat/approach a swap needs 2 s of hold (first swap into the state free); off-footfall swaps in the walk cost 30; a stale-stride cost at footfalls after 2 s; walk restricted to the pair; head-low and profile terms", "saw": "first try held one drawing for the whole walk (no stride); then a third drawing slipped in; then a swap 0.25 s after the state change; then #1309 labelled R by mistake (the twin sheet had shown it mirrored): the dog walked backwards in test frame 450", "decision": "stale-stride cost, pair restriction, free swap only at the state frame, label fixed to L"}
{"n": 14, "stage": "04 render v3", "attempt": "gait bob: a rigid 3 px lift of the whole drawing at the passing position of each step, placed on twos with x", "saw": "test frames 40, 86, 130, 400, 450, 650: refusal heads on the far side; walk head low; look-in profile into the light", "decision": "full render"}
{"n": 15, "stage": "full film v3", "attempt": "render + checks + tools/paeleo/check_handmade.py", "saw": "repairs: walk 2 drawings, changes 16.83/18.92/21.25/23.58 (min gap 2.08 s, never back within 2.08 s); held placement moves 0 px (re-placed on twos, step up to 7.8 px at the fastest pace); head below back 100% of 14.7-23.7; profile 100% of 26.5-28.0; retreat 136 px facing the person; refusal heads far side 100%. Invariants: all choices within 0.25 s; check_handmade ALL OK", "decision": "deliver round 2; frames looked at: 1.2, 2.2, 3.6, 5.3, 7.6, 15.2, 16.6, 17.6, 19.4, 22.5, 24.0, 27.0, 28.0 s"}
{"n": 16, "stage": "critic round 2", "attempt": "independent critic: DOES NOT PASS (narrowly)", "saw": "all six choices read; the walk skates (held drawings slide ~2 px/frame with frozen legs, footfall ticks over still legs); #135/#1309 heads differ; lying 23.83-25.5 drawing (#2459) reads as a cat; push-in cut the moon", "decision": "coordinator: A-B-A-B stride on sixes, x jumps only at swaps, footfalls on swaps, a partner sharing the head shape; two lying drawings; moon wholly in or out"}
{"n": 17, "stage": "11 head partner", "attempt": "head-end crop (front 30%) raster distance + body distance over all head-low dogs, anchors 135, 1309, then 2830 with no head-drop limit", "saw": "135: no partner reads as the same head; 1309: #2717 (pointed head, ear curl, short legs: two sizes of dog at alternation, rejected after a side-by-side), #444 (rejected); 2830: #639 shares the plain circle head and oval body with stick legs", "decision": "walk pair {2830 mirrored, 639}; registered by the head (offset by the pair mean head-to-centroid) so the head travels smoothly and the body changes behind it"}
{"n": 18, "stage": "03/04 stride", "attempt": "decoder chooses the pair and phase; from the walk drawing's first frame to the lie-down the pair alternates every 6 frames; the dog is placed at the score x of the swap frame; a last stride shorter than 4 frames joins the one before; bob dropped; lying restricted to {1056, 3537} with the profile reserved for come in", "saw": "first try: one x change without a swap at 14.708 (the walk drawing appeared two frames before the stride began)", "decision": "stride starts at the walk drawing's first frame"}
{"n": 19, "stage": "camera", "attempt": "push-in with y0 50 (moon kept in)", "saw": "the porch fell to the bottom edge and the typed prompt overlapped the lying dog: the 28 s composition was lost", "decision": "no push-in: a cut on the lie-down (23.83 s) from the wide to the close framing of rounds 1-2; moon wholly in before, wholly out after"}
{"n": 20, "stage": "full film v4", "attempt": "render + checks + check_handmade", "saw": "walk: 2 drawings alternating A-B on exactly 6 frames (37 strides), held drawing moves 0 px, no x change off a swap, steps 2.6-19.8 px (mean 14.2), footfall sounds on the swap frames (offset 0); lying 23.8-32: #1056, #3537 only; moon 68 frames in, 196 out, 0 cut; all choices within 0.25 s (approach +0.21 by ink motion, first walk swap at 14.67); check_handmade ALL OK", "decision": "deliver round 3; looked at walk frames 456-486 every 6, 498/504, 566/574 (cut), 28 s still"}
