Files
computer-playbook/scripts/github/update
kevinveenbirkenbachandClaude Opus 4.7 da77dd063b feat(update/open-pr): dedupe across open PRs and supersede stale class siblings
Two new steps wrapped around the existing push/create flow:

1. Dedupe before push: hash the local diff vs origin/<base-branch> and
   compare against gh pr diff of every open PR (any author, any branch)
   targeting the same base. On a match, exit 0 without pushing and
   without creating a PR. This is what stops the same image-version
   bump from being opened repeatedly.

2. Supersede after create: close every other open PR whose branch
   starts with UPDATE_BRANCH_PREFIX with a "Superseded by #N." comment.
   The prefix filter keeps the bot from ever closing repository-refs,
   skills, or human-authored PRs, even though dedupe itself sees them.

CRLF normalization on both sides of the hash compare so a runner that
checks out the patch with native-CRLF translation still produces a
stable hash.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 00:50:26 +02:00
..

Update Pipeline 🔄

Shell helpers that drive the scheduled Update: Versions workflow.

Scope 📋

This directory contains the helpers invoked by update.yml to bump pinned upstream versions and open a pull request once per day. The helpers are thin wrappers: the image-version and repository-ref bumpers delegate to Python CLIs under cli/contributing/ that scan roles/*/meta/services.yml and rewrite version pins in place; the PR-open helper commits, force-pushes the update branch, and creates or refreshes the PR via gh. Helpers MUST NOT be called from workflows other than Update: Versions; the CI_ENABLE_AUTO_UPDATES gate is enforced once, at the workflow's job level, and bypassing it from another caller would create PRs even when auto-updates are intentionally disabled.

Each shim MUST resolve the repository root relative to its own location so it can run from any working directory, MUST forward arguments to the underlying CLI so --dry-run and similar flags keep working from the shell, and MUST exit non-zero on CLI failure so the workflow surfaces the error.

For the workflow catalog see workflows.md. For the repository variable that gates the workflow see configuration.md. For the App-token secrets that the PR-opening step requires see secrets.md.