@sebastienrousseau/dotfiles 0.2.499 → 0.2.501

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/CHANGELOG.md +452 -0
  2. package/LICENSE +1283 -0
  3. package/README.md +322 -0
  4. package/docs/.vitepress/reports/localization-readability-audit.md +73 -0
  5. package/docs/AI.md +108 -0
  6. package/docs/CNAME +1 -0
  7. package/docs/COPYRIGHT +4 -3
  8. package/docs/NAMING_CONVENTIONS.md +102 -0
  9. package/docs/README.md +82 -0
  10. package/docs/_config.yml +59 -0
  11. package/docs/adr/ADR-001-ci-cd-pipeline.md +118 -0
  12. package/docs/adr/ADR-002-shell-performance.md +130 -0
  13. package/docs/adr/ADR-003-security-first.md +158 -0
  14. package/docs/adr/ADR-004-cli-architecture.md +171 -0
  15. package/docs/adr/ADR-005-chezmoi-choice.md +99 -0
  16. package/docs/adr/ADR-006-shell-selection.md +124 -0
  17. package/docs/adr/ADR-007-multi-shell-parity.md +62 -0
  18. package/docs/adr/ADR-008-alias-system-architecture.md +95 -0
  19. package/docs/adr/ADR-009-wallpaper-driven-theming.md +131 -0
  20. package/docs/adr/ADR-010-starship-transient-prompt.md +144 -0
  21. package/docs/adr/ADR-011-nushell-tier3-keep.md +144 -0
  22. package/docs/adr/README.md +39 -0
  23. package/docs/architecture/ARCHITECTURE.md +117 -0
  24. package/docs/architecture/INTEROP.md +44 -0
  25. package/docs/architecture/REPO_LAYOUT.md +241 -0
  26. package/docs/architecture/WALKTHROUGH.md +86 -0
  27. package/docs/architecture/fleet-deployment.md +77 -0
  28. package/docs/archive/EUXIS_2026_REVIEW.md +127 -0
  29. package/docs/archive/LEGACY_ROADMAP.md +160 -0
  30. package/docs/archive/MILESTONE_v0.2.493.md +47 -0
  31. package/docs/{PLAN.md → archive/PLAN.md} +50 -12
  32. package/docs/archive/REPO_AUDIT.md +31 -0
  33. package/docs/guides/INSTALL.md +144 -0
  34. package/docs/guides/NEOVIM_IDE_GUIDE.md +61 -0
  35. package/docs/guides/THEMING.md +230 -0
  36. package/docs/guides/TROUBLESHOOTING.md +176 -0
  37. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +792 -0
  38. package/docs/index.md +43 -0
  39. package/docs/interop/A2A.md +39 -0
  40. package/docs/interop/POWERSHELL.md +102 -0
  41. package/docs/manual/00-introduction.md +89 -0
  42. package/docs/manual/01-concepts/01-architecture.md +138 -0
  43. package/docs/manual/01-concepts/02-trust-model.md +182 -0
  44. package/docs/manual/01-concepts/03-theme-engine.md +186 -0
  45. package/docs/manual/01-concepts/04-fleet.md +148 -0
  46. package/docs/manual/01-concepts/05-self-healing.md +204 -0
  47. package/docs/manual/02-tutorials/01-first-install.md +197 -0
  48. package/docs/manual/02-tutorials/02-add-wallpaper.md +216 -0
  49. package/docs/manual/02-tutorials/03-create-profile.md +244 -0
  50. package/docs/manual/02-tutorials/04-encrypt-secret.md +281 -0
  51. package/docs/manual/02-tutorials/05-deploy-fleet.md +283 -0
  52. package/docs/manual/03-reference/01-dot-cli.md +417 -0
  53. package/docs/manual/03-reference/02-config-files.md +265 -0
  54. package/docs/manual/03-reference/03-environment.md +124 -0
  55. package/docs/manual/03-reference/04-templates.md +190 -0
  56. package/docs/manual/03-reference/05-feature-flags.md +128 -0
  57. package/docs/manual/04-cookbook/01-recipes.md +285 -0
  58. package/docs/manual/04-cookbook/02-troubleshooting.md +351 -0
  59. package/docs/manual/04-cookbook/03-faq.md +175 -0
  60. package/docs/manual/05-appendices/A-platform-matrix.md +101 -0
  61. package/docs/manual/05-appendices/B-security-checklist.md +84 -0
  62. package/docs/manual/05-appendices/C-glossary.md +40 -0
  63. package/docs/manual/05-appendices/D-bibliography.md +58 -0
  64. package/docs/manual/05-appendices/E-license.md +38 -0
  65. package/docs/manual/_toc.yml +58 -0
  66. package/docs/manual/command-index.md +62 -0
  67. package/docs/manual/concept-index.md +168 -0
  68. package/docs/operations/ATTESTATION.md +44 -0
  69. package/docs/operations/CI_CADENCE.md +107 -0
  70. package/docs/operations/CI_COMPOSITES.md +156 -0
  71. package/docs/operations/COMPLETIONS.md +123 -0
  72. package/docs/operations/COVERAGE.md +148 -0
  73. package/docs/operations/DRIFT.md +107 -0
  74. package/docs/operations/MAINTENANCE.md +63 -0
  75. package/docs/operations/MIGRATION.md +109 -0
  76. package/docs/operations/OPERATIONS.md +188 -0
  77. package/docs/operations/PERFORMANCE.md +133 -0
  78. package/docs/operations/RELIABILITY.md +122 -0
  79. package/docs/{ROADMAP.md → operations/ROADMAP.md} +57 -39
  80. package/docs/operations/TESTING.md +199 -0
  81. package/docs/operations/TRACEABILITY.md +35 -0
  82. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +65 -0
  83. package/docs/operations/VERSION_SYNC.md +393 -0
  84. package/docs/reference/ALIASES.md +131 -0
  85. package/docs/reference/ALIASES_CHEATSHEET.md +32 -0
  86. package/docs/reference/ALIASES_DEPRECATIONS.md +13 -0
  87. package/docs/reference/FEATURES.md +66 -0
  88. package/docs/reference/FONTS.md +112 -0
  89. package/docs/reference/PROFILES.md +69 -0
  90. package/docs/reference/SCREENSHOTS.md +121 -0
  91. package/docs/reference/SCRIPTS.md +71 -0
  92. package/docs/reference/SUPPORT_MATRIX.md +80 -0
  93. package/docs/reference/THEMES.md +117 -0
  94. package/docs/reference/TOOLS.md +109 -0
  95. package/docs/reference/UTILS.md +155 -0
  96. package/docs/security/AI_ACT_COMPLIANCE.md +94 -0
  97. package/docs/security/AUDIT_BYPASS.md +103 -0
  98. package/docs/security/AUTOMATION_SECRETS.md +26 -0
  99. package/docs/security/CI_EGRESS_ALLOWLIST.md +127 -0
  100. package/docs/security/COMPLIANCE.md +458 -0
  101. package/docs/security/DEPS_DEV_EXCEPTIONS.md +86 -0
  102. package/docs/security/ENCRYPTION.md +57 -0
  103. package/docs/security/FMEA.md +159 -0
  104. package/docs/security/HISTORY_FILTERING.md +132 -0
  105. package/docs/security/INCIDENT_RESPONSE.md +579 -0
  106. package/docs/security/INSTALL_VERIFICATION.md +122 -0
  107. package/docs/security/KEYS.md +49 -0
  108. package/docs/security/KEY_ROTATION.md +223 -0
  109. package/docs/security/MCP_POLICY.md +78 -0
  110. package/docs/security/POLICY_RELEASES.md +37 -0
  111. package/docs/security/README.md +28 -0
  112. package/docs/security/SCORECARD.md +80 -0
  113. package/docs/security/SECRETS.md +158 -0
  114. package/docs/security/SECURITY.md +45 -0
  115. package/docs/security/SECURITY_CHECKLIST.md +55 -0
  116. package/docs/security/SHELL_EXEMPTIONS.md +145 -0
  117. package/docs/security/SOUP_REGISTER.md +36 -0
  118. package/docs/security/THREAT_MODEL.md +130 -0
  119. package/docs/security/VERIFICATION_VALIDATION.md +228 -0
  120. package/docs/themes/README.md +10 -0
  121. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +30 -0
  122. package/docs/themes/hero-shot.svg +78 -0
  123. package/dot_config/.module-manifest.json +69 -0
  124. package/dot_config/ai/identity.md +23 -0
  125. package/dot_config/ai/patterns/architect.md +16 -0
  126. package/dot_config/ai/patterns/hardener.md +15 -0
  127. package/dot_config/ai/patterns/refactor.md +15 -0
  128. package/dot_config/aider/aider.conf.yml +32 -0
  129. package/dot_config/alacritty/alacritty.toml.tmpl +55 -0
  130. package/dot_config/ansible/ansible.cfg +11 -0
  131. package/dot_config/atuin/config.toml.tmpl +47 -0
  132. package/dot_config/bat/config +23 -0
  133. package/dot_config/brave-flags.conf.tmpl +7 -0
  134. package/dot_config/btop/btop.conf +16 -0
  135. package/dot_config/btop/themes/tokyonight.theme +34 -0
  136. package/dot_config/bun/bunfig.toml.tmpl +33 -0
  137. package/dot_config/claude/mcp_servers.json +20 -0
  138. package/dot_config/containers/containers.conf +14 -0
  139. package/dot_config/curl/dot_curlrc +18 -0
  140. package/dot_config/dlv/config.yml +39 -0
  141. package/dot_config/docker/config.json +15 -0
  142. package/dot_config/dotfiles/agent-card.json +29 -0
  143. package/dot_config/dotfiles/agent-profiles.json +92 -0
  144. package/dot_config/dotfiles/boot/README.md +13 -0
  145. package/dot_config/dotfiles/grub/README.md +13 -0
  146. package/dot_config/dotfiles/lock/README.md +13 -0
  147. package/dot_config/dotfiles/mcp-lock.json +33 -0
  148. package/dot_config/dotfiles/mcp-policy.json +52 -0
  149. package/dot_config/dotfiles/mcp-registry.json +47 -0
  150. package/dot_config/dotfiles/model-registry.json +20 -0
  151. package/dot_config/dotfiles/policy-bundles.json +38 -0
  152. package/dot_config/dotfiles/prompt-registry.json +16 -0
  153. package/dot_config/dotfiles/versions.env +18 -0
  154. package/dot_config/duf/duf.conf +6 -0
  155. package/dot_config/duti/defaults.duti +5 -0
  156. package/dot_config/emoji/emoji.txt +34 -0
  157. package/dot_config/environment.d/50-ssh-agent.conf +2 -0
  158. package/dot_config/environment.d/90-wayland.conf +19 -0
  159. package/dot_config/fastfetch/config.jsonc +28 -0
  160. package/dot_config/firefox/user.js.tmpl +58 -0
  161. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
  162. package/dot_config/fish/completions/dot.fish.tmpl +115 -0
  163. package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
  164. package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
  165. package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
  166. package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
  167. package/dot_config/fish/conf.d/init.fish.tmpl +172 -0
  168. package/dot_config/fish/config.fish.tmpl +44 -0
  169. package/dot_config/fish/fish_plugins +1 -0
  170. package/dot_config/fish/functions/_.fish +3 -0
  171. package/dot_config/fish/functions/_cached_eval.fish +131 -0
  172. package/dot_config/fish/functions/_cached_eval_clear.fish +17 -0
  173. package/dot_config/fish/functions/als.fish +46 -0
  174. package/dot_config/fish/functions/bg-upgrade.fish +7 -0
  175. package/dot_config/fish/functions/c.fish +3 -0
  176. package/dot_config/fish/functions/cat.fish +9 -0
  177. package/dot_config/fish/functions/d.fish +7 -0
  178. package/dot_config/fish/functions/dot.fish +34 -0
  179. package/dot_config/fish/functions/h.fish +3 -0
  180. package/dot_config/fish/functions/l.fish +7 -0
  181. package/dot_config/fish/functions/la.fish +7 -0
  182. package/dot_config/fish/functions/ll.fish +7 -0
  183. package/dot_config/fish/functions/log_error.fish +13 -0
  184. package/dot_config/fish/functions/log_info.fish +13 -0
  185. package/dot_config/fish/functions/lr.fish +7 -0
  186. package/dot_config/fish/functions/lra.fish +7 -0
  187. package/dot_config/fish/functions/ls.fish +7 -0
  188. package/dot_config/fish/functions/lt.fish +7 -0
  189. package/dot_config/fish/functions/lta.fish +7 -0
  190. package/dot_config/fish/functions/notify-run.fish +11 -0
  191. package/dot_config/fish/functions/q.fish +3 -0
  192. package/dot_config/fish/functions/silent-run.fish +7 -0
  193. package/dot_config/fish/functions/yy.fish +8 -0
  194. package/dot_config/flatpak/flatpak.list +4 -0
  195. package/dot_config/fontconfig/fonts.conf.tmpl +57 -0
  196. package/dot_config/foot/foot.ini.tmpl +33 -0
  197. package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
  198. package/dot_config/fzf/fzf.zsh +48 -0
  199. package/dot_config/gem/gemrc +9 -0
  200. package/dot_config/gh/config.yml +12 -0
  201. package/dot_config/ghostty/config.tmpl +165 -0
  202. package/dot_config/git/allowed_signers.tmpl +18 -0
  203. package/dot_config/git/attributes +12 -0
  204. package/dot_config/git/commit-template +10 -0
  205. package/dot_config/git/hooks/executable_commit-msg +146 -0
  206. package/dot_config/git/ignore +27 -0
  207. package/dot_config/gnupg/gpg-agent.conf +11 -0
  208. package/dot_config/go/golangci.yml +118 -0
  209. package/dot_config/go/gopls.json +30 -0
  210. package/dot_config/goose/config.yaml +29 -0
  211. package/dot_config/gtk-3.0/gtk.css.tmpl +184 -0
  212. package/dot_config/gtk-3.0/settings.ini.tmpl +27 -0
  213. package/dot_config/gtk-4.0/gtk.css.tmpl +252 -0
  214. package/dot_config/gtk-4.0/settings.ini.tmpl +18 -0
  215. package/dot_config/htop/htoprc +20 -0
  216. package/dot_config/inputrc +2 -0
  217. package/dot_config/ipython/profile_default/ipython_config.py +19 -0
  218. package/dot_config/just/justfile +122 -0
  219. package/dot_config/k9s/config.yaml +65 -0
  220. package/dot_config/k9s/skins/catppuccin-mocha.yaml +116 -0
  221. package/dot_config/kanshi/config.tmpl +22 -0
  222. package/dot_config/karabiner/karabiner.json +14 -0
  223. package/dot_config/kitty/kitty.conf.tmpl +53 -0
  224. package/dot_config/lazydocker/config.yml +186 -0
  225. package/dot_config/lazygit/config.yml +35 -0
  226. package/dot_config/mako/config +47 -0
  227. package/dot_config/mas/masapps.txt +5 -0
  228. package/dot_config/micro/settings.json +3 -0
  229. package/dot_config/mimeapps.list +77 -0
  230. package/dot_config/minikube/config.json +13 -0
  231. package/dot_config/mise/config.toml +99 -0
  232. package/dot_config/mongosh/mongoshrc.js +68 -0
  233. package/dot_config/mpv/input.conf +47 -0
  234. package/dot_config/mpv/mpv.conf +47 -0
  235. package/dot_config/mycli/myclirc +67 -0
  236. package/dot_config/nano/nanorc +28 -0
  237. package/dot_config/ncdu/config +12 -0
  238. package/dot_config/niri/config.kdl.tmpl +327 -0
  239. package/dot_config/nushell/aliases.nu +18 -0
  240. package/dot_config/nushell/cached_eval.nu +80 -0
  241. package/dot_config/nushell/completions.nu.tmpl +52 -0
  242. package/dot_config/nushell/config.nu.tmpl +86 -0
  243. package/dot_config/nushell/env.nu.tmpl +102 -0
  244. package/dot_config/nushell/functions.nu.tmpl +17 -0
  245. package/dot_config/nvim/init.lua +18 -0
  246. package/dot_config/nvim/lazy-lock.json +58 -0
  247. package/dot_config/nvim/lua/config/autocmds.lua +107 -0
  248. package/dot_config/nvim/lua/config/keymaps.lua +92 -0
  249. package/dot_config/nvim/lua/config/lazy.lua +44 -0
  250. package/dot_config/nvim/lua/config/options.lua +49 -0
  251. package/dot_config/nvim/lua/plugins/ai.lua +75 -0
  252. package/dot_config/nvim/lua/plugins/coding.lua +216 -0
  253. package/dot_config/nvim/lua/plugins/completion.lua +60 -0
  254. package/dot_config/nvim/lua/plugins/dap.lua +412 -0
  255. package/dot_config/nvim/lua/plugins/editor.lua +55 -0
  256. package/dot_config/nvim/lua/plugins/git.lua +10 -0
  257. package/dot_config/nvim/lua/plugins/lsp.lua +156 -0
  258. package/dot_config/nvim/lua/plugins/markdown.lua +18 -0
  259. package/dot_config/nvim/lua/plugins/rust.lua +34 -0
  260. package/dot_config/nvim/lua/plugins/sessions.lua +33 -0
  261. package/dot_config/nvim/lua/plugins/ui.lua +509 -0
  262. package/dot_config/paru/paru.conf +10 -0
  263. package/dot_config/pip/pip.conf.tmpl +32 -0
  264. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
  265. package/dot_config/pueue/pueue.yml +34 -0
  266. package/dot_config/pypoetry/config.toml +6 -0
  267. package/dot_config/pyrightconfig.json +5 -0
  268. package/dot_config/raycast/README.md +13 -0
  269. package/dot_config/redis/redisclirc +41 -0
  270. package/dot_config/ripgrep/ripgreprc +21 -0
  271. package/dot_config/shell/00-core-paths.sh.tmpl +134 -0
  272. package/dot_config/shell/05-core-safety.sh +48 -0
  273. package/dot_config/shell/10-secrets.sh +41 -0
  274. package/dot_config/shell/40-fzf-defaults.sh.tmpl +17 -0
  275. package/dot_config/shell/40-ls-colors.sh +49 -0
  276. package/dot_config/shell/50-logic-functions-core.sh.tmpl +11 -0
  277. package/dot_config/shell/50-logic-functions.sh.tmpl +11 -0
  278. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +65 -0
  279. package/dot_config/shell/90-ux-aliases.sh.tmpl +121 -0
  280. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +55 -0
  281. package/dot_config/shell/Brewfile +207 -0
  282. package/dot_config/shell/Brewfile.cask +92 -0
  283. package/dot_config/shell/Brewfile.cli +127 -0
  284. package/dot_config/shell/README.md +284 -0
  285. package/dot_config/shell/als_data.txt.tmpl +65 -0
  286. package/dot_config/shell/custom/auto_ls.zsh +20 -0
  287. package/dot_config/shell/custom/context_suggest.zsh +68 -0
  288. package/dot_config/shell/custom/error_analysis.zsh +45 -0
  289. package/dot_config/sops/dot_sops.yaml +23 -0
  290. package/dot_config/starship.toml.tmpl +202 -0
  291. package/dot_config/swaylock/config +43 -0
  292. package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
  293. package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
  294. package/dot_config/systemd/user/pueued.service +12 -0
  295. package/dot_config/systemd/user/ssh-agent.service +12 -0
  296. package/dot_config/task/Taskfile.yml +86 -0
  297. package/dot_config/tflint/tflint.hcl +9 -0
  298. package/dot_config/tmux/tmux.conf.tmpl +223 -0
  299. package/dot_config/topgrade.toml.tmpl +54 -0
  300. package/dot_config/user-dirs.dirs +10 -0
  301. package/dot_config/vscode/extensions.txt +11 -0
  302. package/dot_config/vscode/settings.json.tmpl +82 -0
  303. package/dot_config/waybar/config.jsonc.tmpl +90 -0
  304. package/dot_config/waybar/style.css.tmpl +211 -0
  305. package/dot_config/wezterm/wezterm.lua.tmpl +64 -0
  306. package/dot_config/wget/wgetrc +12 -0
  307. package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
  308. package/dot_config/yarn/yarnrc.yml +36 -0
  309. package/dot_config/yazi/keymap.toml +67 -0
  310. package/dot_config/yazi/theme.toml +102 -0
  311. package/dot_config/yazi/yazi.toml +40 -0
  312. package/dot_config/zathura/zathurarc +52 -0
  313. package/dot_config/zellij/config.kdl.tmpl +79 -0
  314. package/dot_config/zsh/dot_zprofile +7 -0
  315. package/dot_config/zsh/dot_zshenv +5 -0
  316. package/dot_config/zsh/dot_zshrc.tmpl +635 -0
  317. package/dot_config/zsh/rc.d/00-alias-shims.zsh +99 -0
  318. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +18 -0
  319. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +28 -0
  320. package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
  321. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +214 -0
  322. package/dot_config/zsh/rc.d/40-bell.zsh +20 -0
  323. package/dot_config/zsh/rc.d/50-login-fortune.zsh +9 -0
  324. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
  325. package/dot_local/bin/executable_ai-update +195 -0
  326. package/dot_local/bin/executable_ai_core +152 -0
  327. package/dot_local/bin/executable_antigravity +11 -0
  328. package/dot_local/bin/executable_b64 +84 -0
  329. package/dot_local/bin/executable_bm +79 -0
  330. package/dot_local/bin/executable_cb +39 -0
  331. package/dot_local/bin/executable_dot +596 -0
  332. package/dot_local/bin/executable_dot-ai +36 -0
  333. package/dot_local/bin/executable_dot-bootstrap +77 -0
  334. package/dot_local/bin/executable_dot-launch-or-focus +52 -0
  335. package/dot_local/bin/executable_dot-load-benchmark +31 -0
  336. package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
  337. package/dot_local/bin/executable_dot-theme-sync +952 -0
  338. package/dot_local/bin/executable_dot_completion +57 -0
  339. package/dot_local/bin/executable_dtags +28 -0
  340. package/dot_local/bin/executable_epoch +67 -0
  341. package/dot_local/bin/executable_extract +41 -0
  342. package/dot_local/bin/executable_gbd +52 -0
  343. package/dot_local/bin/executable_gd +42 -0
  344. package/dot_local/bin/executable_git-ai-commit +175 -0
  345. package/dot_local/bin/executable_git-ai-diff +169 -0
  346. package/dot_local/bin/executable_gl +101 -0
  347. package/dot_local/bin/executable_hash +161 -0
  348. package/dot_local/bin/executable_hashsum +160 -0
  349. package/dot_local/bin/executable_hex +115 -0
  350. package/dot_local/bin/executable_jsonv +78 -0
  351. package/dot_local/bin/executable_jwt +94 -0
  352. package/dot_local/bin/executable_kill-port +75 -0
  353. package/dot_local/bin/executable_lorem +118 -0
  354. package/dot_local/bin/executable_mkscript +35 -0
  355. package/dot_local/bin/executable_monitor +56 -0
  356. package/dot_local/bin/executable_myip +51 -0
  357. package/dot_local/bin/executable_notify +24 -0
  358. package/dot_local/bin/executable_open +38 -0
  359. package/dot_local/bin/executable_pw +27 -0
  360. package/dot_local/bin/executable_rec-start +46 -0
  361. package/dot_local/bin/executable_rec-stop +35 -0
  362. package/dot_local/bin/executable_regex +132 -0
  363. package/dot_local/bin/executable_start-niri +8 -0
  364. package/dot_local/bin/executable_tmux-sessionizer +314 -0
  365. package/dot_local/bin/executable_tour +177 -0
  366. package/dot_local/bin/executable_up +23 -0
  367. package/dot_local/bin/executable_update +142 -0
  368. package/dot_local/bin/executable_uuid +87 -0
  369. package/dot_local/bin/executable_win +32 -0
  370. package/dot_local/bin/executable_yamlv +57 -0
  371. package/dot_local/share/bash-completion/completions/dot +72 -0
  372. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  373. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  374. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  375. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  376. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  377. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  378. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  379. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  380. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  381. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  382. package/dot_local/share/man/man1/dot.1 +149 -0
  383. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
  384. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
  385. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
  386. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
  387. package/dot_local/share/zsh/completions/.keep +0 -0
  388. package/dot_local/share/zsh/completions/_dot +283 -0
  389. package/install.sh +350 -0
  390. package/package.json +1 -1
  391. package/scripts/ci/check-copyright-headers.sh +96 -0
  392. package/scripts/ci/check-dangerous-chmod.sh +19 -0
  393. package/scripts/ci/check-deps-dev.sh +236 -0
  394. package/scripts/ci/check-insecure-tls.sh +61 -0
  395. package/scripts/ci/check-regression-traceability.sh +67 -0
  396. package/scripts/ci/check-shell-preamble.sh +106 -0
  397. package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
  398. package/scripts/ci/install-chezmoi-verified.sh +64 -0
  399. package/scripts/ci/run-coverage.sh +362 -0
  400. package/scripts/ci/validate-chezmoidata.sh +25 -0
  401. package/scripts/ci/validate-ci-config.sh +224 -0
  402. package/scripts/demo/record.sh +42 -0
  403. package/scripts/diagnostics/a2a-conformance.sh +162 -0
  404. package/scripts/diagnostics/alias-governance.sh +137 -0
  405. package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
  406. package/scripts/diagnostics/aliases-manifest.sh +31 -0
  407. package/scripts/diagnostics/benchmark.sh +381 -0
  408. package/scripts/diagnostics/conflicts.sh +72 -0
  409. package/scripts/diagnostics/doctor-unified.sh +38 -0
  410. package/scripts/diagnostics/doctor.sh +709 -0
  411. package/scripts/diagnostics/drift-dashboard.sh +201 -0
  412. package/scripts/diagnostics/health.sh +614 -0
  413. package/scripts/diagnostics/history-analysis.sh +85 -0
  414. package/scripts/diagnostics/mcp-doctor.sh +575 -0
  415. package/scripts/diagnostics/perf.sh +452 -0
  416. package/scripts/diagnostics/scorecard.sh +118 -0
  417. package/scripts/diagnostics/secret-governance.sh +58 -0
  418. package/scripts/diagnostics/security-score.sh +438 -0
  419. package/scripts/diagnostics/smoke-test.sh +87 -0
  420. package/scripts/diagnostics/snapshot.sh +89 -0
  421. package/scripts/diagnostics/verify.sh +107 -0
  422. package/scripts/{verify_state.sh → diagnostics/verify_state.sh} +22 -22
  423. package/scripts/diagnostics/version-locks.sh +79 -0
  424. package/scripts/diagnostics/workstation-attestation.sh +186 -0
  425. package/scripts/docs/build-manual.sh +883 -0
  426. package/scripts/docs/check-manual.sh +213 -0
  427. package/scripts/dot/commands/agent.sh +474 -0
  428. package/scripts/dot/commands/ai.sh +481 -0
  429. package/scripts/dot/commands/aliases.sh +250 -0
  430. package/scripts/dot/commands/appearance.sh +80 -0
  431. package/scripts/dot/commands/core.sh +185 -0
  432. package/scripts/dot/commands/diagnostics.sh +229 -0
  433. package/scripts/dot/commands/fleet.sh +399 -0
  434. package/scripts/dot/commands/lint.sh +177 -0
  435. package/scripts/dot/commands/manual.sh +168 -0
  436. package/scripts/dot/commands/meta.sh +248 -0
  437. package/scripts/dot/commands/patterns.sh +54 -0
  438. package/scripts/dot/commands/restore.sh +231 -0
  439. package/scripts/dot/commands/secrets.sh +223 -0
  440. package/scripts/dot/commands/security.sh +76 -0
  441. package/scripts/dot/commands/tools.sh +469 -0
  442. package/scripts/dot/data/alias-deprecations.tsv +2 -0
  443. package/scripts/dot/lib/bento.sh +50 -0
  444. package/scripts/dot/lib/log.sh +200 -0
  445. package/scripts/dot/lib/platform.sh +99 -0
  446. package/scripts/dot/lib/ui.sh +518 -0
  447. package/scripts/dot/lib/utils.sh +377 -0
  448. package/scripts/fonts/install-nerd-fonts.sh +68 -0
  449. package/scripts/fonts/patch-fonts.sh +35 -0
  450. package/scripts/git-hooks/install.sh +11 -0
  451. package/scripts/git-hooks/pre-commit +12 -0
  452. package/scripts/git-hooks/pre-commit-audit.sh +145 -0
  453. package/scripts/git-hooks/pre-push +92 -0
  454. package/scripts/git-hooks/prepare-commit-msg +29 -0
  455. package/scripts/lib/secrets_provider.sh +158 -0
  456. package/scripts/maintenance/check-updates.sh +131 -0
  457. package/scripts/ops/ai-setup.sh +55 -0
  458. package/scripts/ops/bundle.sh +77 -0
  459. package/scripts/ops/chaos.sh +49 -0
  460. package/scripts/ops/chezmoi-apply.sh +270 -0
  461. package/scripts/ops/chezmoi-diff.sh +15 -0
  462. package/scripts/ops/chezmoi-remove.sh +45 -0
  463. package/scripts/ops/chezmoi-update.sh +48 -0
  464. package/scripts/ops/heal-chezmoi.sh +86 -0
  465. package/scripts/ops/heal-system.sh +128 -0
  466. package/scripts/ops/heal-tools.sh +340 -0
  467. package/scripts/ops/heal.sh +222 -0
  468. package/scripts/ops/post-apply-repair.sh +106 -0
  469. package/scripts/ops/prewarm.sh +127 -0
  470. package/scripts/ops/release.sh +252 -0
  471. package/scripts/ops/rollback.sh +589 -0
  472. package/scripts/ops/setup.sh +137 -0
  473. package/scripts/ops/teleport.sh +33 -0
  474. package/scripts/qa/coverage-baseline.sh +60 -0
  475. package/scripts/qa/docs-coverage.sh +111 -0
  476. package/scripts/qa/powershell-contract.ps1 +95 -0
  477. package/scripts/qa/reliability-audit.sh +138 -0
  478. package/scripts/qa/traceability-coverage.sh +116 -0
  479. package/scripts/qa/validate-examples.sh +26 -0
  480. package/scripts/qa/wsl-contract.sh +11 -0
  481. package/scripts/release/package-policy-bundles.sh +125 -0
  482. package/scripts/secrets/age-init.sh +70 -0
  483. package/scripts/secrets/create-secrets-file.sh +45 -0
  484. package/scripts/secrets/encrypt-ssh-key.sh +43 -0
  485. package/scripts/security/backup.sh +57 -0
  486. package/scripts/security/dns-doh.sh +51 -0
  487. package/scripts/security/encryption-check.sh +54 -0
  488. package/scripts/security/enforce-policies.sh +334 -0
  489. package/scripts/security/firewall.sh +90 -0
  490. package/scripts/security/lock-configs.sh +57 -0
  491. package/scripts/security/lock-screen.sh +55 -0
  492. package/scripts/security/manage-secrets.sh +428 -0
  493. package/scripts/security/ssh-cert.sh +203 -0
  494. package/scripts/security/telemetry-kill.sh +50 -0
  495. package/scripts/security/usb-safety.sh +51 -0
  496. package/scripts/theme/apply-gnome-theme.sh +328 -0
  497. package/scripts/theme/extract-theme.py +677 -0
  498. package/scripts/theme/install-boot-logo.sh +62 -0
  499. package/scripts/theme/install-catppuccin-themes.sh +370 -0
  500. package/scripts/theme/install-cursors.sh +25 -0
  501. package/scripts/theme/install-file-icons.sh +26 -0
  502. package/scripts/theme/install-grub-theme.sh +61 -0
  503. package/scripts/theme/install-lock-icon.sh +30 -0
  504. package/scripts/theme/merge-wallpaper.sh +145 -0
  505. package/scripts/theme/rebuild-themes.sh +309 -0
  506. package/scripts/theme/switch.sh +431 -0
  507. package/scripts/theme/wallpaper-rotate.sh +136 -0
  508. package/scripts/theme/wallpaper-sync.sh +397 -0
  509. package/scripts/tools/cmatrix.sh +21 -0
  510. package/scripts/{detect-collisions.py → tools/detect-collisions.py} +2 -2
  511. package/scripts/tools/emoji-picker.sh +48 -0
  512. package/scripts/tools/figlet-banner.sh +18 -0
  513. package/scripts/tools/log-rotate.sh +30 -0
  514. package/scripts/tools/lolcat-wrap.sh +19 -0
  515. package/scripts/tools/pipes.sh +48 -0
  516. package/scripts/tuning/linux.sh +185 -0
  517. package/scripts/tuning/macos.sh +55 -0
  518. package/scripts/uninstall.sh +85 -0
  519. package/scripts/version-sync.sh +487 -0
  520. package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
  521. package/templates/chezmoi-data/mac-m1.toml.example +16 -0
  522. package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
  523. package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
  524. package/templates/projects/go/.github/workflows/ci.yml +31 -0
  525. package/templates/projects/go/README.md +4 -0
  526. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
  527. package/templates/projects/go/go.sum +0 -0
  528. package/templates/projects/molecule/README.md +7 -0
  529. package/templates/projects/molecule/converge.yml +7 -0
  530. package/templates/projects/molecule/molecule.yml +16 -0
  531. package/templates/projects/node/.github/workflows/ci.yml +30 -0
  532. package/templates/projects/node/README.md +4 -0
  533. package/templates/projects/node/package-lock.json +12 -0
  534. package/templates/projects/node/src/index.js +1 -0
  535. package/templates/projects/packer/README.md +15 -0
  536. package/templates/projects/packer/main.pkr.hcl +15 -0
  537. package/templates/projects/python/.github/workflows/ci.yml +34 -0
  538. package/templates/projects/python/README.md +4 -0
  539. package/templates/projects/python/pyproject.toml +15 -0
  540. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  541. package/templates/projects/python/tests/test_basic.py +1 -0
  542. package/docs/ARCHITECTURE.md +0 -62
  543. package/docs/COMPLIANCE.md +0 -47
  544. package/docs/OPERATIONS.md +0 -103
  545. package/docs/PR_DESCRIPTION.md +0 -150
  546. package/docs/ROADMAP_legacy.md +0 -556
  547. package/docs/SECURITY_CHECKLIST.md +0 -25
  548. package/docs/TASK.md +0 -99
  549. package/docs/WALKTHROUGH.md +0 -46
  550. package/scripts/backup.sh +0 -142
  551. package/scripts/banner.sh +0 -20
  552. package/scripts/benchmark.sh +0 -20
  553. package/scripts/build.sh +0 -41
  554. package/scripts/clean.sh +0 -31
  555. package/scripts/compile.sh +0 -54
  556. package/scripts/copy.sh +0 -108
  557. package/scripts/doctor.sh +0 -79
  558. package/scripts/dotfiles.sh +0 -63
  559. package/scripts/download.sh +0 -35
  560. package/scripts/help.sh +0 -57
  561. package/scripts/lock-configs.sh +0 -57
  562. package/scripts/package.sh +0 -46
  563. package/scripts/ssh.sh +0 -55
  564. package/scripts/teleport.sh +0 -23
  565. package/scripts/test-aliases.sh +0 -25
  566. package/scripts/test_smoke.sh +0 -88
  567. package/scripts/unpack.sh +0 -28
