Repository navigation
Conversation
…ngs) Port the civitai/civitai#6718/#6728 pattern: - ci.yml: workflow_dispatch gets an 'only' choice input; every job but pins-vs-published (whose guard test forbids a job-level if:) gates on it. Concurrency groups push/PR by ref and dispatches by ref+only, cancel-in-progress. - flake.yml, schema-drift.yml: ref-grouped concurrency with cancel-in-progress. Docs-only skipping is deliberately not added: six ci.yml jobs are required checks and Go tests read README.md, AGENTS.md, CLAUDE.md and claudedocs/**. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
/audit-pr round 0 (requirements & deletion) of
|
flake.yml ran once in the last 30 days, so a cancel-superseded group saves nothing there. ci.yml and schema-drift.yml keep theirs. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Removes the workflow_dispatch `only` input and every job's `only` clause, restoring each job's `if:` to main's. A narrowed dispatch writes skipped check runs under the normal job names, and a skipped job satisfies a required check, so a narrowed run at a pull request's head (or in the webhook-outage recovery case) could pass required checks that never ran. ci.yml keeps only the ref-grouped cancel-in-progress concurrency; a dispatch gets its own `dispatch-` group per ref. schema-drift.yml keeps its concurrency; flake.yml stays main's. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
/audit-pr round 1 (full correctness audit) of
|
/audit-pr round 2 (delta audit of
|
Ports the concurrency part of the runner-savings changes from civitai/civitai#6718 and #6728. Only workflow
concurrency:blocks change; no job, trigger, condition, permission or secret is touched.Changes
ci.yml: one concurrency group per ref,cancel-in-progress: true.github.refisrefs/pull/N/merge, so a new push to the branch cancels the in-flight run for the older head. The newest head gets its own run, and that is the run branch protection reads.main, a newer commit cancels the older commit's run. Nothing downstream consumes a per-commitmainverdict: there is noworkflow_runconsumer, andrelease.ymlruns off tags. The newest run checks a tree that contains every older commit. Intermediate commits showcancelledinstead of their own verdict. To pin a break to one, push a branch at that commit and dispatch the workflow there.workflow_dispatchrun gets its owndispatch-<ref>group. It neither cancels nor is cancelled by a push or PR run; a re-dispatch on the same ref cancels the older dispatch.mainonly) is skipped for a cancelled run and happens in the run that superseded it.schema-drift.yml: the same ref-grouped concurrency. It is not a required check, and only the newest run's answer about the published canonical matters.Not changed
flake.yml: left as onmain. It ran once in the last 30 days, so a concurrency group would save nothing.workflow_dispatchonlyinput. An earlier revision of this PR added one. It was dropped because a narrowed dispatch writes check runs under the normal job names, and a job skipped byif:reportsskipped, which branch protection counts as satisfied. At the head of an open PR, a narrowed run could pass required checks that never ran. That includes the webhook-outage recovery case the trigger's comment describes, where the dispatch is the PR's only run. Every job'sif:is exactly as onmain.pins-vs-published,scaffold-currency,build-test,ready-ack-runtime,template-page-viteanddogfood-browser. A workflow-levelpaths:filter would leave a docs-only PR waiting forever on those. Go tests also read README.md, AGENTS.md, CLAUDE.md andclaudedocs/**, so no safe docs set exists.Required checks
No job, name or condition changed, so every required context reports exactly as before. A cancel only ever stops the run for a superseded commit.
Verification
git diff origin/mainshows only the two concurrency blocks and their comments: 2 files, +36.actionlint1.7.12 onci.yml,schema-drift.ymlandflake.yml: no findings. A deliberately broken file exits 1, so the tool can fail.go test -count=1 -run 'Workflow|Pins|Gate' . ./internal/scaffold/cmd/pins-gate): pass, 85 tests.go test -count=1 .): threeTestOracle*tests fail. They fail identically on an unmodifiedorigin/maincheckout in the same environment, so this change does not cause them.🤖 Generated with Claude Code