Skip to content

Add a demo GIF to the README - #24

Merged
ulmentflam merged 1 commit into
mainfrom
docs/demo-gif
Jul 28, 2026
Merged

Add a demo GIF to the README#24
ulmentflam merged 1 commit into
mainfrom
docs/demo-gif

Conversation

@ulmentflam

Copy link
Copy Markdown
Owner

Adds the demo GIF at the top of the README, plus its regenerable source in docs/demo/.

demo

What it shows

The heal loop end to end, not a --help screen. Three beats:

  1. autosentry run — the child hits a CUDA OOM, the oom pattern detector fires, oom_halve_batch matches, and the supervisor restarts the child with BATCH_SIZE halved. The rerun exits 0 and restart_on_failure shuts the supervisor down cleanly.
  2. grep … process.log — four lines proving the fix worked rather than just that something restarted: batch_size=8OutOfMemoryErrorbatch_size=4training complete.
  3. autosentry incidents list — the paper trail, with the detector, rule, and action that fired.

That's the README's own tagline — catch the failure, fix it, leave a paper trail — demonstrated instead of asserted.

It's a real run

docs/demo/train.py genuinely runs out of memory at BATCH_SIZE >= 8 and genuinely succeeds below it, so the rule has an actual failure to fix and the restart has an observable effect. Nothing is scripted to look like healing. If the healing path regresses, re-rendering produces a GIF that visibly fails to heal — the demo can't quietly drift out of sync with the code.

One thing worth knowing: BATCH_SIZE is exported as a real env var in the tape rather than set in process.env, because the half keyword resolves its numeric base against the supervisor's environment (_apply_env_overrides), not the config. Setting it only in process.env makes half log "no numeric base found" and no-op.

Regenerable, not an opaque binary

docs/demo/ holds the VHS tape and the scenario files, with regeneration steps in its README:

PATH="$(make -s venv-info)/bin:$PATH" vhs docs/demo/demo.tape
gifsicle -O3 --lossy=30 --colors 64 docs/demo.gif -o docs/demo.gif

The PATH prefix is deliberate — the tape records whatever autosentry resolves to, and this machine had a stale 0.8.5 on the global PATH, so without it the GIF would silently capture the wrong version. The recording runs out of /tmp/autosentry-demo (created and torn down inside the tape) so the supervisor's absolute cwd= stays short enough to read at GIF width and each take starts from clean state.

Verified reproducible: rendered twice from scratch, same output modulo timestamps and pids.

Size

257 KB, 21s, 1000×720 — well under the 8 MB README budget. gifsicle -O3 --lossy=30 --colors 64 cut it 46% from the raw 469 KB with no visible quality loss (compared frame-for-frame; terminal text stays crisp).

Docs and assets only — no source changes. Suite still 348 passing, lint/format/pyrefly clean.

🤖 Generated with Claude Code

Shows the whole heal loop in one take rather than a --help screen: a
supervised training run hits a CUDA OOM, the oom pattern detector fires,
the oom_halve_batch rule restarts the child with BATCH_SIZE halved from
8 to 4, the rerun completes, and the incident lands in the ledger. Three
beats — the run, a grep of the process log proving batch 8 crashed and
batch 4 finished, and `autosentry incidents list` for the paper trail.
That's the README's own tagline (catch the failure, fix it, leave a
paper trail) shown instead of asserted.

The recording is a real run, not a mock-up: docs/demo/train.py genuinely
OOMs at BATCH_SIZE >= 8 and genuinely succeeds below it, so the rule has
an actual failure to fix. If the healing path regresses, re-rendering
produces a GIF that visibly fails to heal.

Source lives in docs/demo/ as a VHS tape plus the scenario files, so the
GIF is regenerable when the CLI output changes rather than being an
opaque binary nobody can reproduce. The tape records out of
/tmp/autosentry-demo so the supervisor's absolute cwd= stays readable at
GIF width and every take starts from clean state.

257 KB after gifsicle, 21s, 1000x720.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@ulmentflam, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 26 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 00efc374-aa86-4d59-ad2c-ccc32830685c

📥 Commits

Reviewing files that changed from the base of the PR and between 8389502 and 4387087.

⛔ Files ignored due to path filters (1)
  • docs/demo.gif is excluded by !**/*.gif
📒 Files selected for processing (6)
  • CHANGELOG.md
  • README.md
  • docs/demo/README.md
  • docs/demo/autosentry.yaml
  • docs/demo/demo.tape
  • docs/demo/train.py
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/demo-gif

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@ulmentflam
ulmentflam merged commit 2240c12 into main Jul 28, 2026
12 checks passed
@ulmentflam
ulmentflam deleted the docs/demo-gif branch July 28, 2026 17:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant