Skip to content

feat(core)!: adopt Core v4.0.0 (numbered-fragment loader)#61

Merged
Gerrrt merged 4 commits into
mainfrom
claude/dotfiles-core-v4-breaking-kc9b6y
Jul 20, 2026
Merged

feat(core)!: adopt Core v4.0.0 (numbered-fragment loader)#61
Gerrrt merged 4 commits into
mainfrom
claude/dotfiles-core-v4-breaking-kc9b6y

Conversation

@Gerrrt

@Gerrrt Gerrrt commented Jul 20, 2026

Copy link
Copy Markdown
Collaborator

What

Adopt dotfiles-core v4.0.0 (eeaec5045505) in the Arch OS-native layer.

Core vendor (v4.0.0)

Merged the bot's sync/core-v4.0.0 branch (fast-forward) which vendors the released Core subtree into core/. v4 replaces the v3 named-module loader with numbered fragments: Core modules become NN-name.zsh (00-tools60-update), the OS overlay is 80-os.zsh, and host-local is 99-local.zsh. The vendored core/zsh/loader.zsh globs [0-9][0-9]-*.zsh in $ZSH_CFG, sorts by NN, and sources them (it ignores any legacy _CORE_MODULES array). core.lock core_version=4.0.0 and core/core.version both confirm 4.0.0.

core/ is vendored read-only here — it is a git subtree copy of dotfiles-core and is overwritten on the next sync. No hand-edits were made to it.

Reusable-workflow caller realignment (@V3@v4)

Bumped all 7 caller workflows plus the Pinned @v4. comment:
lint, notify-web, auto-tag, bootstrap-test, claude-routines, core-freshness, core-integrity. The v3/v4 call interfaces are byte-identical, so this is a safe major-tag realignment. No @v3 references remain outside core/.

Host layer: no edits needed

The Arch host layer is fully blib-delegatedbootstrap.sh calls blib_link_core / blib_link_os_layer / blib_write_zshrc_loader, all of which v4's vendored core/lib/bootstrap-lib.sh already implements for the numbered layout. There is no hand-rolled zsh/zshrc and no test/test-repo.sh. Defensive scan for _CORE_MODULES / hardcoded os.zsh uninstall dests in the host layer found nothing.

Local gates

  • bash -n bootstrap.sh / test/check-core-freshness.sh — clean
  • shellcheck -S error on host scripts — clean
  • test/check-core-freshness.shok vendored core/ is current with dotfiles-core@main (eeaec5045505)
  • actionlint + YAML parse on all bumped workflows — clean
  • (No top-level Makefile in this repo; the full lint/bootstrap/integrity/freshness gates run in CI via the reusable-workflow callers.)

Breaking change

Re-run ./bootstrap.sh after updating to relink the numbered fragments — the bootstrap-lib migration relocates shell history and drops the stale named-module symlinks from the v3 loader.

Closes #60 (superseded by this branch).


Generated by Claude Code

