pr-pipeline: run Refine before review, triggered by events and file extensions
Los mantenedores suelen responder en 1 día
@kyle-sexton ya está trabajando en esto.
Desde el 6/11/2026.
Evaluación
Este issue todavía no se ha evaluado.
Descripción
Refs: #8485
Problem
Review sees code that has not been tidied yet. Review lanes start on opened, synchronize and ready_for_review (.github/workflows/pr-review-hosted.yml:48). fix-docs, the one tidy pass that runs after a PR opens, waits for a cron at minutes 9 and 39 (.github/workflows/pr-unblock-dispatch.yml:61). So the first review of every PR judges the head before tidying, and a fix-docs push restarts both reviews. The owner's direction (2026-11-06): tidying runs before code and security review, on every PR whose changed files qualify by extension, as passes in a Refine stage, event-driven, with clear signals that agents and people read the same way.
Decision
Owner, 2026-11-06, "go w/ recommended" on lane 3's Q6 (a):
- Ready starts this repository's pipeline: Refine first, then review. Draft and save point keep their meanings.
- Refine is one
pr-refineworkflow that always runs, dispatched by an event (no cron). Its first job matches the PR's changed files to each pass'sapplies-when.pathsextension globs indocs/conventions/pr-pipeline.yaml. Passes on disjoint extensions run in parallel; overlapping ones run in their configuredorder. A PR that matches no pass completes Refine in seconds. There is no workflow-level path filter, because a skipped workflow leaves its checks Pending (https://docs.github.com/actions/managing-workflow-runs/skipping-workflow-runs). - Review starts on
workflow_runofpr-refinecompleting (https://docs.github.com/en/actions/reference/workflows-and-actions/events-that-trigger-workflows). A Refine run that pushed a patch tells review to skip that head, and the push starts Refine again on the new head. - Signals are native: draft and ready state, workflow completion, and one check per pass (
refine / <pass>). No label gates anything. - Repository-specific wiring stays in
.github/anddocs/conventions/. Shipped plugins stay team-, user- and repo-agnostic: create.md §2.4.3 keeps its generic states. - Adding a pass is a config entry (an activity with
stage: refine, its globs, itsorder). - Each pass logs its name, files matched, patch yes or no, and duration, so passes can be measured and compared.
Later owner decisions, 2026-11-06 (each comment quotes the owner):
- Q8 (issuecomment-6687918323): review waits for Refine and takes the PR and head from the Refine run;
pr-review-cli.ymlgained the inputs for aworkflow_runcaller. - Q11 and Q13 (issuecomment-6692723687, issuecomment-6694392754): fix-docs is on for every PR whose tidy did not run inside its own run; a resolve-issue lane PR that tidied in its run is skipped. Shipped in #13818 (ADR 0089).
- Q12 (issuecomment-6694392754): a
pull_request_targetdispatcher starts Refine under four tested invariants: main's code only, no head-controlled text inrun:,actions: writeandcontents: readonly, no App token or secret beyondGITHUB_TOKEN. The cron stays as a backstop until one event-started Refine is seen reaching review. The azure-iac broker rule for it is melodic-software/azure-iac#116. - Q16 (issuecomment-6695832454): an explicit Actions event policy allows
pull_request_targetfor the named workflows only. This repository's policy 10299 already coverspr-merge.yml; the dispatcher's path joins it when its trigger ships. - Lane 3, on evidence: resolve-issue lane-branch PRs keep their
pull_requestreview start; every other PR is reviewed after Refine.
Done when
Phase A:
- Dependency: melodic-software/ci-workflows#999 merged (
pr-review-cli.ymlacceptspr-number,head-sha,base-shaandevent-actionfrom aworkflow_runcaller). - Dependency: melodic-software/standards#953 merged and its runner-policy sync landed here (#13742) (
.github/standards/runner-policy/policy.jsonallows the four inputs). - The trusted dispatcher
pr-unblock-dispatch.ymlgains apull_request_targettrigger that dispatches Refine, runs main's code, and never checks out head code, andcheck-trusted-triggeraccepts that event, with one test per Q12 invariant that fails when the invariant is weakened. Depends on melodic-software/azure-iac#116 deployed. - Policy 10299 includes the dispatcher's workflow path.
- A ready PR, and each push to one, starts
pr-refinethrough an event (the dispatch path is covered by a test). The cron dispatch of fix-docs is removed once one event-started Refine is seen reaching review. -
pr-refinealways runs, plans its passes frompr-pipeline.yamlapplies-when.paths, and runs fix-docs as its first pass. A PR with no qualifying files completes with no model turn (test). - The AI review workflows start on
workflow_runofpr-refinecompleting with any conclusion, passing the PR number and head from that Refine run topr-review-cli.yml's new inputs (success, failure, cancelled, timed out), and skip only a head that Refine moved, a draft, or a hold (tests, including a positive control). - Review is never stranded by Refine: every Refine job has a
timeout-minutes; a failed or refused dispatch of Refine still starts review; and a Refine failure logsrefine-failedand is counted the way other lane holds are, so a lasting failure reaches a person (tests for a failed, a timed-out and a never-dispatched Refine). -
workflow_runstays within GitHub's three-level chain limit (.githubchain listed in the PR body). - Each pass emits one record with its name, files matched, patch outcome and duration (test).
-
docs/conventions/pr-pipeline/README.mdstates the stage order and what each signal means. No shipped plugin file gains repo-specific wording (git diff --statshows noplugins/change, or only generic config points). - All
.githubnode tests pass.
Later phases (not this issue's done-when): a /simplify pass on code extensions as a config entry, and moving resolve-issue's in-run tidy steps into Refine, each with before-and-after numbers.
- Lenguaje dominante
- Shell
- Estrellas
- 22
- Forks
- 2
- Merge medio
- 1 h 13 min
- PR fusionados (30 d)
- 954
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
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 melodic-software/claude-code-plugins
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
melodic-software/claude-code-plugins#9179 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
Worktree-isolated sessions refuse claude plugin eval (guard reads 'eval' as shell eval)Posiblemente ocupada @kyle-sexton la tomó hace 6 días. Abiertohost-run priority: low status: ready work-class: mechanical
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
melodic-software/claude-code-plugins#5696 · 16 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
priority: medium status: needs-decision
Dificultad 5/5 Más de una semana Aptitud para principiantes 34/100
melodic-software/claude-code-plugins#13847 · 4 comentarios ·
Los mantenedores suelen responder en 1 día
-
chore(source-control): finish the public-data credential sweep left from #8282Posiblemente ocupada @kyle-sexton la tomó hoy. Abiertohost-run priority: medium status: confirmed work-class: read-only
melodic-software/claude-code-plugins#13819 · 3 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
perf(pr-verify): set the capture key proxy's token-cap from a full measured capturePosiblemente ocupada @kyle-sexton la tomó hoy. Abiertohost-run priority: medium status: confirmed work-class: scoped
melodic-software/claude-code-plugins#13724 · 6 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de melodic-software/claude-code-plugins
Issues similares
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Frogging-Family/linux-tkg#1265 ·
-
False AMD GPU DetectionAbiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
community-scripts/core#217 ·
Los mantenedores suelen responder en 1 día
-
known-red S3: friction & debt
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
MedakaLang/medaka#4969 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
enhancement needs:sonnet ready-for-agent
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día