build: upgrade pre-commit to 4.6.1 - #67
Merged
Merged
Conversation
Owner
Author
|
@codex review for deterministic/RagaliQ ownership, dependency reproducibility, Python 3.14 compatibility, public-clone portability, paid-call safety, golden-fixture integrity, marker correctness, public API compatibility, and unintended behaviour changes |
There was a problem hiding this comment.
馃挕 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 706b70851f
鈩癸笍 About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 馃憤.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Upgrades
pre-commitfrom 4.6.0 to 4.6.1. Lock-only change;pyproject.tomlis untouched becausepre-commit>=4.6.0,<5already admits 4.6.1.Version delta
pre-commit>=4.6.0,<5(pyproject.toml:22), unchanged4.6.1 is the only stable release between 4.6.0 and latest, and 4.6.1 is latest.
Lock regenerated with the first form of
.agents/skills/upgrade-dependencies/SKILL.mdstep 5, targeting only this package:Resulting diff is 6 lines across both locks, one package, no transitive churn:
Breaking changes, and which touch this repository
4.6.1 has no Features section, no deprecations, no removals. Five fixes:
install via git for language: nodelanguage: node; all twelve arelanguage: unsupported.JULIA_DEPOT_PATHhandlingReturn an error for invalid --repo(autoupdate)pre-commit autoupdateis not documented or used here, and with a singlerepo: localthere is nothing to autoupdate.faster check of rev existing locally as a commitrun --all-files.avoid duplicate files in --all-files during conflictThe one that lands is a single line in
pre_commit/git.pyget_all_files():Undocumented consequence worth recording: this introduces a git version floor.
git ls-files --deduplicatewas added in git 2.31.0 (git's ownDocumentation/RelNotes/2.31.0.adoc: "A new option--deduplicatehas been introduced."), released 2021-03.pre-commit run --all-fileson git older than 2.31.0 will now fail. The 4.6.1 release notes do not mention this. Verified locally:Not touched anywhere in the 4.6.0 to 4.6.1 diff, which is the load-bearing negative evidence for everything this repository's config relies on:
pre_commit/clientlib.py(config schema,validate-config),pre_commit/commands/run.py(types/types_orfiltering,always_run,pass_filenames,require_serial,--show-diff-on-failure),pre_commit/languages/unsupported.py,pre_commit/languages/system.py,pre_commit/repository.py,pre_commit/lang_base.py.minimum_pre_commit_version: "4.6.0"at.pre-commit-config.yaml:1is a floor and needs no edit.Prediction recorded before running anything
Both locks change by exactly one package with no transitive movement, because
pre-commit's own dependency set (cfgv,identify,nodeenv,pyyaml,virtualenv) is unchanged in 4.6.1. Every gate passes. Coverage stays at 96.05% becausepre-commitis not in[tool.coverage.run] sourceand is not imported by any test. All twelve hooks pass identically; the--deduplicatechange is invisible here because the working tree has no merge conflict, sogit ls-files -zandgit ls-files -z --deduplicatereturn the same list.What actually happened
Exactly that.
uv lock --checkpylock.tomluv pip checkpytest eval/ -qpre-commit validate-configpre-commit run --all-filesruff format --check .ruff check .agent-policy-symbolsFree validation command and result:
The mutation question
Which behaviours of this dependency does the suite exercise?
pre-commitis the hook runner, not a library. No pytest node imports it and it appears in no coverage-measured module. What does exercise it is the two documented commands, both run above:pre-commit validate-configcovers config-schema parsing, andpre-commit run --all-filescovers hook discovery,types/types_orfile filtering,stagesselection,always_run,pass_filenames,require_serial, and thelanguage: unsupportedexecution path. That is real coverage of the runner's behaviour, but it comes from documented commands rather than from any test node.For each breaking change that touches a real call site, which test would have failed?
git ls-files --deduplicateinget_all_files()run --all-filesis both a documented command and a CI steppre-commit run --all-fileswith no diagnostic pointing at the cause._rev_exists()changepre-commit installinstalls the pre-commit stage hook; the pre-push argv translation is never exercised by any documented command or CI step.--repoerrorThe finding, stated plainly. The single 4.6.1 change that reaches this repository's own commands cannot be detected by anything runnable here, and the git version floor it silently introduces is asserted nowhere. Both are low-consequence given a modern git, and neither is a reason to withhold the patch - but a green run of all twelve hooks is not evidence that this upgrade was behaviourally neutral on the path it actually touches. It is evidence that the path was not stressed. Per the audit brief, no test was added to close this gap in this pass.
Lock byte-comparison
pylock.tomlinvariants re-checked after the export:Clean-clone transcript
Isolated temp directory, both provider key variables unset and confirmed absent by presence check only, no sibling
../RagaliQreachable, README install commands verbatim with bareuvas documented.The clone-to-green figure is a warm-cache number: the uv cache was already populated (17G), so 5s measures command execution, not first contact. A cold-cache clone would additionally download 54 wheels.
Hidden costs
pre-commit run --all-files. Nothing in this repository documents or asserts a git floor, so the failure mode on an old git is an opaquels-fileserror.