{"n": 1, "what": "machine v1 (build/machine.py): drives fear/trust/curiosity/pressed-memory, perceptions gated by facing, utilities per behaviour, hysteresis and dwell windows; untuned", "saw": "watch->retreat 1.00, retreat->watch 2.46, refuse 3.42, refuse->watch 7.42 (one frame before the soft voice is even audible), approach 13.58 (-1.13 s), and approach fell back to watch at 22.7: the arrival guard dropped approach before it could arrive; never lay down", "changed": "2 ticks of perceptual latency (the dog now hears 80 ms late); approach keeps its utility while under way; arrival = within 3 cm of its chosen place and slow"}
{"n": 2, "what": "tune.py v1: coordinate descent on 9 physical parameters (trust gain, pace, braking, curiosity decay, look threshold, press smoothing, backing speed, acceleration); target = the score's choice times and x; the score's states are never input", "saw": "onset search stuck at a None (approach happened before the window) -> rewrote onsets as a sequential search; then all six within 0.21 s, but the approach pace was wrong: too fast early, braking too soft (x 3.43 vs 3.63 at 16 s)", "changed": "pace law v = v0 + v1*(trust above threshold) with arrival braking; added look_in->rest (28.1) to the targets; heavier penalty past 0.12 s"}
{"n": 3, "what": "tune.py v2 and v3", "saw": "approach -0.04, lie_down 0.00, look_in +0.10, settle -0.02, but retreat->watch stuck at +0.209 s whatever the tuner did: the standing figure in the doorway was counted as part of the push, so the push never ended when the call did", "changed": "split the percept: the PUSH is commands only (call, reach x proximity); the standing figure only feeds fear (unease). Final machine onsets: retreat +0.125, watch +0.167, refuse +0.125, watch +0.042, approach -0.041, lie_down 0.000, look_in +0.100, rest -0.017"}
{"n": 4, "what": "render v1: the board (320x180 cells, flip-discs + LEDs), ray-cast world and a field of rounded segments for the dog; test frames 0 and 216", "saw": "dog unreadable: same disc density as the boards; whole board about 50 % on; the room's planes leaked outside the house (no y bounds); diagonal dark band in the sky = room ceiling seen beyond the wall's end", "changed": "world albedos down, the dog becomes the brightest flipped thing (tone 0.42+1.5v); room planes bounded; porch roof and post removed (open porch under the dusk)"}
{"n": 5, "what": "framing and the cut", "saw": "in one fixed wide shot the dog is ~200 px long; the look-in at the sill would be ~120 px", "changed": "two shots: the wide one until the dog has lain down, then the controller rewrites the board column by column into a closer shot (8-frame sweep at 24.625 s); x_world_measured added (the dog's measured centroid cast back onto its path)"}
{"n": 6, "what": "crops of the refusal turn 3.3-4.7 s", "saw": "body a sausage, head merges with the chest when turned, no ears, head hangs to the ground while turned away (reads as grazing)", "changed": "deep chest / tucked loin / longer neck and bigger head; key light moved to the camera side; a line of black discs where head meets body; two eye discs where the eyes are visible; refusal head level (0.5) instead of hanging"}
{"n": 7, "what": "door light", "saw": "no spill of light on the porch after the door opens", "changed": "the lamp sat behind the opened door slab (the slab blocked every ray); moved the lamp to the far side of the room and raised its strength; the spill now has the dog's and the person's shadows"}
{"n": 8, "what": "crops of the turn back 7.3-9.2 s and of lying/looking in 23.6-28.6 s", "saw": "head leads correctly (muzzle toward the door at 7.67 while the body is down), but 7.83-8.17 the legs tangle: joints were blended between a folded and a standing pose while the body also turned; looking in was a lift of the head (toward the light), not a reach into the room", "changed": "the body layer may not turn while folded (stands first, then turns); legs always solved by IK from foot targets that move between postures (no joint blending); look_in pose = neck stretched forward and low, muzzle turned a little across the lit doorway; resting-lying head lower so the look-in is a distinct change"}
{"n": 9, "what": "render speed", "saw": "full render at 2x2 supersampling ran at ~0.1 frame/s per process with the machine shared by other swarms (load 11-14 on 4 cores)", "changed": "one ray per cell (the board is binary, coverage at the cell centre is enough), shadow march 28->18 steps, one thread per process: ~0.3-0.7 s per frame alone"}
{"n": 10, "what": "person", "saw": "the seated person read as a grey cloaked lump; the low hand invisible", "changed": "clothes darker, head and hands bright (albedo 1.0) so the reach and the low hand read as lit points"}
{"n": 11, "what": "film 1 (38.0 s, 912 frames, 3.9 MB): frames extracted from film.mp4 around every choice (proof/film_*.jpg)", "saw": "checker ALL OK; measured onsets +0.17/+0.04/+0.13/+0.04/-0.17/+0.04 and look-in +0.14; captions type in; BUT the refusal turn passed through a frontal, foreshortened tangle (3.67-3.8 s, head toward the camera) and the mid-flip discs (40 % width) made moving edges look like vertical smears, a ghost; whole-dog centroid made x_world wobble with the tail (false approach onset at 14.0)", "changed": "turns now always go the same way round (unwrapped heading): the refusal turns the dog's back to the viewer first (rump and back of head mid-turn), the turn back shows its face; mid-flip disc 81 % width; x_world_measured from the torso cells only"}
{"n": 12, "what": "film 2 (38.0 s, 912 frames, 3.7 MB, crf 17): frames extracted from film.mp4 at the turns and the look-in", "saw": "refusal turn now shows rump and back of the head mid-turn and the back by 3.92 s; no smears; head leads at 7.62 with the body down; look-in pushes the muzzle into the lit doorway with the back of the head to the viewer; checker ALL OK; measured onsets +0.17 +0.04 +0.13 +0.04 -0.08 +0.13, look-in -0.03, settle +0.03; still weak: legs busy while rising 7.9-8.2 s", "changed": "stopped here: watchable and the invariants hold; left to the independent critic"}
{"n": 13, "what": "critic: DOES NOT PASS (narrowly). Repairs: lying pose in the close shot, the rise at 7.75-8.5, the refusal turn 3.55-3.85, head vs hand at 18-19.5, end-card tuning claim", "saw": "close shot: haunch highest, and what read as a hind leg straight down was the tail laid back toward a low camera; rise: the spine bend (up to 43 deg) carried the front legs sideways through the torso; refusal: rear view end-on with the tail tucked out of sight; approach: the dog's outline ring stopped where the person began", "changed": "lying hips 4.5 cm lower and narrower, hind legs folded flat (paw under the belly, hock under the hip, legs shortened 20 % in the fold), tail laid round the far hip along the porch outside the jamb; close camera raised to 1.35 m so the near haunch sits below the shoulders; spine bend capped at 0.4 rad and the legs never follow it; body turn 4.2 -> 7 rad/s; tail carried low but clear (cap 0.78), ears never fully flat (min 0.3); the dog's ring of black discs now cuts into the person behind; low hand 12 cm further from the path; end card says the 11 parameters were tuned to the score's times; look-in onset measured as the reversal of the settling head"}
{"n": 14, "what": "film 3 (38.0 s, 912 frames, 3.8 MB) checked on frames extracted from film.mp4 (proof/film_turn1, film_rise, film_lie, film_app)", "saw": "lying 24.75-32: shoulders and head above the hips in every sampled frame, legs folded, tail on the porch outside; rise: head, front and hind legs on their own sides; refusal turn: tail and head visible except one end-on frame at 3.63 s with the head and an ear above the rump; checker ALL OK; measured onsets +0.17 +0.04 +0.13 +0.04 -0.08 +0.13, look-in +0.10, settle +0.03", "changed": "stopped; back to the critic"}
