Auto-upgrade: daily workflow to propagate upstream changes to installed repos
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
Research direction
Start by reading the existing gh aw add install process and the workflows/autoloop.md and workflows/sync-branches.md sources. Trace how installed workflows are compiled and identify the CLI entry point for adding upgrade and version-tracking behavior. Done means the agreed upgrade design is implemented across the CLI and upgrade-check.md workflow, with local customizations and validation handled as specified.
Written by the indexing model from the issue text.
Description
Problem
When autoloop's source workflows change (bug fixes, new features, breaking changes), installed copies in downstream repos become stale. There is no upgrade mechanism — the install is a one-time file copy + compile. This means fixes like #18, #20, #23, #25 don't reach repos like githubnext/tsessebe until someone manually re-copies and recompiles.
The tsessebe case demonstrates the cost: 18 duplicate PRs were created because the stale .lock.yml didn't include the reset-if-merged fix from PR #25.
Goal
A smooth, automated upgrade path that:
- Detects upstream changes daily
- Creates a PR in the downstream repo with the updated workflows
- Handles breaking changes gracefully (adapts local customizations)
- Requires minimal human intervention for non-breaking updates
Design
Component 1: upgrade-check agentic workflow (lives in autoloop repo, installed into downstream repos)
A new gh-aw agentic workflow that runs daily in the downstream repo:
on:
schedule: daily
workflow_dispatch:
What it does each run:
-
Detect upstream version: Fetch the latest autoloop source from
githubnext/autoloop(usinggh apior cloning to/tmp). Compare the upstreamworkflows/autoloop.mdandworkflows/sync-branches.mdagainst the local.github/workflows/copies. -
Diff classification: Classify changes as:
- Non-breaking: Documentation, prompt wording, new optional features, bug fixes that don't change the frontmatter schema. These can be applied automatically.
- Breaking: Changes to frontmatter keys, step structure, tool configuration, permissions, or safe-output schema. These need agent-assisted adaptation.
-
Preserve local customizations: Before applying upstream changes, extract local overrides (e.g.,
schedule: every 30minstead ofevery 6h, customnetwork.allowedentries, modifiedsafe-outputslimits). After applying upstream changes, re-apply local overrides. -
Recompile: Run
gh aw compileto regenerate.lock.ymlfiles from the updated.mdsources. -
Validate: Run
gh aw compile --validateto ensure the compiled output is valid. -
Create PR: Open a draft PR with the changes titled
[Autoloop] Upgrade workflows to <upstream-sha-short>. The PR body should include:- Changelog of upstream changes (commit messages since last upgrade)
- Classification (breaking / non-breaking)
- Any local customizations that were preserved
- Any manual action required
Component 2: gh aw upgrade CLI command (lives in gh-aw)
A CLI counterpart for manual/interactive upgrades:
# Check for available updates
gh aw upgrade --check
# Apply upgrade, auto-fix breaking changes where possible
gh aw upgrade --fix
# Upgrade a specific workflow
gh aw upgrade autoloop --fix
--fix behavior:
- Detects the source repo from the
.lock.ymlheader (Source: githubnext/autoloop) - Fetches the latest upstream
.mdsource - Three-way merges: upstream base → upstream new → local, preserving local customizations
- Recompiles
- Reports what changed and what couldn't be auto-fixed
Component 3: Version tracking
Add a version/provenance block to the installed .md files so the upgrade tooling knows what baseline to diff against:
# Bottom of the installed .md file, or in a sidecar file
_autoloop:
source: githubnext/autoloop
installed_from: abc1234 # commit SHA at install time
installed_at: 2026-04-04T05:00:00Z
compiler_version: v0.65.6
Or a simpler approach: a .github/workflows/.autoloop-version.json:
{
"source": "githubnext/autoloop",
"commit": "abc1234def5678",
"installed_at": "2026-04-04T05:00:00Z",
"workflows": ["autoloop", "sync-branches"]
}
This gives the upgrade tooling a baseline commit to diff against, so it can show exactly what changed upstream since the last install/upgrade.
Implementation plan
Phase 1: Version tracking + gh aw upgrade CLI
- Add version metadata to
gh aw add— when installing, write.autoloop-version.json(or equivalent) recording the source commit. - Implement
gh aw upgrade --check— compares installed commit against upstream HEAD, shows changelog. - Implement
gh aw upgrade --fix— fetches upstream, three-way merges preserving local customizations, recompiles.
Phase 2: upgrade-check agentic workflow
- Add
workflows/upgrade-check.mdto the autoloop repo. - Include it in the install process (add to
install.md). - The workflow uses
gh aw upgrade --fixinternally, then creates a PR with the result.
Phase 3: Breaking change detection
- Define a schema for the frontmatter DSL (what fields exist, what values are valid).
- Classify upstream diffs against this schema to detect breaking vs non-breaking changes.
- For breaking changes the agent can't auto-fix, create an issue instead of a PR, explaining what needs manual attention.
Open questions
- Should the upgrade workflow run as a gh-aw agentic workflow itself, or as a plain GitHub Actions workflow? An agentic workflow can reason about breaking changes and adapt, but a plain workflow is simpler and doesn't consume agent compute for routine updates.
- Should local customizations be extracted into a separate config file (e.g.,
.autoloop/config.yml) to make three-way merging cleaner? This would separate "upstream workflow logic" from "local overrides." - How to handle the case where the user has made significant manual edits to the
.mdsource beyond simple config overrides?
- Dominant language
- Python
- Stars
- 72
- Forks
- 6
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from githubnext/autoloop
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
githubnext/autoloop#71 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
githubnext/autoloop#54 ·
-
Releases Open
Difficulty 4/5 3-5 days Newbie friendliness 35/100
githubnext/autoloop#72 · 1 comment ·
-
githubnext/autoloop#69 · 1 reaction · 2 assignees ·
-
githubnext/autoloop#65 · 1 reaction · 2 assignees ·
All issues in githubnext/autoloop
Similar issues
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
canonical/paas-charm#368 · 1 comment ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
tech debt
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
StevenBlack/hosts#3256 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
qualcomm/qai-appbuilder#275 ·