Repository navigation
Fix Promotion Review Findings on Escalation, Test Deps, and uvx Assert - #3418
Conversation
The drive-pr escalation line matches pr-review-conduct, escalating only an unplaced item that cannot be told to be a finding or not. The host-setup Python passage and the python-codestyle profile name the test suite's libraries rather than claiming tests run with nothing installed. The release-guard test asserts the lint-only runner still invokes coverage through uvx.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
|
A recorded local strict-review pass covers head |
There was a problem hiding this comment.
🟢 Approval recommended
All reviewed files were covered with no unresolved findings, and the approval assessments unanimously indicate readiness.
No open issues 🎉
What changed in this PR
This pull request resolves promotion-review findings by clarifying escalation guidance, documenting test dependencies, strengthening the release-guard assertion, and updating generated skill distributions.
Changes:
- Clarifies when unplaced review content must be escalated to the maintainer.
- Documents
tests/requirements.txtand distinguishes test-runner requirements from test dependencies. - Verifies the complete
uvxcoverage command, including its launcher and arguments. - Refreshes generated skill copies and source digests.
| File | Summary |
|---|---|
tests/test_release_guards.py |
Verifies the complete lint-only coverage command, including the uvx launcher and dependency arguments. |
docs/host-setup.md |
Documents test dependencies and their role in local setup and validation. |
.github/skills/python-codestyle/references/profiles.md |
Updates the generated Python profile guidance. |
.github/skills/drive-pr/SKILL.md |
Updates the generated escalation guidance. |
.claude-plugin/fleet-skills/skills/python-codestyle/references/profiles.md |
Updates the generated Claude Python profile guidance. |
.claude-plugin/fleet-skills/skills/drive-pr/SKILL.md |
Updates the generated Claude escalation guidance. |
.claude-plugin/fleet-skills/.source-digests/python-codestyle |
Refreshes the Python skill source digest. |
.claude-plugin/fleet-skills/.source-digests/drive-pr |
Refreshes the drive-pr skill source digest. |
.agents/skills/python-codestyle/references/profiles.md |
Clarifies lint-only test-runner and dependency behavior. |
.agents/skills/drive-pr/SKILL.md |
Clarifies escalation criteria for unplaced review content. |
Review effort: Lite
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #3418 +/- ##
========================================
Coverage 80.78% 80.78%
========================================
Files 23 23
Lines 8848 8848
========================================
Hits 7148 7148
Misses 1700 1700
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:
|
…#3417) ## Summary Promotes the pull requests merged into develop since release 2.0.1148. Each carries a maintainer decision of 2026-10-23 recorded on #3391. - [#3407](#3407): rewrites the write guard as a small lexer of 1,653 lines. It fails open under its stated threat model and fails closed only on requirement 4. A test holds it at 2,500 lines or fewer (item 1). - [#3409](#3409): adds CODESTYLE rules. Tests live in `tests/`, and a maintained parser replaces a hand-written one. A script declares its dependencies in PEP 723 metadata and runs as `uv run --no-project --script`. It switches the callers to that spelling and adds a managed allow rule to the agent-safety installer (item 1 follow-ups). - [#3410](#3410): splits `pr_review.py` into the gate, a Copilot adapter reading its vocabulary from JSON, and `pr_cleanup.py`. It collapses the exit codes and adds `tests/requirements.txt` and the CI runners. - [#3411](#3411): rebuilds the prose gate on Pygments and markdown-it-py, with its vocabulary and exemptions in `prose-gate.json` and a repo-local override. - [#3415](#3415): holds the Merge Gate on a part of a Copilot review body the tooling cannot place. The hold lasts until an owner acknowledges it with outcomes (item 4 follow-up). - [#3416](#3416): moves the audit self-test to `tests/` and reads YAML and Markdown with PyYAML and markdown-it-py. It adds the check registry `spec/checks.json` and splits out `spec/audit_markdown.py`. It shares `spec/carried_text.py` with carry, `build_dist`, and `canonical_review`. - [#3418](#3418): fixes the findings this promotion's first review round raised on the content above. It aligns the drive-pr escalation line with pr-review-conduct and names `tests/requirements.txt` where the prose said the tests need nothing installed. It also restores the `uvx` launcher in a release-guard assertion. - [#3419](#3419): fixes the finding the second review round raised. The Copilot adapter's prose path reads a coverage count longer than `COUNT_DIGITS` as `unknown`, sharing `count_state` with the marker path. - [#3420](#3420): fixes the finding the third review round raised, under the maintainer's ruling. `hub_fetch_run.py` falls back to `git ls-remote` where the API lookup of `main` fails, so the prose gate and its data are fetched at one commit. Where neither lookup resolves, the documented fail-open against `main` stays. - [#3421](#3421): fixes the findings the fourth review round raised. The Copilot adapter reads a finding count longer than `COUNT_DIGITS` as unknown rather than zero, through one length check and one None-aware sum. The host-setup gates-and-tests row says `uv` installs the test requirements. Closes #3408 ## Constituent coverage The Copilot rounds on this promotion ran at Lite effort and state no full coverage, so Merge Gate item 2 rests on the promotion case. Each change this promotion carries had full coverage on its own pull request into develop, at its merged head: | Pull request | Merged head | Coverage | | --- | --- | --- | | [#3407](#3407) | `9efc1002` | attested local pass, `coverage=local` | | [#3409](#3409) | `bcc7a9e1` | attested local pass, `coverage=local` | | [#3410](#3410) | `00cec726` | attested local pass, `coverage=local` | | [#3411](#3411) | `bd128136` | attested local pass, `coverage=local` | | [#3415](#3415) | `5be9db87` | attested local pass, `coverage=local` | | [#3416](#3416) | `b914f083` | attested local pass, `coverage=local` | | [#3418](#3418) | `3a86cb51` | attested local pass, and a Copilot table naming exactly the changed files, `coverage=table` | | [#3419](#3419) | `6e7b868d` | attested local pass, and a Copilot table naming exactly the changed files, `coverage=table` | | [#3420](#3420) | `9b492290` | attested local pass, and a Copilot table naming exactly the changed files, `coverage=table` | | [#3421](#3421) | `743010e6` | attested local pass, and a Copilot table naming exactly the changed files, `coverage=table` | 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Summary
Fixes the review findings on the develop -> main promotion #3417 that hold on content it carries.
.agents/skills/drive-pr/SKILL.md"Stop and Ask" sends an unplaced item to the maintainer only where it cannot be told to be a finding or not. That matchespr-review-conductMerge Gate item 4 and "Escalate to the maintainer when". The old wording also escalated an item that is plainly not a finding.docs/host-setup.mdnamestests/requirements.txtbeside the inline script metadata, in the Python passage and in the gates-and-tests row. The python-codestyle profiles reference says aunittestsuite needs no test runner installed, rather than that it runs under barepython3with nothing installed. Its long sentence is split into three.tests/test_release_guards.pyasserts the lint-only runner's whole command,uvx "${extra[@]}" coverage@latest run -m unittest discover -s tests. The promotion's version matchedcoverage@latest run ...alone, which passes with theuvxlauncher gone.Local review
Two recorded passes at the
frontiertier. The first found oneintroducedsentence-length finding on the profiles sentence this change rewrote, fixed in the second commit. The second pass covers the head.Dropped findings
docs/host-setup.md:29, the 32-word sentence on the linters needing onlydocker,styleon text this change did not touch.Pre-existing findings, not filed
.agents/skills/python-codestyle/references/profiles.md:50calls the lint-only profile "stdlib-only utility scripts", while the same file andvalidate-task.ymlprovide for a lint-onlytests/requirements.txt. A stale claim on text this change did not touch,pre-existing.Verification
uv run --no-project --with-requirements tests/requirements.txt python -m unittest discover -s tests->Ran 2856 tests,OK (skipped=7).python3 scripts/build_dist.py --check->Generated skill distributions are current.uv run --no-project --script scripts/prose_lint.py --diff origin/develop-> no violations.🤖 Generated with Claude Code