The previous error framed every small frame as "page didn't load", which
the Codex review flagged as misleading: PNG size is dominated by entropy,
so a fully loaded flat-color UI, sparse empty state, or small viewport
can legitimately serialize below 20 KB. The new wording leads with the
entropy point, names the legitimate small-frame cases, and explicitly
calls out --min-frame-bytes 0 (and smaller positive values) as the
recovery path.
Browser-reel tier silently uploaded blank GIFs against React/Next.js SPAs
that fetch data after initial paint. Two layered defects: a fixed
`agent-browser wait 2000` that fired before fetches resolved, and a
stitch pipeline that validated only frame existence, not content.
- tier-browser-reel.md: wait `--load networkidle` plus a short buffer;
document `--text` and `--fn` for sites with persistent network activity.
- capture-demo.py: 20 KB minimum-frame-bytes guard in `_stitch_frames`,
configurable via `--min-frame-bytes` (0 disables). Error names the
offending frame and points at the network-idle wait. The silicon
screenshot-reel caller passes 0 since rendered code frames are
predictably small.
- tests: regression test for the size guard; existing happy-path stitch
tests opt out via `--min-frame-bytes 0` (synthetic 1x1 PNGs).
Closes#689
Agents spawned from LFG were blocking forever at the AskUserQuestion
prompt with no user present to respond. In mode:pipeline, default to
headless and skip step 2 entirely.
Bump 3.0.6 -> 3.0.7
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Port scan (find_free_port) only runs when PIPELINE_MODE=1
- Dev server auto-start only runs in pipeline mode; manual invocations
print a help message and stop
- LFG step 6 now passes mode:pipeline to ce-test-browser so parallel
agents claim non-colliding ports automatically
- Bump version 3.0.5 -> 3.0.6
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Always verify preferred port is free; scan upward until finding one
- Auto-start dev server (bin/dev / rails server / npm run dev) on the
claimed port if nothing is listening — no more "please start your server"
- Pass PORT= explicitly so parallel agents on the same machine never
collide on 3000
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Add ce-commit-push-pr as step 7 so LFG ends with a pushed branch and open PR
- Remove optional ralph-loop step (step 1) -- simplifies the pipeline
- Renumber all steps and fix cross-references accordingly
- Bump version 3.0.3 -> 3.0.4
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>