github-actions Bot and others added 4 commits July 20, 2026 20:55
eeaec50 Merge pull request #261 from dotgibson/release/v4.0.0
e80dd9f release v4.0.0
6eda1f7 Merge pull request #260 from dotgibson/claude/dotfiles-core-v4-breaking-kc9b6y
37640a8 docs(proposal): record profile-aware discovery surface as a deliberate follow-up
b8f4ad5 docs(ci): correct bootstrap-test caller example to @V3 (the @vn policy), not @main
f0d67e3 fix(core): address v4 review round 7 — parity marker + proposal flat-dir consistency
8a3e240 fix(zsh): make `core update` availability-aware under reduced CORE_PROFILE
dffe02c fix(core): address v4 review round 5 — migrate plugins dir, correct docs/assertions
d5289cb fix(core): address v4 review round 4 — lexical sort, loader-driven bench, doc drift, conflict-safety
47276bf fix(core): address v4 review round 3 — profile resolution, strict glob, accurate docs, tests
92d3d7e fix(core): address v4 review — band-gating contract, maint/freshness pin paths, doc sweep, migration test
118104c fix(bench): create sandbox ZDOTDIR explicitly after the v4 plugin-path move
835d75d feat(core)!: v4 loader & layout overhaul — numbered fragments, XDG split, CORE_PROFILE
fc63e09 Merge pull request #259 from dotgibson/nvim-cheatsheet-and-dead-config
44feda2 fix(nvim): drop duplicated <C-s> cheatsheet row; correct the width = {} note
6413c86 chore(nvim): close cheatsheet gaps, name which-key prefixes, drop dead config
3d9eea2 Merge pull request #258 from dotgibson/claude/dotfiles-core-v4-breaking-kc9b6y
6c503aa Merge pull request #257 from dotgibson/nvim-statusline-gitsigns-provider-fixes
86da65c fix(nvim): disable the python3 provider too; correct the vimade rationale
cd16ed1 docs(release): fix v4 proposal — MD060 table, band + profile semantics, rollback
1e1d137 Merge pull request #255 from dotgibson/automation/freshness-nvim-plugins
40d1865 Merge pull request #254 from dotgibson/automation/freshness-zsh-plugins
9e45535 docs(release): draft v4 loader & layout overhaul proposal
b74c38c fix(nvim): statusline blanking, visual git staging, node provider, gsn
f162bd6 chore(deps): refresh nvim plugin lock (freshness bot)
045ced1 chore(deps): roll zsh plugin pins forward (freshness bot)
0d8d414 Merge pull request #253 from dotgibson/nvim-lsp-settings-and-lazy-fixes
94899fd fix(nvim): honour project-local LSP binaries; replace grx before deleting it
845ad92 fix(nvim): restore SchemaStore delivery, gr* cleanup, and treesitter laziness
d1a8d51 Merge pull request #252 from dotgibson/nvim-statusline-venv
576047c Merge pull request #251 from dotgibson/nvim-python-dap
f7f756d Merge pull request #250 from dotgibson/nvim-lsp-registry
424cd68 feat(nvim): statusline venv block; read statusline's own window
677b508 feat(nvim): Python debugging via nvim-dap, lazy on debug keymaps
54322b9 Merge pull request #249 from dotgibson/nvim-lazy-schemastore
3634265 Merge pull request #248 from dotgibson/nvim-runtime-plugins
bf40b8d refactor(nvim): server modules become plain tables; one server list
0b39f4f perf(nvim): defer SchemaStore to client start; cache TS parser set
c3fe6b3 docs(nvim): correct lazy-default and matchparen claims from review
9135ea4 perf(nvim): stop sourcing matchparen/rplugin/spellfile; drop showmatch
ac82cda Merge pull request #247 from dotgibson/nvim-filepost
0891871 fix(nvim): address review — UIEnter gating, FilePost contract test, stale docs
269df54 perf(nvim): defer file-plugins past startup via User FilePost

git-subtree-dir: core
git-subtree-split: eeaec5045505b16e666bb18c844183504272b04b
Adopt dotfiles-core v4.0.0: vendor the v4 Core subtree (numbered-fragment
loader — `NN-name.zsh` Core modules, `80-os.zsh` overlay, `99-local.zsh`
host-local, globbed/sorted by the vendored `core/zsh/loader.zsh`), merged
from the bot's `sync/core-v4.0.0` branch (fast-forward).

Realign the reusable-workflow callers from @V3 to @v4 (lint, notify-web,
auto-tag, bootstrap-test, claude-routines, core-freshness, core-integrity)
plus the "Pinned @v4." comment — the v3/v4 call interfaces are byte-identical,
so this is a safe major-tag realignment.

The Arch host layer is fully blib-delegated: `bootstrap.sh` calls
`blib_link_core` / `blib_link_os_layer` / `blib_write_zshrc_loader`, all of
which v4's vendored `core/lib/bootstrap-lib.sh` already implements for the
numbered layout. No hand-rolled loader or bootstrap edits are needed.

BREAKING CHANGE: re-run `./bootstrap.sh` after updating to relink the numbered
fragments — the bootstrap-lib migration relocates shell history and drops the
stale named-module symlinks from the v3 loader.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XgSG8AousYiEznFzv2mEBp
Copilot AI review requested due to automatic review settings July 20, 2026 21:41

Copilot AI 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.

Pull request overview

This PR updates the Arch OS-native repo to dotfiles-core v4.0.0, which switches Core’s zsh runtime from a named-module loader to a numbered-fragment loader (NN-*.zsh) and realigns CI reusable-workflow callers from @v3 to @v4.

Changes:

  • Vendor Core v4.0.0, including the new core/zsh/loader.zsh fragment glob/sort/profile gating and the new numbered zsh module set.
  • Move more runtime state to XDG locations (history/state, compdump/cache, plugins/data) and update maintenance/update tooling to match.
  • Update repo GitHub Actions workflows to call dotfiles-core reusables at @v4.

Reviewed changes

Copilot reviewed 96 out of 106 changed files in this pull request and generated no comments.