@@ -0,0 +1,109 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Migration and Upgrade Guide
6
+
7
+ ## How to Upgrade
8
+
9
+ ```bash
10
+ # 1. Pre-upgrade check
11
+ dot doctor
12
+
13
+ # 2. Pull latest changes
14
+ cd ~/.dotfiles && git pull
15
+
16
+ # 3. Apply with diagnostics
17
+ dot apply
18
+
19
+ # 4. Post-upgrade verification
20
+ dot doctor
21
+ ```
22
+
23
+ ## Version History
24
+
25
+ ### v0.2.501 (Current)
26
+
27
+ - **Wallpaper-driven theme engine** — themes auto-generated from wallpapers via K-Means in CIELAB color space (no hand-crafted themes)
28
+ - **Dynamic HEIC support** — custom wallpapers ship as Apple-compatible single-file dynamic HEIC; macOS auto-switches dark/light
29
+ - **System wallpaper discovery** — pulls themes from `/System/Library/Desktop Pictures/` (macOS) and `/usr/share/backgrounds/` (Linux)
30
+ - **`dot theme rebuild`** — parallel K-Means generation (4 jobs), mtime-based caching, orphan cleanup
31
+ - **WCAG AAA enforcement** — all generated themes pass 7:1 contrast for fg/bg, accent_text/accent, c15/bg
32
+ - **macOS accent from wallpaper hue** — `dot-theme-sync` reads `macos_accent` from themes.toml and forces UI refresh
33
+ - **HEIC → PNG auto-conversion** on Linux for non-HEIC-aware desktops
34
+ - **Build artifact redirection** — Cargo, Go, pip, uv, Zig caches → `/tmp/builds/` (cleared on reboot)
35
+ - **CI dedup** — `ci-enforced.yml` reuses `reusable-shell-lint.yml` and `reusable-test-suite.yml`
36
+
37
+ ### v0.2.500
38
+
39
+ - Added AI CLIs: Autohand Code, Mistral Vibe, Qwen Code, ZAI
40
+ - Removed Cline CLI (broken upstream dependency)
41
+ - Interactive mise installer for missing AI providers
42
+ - Mise-first provisioning for all AI tools
43
+ - User extension points: rc.d.local, modules.d, custom dot commands
44
+ - SSH config hardening template
45
+ - Ghostty and WezTerm terminal configs
46
+ - Modern CLI tools: delta, fd, dust, bottom, lazygit, lazydocker, tldr
47
+ - Auto-prewarm after dot apply
48
+ - Expanded Atuin history filters
49
+
50
+ ### v0.2.497
51
+
52
+ - Theme system with Catppuccin integration
53
+ - Linux desktop parity (Niri, Waybar, Fuzzel)
54
+ - AI tooling expansion (Kiro, OpenCode)
55
+ - Coverage contracts and QA docs
56
+
57
+ ### v0.2.496
58
+
59
+ - Verified chezmoi installer
60
+ - Shell startup optimization
61
+ - Property-based tests
62
+
63
+ ## Breaking Changes
64
+
65
+ If you are upgrading from v0.2.501 or earlier, note these changes:
66
+
67
+ 1. **`themes.toml` is now generated** — do not hand-edit. Run `dot theme rebuild` to regenerate from wallpapers
68
+ 2. **Theme names changed** — old hand-crafted names (e.g. `catppuccin-mocha`, `macos-tahoe-dark` with hardcoded palettes) are replaced by wallpaper-derived names. The picker only shows paired wallpaper themes.
69
+ 3. **Wallpaper format** — custom wallpapers should be dynamic HEIC (single file, both appearances). Use `bash scripts/theme/merge-wallpaper.sh` to merge separate dark/light pairs.
70
+ 4. **Build caches relocated** — Cargo/Go/pip/uv/Zig now write to `/tmp/builds/`. Restart your shell after upgrade so `mise [env]` picks up the new paths.
71
+
72
+ If you are upgrading from v0.2.501 or earlier:
73
+
74
+ 1. **Cline CLI removed** — if you used `dot cline`, switch to a different AI CLI
75
+ 2. **AI tools now install through mise** — run `mise install` to set up AI providers
76
+ 3. **SSH config hardening** — check `~/.ssh/config` after apply, as it may change your current settings
77
+
78
+ ## Rollback
79
+
80
+ If something goes wrong after an upgrade:
81
+
82
+ ```bash
83
+ # Quick rollback to previous state
84
+ dot rollback
85
+
86
+ # Rollback to specific backup
87
+ dot rollback status # List available backups
88
+ dot rollback rollback-to 3 # Restore backup #3
89
+
90
+ # Git-based rollback
91
+ cd ~/.dotfiles
92
+ git log --oneline -10 # Find last good commit
93
+ git reset --hard HEAD~1 # Reset to previous commit
94
+ dot apply # Re-apply
95
+ ```
96
+
97
+ ## Before You Upgrade
98
+
99
+ - [ ] Run `dot doctor` — make sure everything is healthy
100
+ - [ ] Run `dot diff` — review any pending changes
101
+ - [ ] Back up custom configs: `dot rollback backup`
102
+ - [ ] Read CHANGELOG.md for breaking changes
103
+
104
+ ## After You Upgrade
105
+
106
+ - [ ] Run `dot doctor` — make sure the upgrade worked
107
+ - [ ] Run `dot prewarm` — rebuild shell caches
108
+ - [ ] Restart your shell: `exec zsh`
109
+ - [ ] Test AI tools: `dot ai`
@@ -0,0 +1,188 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Operations
6
+
7
+ Core workflows for keeping your dotfiles running across platforms.
8
+
9
+ ---
10
+
11
+ ## Platforms
12
+
13
+ ### macOS
14
+
15
+ **Primary manager**: `Homebrew`
16
+
17
+ - **Update**:
18
+
19
+ ```bash
20
+ chezmoi update
21
+ ```
22
+
23
+ This runs `brew bundle install` behind the scenes to reconcile against the declared Brewfiles.
24
+ - **Permission issues**: `sudo chown -R $(whoami) $(brew --prefix)/*`
25
+ - **Drift**: Run `brew bundle cleanup` to remove unmanaged packages.
26
+
27
+ ### Linux (Debian, Ubuntu, Kali)
28
+
29
+ **Primary manager**: `apt-get` / `snap`
30
+
31
+ - **Update**:
32
+
33
+ ```bash
34
+ sudo apt update && sudo apt upgrade -y
35
+ chezmoi update
36
+ ```
37
+
38
+ On Linux, `chezmoi` focuses on configuration. Package updates work best through the OS package manager to avoid `sudo` conflicts.
39
+ - **Font issues**: If icons are missing, run `./install/provision/run_onchange_50-install-fonts.sh.tmpl` manually via `chezmoi apply` or source directly with `bash`.
40
+
41
+ ### Windows (WSL2)
42
+
43
+ **Primary manager**: `apt-get` (inside WSL)
44
+
45
+ - **Update**: Same as Linux.
46
+ - **Clipboard**: Dotfiles configures `win32yank.exe` automatically for clipboard sharing.
47
+ - **Performance**: Keep project files inside the Linux filesystem (`~/projects`), not in `/mnt/c/`, for dramatically better IO.
48
+
49
+ ---
50
+
51
+ ## Workflows
52
+
53
+ ### Apply changes
54
+
55
+ After editing any config file:
56
+
57
+ ```bash
58
+ dot apply
59
+ ```
60
+
61
+ Triggers `dot_zshrc` reload and audit logging.
62
+
63
+ ### Upgrade-safe apply (recommended)
64
+
65
+ ```bash
66
+ git pull
67
+ DOTFILES_NONINTERACTIVE=1 dot apply --force
68
+ dot doctor
69
+ ```
70
+
71
+ `dot apply` includes post-apply checks that:
72
+
73
+ - Remove stale read-only zsh cache files (`~/.config/shell/*.zwc`, `~/.config/zsh/**/*.zwc`)
74
+ - Validate that `dot` resolves to `~/.local/bin/dot` in a fresh login shell
75
+
76
+ Finish by reloading your session (`exec zsh`) or restarting the terminal.
77
+
78
+ ### Async updates
79
+
80
+ Run updates in the background; you'll get a status banner on the next shell launch:
81
+
82
+ ```bash
83
+ dot update --async
84
+ ```
85
+
86
+ ### Roll back
87
+
88
+ If an update breaks your setup:
89
+
90
+ ```bash
91
+ cd ~/.dotfiles
92
+ git reset --hard HEAD@{1}
93
+ chezmoi apply
94
+ ```
95
+
96
+ ### Offline / air-gapped mode
97
+
98
+ ```bash
99
+ # 1. On a connected machine, bundle your setup:
100
+ dot bundle ~/Downloads
101
+
102
+ # 2. Transfer the archive to the offline machine, then:
103
+ tar --zstd -xf dotfiles_offline_bundle_*.tar.zst -P
104
+ cd ~/.dotfiles
105
+ ./install.sh --force
106
+ ```
107
+
108
+ ### Pre-warm caches
109
+
110
+ Regenerate all tool caches to eliminate shell startup latency:
111
+
112
+ ```bash
113
+ dot prewarm
114
+ ```
115
+
116
+ ### Debug
117
+
118
+ If something's slow or broken:
119
+
120
+ 1. **Check health**:
121
+
122
+ ```bash
123
+ dot doctor
124
+ dot health --fix
125
+ ```
126
+
127
+ 2. **Smoke test**:
128
+
129
+ ```bash
130
+ dot smoke-test
131
+ ```
132
+
133
+ 3. **Scorecard**:
134
+
135
+ ```bash
136
+ dot scorecard
137
+ ```
138
+
139
+ 4. **Chaos testing (self-healing)**:
140
+
141
+ ```bash
142
+ dot chaos --force
143
+ dot heal --force
144
+ ```
145
+
146
+ 5. **Startup profiling**:
147
+
148
+ ```bash
149
+ dot perf --profile
150
+ ```
151
+
152
+ 6. **Post-merge verification**:
153
+
154
+ ```bash
155
+ dot verify
156
+ ```
157
+
158
+ 7. **Inspect alias behavior**:
159
+
160
+ ```bash
161
+ dot aliases list
162
+ dot aliases why dprune
163
+ DOTFILES_ALIAS_POLICY=strict bash ~/.dotfiles/scripts/diagnostics/alias-governance.sh
164
+ ```
165
+
166
+ 8. **Verbose mode**:
167
+
168
+ ```bash
169
+ DOTFILES_DEBUG=1 dot apply
170
+ ```
171
+
172
+ ### Safety flags
173
+
174
+ Destructive aliases are disabled by default. Enable only when needed:
175
+
176
+ ```bash
177
+ export DOTFILES_ENABLE_DANGEROUS_ALIASES=1
178
+ ```
179
+
180
+ ### Tiered alias loading
181
+
182
+ Core aliases load eagerly. Ecosystem aliases are lazy-loaded and can be filtered:
183
+
184
+ ```bash
185
+ export DOTFILES_ALIAS_ECOSYSTEMS=python,node
186
+ ```
187
+
188
+ Valid ecosystem tags: `python`, `node`, `rust`, `network`, `legacy`.
@@ -0,0 +1,133 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Performance — Budgets, Baselines, Regression Detection
6
+
7
+ This page documents the per-shell startup budget, the baseline
8
+ lifecycle, and the regression-alert pipeline. Managed under
9
+ [#863](https://github.com/sebastienrousseau/dotfiles/issues/863).
10
+
11
+ ## Targets
12
+
13
+ | Shell | Target (mean ms) | Override env var |
14
+ |---|---|---|
15
+ | **zsh** | 250 | `DOTFILES_PERF_TARGET_ZSH_MS` |
16
+ | **bash** | 60 | `DOTFILES_PERF_TARGET_BASH_MS` |
17
+ | **fish** | 200 | `DOTFILES_PERF_TARGET_FISH_MS` |
18
+ | **nu** | 500 | `DOTFILES_PERF_TARGET_NU_MS` |
19
+ | **pwsh** | 600 | `DOTFILES_PERF_TARGET_PWSH_MS` |
20
+
21
+ `dot perf` measures every installed shell and flags any whose mean
22
+ exceeds its target. The numbers come from
23
+ [`scripts/diagnostics/perf.sh`](../../scripts/diagnostics/perf.sh) —
24
+ warm-up + 3 runs by default.
25
+
26
+ ## The baseline
27
+
28
+ `$XDG_CACHE_HOME/dotfiles/perf-baseline.json` records the per-shell
29
+ means at a known-good point in time. The file is a JSON object:
30
+
31
+ ```json
32
+ {
33
+ "recorded_at": "2026-05-13T00:00:00Z",
34
+ "regression_pct": 10,
35
+ "shells": {
36
+ "zsh": 41,
37
+ "bash": 28,
38
+ "fish": 190
39
+ }
40
+ }
41
+ ```
42
+
43
+ ### Recording a baseline
44
+
45
+ ```bash
46
+ dot perf --baseline # all installed shells
47
+ dot perf --baseline --shell zsh # just one shell
48
+ ```
49
+
50
+ Do this after:
51
+
52
+ - A fresh chezmoi apply on a new machine.
53
+ - Any deliberate startup-cost change (deferred-load PRs, new plugin).
54
+ - A `mise install` that bumps a hot-path tool's version.
55
+
56
+ ### Regression detection
57
+
58
+ Every subsequent `dot perf` invocation compares the current
59
+ measurement against the baseline. When any shell exceeds the
60
+ baseline by more than `DOTFILES_PERF_REGRESSION_PCT` (default 10%),
61
+ the run reports under a "Baseline regressions" section. JSON output
62
+ includes a `regressions: [...]` array and a `regression_count`
63
+ counter so dashboards can alert.
64
+
65
+ ```bash
66
+ dot perf # warns on regression
67
+ dot perf --no-baseline-check # skip the comparison entirely
68
+ DOTFILES_PERF_REGRESSION_PCT=5 dot perf # tighter threshold
69
+ ```
70
+
71
+ ## Per-tool timings
72
+
73
+ `_cached_eval` (the zsh/fish primitive that caches expensive tool
74
+ init like `starship init zsh`) writes one JSONL row per call to
75
+ `$XDG_STATE_HOME/dotfiles/eval-timings.jsonl` when
76
+ `EVALCACHE_TIMING=1` is set in the environment. Aggregating that log
77
+ gives a per-tool breakdown of where startup time goes.
78
+
79
+ ```bash
80
+ EVALCACHE_TIMING=1 zsh -i -c exit # generate data
81
+ dot perf --by-tool # see the aggregation
82
+ dot perf --reset # clear the log
83
+ ```
84
+
85
+ The aggregator reports `count / total / mean / p50 / p95 / p99`
86
+ per `_cached_eval` label. P95 + P99 surface the tail-latency cases
87
+ that mean alone misses (e.g. a cache miss after a tool upgrade
88
+ spiking from 5ms steady-state to 200ms once).
89
+
90
+ ## `dot doctor` Performance section
91
+
92
+ `dot doctor` surfaces (when each data source is available):
93
+
94
+ - Whether `_cached_eval`'s on-disk tool caches are fresh vs stale
95
+ for mise, starship, zoxide, atuin, fzf, direnv.
96
+ - Any installed slow-init tools NOT yet wrapped in `_cached_eval`
97
+ (nvm, fnm, pyenv, pnpm, …).
98
+ - Hyperfine-measured startup latency vs target.
99
+ - Baseline age + top-3 slowest tools from the EVALCACHE_TIMING log.
100
+
101
+ ## CI workflow
102
+
103
+ [`.github/workflows/perf-baseline.yml`](../../.github/workflows/perf-baseline.yml)
104
+ runs weekly on Sunday at 03:00 UTC on `ubuntu-latest`. It:
105
+
106
+ 1. Restores the previous week's baseline from a workflow artifact.
107
+ 2. Runs `dot perf --json` against the freshly-applied dotfiles.
108
+ 3. Compares current vs restored baseline; opens (or comments on) a
109
+ tracking issue if any shell regressed by >10%.
110
+ 4. Uploads the new measurement as the next week's restore source.
111
+
112
+ The CI workflow always runs against the same `ubuntu-latest` image
113
+ so the comparison is machine-stable; per-developer baselines live on
114
+ each developer's box and aren't synced.
115
+
116
+ ## Adjusting the budget
117
+
118
+ Per-shell targets live in
119
+ [`scripts/diagnostics/perf.sh`](../../scripts/diagnostics/perf.sh)
120
+ under `shell_target_for()`. Bumping a target should always come with:
121
+
122
+ - A commit-message rationale explaining why slower is acceptable
123
+ (e.g. "added a required Carapace completion at startup").
124
+ - A new baseline recording (`dot perf --baseline`).
125
+ - A note here under "Targets" with the new value.
126
+
127
+ ## References
128
+
129
+ - [`scripts/diagnostics/perf.sh`](../../scripts/diagnostics/perf.sh)
130
+ - [`tests/unit/diagnostics/test_perf_percentiles.sh`](../../tests/unit/diagnostics/test_perf_percentiles.sh) — percentile math contract
131
+ - [`.github/workflows/perf-baseline.yml`](../../.github/workflows/perf-baseline.yml)
132
+ - ADR-002 (Shell Performance Optimization)
133
+ - Issue [#863](https://github.com/sebastienrousseau/dotfiles/issues/863)
@@ -0,0 +1,122 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+ {% raw %}
5
+
6
+ # Reliability
7
+
8
+ ## Reliability scorecard
9
+
10
+ - Unit coverage: 100% module mapping target, enforced by `tests/framework/module_coverage.sh`
11
+ - Integration depth: 11 integration test files in `tests/integration/`
12
+ - Regression automation: 436 discovered test files and 2149 named tests in the current baseline
13
+
14
+ ## Coverage gap map
15
+
16
+ | Module | Missing path | Risk level | Proposed test case |
17
+ | :--- | :--- | :--- | :--- |
18
+ | `scripts/qa/reliability-audit.sh` | Quick mode and integration mode branch handling | Closed | Covered by `tests/unit/misc/test_qa_reliability_behaviour.sh` |
19
+ | `scripts/git-hooks/pre-push` | Audit command failure path | Closed | Covered by `tests/unit/misc/test_git_hooks_pre_push_behaviour.sh` |
20
+ | `tests/framework/module_coverage.sh` | False-positive module matches | Closed | Covered by `tests/unit/misc/test_module_coverage_behaviour.sh` |
21
+ | `examples/*.sh` | Drift between examples and real commands | Closed | Examples execute in CI through `Examples Contract` and `validate-examples.sh` |
22
+
23
+ ## Integration boundaries
24
+
25
+ ```mermaid
26
+ flowchart LR
27
+ Dev[Developer] --> Hook[pre-push hook]
28
+ Hook --> Audit[reliability-audit.sh]
29
+ Audit --> Syntax[Shell syntax gate]
30
+ Audit --> Unit[Unit suite]
31
+ Audit --> Coverage[Module coverage]
32
+ Audit --> Examples[Example validation]
33
+ Audit --> WSL[WSL contract]
34
+ Audit --> Integration[Integration suite]
35
+ Integration --> Repo[Dotfiles workflows]
36
+ WSL --> Repo
37
+ ```
38
+
39
+ ```mermaid
40
+ sequenceDiagram
41
+ participant Dev as Developer
42
+ participant Git as Git client
43
+ participant Hook as pre-push
44
+ participant Audit as reliability-audit.sh
45
+ participant Suite as tests/framework/test_runner.sh
46
+ participant Cov as module_coverage.sh
47
+ participant Ex as validate-examples.sh
48
+ participant WSL as wsl-contract.sh
49
+
50
+ Dev->>Git: git push
51
+ Git->>Hook: invoke pre-push
52
+ Hook->>Hook: verify signed commits
53
+ Hook->>Audit: run quick gate
54
+ Audit->>Suite: run unit suite
55
+ Audit->>Cov: enforce 100% module mapping
56
+ Audit->>Ex: execute examples
57
+ Audit->>WSL: verify WSL parity contract
58
+ Ex-->>Audit: pass
59
+ Cov-->>Audit: pass
60
+ WSL-->>Audit: pass
61
+ Suite-->>Audit: pass
62
+ Audit-->>Hook: pass
63
+ Hook-->>Git: allow push
64
+ ```
65
+
66
+ ## CI gate
67
+
68
+ ```yaml
69
+ name: Reliability Gate
70
+
71
+ on:
72
+ pull_request:
73
+ push:
74
+ branches: [master]
75
+ workflow_dispatch:
76
+
77
+ jobs:
78
+ reliability:
79
+ strategy:
80
+ fail-fast: false
81
+ matrix:
82
+ os: [ubuntu-latest, macos-latest]
83
+ runs-on: ${{ matrix.os }}
84
+ steps:
85
+ - uses: actions/checkout@v6
86
+ - name: Reliability audit
87
+ run: bash ./scripts/qa/reliability-audit.sh --with-integration
88
+
89
+ examples-contract:
90
+ runs-on: ubuntu-latest
91
+ steps:
92
+ - uses: actions/checkout@v6
93
+ - name: Validate executable examples
94
+ run: bash ./scripts/qa/validate-examples.sh
95
+
96
+ wsl-contract:
97
+ runs-on: ubuntu-latest
98
+ steps:
99
+ - uses: actions/checkout@v6
100
+ - name: Validate WSL parity contract
101
+ run: bash ./scripts/qa/wsl-contract.sh
102
+
103
+ reliability-summary:
104
+ needs: [reliability, examples-contract, wsl-contract]
105
+ runs-on: ubuntu-latest
106
+ ```
107
+
108
+ ## Functional examples
109
+
110
+ - `examples/example-test-suite.sh`: Runs a focused unit slice.
111
+ - `examples/example-coverage-gate.sh`: Runs the module coverage contract.
112
+ - `examples/example-git-hooks.sh`: Shows the local hook entrypoints.
113
+ - `examples/example-platform-contract.sh`: Shows the platform and host contract across macOS, Linux, and WSL.
114
+
115
+ ## Local guardrail
116
+
117
+ `make test` is the canonical reliability command. It runs syntax checks, unit tests, module coverage, executable examples, and integration tests.
118
+
119
+ For a lightweight repository-wide snapshot, run `bash ./scripts/qa/coverage-baseline.sh --with-module-coverage`.
120
+
121
+ Core internal behaviors are traced through `bash ./scripts/qa/traceability-coverage.sh`.
122
+ {% endraw %}