Skip to content

chore(deps): refresh pip-compile outputs and the docs lock, and have Renovate refresh it - #341

Open
napetrov wants to merge 5 commits into
intel:mainfrom
napetrov:fix/renovate-docs-lock
Open

napetrov wants to merge 5 commits into
intel:mainfrom
napetrov:fix/renovate-docs-lock

Conversation

@napetrov

@napetrov napetrov commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

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

 requirements.lock.txt        certifi 2026.10.23   (Renovate, 6f04caaf as-is)
 requirements-ci.lock.txt     certifi, platformdirs 4.13.5   (Renovate, as-is)
 requirements-mutation.lock.txt                    (Renovate, as-is)
 requirements-docs.lock.txt   certifi 2026.10.23, platformdirs 4.13.5   (regenerated)
-# Locked dependency closure of requirements-docs.txt ... (prose header)
+# This file was autogenerated by uv via the following command:
+#    uv pip compile requirements-docs.txt --constraint=requirements.lock.txt --constraint=requirements-ci.lock.txt ...
 .github/renovate.json5
-  managerFilePatterns: requirements(-ci|-mutation)?.lock.txt
+  managerFilePatterns: requirements(-ci|-docs|-mutation)?.lock.txt
 tests/test_dependency_locks.py
-RENOVATE_LOCKS = (main, ci, mutation)
+RENOVATE_LOCKS = (main, ci, docs, mutation)

Commits, in order:

  1. chore(deps): refresh pip-compile outputs (Renovate, unchanged from chore(deps): refresh pip-compile outputs #330)
  2. fix(deps): regenerate requirements-docs.lock.txt with the refreshed stack (unchanged from chore(deps): refresh pip-compile outputs #330's 752d6c70)
  3. 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 # via annotations like the other three
  4. chore(deps): have Renovate refresh requirements-docs.lock.txt: adds the docs lock to the pip-compile pattern and to the lock test

Evidence

  • Before: tests/test_dependency_locks.py::test_stacked_lock_pins_agree fails for main and ci against docs (certifi, platformdirs); docs.yml fails with ResolutionImpossible: certifi==2026.10.19 and certifi==2026.10.23.
  • After: pytest tests/test_dependency_locks.py 31 passed (29 before, plus the docs lock in the header and cooldown checks). mkdocs build --strict passes (only the MkDocs 2 banner, which CI disables). The three hashed locks install together with uv 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-annotate was 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

renovate Bot and others added 4 commits October 31, 2026 22:39
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>
Copilot AI balanced review requested due to automatic review settings November 1, 2026 05:44
@napetrov
napetrov requested a review from a team as a code owner November 1, 2026 05:44
@exai-bot

exai-bot commented Nov 1, 2026 •

Copy link
Copy Markdown

✅ OpenCodeReview: Review complete: 0 finding(s) across 3 selected item(s).

Review details
  • Commit reviewed: 5c3a51d against merge base b4a0a8c
  • Coverage: 3 files in 1 groups
  • Engine: OpenCodeReview v1.13.3, us.openai.gpt-6.1-sol
  • Usage: 61k tokens (38k from cache), 7s
  • Tool calls: 4 (4 file_read)
  • small change set: 3 files

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 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

Comment thread .github/renovate.json5
"pre-commit": { enabled: true },
"pip-compile": {
managerFilePatterns: ["/(^|/)requirements(-ci|-mutation)?\\.lock\\.txt$/"],
managerFilePatterns: ["/(^|/)requirements(-ci|-docs|-mutation)?\\.lock\\.txt$/"],

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

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.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

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-commenter

codecov-commenter commented Nov 1, 2026 •

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.04%. Comparing base (b4a0a8c) to head (5c3a51d).
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

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              

see 1 file with indirect coverage changes

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

@antonwolfy antonwolfy 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.

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), and test_unbalanced_quote_in_hook_completes_quickly took 1.05 s against its 1 s bound under load and passes alone in 0.74 s.
  • tests/test_dependency_locks.py: 31 passed. With certifi in 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.

Comment thread .github/renovate.json5 Resolved
Signed-off-by: Anton Volkov <antonwolfy@gmail.com>
antonwolfy
antonwolfy previously approved these changes Nov 1, 2026

@antonwolfy antonwolfy 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.

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 refreshes requirements-docs.lock.txt with 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.

@antonwolfy
antonwolfy dismissed their stale review November 1, 2026 13:42

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.

This branch has not been deployed

No deployments
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.

5 participants