pr-pipeline: run Refine before review, triggered by events and file extensions
维护者通常 1 天内回复
@kyle-sexton 已经在做这个了。
开始于 2026年11月6日。
评估
这个 Issue 还没有评估数据。
描述
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.
- 主要语言
- Shell
- 星标
- 22
- 派生
- 2
- 平均合并
- 1 小时 13 分钟
- 30 天内合并 PR
- 954
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
melodic-software/claude-code-plugins 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 67/100
melodic-software/claude-code-plugins#9179 · 4 条评论 ·
维护者通常 1 天内回复
-
Worktree-isolated sessions refuse claude plugin eval (guard reads 'eval' as shell eval)可能已有人在做 @kyle-sexton 于 6 天前认领。 未关闭host-run priority: low status: ready work-class: mechanical
难度 2/5 1-3 小时 新手友好度 62/100
melodic-software/claude-code-plugins#5696 · 16 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
-
priority: medium status: needs-decision
难度 5/5 一周以上 新手友好度 34/100
melodic-software/claude-code-plugins#13847 · 4 条评论 ·
维护者通常 1 天内回复
-
chore(source-control): finish the public-data credential sweep left from #8282可能已有人在做 @kyle-sexton 今天认领。 未关闭host-run priority: medium status: confirmed work-class: read-only
melodic-software/claude-code-plugins#13819 · 3 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
-
perf(pr-verify): set the capture key proxy's token-cap from a full measured capture可能已有人在做 @kyle-sexton 今天认领。 未关闭host-run priority: medium status: confirmed work-class: scoped
melodic-software/claude-code-plugins#13724 · 6 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
查看 melodic-software/claude-code-plugins 的全部 Issue
相似的 Issue
-
enhancement
难度 2/5 1-3 小时 新手友好度 68/100
Frogging-Family/linux-tkg#1265 ·
-
bug
难度 2/5 1-3 小时 新手友好度 68/100
community-scripts/core#217 ·
维护者通常 1 天内回复
-
known-red S3: friction & debt
难度 2/5 1-3 小时 新手友好度 82/100
MedakaLang/medaka#4969 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
enhancement needs:sonnet ready-for-agent
难度 2/5 1-3 小时 新手友好度 78/100
维护者通常 1 天内回复