Show a summary per file
File Description
core/zsh/loader.zsh Switch to numbered-fragment glob/sort loader with CORE_PROFILE gating and per-fragment zcompile.
core/zsh/55-maint.zsh Add maintenance scheduler control surface (install/run/log/status/uninstall).
core/zsh/50-op.zsh Add 1Password CLI helper functions (opsecret/openv/optoken/opssh).
core/zsh/45-plugins.zsh Move plugin clone location to XDG data dir; update pinned zsh-vi-mode rev.
core/zsh/40-bindings.zsh Add vi-mode bindings via zvm_after_init hook; bind fzf/atuin/sessionizer widgets.
core/zsh/35-fzf.zsh Add fzf defaults, previews, and zle widgets (Ctrl-T/Ctrl-R/Alt-Z/Ctrl-G) plus utilities.
core/zsh/30-functions.zsh Make core update dispatch availability-aware under CORE_PROFILE.
core/zsh/25-git.zsh Introduce curated git alias/function set plus fuzzy helpers.
core/zsh/20-aliases.zsh Introduce guarded modern CLI aliases and caching probe for diff --color.
core/zsh/15-history.zsh Relocate HISTFILE to XDG state.
core/zsh/10-options.zsh Relocate compdump to XDG cache and ensure parent dir exists.
core/zsh/00-tools.zsh Add tool detection, HAVE_* flags, and cached init-script sourcing.
core/SECURITY.md Update local override filename reference for v4 layout.
core/scripts/update-plugins.sh Update plugin-pin source path to zsh/45-plugins.zsh.
core/scripts/setup.sh Update reference to renamed ui module path.
core/scripts/parity-check.sh Update parity checks to numbered zsh module filenames.
core/scripts/parity-aliases.txt Update documentation reference to zsh/20-aliases.zsh.
core/scripts/new-os-repo.sh Update scaffolding to v4 loader + 80-os/99-local fragment layout.
core/scripts/lib/common.sh Update reference to renamed ui module path.
core/scripts/freshness-dashboard.sh Update plugin-pin path reference.
core/scripts/bench-core.sh Update bench harness for v4 loader + XDG data/cache/state layout.
core/scripts/audit-core.sh Update audit references/allowlists for v4 filenames and new doc file.
core/PORTING-MATRIX.md Update references to numbered zsh module filenames.
core/PARITY.md Update references to numbered zsh module filenames.
core/nvim/lua/gerrrt/utils/ui-highlights.lua Add dap sign highlight groups.
core/nvim/lua/gerrrt/utils/lsp.lua Remove with_snippets helper; adjust default map deletion and add CodeLens map.
core/nvim/lua/gerrrt/servers/yamlls.lua Convert server module to return config table; defer schemastore injection.
core/nvim/lua/gerrrt/servers/vue_ls.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/ty.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/ts_ls.lua Convert server module to return config table; keep Vue hybrid plugin wiring.
core/nvim/lua/gerrrt/servers/taplo.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/tailwindcss.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/svelte.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/solidity_ls_nomicfoundation.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/ruff.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/marksman.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/lua_ls.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/jsonls.lua Convert server module to return config table; defer schemastore catalog build.
core/nvim/lua/gerrrt/servers/init.lua Centralize capabilities on *, dedupe server list, harden enable-guard for function-cmd servers.
core/nvim/lua/gerrrt/servers/html.lua Convert to return table; set snippetSupport leaf capability only.
core/nvim/lua/gerrrt/servers/gopls.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/emmet_ls.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/dockerls.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/cssls.lua Convert to return table; set snippetSupport leaf capability only.
core/nvim/lua/gerrrt/servers/clangd.lua Convert server module to return config table.
core/nvim/lua/gerrrt/servers/bashls.lua Convert server module to return config table.
core/nvim/lua/gerrrt/plugins/which-key.lua Add which-key groups for dap/rename/organize/path prefixes.
core/nvim/lua/gerrrt/plugins/treesitter-context.lua Remove no-op separator = nil setting and document behavior.
core/nvim/lua/gerrrt/plugins/todo-comments.lua Move lazy trigger to User FilePost.
core/nvim/lua/gerrrt/plugins/rustaceanvim.lua Prevent dap autoload on rust-analyzer attach; add explicit Rust debug entry mapping.
core/nvim/lua/gerrrt/plugins/nvim-treesitter.lua Cache installed parsers as a set and invalidate on TSUpdate.
core/nvim/lua/gerrrt/plugins/nvim-tree.lua Update legacy adaptive_size to view.width = {} with rationale.
core/nvim/lua/gerrrt/plugins/nvim-lspconfig.lua Move load trigger to User FilePost; declare blink.cmp dependency explicitly.
core/nvim/lua/gerrrt/plugins/nvim-lint.lua Move lazy trigger to User FilePost.
core/nvim/lua/gerrrt/plugins/nvim-dap.lua Add lazy-loaded nvim-dap (+ python) configuration and keymaps.
core/nvim/lua/gerrrt/plugins/mini-nvim.lua Remove dependency-induced eager treesitter load; fix mini.surround update_n_lines mapping.
core/nvim/lua/gerrrt/plugins/mason-tool-installer.lua Clarify startup timing with FilePost; document why debugpy isn’t ensured.
core/nvim/lua/gerrrt/plugins/lualine-nvim.lua Fix LSP clients lookup for globalstatus; add Python venv indicator.
core/nvim/lua/gerrrt/plugins/harpoon.lua Guard adding unnamed buffers to Harpoon list.
core/nvim/lua/gerrrt/plugins/gitsigns-nvim.lua Move lazy trigger to User FilePost; fix visual-mode stage/reset to pass range.
core/nvim/lua/gerrrt/plugins/fidget-nvim.lua Correct winblend setting/comment; keep default 100.
core/nvim/lua/gerrrt/plugins/conform.lua Remove redundant config function; rely on lazy default opts behavior.
core/nvim/lua/gerrrt/plugins/bufferline-nvim.lua Remove unreachable hover reveal close-icon option when close icons are disabled.
core/nvim/lua/gerrrt/plugins/blink-cmp.lua Correct snippet engine note for luasnip preset.
core/nvim/lua/gerrrt/config/providers.lua Disable node + python providers with rationale (remove checkhealth warnings).
core/nvim/lua/gerrrt/config/options.lua Remove showmatch; simplify undodir setup; move mouse maps to keymaps.lua.
core/nvim/lua/gerrrt/config/lazy.lua Set defaults.lazy=true; expand disabled runtime plugins list with rationale.
core/nvim/lua/gerrrt/config/keymaps.lua Use mappings; add mouse drag-select disable; improve copy-path UX.
core/nvim/lua/gerrrt/config/autocmds.lua Introduce User FilePost; version-gate yank highlight helper API.
core/nvim/lua/gerrrt/cheatsheet.lua Expand cheatsheet coverage and update descriptions for new/changed bindings.
core/nvim/lazy-lock.json Update lockfile commits; add nvim-dap + nvim-dap-python.
core/mise/config.toml Update local override filename reference for v4 layout.
core/Makefile Update update-plugins target description for new plugins file path.
core/maint/dotfiles-maint.sh Update plugin/config paths for v4 XDG layout; adjust zsh compile targets.
core/lib/ux.sh Update references to renamed ui module path.
core/lib/bootstrap-lib.sh Add v4 migration + link logic (80-os, 99-local) and v4 .zshrc writer.
core/lazygit/config.yml Update references to renamed zsh module filenames.
core/jujutsu/config.toml Update alias-source reference to renamed zsh module filename.
core/core.version Bump Core version to 4.0.0.
core/core.manifest Update manifest to numbered zsh fragments and new load-order contract.
core/ARCHITECTURE.md Document new numbered-fragment load order and banding contract.
core/aliases.md Update documentation references to renamed zsh module filenames.
core/.pre-commit-config.yaml Update references to renamed op module filename.
core/.gitignore Update local override ignore filename for v4 layout.
core/.github/workflows/freshness.yml Update zsh plugin pin path references and git add path.
core/.github/workflows/bootstrap-test.yml Update assertions for v4 loader + 80-os + v4 .zshrc expectations.
core/.github/ISSUE_TEMPLATE/bug_report.md Update example zsh path to 00-tools.zsh.
core/.claude/commands/tool-scout.md Update references to renamed zsh module filenames.
core/.claude/commands/freshness-triage.md Update references to renamed plugins path.
core/.claude/commands/doc-audit.md Update references to renamed zsh module filenames.
core/.claude/agents/tool-scout.md Update references to renamed zsh module filenames.
core/.claude/agents/doc-consistency.md Update references to renamed zsh module filenames.
core/.bin/sync-upstream.sh Update reference to renamed zsh alias source file.
core.lock Pin Core version/SHA/tag to v4.0.0.
.github/workflows/notify-web.yml Update reusable workflow reference to @v4.
.github/workflows/lint.yml Update reusable workflow reference to @v4.
.github/workflows/freshness.yml Update reusable workflow reference to @v4.
.github/workflows/core-integrity.yml Update reusable workflow reference to @v4.
.github/workflows/claude-routines.yml Update reusable workflow reference to @v4.
.github/workflows/bootstrap.yml Update reusable workflow reference to @v4.
.github/workflows/auto-tag.yml Update reusable workflow reference to @v4 (and pinned comment).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Gerrrt
Gerrrt merged commit 505ed33 into main Jul 20, 2026
6 checks passed
@Gerrrt
Gerrrt deleted the claude/dotfiles-core-v4-breaking-kc9b6y branch July 20, 2026 21:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants