Skip to content

Fix main CI red on stale digest pending-list entries - #1016

Merged
Mikola Lysenko (mikolalysenko) merged 1 commit into
mainfrom
ci-janitor/digest-pending-list
Oct 7, 2026
Merged

Mikola Lysenko (mikolalysenko) merged 1 commit into
mainfrom
ci-janitor/digest-pending-list

Conversation

@mikolalysenko

@mikolalysenko Mikola Lysenko (mikolalysenko) commented Oct 7, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Main's test suite fails on every platform. utils::digest::tests::production_digests_go_through_the_helpers (socket-patch-core lib) fails on origin/main (db83f01):

left:  ["utils/group_commit.rs", "vendor/jvm/mod.rs", "vendor/maven_repo.rs", "vendor/pypi.rs", "vendor/redownload.rs", "vendor/yarn_berry_lock.rs"]
right: ["crawlers/gradle_cache.rs", "patch/jvm_jar.rs", "patch/sidecars/maven.rs", "utils/group_commit.rs", ...]

Any PR that merges main inherits this red test (ubuntu/macos/windows), test-release and coverage. The same ratchet also failed in the other direction on the last two scheduled main CI runs at 9c43dfc: 37578193876 (2026-10-07) failed test-release, coverage, test (windows-latest) and test (macos-latest), and 37420351192 (2026-10-06) also failed. Those runs showed the three files computing digests inline while missing from the list.

Root cause

This is a semantic merge race between two PRs that each passed on their own:

After both merged, the list has three stale entries. The test is designed to fail on stale entries.

Fix

Remove the three stale entries. The change is 3 deleted lines in crates/socket-patch-core/src/utils/digest.rs. No assertion is weakened, and the ratchet still catches new inline digests and stale entries.

Proof

  • Before: cargo test -p socket-patch-core --lib production_digests_go_through_the_helpers fails locally on origin/main with the diff shown above.
  • After: that test passes. The full cargo test -p socket-patch-core --lib run gave 5558 passed and 4 failed. The 4 failures only happen because the sandbox runs as root, where chmod-0o555 read-only-dir tests cannot fail as they expect: copy_tree::relax_loop_must_not_traverse_symlinked_root, vlt_heal::an_unremovable_hidden_lock_keeps_every_store_entry, pypi_poetry::wire_write_failure_… and pypi_requirements::wire_failure_rolls_back_…. They are unrelated to this change, and the CI runner (non-root) passed them in run 37578193876.
  • rustfmt --check is clean on the touched file.

Note for open PRs

#876 and #889 each add crawlers/gradle_cache.rs back to this list. They reintroduce inline digests in that file, so that part of their change stays correct after this lands.

Where tests run

No tests were removed or moved.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Qq8uwZ9NTCZXZRygn7woy7


Generated by Claude Code


Note

Low Risk
Test-only list maintenance in digest.rs; no production digest behavior changes.

Overview
Fixes main CI by syncing PENDING_INLINE_DIGESTS in utils/digest.rs with reality after two PRs merged in opposite directions: crawlers/gradle_cache.rs, patch/jvm_jar.rs, and patch/sidecars/maven.rs now use utils::digest::*_of helpers, so they are removed from the pending list.

The ratchet test production_digests_go_through_the_helpers is unchanged—it still fails on new inline digest copies and on stale list entries; only the three obsolete paths are dropped.

Reviewed by Cursor Bugbot for commit 6cb46c0. Configure here.


Generated by Claude Code

Main's test jobs are red: production_digests_go_through_the_helpers
fails because PENDING_INLINE_DIGESTS still names gradle_cache.rs,
jvm_jar.rs and sidecars/maven.rs. #955 added them while those files
computed digests inline, and #690 (sbt/Mill/scala-cli) then moved them
onto utils::digest helpers; the two merged independently, so the
ratchet now fails on stale entries on every platform.

