Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 7 additions & 5 deletions .github/renovate.json5
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@

// Dependency updates: the SHA-pinned actions in .github/workflows, the Python
// lock (dokimi/requirements.lock.txt), the tools lock the workflows and the eval
// image (.agent-eval/Dockerfile) install (dokimi/requirements-ci.lock.txt) and the
// hook revs in .pre-commit-config.yaml.
// image (.agent-eval/Dockerfile) install (dokimi/requirements-ci.lock.txt), the
// docs lock (dokimi/requirements-docs.lock.txt) and the hook revs in
// .pre-commit-config.yaml.
//
// Once a week, every minor and patch update lands in one PR; a major update
// gets a PR of its own. Advisories (vulnerabilityAlerts) skip the schedule.
Expand Down Expand Up @@ -44,14 +45,15 @@
// per-interpreter markers; pip_requirements would edit the pins in place without re-resolving, so it is left off.
// pyproject.toml repeats the ranges of requirements.txt; pep621 keeps the two
// in step when a range has to move (same dependency, same branch, one PR).
// requirements-docs.lock.txt is not matched yet: its header is not uv's, and it
// is compiled against the main lock with -c. pip-audit.yml audits it.
// requirements-docs.lock.txt is compiled against the main and tools locks with
// --constraint, so the same weekly PR refreshes it with them (its header is
// uv's, with long options, as the test in tests/test_dependency_locks.py checks).
Comment thread
antonwolfy marked this conversation as resolved.
Resolved
enabledManagers: ["github-actions", "pip-compile", "pep621", "custom.regex", "pre-commit"],
// Off by default even when listed above. It reads `rev: <sha> # frozen: vX`
// and updates the SHA and the tag together.
"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.

},
// Inside a range: bump the lock only. Outside it: move the range too.
rangeStrategy: "update-lockfile",
Expand Down
4 changes: 2 additions & 2 deletions dokimi/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,8 @@ major, a monthly lock refresh, and security fixes as soon as an advisory
appears. A pre-commit hook rev and the tool's pin in `requirements-ci.txt` (the
tools lock CI and `.agent-eval/Dockerfile` install) come in one PR of their own
for ruff and zizmor, with ruff's pin in the dev extra too; gitleaks in
the gitleaks pin in `ci.yml` follows the same rule. Renovate does not update
`requirements-docs.lock.txt` yet; pip-audit in CI still audits it.
the gitleaks pin in `ci.yml` follows the same rule. Renovate refreshes
`requirements-docs.lock.txt` with the other locks; pip-audit in CI audits it too.

Guidelines:

Expand Down
277 changes: 138 additions & 139 deletions dokimi/requirements-ci.lock.txt

Large diffs are not rendered by default.

