# Task A · seaplane — Claude Code iterations

Start: 2026-10-24T10:32:51Z (60-minute wall-clock budget → hard stop 11:32:51Z)
Input: prompts/A.md verbatim. Judge: `node tools/check.mjs runs/claude-code/A/index.html`.

| iter | time (UTC) | what changed | ran? | console errors | screenshots | notes |
|---|---|---|---|---|---|---|
| 1 | 10:36 | First full write: Water+Sky addons, procedural DataTexture normal map, ShadowMaterial shadow-catcher over the water, oval path state machine (taxi→accelerate→lift-off→climb→cruise→descend→landing), spray Points, additive foam ribbons, phase-driven prop/pitch/camera, Space pause | yes | 0 | t0/t3s/t8s | Runs first try. Visual problems from screenshots: reflections blocky (DataTexture default NearestFilter), sky pale grey not golden (sun behind camera, exposure), wake ribbon reads as a pale blob (additive white on white water), spray too small to see, plane shadow a huge dark wedge toward camera (opacity 0.55 at 9° sun). |
| 2 | 10:39 | Normal map LinearFilter+mipmaps, normals ×3, sun moved ahead of plane, Sky params, exposure 0.42, wake ribbon → ShaderMaterial with per-vertex alpha, spray bigger | yes | 0 | scratch A2/* + probe | Reflections now smooth. Phase probe (own Playwright script, screenshots at 2..44 s + Space test): pause works. Found headless fps ≈ 5.7 so sim time runs ~3× slow under the judge (dt clamp 0.05). Spray = big squares (untextured Points). Ribbon submerged by wave displacement → reads as thin lines. Shadow not visible. (not committed separately — folded into iter 5 commit) |
| 3 | 10:42 | Radial-gradient sprite for spray, emission sub-stepped along travel, ribbon raised above crests, dt clamp 0.1, sun azimuth into frame | yes | 0 | scratch A3-* | Lift-off/climb/bank confirmed visually. Ribbon shows comb aliasing (streak freq used sample index). Shadow still invisible at 6° sun: test copy at 35° proved the shadow pipeline works, so it's elongation+faintness. (folded into iter 5 commit) |
| 4 | 10:44 | Sun elevation 14°, Sky turbidity/rayleigh/mie pushed for warmth, ribbon streak fixed | yes | 0 | scratch A4/* | Shadow now readable from above. But sky still pale white/grey from every angle; 3-variant parameter sweep of Sky addon (grid.png) — all grey. Sky addon can't give "golden" at >10° elevation without blowing out. (folded into iter 5 commit) |
| 5 | 10:47 | Replaced Sky addon with own gradient dome ShaderMaterial (sun disk + warm haze), PMREM env from it, exposure 0.75 | yes | 0 | t0/t3s/t8s, scratch A5-pair.png | First frame that actually reads as golden hour: orange horizon, sun disk, plane shadow and foam wake visible, plane backlit. Glow radius too large. |
| 6 | 10:50 | Sun glow radius reduced, hemisphere fill 0.9 + camera-side fill light so the backlit plane keeps its yellow | yes | 0 | t0/t3s/t8s (final) | Late-phase probe (50–76 s real ≈ descend→flare→touchdown→rollout) all correct; wake only appears once floats touch. Checklist 6/6 by my own judgement → stop. |

**Stop reason:** checklist complete (own judgement; human column left blank in RESULTS.md). Wall-clock 10:32:51 → 10:50:40 ≈ 18 min.

**Where it got stuck:** (1) never on "does it run" — every iteration had 0 console errors; (2) all six iterations were visual: nearest-filtered normal map, invisible wake/spray, shadow invisible at low sun, and above all the Sky addon refusing to look "golden" at a sun elevation high enough for the shadow to read. The scaffold (Water.js) helped; the other scaffold (Sky.js) was abandoned in iter 5. (3) Judge environment artefact: headless SwiftShader renders at ~5.7 fps, so judge screenshots at t=8 s show only ~3–4 s of simulated time; a separate probe script was needed to see later phases.
