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分
- マージ済み PR(30日)
- 954
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートなし
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- 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 1週間以上 初心者へのやさしさ 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 日以内に返信