Repository navigation
Conversation
Gem pins are mapped from gem source and serialized, so a plugin's conventions shape what lands in the gem cache. The language server caches gems by running `solargraph cache` in a subprocess, which never loaded the workspace's plugins, so the cache it wrote could differ from the one an in-process typecheck builds. `cache` and `uncache` now require the plugins configured for the directory, through a Workspace::Config#require_plugins that Workspace also delegates to. Each loaded plugin and its gem version are recorded in CacheDir, and gem_dir includes them, so loading or upgrading a plugin rebuilds the gem cache instead of reusing pins made without it. The @sg-ignore in CacheDir.add_plugin records a typecheck defect: Hash#each_value.find types the block parameter as the value type unioned with the hash itself. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EhUSLUimEYJyCZv8NdQGKb
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SEntZKsZwQHhzqcwG7MTqn
A plugin was recorded in the gem cache key only when the workspace config required it. A process that requires the plugin directly, such as a plugin spec suite using a workspace without config, mapped gems with the plugin loaded but read and wrote the plain gems directory, so it missed caches built by `solargraph gems` with the plugin configured. Record the gem that defines each registered convention, and key config-required plugins by gem name so both paths give the same key. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SEntZKsZwQHhzqcwG7MTqn
Keep the natural Hash iteration and mark the Solargraph gap: the each_value block param is typed as the Hash pair, not the value. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SEntZKsZwQHhzqcwG7MTqn
The parent keys gem_dir on the plugins it has loaded, while `solargraph cache` re-read the --directory config. When the two sets differ (a workspace built with another config, a plugin loaded by plain require, or several workspaces in one process), the subprocess writes its pins to a directory the parent never reads, and Library#cache_next_gemspec re-caches the gem forever. Record what to require for each plugin and pass that list with --plugins, so the subprocess loads the same set and writes to the same gem_dir. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SEntZKsZwQHhzqcwG7MTqn
… plugins Combination fix: the Rakefile's gem warm-up passes --plugins= so it writes the cache directory the spec processes read; castwide#1407 now keys that directory on loaded plugins. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01SEntZKsZwQHhzqcwG7MTqn
Owner
Author
|
Claude: Closing: superseded by batch b4d, which merges castwide#1407 onto the #44 batch. |
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.
Claude: Integration batch: merges castwide#1407 onto 2026-10-19 (d159885), with castwide#1407's fix for the cache subprocess loading different plugins than the server, and --plugins= on the Rakefile gem warm-up.