155 changes: 141 additions & 14 deletions dokimi/requirements-docs.lock.txt
Original file line number Diff line number Diff line change
@@ -1,14 +1,9 @@
# Locked dependency closure of requirements-docs.txt (the documentation site),
# resolved for every supported Python (3.11+) and constrained to the pins in
# requirements.lock.txt, which it is installed on top of. CI installs from this file.
# Regenerate (uv keeps the pins already in the -o file; add --upgrade to take upgrades):
# uv pip compile requirements-docs.txt -c requirements.lock.txt --universal \
# --python-version 3.11 --no-header --no-annotate --generate-hashes \
# -o requirements-docs.lock.txt
# Install with: pip install --require-hashes -r requirements.lock.txt -r requirements-docs.lock.txt
# 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 --universal --python-version=3.11 --exclude-newer=P7D --exclude-newer-package=certifi=false --generate-hashes --output-file=requirements-docs.lock.txt
babel==2.18.0 \
--hash=sha256:b80b99a14bd085fcacfa15c9165f651fbb3406e66cc603abf11c5750937c992d \
--hash=sha256:e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35
# via mkdocs-material
backrefs==8.1 \
--hash=sha256:11f61846e446fa8637af2f5c073f1083aa58dbb7460b019fd51689f564e44f7e \
--hash=sha256:1e857c32e91b8fe46ddb359ac21021a37b090fa4239566a61e9856123e334041 \
Expand All @@ -17,9 +12,14 @@ backrefs==8.1 \
--hash=sha256:b472c76082769f86a97ffccfd1f2599b2b706610c6154955664fffe67e909035 \
--hash=sha256:db577dbae1c61187534d35fc9bfbd0c01158fff6239a66fecf7590e5b17879a9 \
--hash=sha256:f86d9312df3ebae1241758af80809a319cafa1d8f32189edfb242c9aa55573b6
certifi==2026.10.19 \
--hash=sha256:035c1e85572b141bf1c3a3eff0e33a8eb74917522f2559075ff8d2fea780a1ae \
--hash=sha256:42d35340cc5b9ba78e818ddbff0c5b1c2b779de448a340fd1b989f5fa8670e1b
# via mkdocs-material
certifi==2026.10.23 \
--hash=sha256:a9895e6e2758b371e0545e321a3a8fd1fcfd9829ada8824a936dfb16aaaf36cd \
--hash=sha256:e9b54de76e530bb6cf0ccd036787103acb58fd42ba930ea8bf948ddbaa2f61d1
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# requests
charset-normalizer==3.5.2 \
--hash=sha256:01077390b03f7988f11d700a2194e69b119741a86b1a638b1db88891e3eced8e \
--hash=sha256:01b0c0d2262a9e28e8484a278c7e1b5d650e3ac8cf2683d2967e25899f208bdf \
Expand Down Expand Up @@ -193,30 +193,71 @@ charset-normalizer==3.5.2 \
--hash=sha256:fcff63213e8e6e47770541a4607175404f47cbb3ebea7b6058cc82d524a0e424 \
--hash=sha256:fd1fbe0f116b6e55da77aca2c6ddcddcfac2186cbf78bdebf40fc156efca389d \
--hash=sha256:fe9753dfee015c570d73df76f899f18444d41388bffcde097deba51c4fadbb9f
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# requests
click==8.5.0 \
--hash=sha256:255bc9599cf7748b4b1a446ccc735421bd08a2ae529a8b88597d3de5664ee360 \
--hash=sha256:ba0d2089de75ea0310e2dde03160e6ca10009947fb95a182f9b54021bb272e34
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# mkdocs
# properdocs
colorama==0.4.6 \
--hash=sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44 \
--hash=sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# mkdocs
# mkdocs-material
# properdocs
ghp-import==2.1.0 \
--hash=sha256:8337dd7b50877f163d4c0289bc1f1c7f127550241988d568c1db512c4324a619 \
--hash=sha256:9c535c4c61193c2df8871222567d7fd7e5014d835f97dc7b7439069e2413d343
# via
# mkdocs
# properdocs
griffelib==2.3.2 \
--hash=sha256:8e710afededd5607f95bf3c8ccc175ee306e7084459faf27b9f9f44ef2a7a274 \
--hash=sha256:df00c7a0dee3d86268d76788997a1859272cb1fb7b865658e043d2c0c3d52e60
# via mkdocstrings-python
idna==3.20 \
--hash=sha256:a7db850025b95ded1eae8a46181a1a6c56c92c96f0e2b005d9ff8dc0210cab44 \
--hash=sha256:ab7ae7122974553370f0bdb919e1a960b2cd1bc1ef0276416d896db81c14582c
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# requests
jinja2==3.1.6 \
--hash=sha256:0137fb05990d35f1275a587e9aee6d56da821fc83491a0fb838183be43f66d6d \
--hash=sha256:85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# mkdocs
# mkdocs-material
# mkdocstrings
# properdocs
markdown==3.11.1 \
--hash=sha256:496f4f80f9ebd3395a04c8ec9595c40bbe8ec19e9c67d21fe071a1643e876606 \
--hash=sha256:f1fa378ba5d682900c9ecb55ccceacca936016dda7c3b27097e8ae03ff78feb5
# via
# mkdocs
# mkdocs-autorefs
# mkdocs-material
# mkdocstrings
# properdocs
# pymdown-extensions
markdown-it-py==4.2.0 \
--hash=sha256:04a21681d6fbb623de53f6f364d352309d4094dd4194040a10fd51833e418d49 \
--hash=sha256:9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# -r requirements-docs.txt
markupsafe==3.0.4 \
--hash=sha256:007e1ffd9bf65bb6ee96df7b258fc632a4868dd5566037986c64781f35a36e98 \
--hash=sha256:02fa4acbc6a3fc5c693c34d4dd8c1130b7fe99cc915181b0ddd6f72aeb296002 \
Expand Down Expand Up @@ -369,63 +410,124 @@ markupsafe==3.0.4 \
--hash=sha256:fa95848c929b6a75f6848d3c9793e59db365ee436776e57db835cdbfa79ba977 \
--hash=sha256:fd9f8797427910198f95bced71ddfed61130d7e349213bfb8466c9c99e2c46a8 \
--hash=sha256:fdb4ca07ab75ffadab4a8b135ad59cdbb3156b99310f3d565370da74a15d6bd3
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# jinja2
# mkdocs
# mkdocs-autorefs
# mkdocstrings
# properdocs
mdurl==0.1.2 \
--hash=sha256:84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 \
--hash=sha256:bb413d29f5eea38f31dd4754dd7377d4465116fb207585f97bf925588687c1ba
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# markdown-it-py
mergedeep==1.3.4 \
--hash=sha256:0096d52e9dad9939c3d975a774666af186eda617e6ca84df4c94dec30004f2a8 \
--hash=sha256:70775750742b25c0d8f36c55aed03d24c3384d17c951b3175d898bd778ef0307
# via
# mkdocs
# mkdocs-get-deps
mkdocs==1.6.1 \
--hash=sha256:7b432f01d928c084353ab39c57282f29f92136665bdd6abf7c1ec8d822ef86f2 \
--hash=sha256:db91759624d1647f3f34aa0c3f327dd2601beae39a366d6e064c03468d35c20e
# via
# -r requirements-docs.txt
# mkdocs-autorefs
# mkdocs-gen-files
# mkdocs-literate-nav
# mkdocs-material
# mkdocstrings
mkdocs-autorefs==1.4.4 \
--hash=sha256:834ef5408d827071ad1bc69e0f39704fa34c7fc05bc8e1c72b227dfdc5c76089 \
--hash=sha256:d54a284f27a7346b9c38f1f852177940c222da508e66edc816a0fa55fc6da197
# via
# mkdocstrings
# mkdocstrings-python
mkdocs-gen-files==0.6.1 \
--hash=sha256:57d7ff2229e23d077e46d14a33db6d37c8823f6ce1a503c874c1764a71679763 \
--hash=sha256:b3182bfc6219e35b8d26658cb988368659d5d023aac30c2a819247558fc12189
# via -r requirements-docs.txt
mkdocs-get-deps==0.2.2 \
--hash=sha256:8ee8d5f316cdbbb2834bc1df6e69c08fe769a83e040060de26d3c19fad3599a1 \
--hash=sha256:e7878cbeac04860b8b5e0ca31d3abad3df9411a75a32cde82f8e44b6c16ff650
# via mkdocs
mkdocs-literate-nav==0.6.3 \
--hash=sha256:2c421561280fa9184f88cbf399bebbd4cc17ee507e978a31ce11fd6f3aabf233 \
--hash=sha256:edbaca22343f861fe4e34aac47d55a0c9955c640dbf02eea99fe631e914cf9ee
# via -r requirements-docs.txt
mkdocs-material==9.7.7 \
--hash=sha256:8ea9bb1737a5b524a5f9dcf2e1b4ebda8274ae3008aa7845720a97083bef708f \
--hash=sha256:c0649c065b1b0512d60aad8c10f947f8e455284475239b364b610f2deb4d0855
# via -r requirements-docs.txt
mkdocs-material-extensions==1.3.1 \
--hash=sha256:10c9511cea88f568257f960358a467d12b970e1f7b2c0e5fb2bb48cab1928443 \
--hash=sha256:adff8b62700b25cb77b53358dad940f3ef973dd6db797907c49e3c2ef3ab4e31
# via mkdocs-material
mkdocstrings==1.0.7 \
--hash=sha256:0951b147f352118a45a3db85f0f3b660833d34cb5120a2751315b8d08dafd159 \
--hash=sha256:9563828667eeb35256f87a6b61fe857676ac628ec1abbce9aea9839a502c9cb1
# via
# -r requirements-docs.txt
# mkdocstrings-python
mkdocstrings-python==2.0.9 \
--hash=sha256:ae945637dc0618c6beedbee169f10c0234b77f322c53db3fc9fb4c29b3013038 \
--hash=sha256:c0233eff3f84d78110df50541918e7ec2bcff8e1614faddea34290a90321a416
# via mkdocstrings
packaging==26.3 \
--hash=sha256:94edc256424af38762eb31306eed28beb9f0efc50a8837492c9d6fd6004aed79 \
--hash=sha256:d7193f7c8e4e93f444fde0262bf90af30e16fa0ad0ad44cb553c87339b23cd1c
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# mkdocs
# properdocs
paginate==0.5.7 \
--hash=sha256:22bd083ab41e1a8b4f3690544afb2c60c25e5c9a63a30fa2f483f6c60c8e5945 \
--hash=sha256:b885e2af73abcf01d9559fd5216b57ef722f8c42affbb63942377668e35c7591
# via mkdocs-material
pathspec==1.1.1 \
--hash=sha256:17db5ecd524104a120e173814c90367a96a98d07c45b2e10c2f3919fff91bf5a \
--hash=sha256:a00ce642f577bf7f473932318056212bc4f8bfdf53128c78bbd5af0b9b20b189
platformdirs==4.13.0 \
--hash=sha256:1aa0b0d3f224c1f07c295121e312a5a24a180d6ae5a8425ea1784b3e3863e9c0 \
--hash=sha256:3dbcf4cd708f21cf876c4eaa90e58412bc4f033d87143f41b1493ff77c25b7e1
# via
# -c requirements-ci.lock.txt
# mkdocs
# properdocs
platformdirs==4.13.5 \
--hash=sha256:05831adf87d392760f4b5c3a0a95579ab5a10b18b9b9bd43680dcb47544788a0 \
--hash=sha256:53d3ec4280b815c1e0b02edad7f9ee8fda1ba9c0865dd9c2e6e63849ce82fc1e
# via
# -c requirements-ci.lock.txt
# mkdocs-get-deps
# properdocs
properdocs==1.6.7 \
--hash=sha256:6fa0cfa2e01bf338f684892c8a506cf70ea88ae7f3479c933b6fa20168101cbd \
--hash=sha256:adc7b16e562890af0e098a7e5b02e3a81c20894a87d6a28d345c9300de73c26e
# via
# mkdocs-gen-files
# mkdocs-literate-nav
pygments==2.21.0 \
--hash=sha256:2363c69b61c4a97c838da3b130dcd6468f4848992b21a82f2a63ec34377137d9 \
--hash=sha256:610ca751c9bc2492b38eb9a38a7fbc93edbbb2d7182edaf34e66ae493dee5c8c
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# mkdocs-material
pymdown-extensions==12.2 \
--hash=sha256:02da896c362b548d85123e7a377a40024ea6ea938b4e45ca064e408afd994b64 \
--hash=sha256:caea66e916b4cfe987b5dabb0a78558e3506988f6353812b0b0288be8f976c16
# via
# mkdocs-material
# mkdocstrings
python-dateutil==2.9.0.post0 \
--hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \
--hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427
# via
# -c requirements.lock.txt
# ghp-import
pyyaml==6.0.3 \
--hash=sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c \
--hash=sha256:0150219816b6a1fa26fb4699fb7daa9caf09eb1999f3b70fb6e786805e80375a \
Expand Down Expand Up @@ -500,18 +602,40 @@ pyyaml==6.0.3 \
--hash=sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6 \
--hash=sha256:fa160448684b4e94d80416c0fa4aac48967a969efe22931448d853ada8baf926 \
--hash=sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# mkdocs
# mkdocs-get-deps
# properdocs
# pymdown-extensions
# pyyaml-env-tag
pyyaml-env-tag==1.1 \
--hash=sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04 \
--hash=sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff
# via
# mkdocs
# properdocs
requests==2.34.2 \
--hash=sha256:2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 \
--hash=sha256:f288924cae4e29463698d6d60bc6a4da69c89185ad1e0bcc4104f584e960b9ed
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# mkdocs-material
six==1.17.0 \
--hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \
--hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81
# via
# -c requirements.lock.txt
# python-dateutil
urllib3==2.8.0 \
--hash=sha256:0cf3cae568d36aa9576b28dfb35f11328f1cb974ca7647d9475ebb86c75ac6e3 \
--hash=sha256:63bf2ead4c879426ebf22ef2a781eeb4aa3b4ae798a0435506f8687fd5bb9b63
# via
# -c requirements-ci.lock.txt
# -c requirements.lock.txt
# requests
watchdog==6.0.0 \
--hash=sha256:07df1fdd701c5d4c8e55ef6cf55b8f0120fe1aef7ef39a1c6fc6bc2e606d517a \
--hash=sha256:20ffe5b202af80ab4266dcd3e91aae72bf2da48c0d33bdb15c66658e685e94e2 \
Expand Down Expand Up @@ -543,3 +667,6 @@ watchdog==6.0.0 \
--hash=sha256:e6f0e77c9417e7cd62af82529b10563db3423625c5fce018430b249bf977f9e8 \
--hash=sha256:e7631a77ffb1f7d2eefa4445ebbee491c720a5661ddf6df3498ebecae5ed375c \
--hash=sha256:ef810fbf7b781a5a593894e4f439773830bdecb885e6880d957d5b9382a960d2
# via
# mkdocs
# properdocs
Loading
Loading