Every merged pull request now gets a short video

2 hours ago

Now, when a pull request is merged into main of LCU, a short narrated video that explains it gets posted as a comment on that pull request. Minor and major releases get one too, linked from their release notes. This is a new workflow in the repository's automation. How you install and run LCU stays the same.

Ask about this presentation

Chapters

  1. 0:00Videos for merged changes
  2. 0:21Which changes get one
  3. 0:44Split permissions
  4. 1:12What Claude reads
  5. 1:32The open risk
  6. 1:50Pinned versions
  7. 2:10What to do
Show transcript
  1. Now, when a pull request is merged into main of LCU, a short narrated video that explains it gets posted as a comment on that pull request. Minor and major releases get one too, linked from their release notes. This is a new workflow in the repository's automation. How you install and run LCU stays the same.

    Slide text

    Every merged pull request now gets a short video

    Minor and major releases get one too. Installing and running LCU is unchanged.

    .github/workflows/video-explainers.yml amontlabs/lcu
  2. A merged pull request gets a comment with a watch link, and a minor or major release, one whose tag ends in point zero, gets the link in its notes. The videos are published on bisque.today. Patch releases, prereleases and direct pushes to main get none. The writer also skips a change too small to explain, like a dependency bump, formatting, or a typo.

    Slide text

    Where you will find a video

    Merged pull request
    A comment with the watch link
    Release ending in .0
    A link added to the release notes
    Patch release or prerelease
    No video
    Direct push to main
    No video
    bisque.today/p/amontlabs/lcu who gets one
  3. A model that reads the repository can be steered by text planted in it, so the workflow splits the work into separate jobs. The first one only looks up which pull request a push merged. Claude writes the video in a job that can read the repository and holds the Anthropic key, and nothing else. Separate jobs, with no secret and no model, publish the folder it uploaded and post the link. They sign in with the repository's own GitHub identity token, so there's no Bisque account to protect.

    Slide text

    A hijacked run can at worst make a bad video

    Find the subject
    pull-requests: read
    Which pull request did this push merge?
    Write the video
    contents: read API key
    Claude runs here, and only here.
    Publish to the pull request
    id-token: write pull-requests: write
    No secret, no model.
    Publish to the release
    id-token: write contents: write
    No secret, no model.
    four jobs, permissions: {} by default why it is built this way
  4. A pull request's title, description and comments are where anyone can write anything, so the writer never sees them. Its prompt carries a commit hash, and Claude starts in that merged commit on main and reads the change with git. For a release it gets the tag, then reads the release notes and the history since the previous release.

    Slide text

    Claude reads the merged commit, never the pull request's text

    Use the present skill to explain the change merged
    to main as commit $GITHUB_SHA. Read it with
    `git diff $BEFORE $GITHUB_SHA` and the files it touches.

    For a release, the prompt holds only the tag.

    the prompt's task line, from the subject job what the model sees
  5. The split has a limit, and the workflow says so. Claude needs a shell and the network to build the video, and the Anthropic key sits in that same environment, so a hijacked run could read it. The answer is a key used only for this, with a spending cap, which bounds what a leak can cost.

    Slide text

    The writing job can still read its own API key

    The risk
    The key sits in a session that has a shell and the network.
    The bound
    A dedicated key with a spending cap.
    stated in the workflow's own header the limit
  6. Each action is pinned to a full commit hash instead of a moving tag, and the presenter plugin Claude uses is checked out at the same commit as the action that publishes. They get updated together. At that version, publishing fails when a narrated slide arrives without its audio, instead of narrating it in the publishing job.

    Slide text

    Every action is pinned to a commit

    actions/checkout@3d3c42e…
    bisque-cloud/presenter@1bcc1ea…
    The plugin and the publishing action share one commit, v1.10.0.
    no audio, no publish
    presenter v1.10.0 pinned versions
  7. As someone who uses LCU, you don't need to do anything. A video is a quick explanation written from the code, so when the detail matters, read the diff. Every merged pull request, and every minor or major release, now comes with a short video beside it.

    Slide text

    Nothing to do. Watch the link when you want the short version.

    The video explains the change. The diff stays the record.

    bisque.today/p/amontlabs/lcu amontlabs/lcu

What happened in AI today, in your inbox

One short email each evening. Read it and you’re caught up.

Built with ❤️ in New York