Remove the three entries so the list matches the production tree.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qq8uwZ9NTCZXZRygn7woy7
@mikolalysenko Mikola Lysenko (mikolalysenko) added the ci-janitor Opened by the CI janitor routine (flakes, redundant tests, CI perf) label Oct 7, 2026
@mikolalysenko

Copy link
Copy Markdown
Collaborator Author

bugbot run


Generated by Claude Code

@cursor cursor Bot 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.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 6cb46c0. Configure here.

Mikola Lysenko (mikolalysenko) pushed a commit that referenced this pull request Oct 7, 2026
Merging main brought in #955's PENDING_INLINE_DIGESTS entries for
gradle_cache.rs, jvm_jar.rs and sidecars/maven.rs, but #690 had
already moved those files onto the utils::digest helpers. The guard
fails on stale entries, so coverage, test and test-release are red
on main and on this PR. This is the same change as #1016, ported so
this PR's CI can go green; it no-ops once #1016 lands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012H7zqyRTeMzzAxit6xfV6r
Mikola Lysenko (mikolalysenko) pushed a commit that referenced this pull request Oct 7, 2026
The digest guard test is red on main: #955 added
crawlers/gradle_cache.rs, patch/jvm_jar.rs and
patch/sidecars/maven.rs to the pending list, and #690 had already
moved them onto the utils::digest helpers. This ports the same
three-line change as #1016, so it becomes a no-op once #1016 lands.

Assisted-by: Claude Code:claude-opus-5-5
Mikola Lysenko (mikolalysenko) pushed a commit that referenced this pull request Oct 7, 2026
Main went red when the Gradle and Maven digest moves landed: three
files still listed as computing digests inline no longer do, so the
ratchet test fails on every PR. Same change as #1016; it becomes a
no-op once that lands.

Assisted-by: Claude Code:claude-opus-5-5
Mikola Lysenko (mikolalysenko) pushed a commit that referenced this pull request Oct 7, 2026
Port of #1016. main routes the Gradle cache crawler, jar comparator
and Maven sidecar through utils::digest but still lists them as
pending, so production_digests_go_through_the_helpers fails on main
and every branch off it. No-op once #1016 lands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wk9XBZsw4FpBuPb4DpKRPv
@mikolalysenko
Mikola Lysenko (mikolalysenko) merged commit 6fe81ad into main Oct 7, 2026
269 checks passed
@mikolalysenko
Mikola Lysenko (mikolalysenko) deleted the ci-janitor/digest-pending-list branch October 7, 2026 14:00
Mikola Lysenko (mikolalysenko) pushed a commit that referenced this pull request Oct 7, 2026
The digest guard test is red on main: #955 added
crawlers/gradle_cache.rs, patch/jvm_jar.rs and
patch/sidecars/maven.rs to the pending list, and #690 had already
moved them onto the utils::digest helpers. This ports the same
three-line change as #1016, so it becomes a no-op once #1016 lands.

(cherry picked from commit d65c5c4)
Mikola Lysenko (mikolalysenko) pushed a commit that referenced this pull request Oct 7, 2026
Picks up #1016's digest pending-list fix so test/coverage aren't red from main.

Co-Authored-By: Claude <noreply@anthropic.com>
Mikola Lysenko (mikolalysenko) added a commit that referenced this pull request Oct 7, 2026
* Start fix for #964

Assisted-by: Claude Code:claude-opus-5-5

* Stop uv projects scanning the system Python

