{
 "title": "Drawing machine: sheets 4 and 5",
 "sub": "every full-image state, in the order it was made. Spine = kept. Side branches = tried, not carried forward.",
 "parts": [
 {"name": "Sheet 4", "sub": "Hands (Kollwitz charcoal) on the critic's chosen direction. Set aside; the line moved to sheet 5.",
  "end": "set aside: not carried to Hold",
  "nodes": [
   {"id": "t0", "img": "hand/p1_4_kollwitz.png", "label": "Hands test", "tool": "hands", "by": "claude", "status": "branch", "why": "engine test: p1 #4 as target, 900 px", "note": "first Hands drawing in our folder: 4335 strokes, 5.7 s"},
   {"id": "tA", "img": "sheet4/targetA.png", "label": "value plan A", "tool": "compose", "by": "claude", "status": "kept", "note": "target only: p1 #4 structure, panel and top-left lightened, MJ default face placed"},
   {"id": "A", "img": "sheet4/A.png", "label": "A drawn", "tool": "hands", "by": "claude", "parent": "tA", "status": "kept", "note": "4285 strokes"},
   {"id": "B", "img": "sheet4/B.png", "label": "B face lifted", "tool": "eraser", "by": "claude", "parent": "A", "status": "kept", "note": "kneaded-eraser take-back: a ghost in the tooth", "crop": [540, 0, 860, 240]},
   {"id": "tC", "img": "sheet4/targetC.png", "label": "plan C", "tool": "compose", "by": "claude", "parent": "B", "status": "branch", "why": "the plan had no second head"},
   {"id": "C", "img": "sheet4/C.png", "label": "C (no-op)", "tool": "hands", "by": "claude", "parent": "tC", "status": "branch", "why": "207 strokes, nothing visible changed"},
   {"id": "tC2", "img": "sheet4/targetC2.png", "label": "plan C2", "tool": "compose", "by": "claude", "parent": "B", "status": "branch", "why": "second head placed whole"},
   {"id": "C2", "img": "sheet4/C2.png", "label": "C2 head finished", "tool": "hands", "by": "claude", "parent": "tC2", "status": "branch", "why": "the brief asked for unfinished; it came out finished", "crop": [560, 0, 1000, 330]},
   {"id": "tC3", "img": "sheet4/targetC3.png", "label": "plan C3 (block-in)", "tool": "compose", "by": "claude", "parent": "B", "status": "kept", "note": "second head blurred and cut to 3 values"},
   {"id": "C3", "img": "sheet4/C3.png", "label": "C3 block-in head", "tool": "hands", "by": "claude", "parent": "tC3", "status": "kept", "note": "350 strokes over B", "crop": [560, 0, 1000, 330]},
   {"id": "D", "img": "sheet4/D.png", "label": "D intentions v1", "tool": "intend", "by": "claude", "parent": "C3", "status": "branch", "why": "the black and the neck came out as stripes (a cord)", "crop": [380, 150, 800, 450]},
   {"id": "D2", "img": "sheet4/D2.png", "label": "D2 soft black", "tool": "intend", "by": "claude", "parent": "C3", "status": "kept", "note": "connect-mass with the softness guard", "crop": [380, 150, 800, 450]},
   {"id": "E", "img": "sheet4/E.png", "label": "E edge 4 px", "tool": "intend", "by": "claude", "parent": "D2", "status": "branch", "why": "measurable, did not read", "crop": [0, 80, 220, 580]},
   {"id": "E2", "img": "sheet4/E2.png", "label": "E2 broad pushes", "tool": "intend", "by": "claude", "parent": "D2", "status": "branch", "why": "ribbed caterpillar bands", "crop": [0, 80, 220, 580]},
   {"id": "E3", "img": "sheet4/E3.png", "label": "E3 clusters", "tool": "intend", "by": "claude", "parent": "D2", "status": "branch", "why": "dotted and too dark (path spacing bug)", "crop": [0, 80, 220, 580]},
   {"id": "E4", "img": "sheet4/E4.png", "label": "E4 edge broken", "tool": "intend", "by": "claude", "parent": "D2", "status": "kept", "note": "the mass's own texture and tone", "crop": [0, 80, 220, 580]},
   {"id": "jobP", "img": "sheet4/jobP.png", "label": "translator job", "tool": "translator", "by": "claude", "parent": "C3", "status": "branch", "why": "a parallel test: the critic writes the job (overlay, not a drawing)"},
   {"id": "P", "img": "sheet4/P.png", "label": "P translator run", "tool": "intend", "by": "claude", "parent": "jobP", "status": "branch", "why": "a hatch dragged into a ladder", "crop": [0, 520, 200, 829]},
   {"id": "P2", "img": "sheet4/P2.png", "label": "P2 hatch patches", "tool": "intend", "by": "claude", "parent": "jobP", "status": "branch", "why": "still a slab at bottom left", "crop": [0, 520, 200, 829]},
   {"id": "P3", "img": "sheet4/P3.png", "label": "P3 cluster option", "tool": "intend", "by": "claude", "parent": "jobP", "status": "branch", "why": "lighter, still a band", "crop": [0, 520, 200, 829]},
   {"id": "g1", "img": "sheet4/gpt/gpt1.png", "label": "ChatGPT refine", "tool": "generator", "platform": "ChatGPT", "by": "russell", "parent": "E4", "status": "end", "note": "Russell's VTL refine prompt; input stage not recorded. The second head became a dog."},
   {"id": "H1", "img": "sheet4/gpt/H1.png", "label": "Hands traced it", "tool": "hands", "by": "claude", "parent": "g1", "status": "branch", "why": "a trace: no critique was applied"}
  ]},
 {"name": "Sheet 5", "sub": "No generated image to start: an authored plan. Then the loop: generator, critic, artist, generator, until Hold.",
  "end": "HOLD, called by Russell",
  "nodes": [
   {"id": "t1", "img": "sheet5/recovered/target_v1.png", "label": "authored plan", "tool": "compose", "by": "claude", "status": "kept", "note": "shapes only, no image. Recovered: the full-size file was overwritten in a bug-fix re-run"},
   {"id": "A1", "img": "sheet5/recovered/A_v1.png", "label": "Hands draws it", "tool": "hands", "by": "claude", "parent": "t1", "status": "sent", "note": "the pair went to ChatGPT. Recovered from the comparison image"},
   {"id": "t2", "img": "sheet5/target.png", "label": "plan re-run", "tool": "compose", "by": "claude", "parent": "t1", "status": "branch", "why": "re-run after fixing a speckle bug"},
   {"id": "A2", "img": "sheet5/A.png", "label": "re-run drawing", "tool": "hands", "by": "claude", "parent": "t2", "status": "branch", "why": "re-run; not the version sent"},
   {"id": "P5", "img": "sheet5/P.png", "label": "translator edit", "tool": "intend", "by": "claude", "parent": "A2", "status": "branch", "why": "only a ruled edge was found; form unaddressed"},
   {"id": "g1", "img": "sheet5/gpt/gpt1.png", "label": "ChatGPT refine 1", "tool": "generator", "platform": "ChatGPT", "by": "russell", "parent": "A1", "status": "kept", "note": "\"Refine this image with the VTL style ... You can invent.\" The black became a cat; a face appeared"},
   {"id": "H1", "img": "sheet5/gpt/H1.png", "label": "Hands traced it", "tool": "hands", "by": "claude", "parent": "g1", "status": "branch", "why": "a trace: no critique (Russell: avoid being a tracing tool)"},
   {"id": "tG", "img": "sheet5/artist/targetG.png", "label": "critique 1 -> artist plan", "tool": "compose", "by": "claude", "parent": "g1", "status": "kept", "note": "critic: unname the black, take back the face, floor to paper, keep the knees"},
   {"id": "G", "img": "sheet5/artist/G.png", "label": "G drawn", "tool": "hands", "by": "claude", "parent": "tG", "status": "kept", "note": "floor gone; the squint kept the cat's silhouette"},
   {"id": "Gl1", "img": "sheet5/artist/G_l1.png", "label": "lift legs", "tool": "eraser", "by": "claude", "parent": "G", "status": "kept", "short": true, "crop": [380, 560, 900, 800]},
   {"id": "Gl2", "img": "sheet5/artist/G_l2.png", "label": "lift ears", "tool": "eraser", "by": "claude", "parent": "Gl1", "status": "kept", "short": true, "crop": [380, 560, 900, 800]},
   {"id": "Gl3", "img": "sheet5/artist/G_l3.png", "label": "lift tail", "tool": "eraser", "by": "claude", "parent": "Gl2", "status": "kept", "short": true, "crop": [380, 560, 900, 800]},
   {"id": "Hf", "img": "sheet5/artist/H.png", "label": "face taken back", "tool": "eraser", "by": "claude", "parent": "Gl3", "status": "kept", "note": "the head reads as hair and turn", "crop": [700, 120, 960, 320]},
   {"id": "I", "img": "sheet5/artist/I.png", "label": "one black", "tool": "intend", "by": "claude", "parent": "Hf", "status": "kept", "note": "a black bar over ghost legs", "crop": [380, 560, 900, 800]},
   {"id": "J", "img": "sheet5/artist/J.png", "label": "swallow the legs", "tool": "intend", "by": "claude", "parent": "I", "status": "kept", "note": "no longer an animal; a seam", "crop": [380, 560, 900, 800]},
   {"id": "K", "img": "sheet5/artist/K.png", "label": "close the seam", "tool": "intend", "by": "claude", "parent": "J", "status": "sent", "note": "the dark became a box. Sent with the critique", "crop": [380, 560, 900, 800]},
   {"id": "g2a", "img": "sheet5/loop2/gpt2a.png", "label": "ChatGPT 2a", "tool": "generator", "platform": "ChatGPT", "by": "russell", "parent": "K", "status": "kept", "note": "head turned away; the dark a flat pool"},
   {"id": "g2b", "img": "sheet5/loop2/gpt2b.png", "label": "ChatGPT 2b", "tool": "generator", "platform": "ChatGPT", "by": "russell", "parent": "K", "status": "branch", "why": "the face as a software blur"},
   {"id": "M", "img": "sheet5/loop2/M.png", "label": "critique 2 -> Hands", "tool": "hands", "by": "claude", "parent": "g2a", "status": "kept", "note": "the pool acquires tooth"},
   {"id": "N", "img": "sheet5/loop2/N.png", "label": "lift a cheek plane", "tool": "eraser", "by": "claude", "parent": "M", "status": "kept", "note": "a turn, no face", "crop": [700, 50, 980, 300]},
   {"id": "O", "img": "sheet5/loop2/O.png", "label": "pool joins robe", "tool": "intend", "by": "claude", "parent": "N", "status": "kept", "note": "pool to robe; top broken (left pale bites)", "crop": [400, 580, 880, 780]},
   {"id": "P", "img": "sheet5/loop2/P.png", "label": "heal the bites", "tool": "intend", "by": "claude", "parent": "O", "status": "sent", "note": "sent with critique 2", "crop": [400, 580, 880, 780]},
   {"id": "g3", "img": "sheet5/loop3/gpt3.png", "label": "ChatGPT 3", "tool": "generator", "platform": "ChatGPT", "by": "russell", "parent": "P", "status": "hold", "note": "Hold, called by Russell"}
  ]}
 ]}
