Repository navigation
Conversation
Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
…tack The pip-compile refresh moved certifi to 2026.10.23 in requirements.lock.txt and platformdirs to 4.13.5 in requirements-ci.lock.txt, but the docs lock was not regenerated. Its pins stayed at certifi 2026.10.19 and platformdirs 4.13.0, so `pip install -r requirements.lock.txt -r requirements-docs.lock.txt` failed with ResolutionImpossible (docs.yml, Build docs (strict)) and test_stacked_lock_pins_agree failed on the ci and py3.11/3.14 jobs. Regenerate the docs lock with its header command. The header now also constrains it to requirements-ci.lock.txt: without that, uv keeps the old platformdirs pin from the -o file, since the main lock does not carry platformdirs. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
Renovate's pip-compile manager reads a lock only when its first line is uv's autogenerated header and the command follows on the next line. The docs lock had prose there, so Renovate skipped it and the refresh of the other locks left it behind. Rewrite the header as uv writes it: long options, the 7-day cooldown, and --constraint for both locks it is stacked with. The pins are unchanged. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
Add the docs lock to the pip-compile managerFilePatterns, so the weekly lock PR refreshes it with requirements.lock.txt and requirements-ci.lock.txt. The lock test checks its header and cooldown like the other Renovate-managed locks. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
|
✅ OpenCodeReview: Review complete: 0 finding(s) across 3 selected item(s). Review details
|
There was a problem hiding this comment.
🟡 Changes recommended
The Renovate pattern change leaves the docs lock stale after main/tools-only updates, recreating the stacked-install conflict and requiring ordered dependent-lock regeneration with a regression check.
1 open issue
What changed in this PR
1 new must-fix finding.
This PR replaces #330, aligning documentation dependencies with the refreshed locks and adding the docs lock to Renovate’s managed files.
Changes:
- Refresh dependency pins and hashes in the CI, mutation, and docs locks.
- Give the docs lock a uv-compatible header constrained by both main and CI locks.
- Extend Renovate matching and existing header/cooldown checks to cover the docs lock.
| File | Description |
|---|---|
dokimi/tests/test_dependency_locks.py |
Includes the docs lock in Renovate header and cooldown checks. |
dokimi/requirements-mutation.lock.txt |
Refreshes mutation-testing dependencies and hashes. |
dokimi/requirements-docs.lock.txt |
Aligns shared pins and adds uv metadata for automated refreshes. |
dokimi/requirements-ci.lock.txt |
Refreshes CI tooling dependencies and hashes. |
.github/renovate.json5 |
Adds the docs lock to pip-compile matching and updates explanatory comments. |
Review effort: Balanced
| "pre-commit": { enabled: true }, | ||
| "pip-compile": { | ||
| managerFilePatterns: ["/(^|/)requirements(-ci|-mutation)?\\.lock\\.txt$/"], | ||
| managerFilePatterns: ["/(^|/)requirements(-ci|-docs|-mutation)?\\.lock\\.txt$/"], |
There was a problem hiding this comment.
Not changed in this push; this needs a decision. The main/tools-only case is already caught: a PyYAML bump in requirements.lock.txt alone fails test_stacked_lock_pins_agree (probed: 6.0.3 -> 6.0.4 gives "regenerate requirements-docs.lock.txt after requirements.lock.txt"), so the drift cannot ship silently.
What is missing is the ordered refresh of the docs lock. I have not verified that Renovate's pip-compile manager refreshes it from --constraint headers, so I am not adding a postUpgradeTasks step on that basis.
Pending the maintainer: (a) a postUpgradeTasks step that reruns the docs header command after the main and tools locks (needs Renovate allowedCommands), or (b) keep Renovate on main and tools and regenerate the docs lock by hand when the stacked test fails. I suggest (b) unless postUpgradeTasks is confirmed.
There was a problem hiding this comment.
Maintainer chose option (b): Renovate stays on main and tools, and the docs lock is regenerated by hand when test_stacked_lock_pins_agree fails. No postUpgradeTasks step.
No change in this PR (head 5c3a51d). The stacked test already fails on a main or tools-only bump, so the drift cannot ship silently.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #341 +/- ##
==========================================
- Coverage 94.05% 94.04% -0.01%
==========================================
Files 297 297
Lines 38018 38018
Branches 6424 6424
==========================================
- Hits 35756 35754 -2
- Misses 1452 1454 +2
Partials 810 810 🚀 New features to boost your workflow:
|
antonwolfy
left a comment
There was a problem hiding this comment.
LGTM. The docs lock keeps the same pins and now carries uv's header, so Renovate's pip-compile reader can pick it up. The drift test covers it. One nit inline.
@copilot-pull-request-reviewer's point on a main/tools-only update leaving the docs lock behind waits for the author. Copilot's point on the cascading refresh does not block this PR: a main-only bump already fails test_stacked_lock_pins_agree, so the drift cannot ship silently.
What I ran, on a Linux review host at 00af4ec:
make ci-local: 27 passed, 3 failed, 7 skipped; 11,971 tests; changed-line coverage passes. The failures are not the PR's: the gitleaks download returned 504 here (so its scan did not run), andtest_unbalanced_quote_in_hook_completes_quicklytook 1.05 s against its 1 s bound under load and passes alone in 0.74 s.tests/test_dependency_locks.py: 31 passed. Withcertifiin a copy of the docs lock changed to 2026.10.22, 2 stacked-pin tests fail, as they should.- Pin sets of the docs lock before and after the header commit are identical; shared pins agree with the main and tools locks.
Checked, no issues
- Hashes: every pin in the docs lock has well-formed sha256 lines (64 hex characters).
- Commits: all four commits carry a
Signed-off-by.
Signed-off-by: Anton Volkov <antonwolfy@gmail.com>
antonwolfy
left a comment
There was a problem hiding this comment.
LGTM. I pushed a commit per nit, up to 5c3a51d, which fix the nit from my review:
5c3a51d:dokimi/CONTRIBUTING.md:196: the sentence now says Renovate refreshesrequirements-docs.lock.txtwith the other locks and pip-audit audits it too.
make ci-local at 5c3a51d: 28 passed, 2 failed (host: gitleaks download), 7 skipped.
Not merging yet: @copilot-pull-request-reviewer on Docs lock may not refresh when only main/tools locks change; author left the choice (postUpgradeTasks vs manual regeneration) to the maintainer, unanswered. waits for your answer, @napetrov.
I'm withdrawing my approval for now. The nit is fixed in 5c3a51d and CI is green, but Copilot's point on the docs lock is still open: when only the main or tools lock changes, the docs lock is not refreshed. The choice between a Renovate postUpgradeTasks step and regenerating it by hand waits for the maintainer, and the merge should wait for it. I'll approve once that is settled.

Replaces #330, which is red on
main: the Renovate pip-compile refresh moved certifi and platformdirs in the main and tools locks, but not in the docs lock. Renovate skipped the docs lock because its header is not uv's, so the next weekly refresh would have left it behind too.Summary
Commits, in order:
chore(deps): refresh pip-compile outputs(Renovate, unchanged from chore(deps): refresh pip-compile outputs #330)fix(deps): regenerate requirements-docs.lock.txt with the refreshed stack(unchanged from chore(deps): refresh pip-compile outputs #330's 752d6c70)chore(deps): give requirements-docs.lock.txt uv's header: the header is rewritten the way uv writes it, with long options and the 7-day cooldown; the pins are the same as commit 2, and the lock now carries uv's# viaannotations like the other threechore(deps): have Renovate refresh requirements-docs.lock.txt: adds the docs lock to the pip-compile pattern and to the lock testEvidence
tests/test_dependency_locks.py::test_stacked_lock_pins_agreefails for main and ci against docs (certifi, platformdirs);docs.ymlfails withResolutionImpossible: certifi==2026.10.19 and certifi==2026.10.23.pytest tests/test_dependency_locks.py31 passed (29 before, plus the docs lock in the header and cooldown checks).mkdocs build --strictpasses (only the MkDocs 2 banner, which CI disables). The three hashed locks install together withuv pip install --require-hashes.Merge Danger
Door: two-way. Lock and config files only; a revert restores the previous state.
Blast Radius: CI installs (ci.yml, docs.yml, pip-audit, eval image) read the docs lock. The pins are the ones #330 and commit 2 already carry, so only the header format changes for the docs lock.
The header is checked against Renovate's pip-compile reader (its main-branch source, not the pinned 44.198.0 build): it reads the uv header, takes several
--constraint=options, and accepts every option used, so--no-annotatewas dropped. Not run against a live Renovate; the next weekly lock PR is the first real refresh of the docs lock.🤖 Generated with Claude Code