A fresh uv checkout (uv.lock with no .venv synced yet, or a
UV_PROJECT_ENVIRONMENT that doesn't exist yet) and a directory
holding only PEP 723 script locks fell back to the global
site-packages. Every OS-Python package then joined the candidate
set, so a vendored scan tried to vendor packages the project never
depends on and exited 1 with pypi_uv_lock_package_missing.

uv only ever installs such a project into its own env, and the
lock already supplies the lock-only packages, so the crawl now
returns no env for it. A uv.lock shared with Poetry, PDM or Pipenv
files keeps the old fallback.

Fixes #964

Assisted-by: Claude Code:claude-opus-5-5

* Route Gradle digests through utils::digest

main's coverage job is red: the digest guard test from #865
requires production hashing to go through the utils::digest
helpers, and the Gradle code from #646 still hashes inline. This
is the same change as #878, ported so this PR's CI can go green;
it no-ops once #878 lands.

Assisted-by: Claude Code:claude-opus-5-5

* Revert rustfmt-only churn in files this fix doesn't touch

661c117 ran `cargo fmt --all`, which reformatted 118 files the uv
fix never changes. main isn't rustfmt-clean and CI doesn't check
formatting, so the sweep adds nothing. It also hides the real
change and conflicts with every other open PR that touches those
files. Each reverted file is byte-identical to rustfmt's output on
the merge-base version, so this drops formatting only. The six
files that carry the fix and the ported #878 change keep their
formatting.

Co-Authored-By: Claude <noreply@anthropic.com>

* Drop stale digest pending-list entries

Merging main brought in #955's PENDING_INLINE_DIGESTS entries for
gradle_cache.rs, jvm_jar.rs and sidecars/maven.rs, but #690 had
already moved those files onto the utils::digest helpers. The guard
fails on stale entries, so coverage, test and test-release are red
on main and on this PR. This is the same change as #1016, ported so
this PR's CI can go green; it no-ops once #1016 lands.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012H7zqyRTeMzzAxit6xfV6r

---------

Co-authored-by: socket-patch agent <noreply@anthropic.com>
Mikola Lysenko (mikolalysenko) added a commit that referenced this pull request Oct 7, 2026
* Start fix for #628, #629

Assisted-by: Claude Code:claude-opus-5-5

* Test hosted berry refusal of mixed package.json

A berry project whose root package.json mixes CRLF and LF is refused
by vendored mode, but hosted mode rewrites it in the majority ending.
These tests cover a fresh hosted scan and the vendored-to-hosted
takeover (#628). They fail until the gate is shared.

Assisted-by: Claude Code:claude-opus-5-5

* Share yarn berry project gates across modes

Hosted and vendored modes each carried their own copy of the yarn
berry project refusals (mixed line endings, cacheKey, .yarnrc.yml
compressionLevel), and the copies drifted: hosted mode never checked
the root package.json, so it silently rewrote a mixed-line-ending
manifest that vendored mode refuses (#628).

The gates now live once in formats/yarn/berry_gates.rs. The vendored
backend and its takeover preflight, the hosted rewriter, the
vendored-to-hosted takeover and the hosted restore all call it and
keep their existing codes. Hosted mode now refuses a mixed
package.json with redirect_yarn_berry_mixed_line_endings before
writing or reverting anything (#629).

Assisted-by: Claude Code:claude-opus-5-5

* Drop CHANGELOG entry from this PR

Release notes are written when a release is cut, from the merged PR
log and the code, so PRs no longer edit CHANGELOG.md.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Port #851: fix vex alias tests broken on main

Since #605 landed, main fails two vex_consumed alias tests because the
name-keyed resolver now finds alias and bundled store copies itself.
This is #851's test-only fix, ported so this PR's CI can go green; it
becomes a no-op once #851 merges.

Assisted-by: Claude Code:claude-opus-5-5

* Port #878: route Gradle digests through utils::digest

main fails socket-patch-core's lib guard test
production_digests_go_through_the_helpers because three Gradle files
still hash inline, which turns coverage, test and test-release red on
this PR. This is the same change as #878 and becomes a no-op once that
lands on main.

Co-Authored-By: Claude <noreply@anthropic.com>

* Drop stale entries from digest pending list

Main went red when the Gradle and Maven digest moves landed: three
files still listed as computing digests inline no longer do, so the
ratchet test fails on every PR. Same change as #1016; it becomes a
no-op once that lands.

Assisted-by: Claude Code:claude-opus-5-5

---------

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-janitor Opened by the CI janitor routine (flakes, redundant tests, CI perf)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants