ci: split demo-gif render/commit workflow, extract quickstart - #125
Merged
Conversation
render-demo.yml only ever ran on workflow_dispatch and uploaded an artifact for manual review. Rename it to demo-gif.yml and add a push trigger scoped to docs/assets/demo.tape (excluding main, which is protected with no bypass) that renders and commits the regenerated GIF straight onto the pushed branch, so a tape edit carries its GIF into its own pull request. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Claude <noreply@anthropic.com>
Move the quickstart job out of ci.yml and into its own .github/workflows/quickstart.yml so it doesn't run twice. The README stays the single source of truth via tools/quickstart_block.py; the workflow additionally renders docs/quickstart.sh from that same extraction and fails on drift, so there is a runnable script without a second copy to maintain. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Claude <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Signed-off-by: Claude <noreply@anthropic.com>
jothimani-rajendran
marked this pull request as ready for review
September 9, 2026 01:33
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Launch-prep block 1, items 1 and 2 (the two missing/incomplete workflows). Items 1
(hero-GIF compression) and item 5 (
open-coder-ai-orggrep, stalepyproject.tomlowner) from the handover are already true in this repo and untouched here — see
Notes below.
render-demo.yml→demo-gif.yml.workflow_dispatchis unchanged (rendersdocs/assets/demo.tape, uploads thedemo-gifartifact,contents: read). A newpushtrigger — scoped todocs/assets/demo.tape,branches-ignore: [main]sincemainis protected with no bypass — renders and commits the regenerateddocs/assets/demo.gifstraight back onto the pushed branch viastefanzweifel/git-auto-commit-action@4a55954c782fc1ea30b9056cd3e7a2b40ca8887d(tag
v7.2.0, resolved and verified withgit ls-remote),contents: writeonthat job only,
persist-credentials: trueonly there.quickstartjob moved out ofci.ymlinto.github/workflows/quickstart.yml(push + pull_request, ubuntu-latest, Python 3.12).
tools/quickstart_block.pystays the single source of truth extracting the README's fenced block; the
workflow additionally renders
docs/quickstart.shfrom that same extraction andfails on drift (
diff -u), so there's a runnable script without a second place toedit it. The block still runs with
bash -euo pipefailin a freshmktemp -d.Claim check
Not applicable — no adapter or matrix change.
Checks
pytest -qpasses — 1598 passed, 4 skippedruff check .andruff format --check .passtests/check_stdlib_only.pypassesgit commit -s)actionlint v1.7.12(built from source, not present in the base image) — clean on both new/changed workflow filesNotes for the reviewer
The
/workscratch directory.docs/assets/demo.tape's hidden setup runs from/work/demowithHOME=/work/userso agents that print resolved config paths (junie,kimi_code) show a fixed, neutral path instead of a runner-specific scratch dir.
charmbracelet/vhs-actionis a Node20 action (confirmed from itsaction.yml), not aDocker action, so it runs directly on the runner's own filesystem —
/workdoesn'texist there by default and the
runneruser can'tmkdirunder/withoutsudo. Thenew
render-and-commitjob adds a step (sudo mkdir -p /work/demo /work/user && sudo chown -R "$(id -u):$(id -g)" /work) before the render step to create it with the rightownership. I could not run this exact step on a real GitHub-hosted runner from this
session, so please watch the first real run of this trigger (e.g. by touching
docs/assets/demo.tape) to confirm it behaves as expected;workflow_dispatchisuntouched as the already-proven fallback path if it doesn't.
Proving the quickstart job fails on a broken block. Temporarily changed the
README's Quick start block's last line to
agentseam install all "python3 my_handler.py" --events pre_tool --repo . --nonexistent-flag, then ran the same twochecks the workflow runs:
diff -u docs/quickstart.sh <regenerated>) → exits 1, shows theinjected flag as the only diff
bash -euo pipefail quickstart.sh) →agentseam: error: unrecognized arguments: --nonexistent-flag, exit code 2Reverted before committing;
git statuswas clean afterward. Against the real README,the same sequence wires 12 agents and exits 0.
Item 5 (grep for
open-coder-ai-org, stalepyproject.tomlowner). Re-verifiedindependently rather than taken on faith:
grep -rn "open-coder-ai-org" . --exclude-dir=.gitexits 1 (no matches), andpyproject.toml's[project.urls]already readsopen-coder-ai/agentseamthroughout. No change needed or made.Item 1 (GIF compression).
docs/assets/demo.gifis 182,025 bytes — already wellunder the 1.2MB target and explicitly named in the handover as one to leave alone. Left
untouched.
🤖 Generated with Claude Code