Repository navigation
fix(ci): pin plugins to lazy-lock.json on a fresh restore - #54
Closed
potsrevennil wants to merge 2 commits into
Closed
potsrevennil wants to merge 2 commits into
potsrevennil wants to merge 2 commits into
Conversation
A bare `Lazy! restore` on a cache miss lets lazy.nvim's first-run install rewrite the lockfile before LazyVim's imported specs are known, leaving those plugins at their upstream target. Install first, copy the committed lock back, restore, and cmp the result -- the same sequence lazy-update.yml uses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…/ci-fresh-restore
This was referenced Oct 20, 2026
Owner
Author
|
Folded into #53, which now carries this restore fix (moved into the shared |
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.
Stacked on #49.
What
The
testjob's "Restore plugins" step now runs the same sequencelazy-update.yml(#53) uses:Why
When the
actions/cacheplugin cache misses, a bareLazy! restoredoesn't reproducelazy-lock.json. lazy.nvim's first-run install handles LazyVim before the plugins its specs import are known. It rewrites the state lockfile without their entries and installs them at their upstream target.restorethen restores to that rewritten lock. CI only looked reproducible because the cache was warm.When the cache hits, every plugin is already on disk, so the first
+qainstalls nothing. Checked locally: the plugin dir was kept, the state dir was empty, no plugin HEAD moved, andcmpmatched.Evidence
Fresh
XDG_*_HOMEdirs,nix build .#lite, thendiff lazy-lock.json ~/.local/state/nvim/lazy-lock.json.master, bare restore (current CI): 5 plugins are off their locked commits.
master, this fix: every plugin is on its locked commit. What's left is master's stale lockfile, which
restoreprunes. This is why the PR is stacked on #49.On #49 with this fix: the diff is empty and
cmppasses, on both a cold and a warm cache. A bare restore also happens to match here, because #49's lock currently equals upstream HEAD. It will drift again once upstream moves.🤖 Generated with Claude Code