Repository navigation
Bug hunt ledger: Bundler (RubyGems) #316
Replies: 88 comments
|
[agent] 2026-09-30: Bundler (RubyGems) bug-hunt run This is the first run, so the ledger started empty and there were no Tested: main Setup: the sandbox can't reach the Socket patch API. I used a temporary, uncommitted copy of Cells
Issues
False positives ruled out
Next
|
|
[agent] 2026-09-30: Bundler (RubyGems) bug-hunt run Tested: main Setup: a temporary, uncommitted copy of Cells
Issues
False positives ruled out
Next
|
|
[agent] 2026-10-01: maintainer note: test global ( This is a maintainer request, not a run report. Add it to the top of the backlog and keep it there until the cells below are covered. Ask: make sure we correctly scan global installs when Where Bundler (RubyGems) puts global installs: What to check (prove each with a real global install, not by reading source):
Add OS × Bundler (RubyGems) version cells for |
|
[agent] 2026-10-01: Bundler (RubyGems) bug-hunt run Tested: main Setup: for agent and Re-triage
Cells (global mode, maintainer checklist)Probe run: https://github.com/SocketDev/socket-patch/actions/runs/36816092864 (ubuntu, macos and windows × Ruby 2.7 / 3.3 / 3.4).
Other cells
Issues
False positives ruled out
Blocked
Next
|
|
[agent] 2026-10-01: handover from the Composer bug-hunt routine (lead, unverified for gem) While I was confirming #438 (Composer, Windows), the root cause turned out to be Composer evidence: #438 and the probe run https://github.com/SocketDev/socket-patch/actions/runs/36827949605 |
|
[agent] 2026-10-01: Bundler (RubyGems) bug-hunt run Tested: main Setup: a hold-open copy of Re-triage
Cells
Issues
False positives ruled out
Blocked
Next
|
|
[agent] 2026-10-01: Bundler (RubyGems) bug-hunt run Tested: main Setup: a copy of Re-triage
Cells
Issues
False positives ruled out
Next
|
|
[agent] 2026-10-02: Bundler (RubyGems) bug-hunt run Tested: main Setup: uncommitted probe tests added to a copy of Re-triage
Cells
Issues
False positives ruled out
Next
|
|
[agent] 2026-10-02: Bundler (RubyGems) bug-hunt run Tested: main Setup: uncommitted probes in copies of Re-triage
Cells
Issues
False positives ruled out
Next
|
|
[agent] 2026-10-02: Bundler (RubyGems) bug-hunt run Tested: main Setup: uncommitted probe tests in a copy of Re-triage
Cells
Issues
False positives ruled out
Next
|
|
[agent] Janitor: ledger drift. The coverage matrix still lists these issues as
This is a heads-up only. The janitor never edits ledgers. Generated by Claude Code |
|
[agent] Janitor: ledger drift. This ledger still lists these issues as failing, but they are now closed:
Please re-check them and update the matrix on your next run. Generated by Claude Code |
|
[agent] 2026-10-02: Bundler (RubyGems) bug-hunt run Tested: main Setup: a ~30-line Python mock of the patch API serving Re-triage
Cells
Issues
False positives ruled out
Probe branches
Next
|
|
[agent] 2026-10-03: Bundler (RubyGems) bug-hunt run Tested: main Setup: a temporary Re-triage
Cells
Issues
False positives ruled out
Next
|
|
[agent] 2026-10-30: Bundler (RubyGems) bug-hunt run Tested: main Re-triage
Cells (backlog item: platform-gem eject on 2.2–2.5)
Bundler 2.2–2.4 lock only the Filed: nothing new. Ruled out
Probes: none. macOS / Windows probe branches are still blocked (push-triggered runs haven't started since 2026-10-05). Next
|
|
[agent] 2026-10-30: Bundler (RubyGems) bug-hunt run Tested: main Re-triage
Cells
Filed: nothing. Commented / closed: nothing. Ruled out
Probes: none. macOS / Windows probes are still blocked (no push-triggered runs since 2026-10-05). Next
|
|
[agent] 2026-11-01: Bundler (RubyGems) bug-hunt run Tested: main Re-triage
Cells: CHECKSUMS added by the user after a converged hosted redirect
This also closes backlog item 4's "4.0.23 direct / Filed: nothing. Commented / closed: nothing. Ruled out: nothing new. Probes: none. A Next
|
|
[agent] 2026-11-01: Bundler (RubyGems) bug-hunt run Tested: main Re-triage
Cells
Side observation (not a bug, already documented): Filed: nothing. Commented / closed: nothing. Ruled out: nothing new. Probes: none (leftover Next
|
|
[agent] 2026-11-01: Bundler (RubyGems) bug-hunt run Tested: main Re-triage
Cells
Filed: nothing. Commented / closed: nothing. Ruled out: Probes: none (leftover Next
|
|
[agent] 2026-11-01: Bundler (RubyGems) bug-hunt run Tested: main Re-triage
Cells
Filed: nothing. Commented / closed: nothing. Ruled out: Probes: none (leftover Next
|
|
[agent] 2026-11-02: Bundler (RubyGems) bug-hunt run Tested: main Re-triage
Cells (backlog item 5)
Cells (backlog item 4, stale-install guard, OS/version-independent unit-level harness with a fake
All consistent with CLI_CONTRACT.md's Gem stale-install guard: group exclusion isn't part of the judgment, so the guard stays conservative (the shared copy is what Filed: nothing. Commented / closed: nothing. Ruled out: the excluded-group warning above (conservative, no false attestation); Probes: none (leftover Next
|
|
[agent] 2026-11-02: Bundler (RubyGems) bug-hunt run Tested: main Re-triage
Cells (backlog items 4 and 5). Each cell: the command → Gemfile byte-identical, lock keeps the patch-registry GEM remote → re-scan exit 0, Gemfile unchanged → frozen fresh install PATCHED, lock byte-identical →
After Filed: nothing. Commented / closed: nothing. Ruled out:
Probes: none (leftover Next
|
|
[agent] 2026-11-02: Bundler (RubyGems) bug-hunt run Tested: main Re-triage
New in Bundler 4.1.0.beta3 (2026-10-28): Cells
Filed: #1989 (#1989). Commented / closed: nothing. Ruled out: nothing new. #457 (closed) had the same symptom but a different cause (a missing blank line), so #1989 isn't a duplicate. Probes: none (leftover Next
|
|
[agent] Janitor: ledger drift. These issues are now closed, but this ledger still lists them as failing or awaiting a fix:
Please re-verify on current main and update the ledger. Generated by Claude Code |
|
[agent] 2026-11-13: Bundler (RubyGems) ledger reset by the maintainer The ledger had grown to 97 KB of state plus 68 run entries, and every run re-read all of it. It now starts clean for the 5.1.0-era main:
The routine now runs twice a day and hunts in this order: the common path in all three modes, the workflows people really have, then friction. |
|
[agent] 2026-11-13: Bundler (RubyGems) bug-hunt run Tested: main Harness: the sandbox reaches rubygems.org but not the Socket patch API, so I used a standalone mock (Python) of the patch API and the patch registry next to the real rubygems.org: real Re-triage: nothing to do. #1109 is Cells
Filed
Commented / closed: nothing. Ruled out
Not filed, worth a look later: the |
|
[agent] 2026-11-14: Bundler (RubyGems) bug-hunt run Tested: main Harness: a standalone Python mock of the patch API and registry next to the real rubygems.org, with real Re-triage: #2069 and #2070 are open and claimed; main has not moved, nothing to re-check. #1109 is Cells
Filed
Commented / closed: nothing. Ruled out
Not filed, worth a look later: |
|
[agent] 2026-11-14: Bundler (RubyGems) bug-hunt run Tested: main Harness: the standalone Python mock again (patch API on Re-triage: #2069 still reproduces on Cells
Filed
Commented / closed: nothing. Ruled out
|
|
[agent] 2026-11-15: Bundler (RubyGems) bug-hunt run Tested: main Harness: the standalone Python mock again, rebuilt from the state file's notes ( Re-triage: main has not moved; #2069, #2070, #2075, #2076, #2083 and #2084 are open and unchanged, nothing to re-check. #1109 is Cells
Filed
Commented / closed: nothing. Ruled out
|
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
[agent] Progress ledger for the scheduled Bundler (RubyGems) bug-hunt routine (label pm:bundler).
Last run: 2026-11-15, main
63f791d, release 5.1.0, newest Bundler 4.0.24 stable and 4.1.0.beta3 prerelease (tested so far: 2.3.27, 2.4.19, 2.5.22/23, 2.6.9, 4.0.18, 4.0.24, 4.1.0.beta3). Ruby 3.1.6, 3.2.6 and 3.3.6.The ledger was reset on 2026-11-13. The old 97 KB ledger is in this branch's history (
git show ec2d4516f:state/bundler.md); search it withgit grep, don't copy it back.Harness notes: the sandbox reaches rubygems.org but not the Socket patch API. A standalone mock of the patch API and patch registry works for all three modes (endpoints:
POST …/patches/batch,GET …/patches/by-package/<purl>,POST …/patches/package,GET …/patches/view/<uuid>withblobContent, and a compact index under/patch-registry/gem/<token>/<uuid>/; copy the/infoline from rubygems.org and swap the checksum). Build the patched gem by repacking the upstream.gemwith itsmetadata.gzunchanged, and pass--api-url <mock> --proxy-url <mock> --patch-server-url <mock>to every command (without a token the CLI calls the proxy URL). For vendored mode the grant'starballartifact needsintegrity.sha512(SRI) and a second artifact{"kind":"gem-stub-gemspec"}servinggem spec <patched.gem> --ruby. Give test repos a**/vendor/bundle/ignore line.--api-token fake --org testworks in place of the proxy route. For a gem with precompiled builds,nokogiri 1.16.0compiles from source in under a minute here. rbenv Rubies are in/opt/ruby-3.1.6(Bundler 2.3.27, 2.6.9),/opt/ruby-3.2.6(2.4.19, 4.0.18),/opt/ruby-3.3.6(2.5.22, 4.0.18);gem install bundler -v 4.0.24/4.1.0.beta3works there.Coverage matrix
Linux only. A cell is
passwith the Bundler versions and the date,fail #N,n/a, oruntested.bundle install, app loads patched code,vex, rollback,bundle installagainvexwarning fail #2076BUNDLE_PATH)GEM_HOME(11-15)scanandrollbackwith--gem-refresh-shared(11-15); the remedy after a plain rollback / remove fail #2086bundle config set path vendor/bundleBUNDLE_DEPLOYMENT,BUNDLE_FROZEN,.bundle/config)BUNDLE_WITHOUTtoo, 4.0.18 (11-14)-x86_64-linux)rubyplatform it installs patched, standalonevexfail #2087scan --no-gem-native-rebuildfail #2069Bundler.requireloads it fail #2084bundle update/bundle add/bundle remove/bundle outdatedafter patching--redownloadthenapply(11-14)lock --add-platform,cache(11-14)lock --add-platform,update <other gem>,clean,doctor,binstubspass 4.0.18 (11-14); outdated / update fail #2070GemfileandGemfile.lockbyte for byteremove,vendor --revertpass 4.0.18 (11-14)removepass on all, CRLF andvendor/cachearchives too (11-14)vexreports only what is really appliedbundle pristinetoo (11-13)vendored_tree_out_of_syncfail #2076gems.rb/gems.lockedspellinggemfile_not_loaded), not re-runlist, rollback from the root (11-14)setupand the Bundler plugin it installssetupand the plugin were removed in v5 (CLI_CONTRACT "…no longer published"); onlygem_bundler_plugin_staledetection is left, untested--jsonoutputOVERRIDES/CONTENT ADDRESSESsections not produced, untestedBacklog
docs/usage.md. Known candidates:redirect_gem_no_checksums_sectionsays "bundler < 2.6 does not write one" on a 2.6.9 lock (its remedy works); vendored mode refuses every gem inside agroup doblock, which is most Rails Gemfiles (by design, Hosted gem redirect breaks a multi-linegemdeclaration (the Gemfile stops parsing) and drops a trailingif/unlessmodifier #340: is the message's remedy clear?);scan --mode vendoredexits 1 whenever one patched gem is native (is the hint to use hosted for it clear?);remove <gem>from a monorepo root doesn't name the sub-projects that pin it;apply --checksays "Runsocket-patch applyto regenerate them" for a gemapplyrefuses (native_extensions_unsupported); the hosted next step says "a plainbundle installkeeps the gems it already has" when the stale copy is a platform build the lock no longer names.Bundler.requireboot) through hosted mode end to end, on Bundler 2.5, 2.6 and 4.0.remove/vendor --revertafter a hosted to vendored takeover (Rolling back a gem that went from hosted to vendored leaves the patched installed copy invendor/bundle: the app keeps loading patched code andbundle pristine/--redownloadfail on the restored checksum #2083 coversrollbackonly),scan --prune./opt/ruby-*itself, switching agent to hosted and back,apply --dry-runstarts no Ruby, a relative crawl root (Rebuild gem native extensions from a relative crawl root #2048), an interrupted rebuild, a monorepo.scan --mode agentmay drop (same cause asscan --mode agent --no-gem-native-rebuild(andSOCKET_NO_GEM_NATIVE_REBUILD=1) still rebuilds the gem native extension andvexattests it; onlyapplyandgethonor the opt-out #2069:nested_apply_args_from_paramsfillsGlobalArgsfrom defaults).--gem-refresh-sharedwith two projects pinning the same gem version (the documented cost),removeof one gem out of several,SOCKET_GEM_REFRESH_SHARED=1.OVERRIDESandCONTENT ADDRESSES: find which Gemfile or setting makes 4.1.0.beta3 write them, then hosted and vendored. Ruby 3.4 is not in the sandbox..bundle/configshapes around the stale-install guard. Hosted gem stale-install guard still flags an unused system gem-home copy under Bundlerdeploymentor the.bundledefault path, soscan --mode hosted --vexfails withno_applicable_patcheson fresh checkouts #1109 is open and waiting on a maintainer decision; don't re-file it.scan --mode agent --no-gem-native-rebuild(andSOCKET_NO_GEM_NATIVE_REBUILD=1) still rebuilds the gem native extension andvexattests it; onlyapplyandgethonor the opt-out #2069, A hosted-patched gem disappears frombundle outdatedandbundle updatecan no longer move it, and nothing in the scan output or docs says so #2070, Vendored gem scan exits 1 with "Gemfile.lock GEM specs has no entry" for a gem in the shared gem home that the project does not lock, where hosted mode skips it with a warning #2075,vexwarnsvendored_tree_out_of_syncfor every vendored gem afterbundle install, and the remedy it names never clears it because Bundler keeps the unused registry copy #2076, Rolling back a gem that went from hosted to vendored leaves the patched installed copy invendor/bundle: the app keeps loading patched code andbundle pristine/--redownloadfail on the restored checksum #2083, Vendored mode declares a transitive gem withoutrequire: false, soBundler.requirestarts loading it at boot (hosted mode adds the option) #2084, Hosted gemrollback/removetell the user to re-run with--gem-refresh-shared, but the re-run exits 1 with "nothing to roll back" and the patched gem stays in the shared gem home #2086 and Standalonevexrefuses a hosted gem asnot_appliedbecause of a leftover<gem>-<version>-x86_64-linuxdirectory that has no gemspec, after the scan's ownrm -f … && bundle installremedy #2087 once fixed.Known non-bugs
The full list is in
known-non-bugs/bundler.mdon this branch. Search it withgit grepbefore filing, and append one line when you rule something out. Don't read it whole. Most likely to be re-filed:gem buildhas a different gemspec. Repack with the originalmetadata.gz.vex/listreport no patches on a hosted project whose patch URLs are on loopback: pass--patch-server-url.vexexits 2 asking for a product when the project has no git origin, gemspec or other manifest: pass--product.All reactions