Repository navigation
Name the Schedule Run-Id Suffix in D7.1 and Accept It in the Audit - #2883
Conversation
A dispatch-only publisher whose weekly schedule only retests needs its schedule runs out of the publish group, or a retest replaces a pending dispatch. D7.1 named only the push case, so the audit drifted that publisher with no way for the repository to clear it. D7.1 now states the schedule suffix form. The audit accepts it only where the publisher's triggers hold a schedule and no push, and every job calling build-release-task.yml requires a dispatch in its if.
Accept the dispatch test in any conjunct position, and its not-schedule form, so an equivalent gate is not reported as drift. Name what keeps a schedule suffix from qualifying, read on: as the block mapping a schedule needs, and share the job direct-child reader with job_level_names.
The merge-bot never takes a run-id suffix, so its drift keeps the plain group message. The trigger reader's docstring states what it reads.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #2883 +/- ##
==========================================
Coverage ? 59.62%
==========================================
Files ? 16
Lines ? 8682
Branches ? 0
==========================================
Hits ? 5177
Misses ? 3505
Partials ? 0
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
🔵 Needs a closer look
spec/audit.py incorrectly rejects valid commented and folded YAML forms.
0 open findings
What changed in this PR
This PR documents and audits the schedule-only run-ID concurrency suffix.
Changes:
- Updates workflow and governance documentation.
- Adds schedule-trigger qualification logic to
spec/audit.py. - Regenerates workflow skill references and digest.
- Audit parsing still needs fixes for comments and folded
if:conditions.
| File | Summary |
|---|---|
WORKFLOW.md |
Documents D7.1 schedule behavior. |
spec/audit.py |
Audits schedule suffixes and adds tests. |
GOVERNANCE.md |
Updates concurrency guidance. |
docs/reusable-workflows.md |
Updates release-chain documentation. |
.github/skills/workflow-ci-contract/references/d-guarantees.md |
Regenerated contract reference. |
.claude-plugin/fleet-skills/skills/workflow-ci-contract/references/d-guarantees.md |
Regenerated contract reference. |
.claude-plugin/fleet-skills/.source-digests/workflow-ci-contract |
Updates the source digest. |
.agents/skills/workflow-ci-contract/references/d-guarantees.md |
Updated contract reference. |
🧠 Review effort: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
A trailing comment on the on: key line, or on a folded if: key line, made a qualifying schedule-only publisher read as drift.
…re/d71-schedule-run-id-suffix
|
Fixed in 657f4da, answering the review headline on 68ee565 ( |
|
A recorded local strict-review pass covers head |
…ounds, PurpleAir Rows, and the D7.1 Schedule Suffix to Main (#2884) - #2878 exempts tool directive names from the comment-case rule - #2880 isolates TestCli from the working directory and tests the absolute-path diff floor - #2879 bounds code execution in the local strict review brief - #2881 ticks the homeassistant-purpleair rollout rows in Stages 1, 3, and 4 - #2883 names the schedule run-id suffix in D7.1 and accepts it in the audit Closes #2828 Closes #2861 Closes #2862 Closes #2864 Closes #2875 Closes #2876 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Closes #2876
What changes
WORKFLOW.mdD7.1 names the second case that appendsgithub.run_id: aschedulerun on a publisher whose schedule never publishes, with the exact suffix form${{ github.event_name == 'schedule' && format('-{0}', github.run_id) || '' }}. The principle sentence is unchanged.GOVERNANCE.md"Workflow YAML Conventions" exception (2) anddocs/reusable-workflows.mdrestate it, and theworkflow-ci-contractskill copies are regenerated.spec/audit.pyaccepts that suffix onpublish-release.ymlonly where the publisher reads as having a schedule that never publishes. That means a block-mappingon:withscheduleand nopush, and every job callingbuild-release-task.ymlholding a dispatch test (github.event_name == 'workflow_dispatch'or!= 'schedule') as a top-level conjunct of itsif:with no||. The plan task reports a schedule as a publish, so the caller's own gate is the only thing that keeps a schedule from publishing. The push-only form stays exact. A schedule suffix that does not qualify gets a DRIFT that names what is missing.job_child_linesis shared byjob_level_namesand the new predicate.Fleet survey
I read every registry repo's
publish-release.ymlonmainand ondevelop. The only run-id suffix anywhere is the schedule form on the dispatch-plus-schedule publisher that raised the issue. No push-suffix variant and no other shape exists.Verification
python3 spec/audit.py --selftestpasses. The new cases cover a qualifying schedule-only publisher, the same suffix on a push-triggered publisher, a publishing schedule, a disjunction, a negated group, no release job, conjunct position, and the merge-bot. Each case was shown to fail with its fix reverted or mutated.python3 spec/audit.py homeassistant-purpleair: the concurrency DRIFT is gone.python3 -m unittest discover -s tests, ruff check/format, mypy,build_dist.py --check,repo_gate.py,spec/validate.py,prose_lint.py --diff <merge-base>,docker_lint.py(markdownlint included): all clean.local-strict-review: three passes. Rounds 1 and 2 findings were fixed, and the final pass found nothing.🤖 Generated with Claude Code