Skip to content

Name the Schedule Run-Id Suffix in D7.1 and Accept It in the Audit - #2883

Merged
ptr727 merged 5 commits into
developfrom
feature/d71-schedule-run-id-suffix
Oct 12, 2026
Merged

ptr727 merged 5 commits into
developfrom
feature/d71-schedule-run-id-suffix

Conversation

@ptr727

@ptr727 ptr727 commented Oct 12, 2026

Copy link
Copy Markdown
Owner

Closes #2876

What changes

  • WORKFLOW.md D7.1 names the second case that appends github.run_id: a schedule run 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) and docs/reusable-workflows.md restate it, and the workflow-ci-contract skill copies are regenerated.
  • spec/audit.py accepts that suffix on publish-release.yml only where the publisher reads as having a schedule that never publishes. That means a block-mapping on: with schedule and no push, and every job calling build-release-task.yml holding a dispatch test (github.event_name == 'workflow_dispatch' or != 'schedule') as a top-level conjunct of its if: 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_lines is shared by job_level_names and the new predicate.

Fleet survey

I read every registry repo's publish-release.yml on main and on develop. 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 --selftest passes. 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

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.
Copilot AI lite review requested due to automatic review settings October 12, 2026 16:38
@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Repository: ptr727/ProjectTemplate/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 055400b3-3489-4bd6-a170-e87ea2499aa4

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@codecov

codecov Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 9.23077% with 59 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (develop@f39d182). Learn more about missing BASE report.

Files with missing lines Patch % Lines
spec/audit.py 9.23% 59 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             develop    #2883   +/-   ##
==========================================
  Coverage           ?   59.62%           
==========================================
  Files              ?       16           
  Lines              ?     8682           
  Branches           ?        0           
==========================================
  Hits               ?     5177           
  Misses             ?     3505           
  Partials           ?        0           
Flag Coverage Δ
python-3.13 59.62% <9.23%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 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.
@ptr727

ptr727 commented Oct 12, 2026

Copy link
Copy Markdown
Owner Author

Fixed in 657f4da, answering the review headline on 68ee565 (spec/audit.py rejects valid commented and folded YAML forms). A trailing comment on the on: key line now reads as an empty inline value, so the block mapping under it is read. A trailing comment on a folded if: >- key line is dropped before the body folds onto it, so it no longer joins the condition. Two selftest cases cover the two forms. Each one fails without its fix.

@ptr727

ptr727 commented Oct 12, 2026

Copy link
Copy Markdown
Owner Author

A recorded local strict-review pass covers head ab9bf27ab269594e951e3f38d20c0b6ef526170e, the content this pull request carries at that commit against develop, and it recorded 0 findings.

@ptr727
ptr727 merged commit 088afab into develop Oct 12, 2026
13 checks passed
@ptr727
ptr727 deleted the feature/d71-schedule-run-id-suffix branch October 12, 2026 17:00
ptr727 added a commit that referenced this pull request Oct 12, 2026
…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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants