Skip to content

Promote Five Develop Fixes for Tool Directives, Prose Tests, Review Bounds, PurpleAir Rows, and the D7.1 Schedule Suffix to Main - #2884

Merged
ptr727 merged 5 commits into
mainfrom
develop
Oct 12, 2026
Merged

ptr727 merged 5 commits into
mainfrom
develop

Conversation

@ptr727

@ptr727 ptr727 commented Oct 12, 2026

Copy link
Copy Markdown
Owner

Closes #2828
Closes #2861
Closes #2862
Closes #2864
Closes #2875
Closes #2876

🤖 Generated with Claude Code

Fixes #2828. Per the maintainer decision on the issue, `comment-case`
now skips a comment that `TOOL_DIRECTIVE` matches (via
`is_tool_directive`, the same test `comment-added` uses). `NOT_PROSE` is
unchanged. The design note above `TOOL_DIRECTIVE` now names both readers
(edit to an existing comment, committed with PROSE_ALLOW_COMMENTS=1).
Tests are in their own class; the nosec and hadolint cases fail with the
fix reverted.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
… Diff Floor (#2880)

TestCli now runs from a directory that is no ancestor of its fixtures
(19 of 31 failed from an ancestor of the temp root before, 0 after).
TestDiffScopeFloor gains a case passing an absolute path covering the
changed file, asserting exit 2; it fails under the cwd-relative
rel(Path(p)) mutant and passes on the real source, which is unchanged.

Fixes #2861
Fixes #2862

🤖 Generated with [Claude Code](https://claude.com/claude-code)
## Summary

The `local-strict-review` brief said "read-only" but put no bound on
running code. A reviewer that probes a script by running it still fits
those words. A dev-loop script run that way builds environments and
starts servers, and their gitignored artifacts leave `git status` clean.

- `fleet-code-review` "Review the Change" is the single home for the
rule and its reason:
- Apart from reading files, git state, and the pull request, a review
runs no command its requester does not name.
- Running code is otherwise left to the author and CI, because even a
`--help` run can build environments and start servers that `git status`
misses.
- A finding that only an unnamed command could prove still counts as
supported once it names that command.
- "Establish the Contract" item 4 now applies only to a check the
requester names.
- `local-strict-review` "Running It": the diff brief's Bounds line
points at "Review the Change" and adds only the exact commands its Task
line names. The sweep brief quotes "Review the Change" and so carries
the same bound without restating it.
- Regenerated `.github/skills/` and `.claude-plugin/` with
`scripts/build_dist.py`.

Closes #2864

## Local review

A local strict review pass was recorded before every push, and the last
pass on this head found nothing. Earlier findings were disposed of as
follows:

- Fixed: the fallback cited "Publish Every Finding", a section the local
briefs exclude. It now stands without that cross-reference.
- Fixed: the brief's Bounds line restated the bound in different words.
It is now a pointer that only adds commands to what "Review the Change"
allows.
- Declined: the finding that item 4 licenses running a check's
documented invocation. Item 4 is a file read done before a named check
is reported as skipped. It licenses no run, and the only run allowed
stays the one the requester names.

## Verification

- `python3 scripts/build_dist.py --check`: current
- `python3 scripts/prose_lint.py . --diff <merge-base>`, with and
without `--check sentence-length`: clean
- the full-tree `prose_lint.py` `--check` invocation from
`OPERATIONS.md`: clean
- `python3 scripts/repo_gate.py`, `python3 spec/validate.py`, `python3
scripts/docker_lint.py`: pass

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Fixes #2875.

Each homeassistant-purpleair row was measured against its stage on that
repository's main branch. All three are met and are ticked with the
adopting pull request and commit.

- Stage 1: the merge-bot stub with the rules and delete-branch inputs,
adopted in #371 and promoted in #373.
- Stage 3: the get-version copy deleted in #372, with versioning through
the hub release chain.
- Stage 4: the build-release-asset hook adopted in #404 and promoted in
#405. The smoke workflow reached the task directly in #441, promoted in
#444.

Verified: prose_lint on the diff, docker_lint, repo_gate.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
…2883)

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](https://claude.com/claude-code)
Copilot AI lite review requested due to automatic review settings October 12, 2026 17:00
@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: d0456c98-3037-4d74-9352-bfda69241836

  • 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.
✅ Project coverage is 59.62%. Comparing base (7061724) to head (088afab).
⚠️ Report is 368 commits behind head on main.

Files with missing lines Patch % Lines
spec/audit.py 9.23% 59 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2884      +/-   ##
==========================================
- Coverage   59.93%   59.62%   -0.32%     
==========================================
  Files          16       16              
  Lines        8627     8682      +55     
==========================================
+ Hits         5171     5177       +6     
- Misses       3456     3505      +49     
Flag Coverage Δ
python-3.13 59.62% <9.23%> (-0.32%) ⬇️

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.

🟡 Changes recommended

The schedule trigger parser must handle trailing inline YAML comments and include corresponding test coverage.

1 open finding
What changed in this PR

Promotes five fixes covering prose linting, review safeguards, rollout documentation, and workflow auditing.

Changes:

  • Exempts tool directives from prose comment-case checks.
  • Adds schedule concurrency handling and review execution bounds.
  • Updates rollout documentation and regenerated skill distributions.
File Summary
WORKFLOW.md Documents schedule-only concurrency suffixes.
tests/​test_prose_lint.py Adds CLI isolation and directive tests.
spec/​audit.py Audits schedule suffixes; inline trigger comments remain unhandled.
GOVERNANCE.md Documents concurrency guidance.
docs/​reusable-workflows.md Updates rollout rows.
.github/​skills/​workflow-ci-contract/​references/​d-guarantees.md Regenerated workflow skill reference.
.github/​skills/​local-strict-review/​SKILL.md Updates review execution guidance.
.github/​skills/​fleet-code-review/​SKILL.md Updates fleet review guidance.
.github/​actions/​prose-gate/​prose_lint.py Exempts tool directives from comment-case checks.
.claude-plugin/​fleet-skills/​skills/​workflow-ci-contract/​references/​d-guarantees.md Regenerated workflow skill reference.
.claude-plugin/​fleet-skills/​skills/​local-strict-review/​SKILL.md Regenerated review guidance.
.claude-plugin/​fleet-skills/​skills/​fleet-code-review/​SKILL.md Regenerated fleet review guidance.
.claude-plugin/​fleet-skills/​.source-digests/​workflow-ci-contract Updates generated source digest.
.claude-plugin/​fleet-skills/​.source-digests/​local-strict-review Updates generated source digest.
.claude-plugin/​fleet-skills/​.source-digests/​fleet-code-review Updates generated source digest.
.agents/​skills/​workflow-ci-contract/​references/​d-guarantees.md Updates canonical workflow skill reference.
.agents/​skills/​local-strict-review/​SKILL.md Updates canonical review guidance.
.agents/​skills/​fleet-code-review/​SKILL.md Updates canonical fleet review guidance.

🧠 Review effort: Lite


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread spec/audit.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

2 participants