# Intent-led painting decisions Use the shared intent loop in agent.md throughout painting. Cards are tools for achieving your chosen effect, not rules for a universal style. Bands, sharp edges, grain and repetition can be intentional. Do not label them defects without comparing to the stated aim. Do not invent a new aim afterward to justify an accidental result; record an explicit artistic change of direction if you choose one. ## Example: horizontal bands - Aim: rhythmic ripples. Observed bands support rhythm without competing with the boat -> keep; refine spacing only if needed. - Aim: quiet continuous sky. Observed bands break the intended mass -> investigate. Do not assume more strokes or more randomness will fix them. - Hypothesis A: insufficient footprint overlap. Keep seed/material/color/water fixed; vary adjacent path spacing in a small representative trial. Pressure changes contact width: nominal pixel width ≈ brush.width * image.width * pressure for the basic untilted brush. Compare whole image and crop; keep the untouched baseline. - Hypothesis B: drying during assembly preserves seams. Compare the same color paths with a different wetting/timing strategy. Record the changed water/time; do not call this an isolated spacing test. - If the local improvement harms composition or creates new seams in the whole image, reject it. A pleasing swatch is not proof it works in the painting. ## Carry out trials with current tools 1. Save the best scene JSON and a corresponding image outside the scene schema. S.scene() gives a detached copy of the committed document; preserve unaccepted drafts separately. 2. Make a candidate from that baseline. await S.preview(candidate,{expectedRevision:r}); inspect the actual rendered image after completion. Do not guess based on JSON alone or read an image file before rendering finishes. 3. A new preview replaces the active candidate, while the trial archive retains completed scenes/images. Use the list/branch/compare/record operations in workspace.md. To adopt an older winner, branch its saved ID, inspect, then accept the new candidate ID/revision. Export important trials as backup. 4. accept only the selected result. undo is one step, not a multi-version archive. For a regression in earlier strokes, edit their saved paths/order and rerender instead of endlessly painting over the problem. 5. If trials do not improve the intended effect, revise the hypothesis or choose a different technique. If current tools cannot produce it, report that limit and propose a concrete material capability to test; do not silently substitute unsupported tools or claim success. ## Minimal external trial note Store alongside exported scene/images, NOT as invented scene fields. Brief observable rationale only; no private chain-of-thought transcript. {"aim":"quiet sky; keep boat dominant","baseline":"sky-a.json","observation":"three dark bands dominate at thumbnail size","hypothesis":"uneven overlap","change":"reduce pass spacing only","candidate":"sky-b.json","image":"sky-b.png","result":"seams weaker; boat unchanged","decision":"keep","limit":"not tested under another paper seed"} Stop when the intended effect is achieved and further marks offer no clear benefit. Keep an expressive accident if it serves the picture; document the choice. Then finish as agent.md requires: PNG + JSON + process video, and always ask the owner about Gemini music. Repeated mismatch after a trial? Read `field-notes.md` for recent observations on wash order, reserved white, drying before details, shadow connection and lifting limits. Whole-shape/value decisions come before fine jitter. Each suggestion has a rejection condition; none changes the fixed sheet contract or guarantees a style.