Repository navigation
Conversation
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)
|
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 @@
## main #2884 +/- ##
==========================================
- Coverage 59.93% 59.62% -0.32%
==========================================
Files 16 16
Lines 8627 8682 +55
==========================================
+ Hits 5171 5177 +6
- Misses 3456 3505 +49
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.
🟡 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.

Closes #2828
Closes #2861
Closes #2862
Closes #2864
Closes #2875
Closes #2876
🤖 Generated with Claude Code