Auto-upgrade: daily workflow to propagate upstream changes to installed repos
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
Línea de trabajo
Comienza leyendo el proceso de instalación existente de gh aw add y las fuentes workflows/autoloop.md y workflows/sync-branches.md. Sigue cómo se compilan los workflows instalados e identifica el punto de entrada de la CLI para añadir el comportamiento de actualización y seguimiento de versiones. Se considera terminado cuando el diseño de actualización acordado esté implementado en la CLI y en el workflow upgrade-check.md, con las personalizaciones locales y la validación gestionadas según lo especificado.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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?
- Lenguaje dominante
- Python
- Estrellas
- 72
- Forks
- 6
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
No hay ninguna guía de contribución indexada para este repositorio
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de githubnext/autoloop
-
Autoloop template should exclude language-specific dev files from protected-files by default Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
githubnext/autoloop#71 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
githubnext/autoloop#54 ·
-
Releases Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
githubnext/autoloop#72 · 1 comentario ·
-
githubnext/autoloop#69 · 1 reacción · 2 asignados ·
-
githubnext/autoloop#65 · 1 reacción · 2 asignados ·
Todos los issues de githubnext/autoloop
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
anthropics/skills#1811 · 1 comentario ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
speaches-ai/speaches#678 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
datalayer/mcp-compose#42 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
conda-forge/spacy-feedstock#177 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
UKGovernmentBEIS/inspect_evals#2523 ·