@sebastienrousseau/dotfiles 0.2.481 → 0.2.500

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 (546) hide show
  1. package/CHANGELOG.md +122 -32
  2. package/LICENSE +1 -1
  3. package/README.md +211 -242
  4. package/docs/.vitepress/reports/localization-readability-audit.md +69 -0
  5. package/docs/AI.md +102 -0
  6. package/docs/COPYRIGHT +2 -2
  7. package/docs/NAMING_CONVENTIONS.md +95 -0
  8. package/docs/README.md +58 -249
  9. package/docs/adr/ADR-004-cli-architecture.md +2 -2
  10. package/docs/adr/ADR-006-shell-selection.md +2 -2
  11. package/docs/adr/ADR-007-multi-shell-parity.md +53 -0
  12. package/docs/adr/ADR-008-alias-system-architecture.md +85 -0
  13. package/docs/adr/README.md +2 -3
  14. package/docs/architecture/ARCHITECTURE.md +113 -0
  15. package/docs/architecture/INTEROP.md +36 -0
  16. package/docs/architecture/REPO_LAYOUT.md +237 -0
  17. package/docs/architecture/WALKTHROUGH.md +82 -0
  18. package/docs/architecture/fleet-deployment.md +73 -0
  19. package/docs/archive/EUXIS_2026_REVIEW.md +119 -0
  20. package/docs/archive/MILESTONE_v0.2.493.md +43 -0
  21. package/docs/{PLAN.md → archive/PLAN.md} +1 -1
  22. package/docs/guides/INSTALL.md +140 -0
  23. package/docs/{NEOVIM_IDE_GUIDE.md → guides/NEOVIM_IDE_GUIDE.md} +12 -12
  24. package/docs/guides/THEMING.md +222 -0
  25. package/docs/{TROUBLESHOOTING.md → guides/TROUBLESHOOTING.md} +36 -0
  26. package/docs/{WSL2_NIX_TROUBLESHOOTING.md → guides/WSL2_NIX_TROUBLESHOOTING.md} +8 -8
  27. package/docs/index.md +39 -0
  28. package/docs/interop/A2A.md +32 -0
  29. package/docs/manual/00-introduction.md +85 -0
  30. package/docs/manual/01-concepts/01-architecture.md +134 -0
  31. package/docs/manual/01-concepts/02-trust-model.md +178 -0
  32. package/docs/manual/01-concepts/03-theme-engine.md +182 -0
  33. package/docs/manual/01-concepts/04-fleet.md +142 -0
  34. package/docs/manual/01-concepts/05-self-healing.md +197 -0
  35. package/docs/manual/02-tutorials/01-first-install.md +192 -0
  36. package/docs/manual/02-tutorials/02-add-wallpaper.md +211 -0
  37. package/docs/manual/02-tutorials/03-create-profile.md +238 -0
  38. package/docs/manual/02-tutorials/04-encrypt-secret.md +275 -0
  39. package/docs/manual/02-tutorials/05-deploy-fleet.md +279 -0
  40. package/docs/manual/03-reference/01-dot-cli.md +413 -0
  41. package/docs/manual/03-reference/02-config-files.md +259 -0
  42. package/docs/manual/03-reference/03-environment.md +120 -0
  43. package/docs/manual/03-reference/04-templates.md +184 -0
  44. package/docs/manual/03-reference/05-feature-flags.md +118 -0
  45. package/docs/manual/04-cookbook/01-recipes.md +281 -0
  46. package/docs/manual/04-cookbook/02-troubleshooting.md +319 -0
  47. package/docs/manual/04-cookbook/03-faq.md +167 -0
  48. package/docs/manual/05-appendices/A-platform-matrix.md +97 -0
  49. package/docs/manual/05-appendices/B-security-checklist.md +78 -0
  50. package/docs/manual/05-appendices/C-glossary.md +36 -0
  51. package/docs/manual/05-appendices/D-bibliography.md +54 -0
  52. package/docs/manual/05-appendices/E-license.md +34 -0
  53. package/docs/manual/_toc.yml +58 -0
  54. package/docs/manual/command-index.md +58 -0
  55. package/docs/manual/concept-index.md +164 -0
  56. package/docs/operations/ATTESTATION.md +39 -0
  57. package/docs/operations/MAINTENANCE.md +59 -0
  58. package/docs/operations/MIGRATION.md +101 -0
  59. package/docs/operations/OPERATIONS.md +164 -0
  60. package/docs/operations/RELIABILITY.md +116 -0
  61. package/docs/{ROADMAP.md → operations/ROADMAP.md} +11 -11
  62. package/docs/operations/TESTING.md +195 -0
  63. package/docs/operations/TRACEABILITY.md +31 -0
  64. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +61 -0
  65. package/docs/operations/VERSION_SYNC.md +344 -0
  66. package/docs/{ALIASES.md → reference/ALIASES.md} +2 -6
  67. package/docs/reference/ALIASES_CHEATSHEET.md +28 -0
  68. package/docs/reference/ALIASES_DEPRECATIONS.md +9 -0
  69. package/docs/reference/FEATURES.md +62 -0
  70. package/docs/reference/FONTS.md +108 -0
  71. package/docs/reference/PROFILES.md +65 -0
  72. package/docs/{SCREENSHOTS.md → reference/SCREENSHOTS.md} +26 -25
  73. package/docs/reference/SCRIPTS.md +67 -0
  74. package/docs/reference/SUPPORT_MATRIX.md +74 -0
  75. package/docs/reference/THEMES.md +113 -0
  76. package/docs/reference/TOOLS.md +105 -0
  77. package/docs/reference/UTILS.md +151 -0
  78. package/docs/security/AI_ACT_COMPLIANCE.md +90 -0
  79. package/docs/security/AUTOMATION_SECRETS.md +22 -0
  80. package/docs/security/COMPLIANCE.md +453 -0
  81. package/docs/security/ENCRYPTION.md +52 -0
  82. package/docs/security/FMEA.md +155 -0
  83. package/docs/security/INCIDENT_RESPONSE.md +575 -0
  84. package/docs/security/KEYS.md +45 -0
  85. package/docs/security/MCP_POLICY.md +69 -0
  86. package/docs/security/POLICY_RELEASES.md +33 -0
  87. package/docs/security/README.md +24 -0
  88. package/docs/security/SECRETS.md +146 -0
  89. package/docs/security/SECURITY.md +41 -0
  90. package/docs/security/SECURITY_CHECKLIST.md +44 -0
  91. package/docs/security/SOUP_REGISTER.md +32 -0
  92. package/docs/security/THREAT_MODEL.md +120 -0
  93. package/docs/security/VERIFICATION_VALIDATION.md +224 -0
  94. package/docs/themes/README.md +3 -17
  95. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +26 -0
  96. package/docs/themes/hero-shot.svg +78 -0
  97. package/dot_config/.module-manifest.json +69 -0
  98. package/dot_config/ai/identity.md +20 -0
  99. package/dot_config/ai/patterns/architect.md +14 -0
  100. package/dot_config/ai/patterns/hardener.md +13 -0
  101. package/dot_config/ai/patterns/refactor.md +13 -0
  102. package/dot_config/aider/aider.conf.yml +1 -1
  103. package/dot_config/alacritty/alacritty.toml.tmpl +41 -469
  104. package/dot_config/atuin/config.toml +18 -1
  105. package/dot_config/bat/config +16 -1
  106. package/dot_config/claude/mcp_servers.json +3 -32
  107. package/dot_config/dotfiles/agent-card.json +29 -0
  108. package/dot_config/dotfiles/agent-profiles.json +92 -0
  109. package/dot_config/dotfiles/boot/README.md +1 -1
  110. package/dot_config/dotfiles/grub/README.md +1 -1
  111. package/dot_config/dotfiles/lock/README.md +1 -1
  112. package/dot_config/dotfiles/mcp-lock.json +33 -0
  113. package/dot_config/dotfiles/mcp-policy.json +52 -0
  114. package/dot_config/dotfiles/mcp-registry.json +47 -0
  115. package/dot_config/dotfiles/model-registry.json +20 -0
  116. package/dot_config/dotfiles/policy-bundles.json +38 -0
  117. package/dot_config/dotfiles/prompt-registry.json +16 -0
  118. package/dot_config/dotfiles/versions.env +18 -0
  119. package/dot_config/environment.d/50-ssh-agent.conf +2 -0
  120. package/dot_config/environment.d/90-wayland.conf +19 -0
  121. package/dot_config/firefox/user.js.tmpl +58 -0
  122. package/dot_config/fish/completions/dot-theme-sync.fish.tmpl +9 -0
  123. package/dot_config/fish/completions/dot.fish.tmpl +115 -0
  124. package/dot_config/fish/conf.d/000-perf-cache.fish +56 -0
  125. package/dot_config/fish/conf.d/aliases.fish.tmpl +77 -0
  126. package/dot_config/fish/conf.d/env.fish.tmpl +48 -0
  127. package/dot_config/fish/conf.d/functions.fish.tmpl +22 -0
  128. package/dot_config/fish/conf.d/init.fish.tmpl +151 -0
  129. package/dot_config/fish/config.fish.tmpl +44 -0
  130. package/dot_config/fish/fish_plugins +1 -0
  131. package/dot_config/fish/functions/_.fish +3 -0
  132. package/dot_config/fish/functions/_cached_eval.fish +58 -0
  133. package/dot_config/fish/functions/als.fish +46 -0
  134. package/dot_config/fish/functions/bg-upgrade.fish +7 -0
  135. package/dot_config/fish/functions/c.fish +3 -0
  136. package/dot_config/fish/functions/cat.fish +9 -0
  137. package/dot_config/fish/functions/d.fish +7 -0
  138. package/dot_config/fish/functions/dot.fish +34 -0
  139. package/dot_config/fish/functions/h.fish +3 -0
  140. package/dot_config/fish/functions/l.fish +7 -0
  141. package/dot_config/fish/functions/la.fish +7 -0
  142. package/dot_config/fish/functions/ll.fish +7 -0
  143. package/dot_config/fish/functions/log_error.fish +13 -0
  144. package/dot_config/fish/functions/log_info.fish +13 -0
  145. package/dot_config/fish/functions/lr.fish +7 -0
  146. package/dot_config/fish/functions/lra.fish +7 -0
  147. package/dot_config/fish/functions/ls.fish +7 -0
  148. package/dot_config/fish/functions/lt.fish +7 -0
  149. package/dot_config/fish/functions/lta.fish +7 -0
  150. package/dot_config/fish/functions/notify-run.fish +11 -0
  151. package/dot_config/fish/functions/q.fish +3 -0
  152. package/dot_config/fish/functions/silent-run.fish +7 -0
  153. package/dot_config/fish/functions/yy.fish +8 -0
  154. package/dot_config/fontconfig/fonts.conf.tmpl +13 -0
  155. package/dot_config/foot/foot.ini.tmpl +33 -0
  156. package/dot_config/fuzzel/fuzzel.ini.tmpl +18 -0
  157. package/dot_config/fzf/fzf.zsh +48 -0
  158. package/dot_config/ghostty/config.tmpl +69 -565
  159. package/dot_config/git/allowed_signers.tmpl +18 -0
  160. package/dot_config/git/commit-template +10 -0
  161. package/dot_config/gnupg/{gpg-agent.conf.tmpl → gpg-agent.conf} +3 -3
  162. package/dot_config/goose/config.yaml +2 -2
  163. package/dot_config/gtk-3.0/gtk.css.tmpl +59 -180
  164. package/dot_config/gtk-3.0/settings.ini.tmpl +5 -44
  165. package/dot_config/gtk-4.0/gtk.css.tmpl +79 -136
  166. package/dot_config/gtk-4.0/settings.ini.tmpl +5 -8
  167. package/dot_config/ipython/profile_default/ipython_config.py +19 -0
  168. package/dot_config/just/justfile +18 -0
  169. package/dot_config/kanshi/config.tmpl +22 -0
  170. package/dot_config/kitty/kitty.conf.tmpl +44 -508
  171. package/dot_config/lazygit/config.yml +18 -6
  172. package/dot_config/mako/config +47 -0
  173. package/dot_config/micro/settings.json +3 -0
  174. package/dot_config/mimeapps.list +77 -0
  175. package/dot_config/mise/config.toml +63 -5
  176. package/dot_config/mongosh/mongoshrc.js +1 -0
  177. package/dot_config/mpv/input.conf +47 -0
  178. package/dot_config/mpv/mpv.conf +47 -0
  179. package/dot_config/niri/config.kdl.tmpl +327 -0
  180. package/dot_config/nushell/aliases.nu +18 -0
  181. package/dot_config/nushell/completions.nu.tmpl +52 -0
  182. package/dot_config/nushell/config.nu.tmpl +86 -0
  183. package/dot_config/nushell/env.nu.tmpl +94 -0
  184. package/dot_config/nushell/functions.nu.tmpl +17 -0
  185. package/dot_config/nvim/init.lua +14 -0
  186. package/dot_config/nvim/lazy-lock.json +45 -14
  187. package/dot_config/nvim/lua/config/autocmds.lua +45 -1
  188. package/dot_config/nvim/lua/config/keymaps.lua +13 -8
  189. package/dot_config/nvim/lua/config/lazy.lua +22 -12
  190. package/dot_config/nvim/lua/config/options.lua +1 -0
  191. package/dot_config/nvim/lua/plugins/ai.lua +75 -0
  192. package/dot_config/nvim/lua/plugins/coding.lua +11 -29
  193. package/dot_config/nvim/lua/plugins/completion.lua +60 -0
  194. package/dot_config/nvim/lua/plugins/dap.lua +215 -4
  195. package/dot_config/nvim/lua/plugins/editor.lua +6 -10
  196. package/dot_config/nvim/lua/plugins/git.lua +1 -0
  197. package/dot_config/nvim/lua/plugins/lsp.lua +16 -81
  198. package/dot_config/nvim/lua/plugins/markdown.lua +1 -0
  199. package/dot_config/nvim/lua/plugins/rust.lua +1 -0
  200. package/dot_config/nvim/lua/plugins/sessions.lua +1 -0
  201. package/dot_config/nvim/lua/plugins/ui.lua +23 -51
  202. package/dot_config/paru/paru.conf +10 -0
  203. package/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl +81 -0
  204. package/dot_config/pueue/pueue.yml +34 -0
  205. package/dot_config/raycast/README.md +1 -1
  206. package/dot_config/ripgrep/ripgreprc +21 -0
  207. package/dot_config/shell/00-core-paths.sh.tmpl +62 -24
  208. package/dot_config/shell/05-core-safety.sh +47 -0
  209. package/dot_config/shell/10-secrets.sh +40 -0
  210. package/dot_config/shell/40-fzf-defaults.sh.tmpl +16 -0
  211. package/dot_config/shell/40-ls-colors.sh +48 -0
  212. package/dot_config/shell/50-logic-functions-core.sh.tmpl +10 -0
  213. package/dot_config/shell/51-logic-functions-extra.sh.tmpl +64 -0
  214. package/dot_config/shell/90-ux-aliases.sh.tmpl +90 -5
  215. package/dot_config/shell/91-ux-aliases-lazy.sh.tmpl +33 -2
  216. package/dot_config/shell/Brewfile.cli +8 -0
  217. package/dot_config/shell/README.md +9 -9
  218. package/dot_config/shell/als_data.txt.tmpl +65 -0
  219. package/dot_config/shell/custom/auto_ls.zsh +20 -0
  220. package/dot_config/shell/custom/context_suggest.zsh +50 -50
  221. package/dot_config/shell/custom/error_analysis.zsh +29 -29
  222. package/dot_config/starship.toml.tmpl +85 -7
  223. package/dot_config/swaylock/config +43 -0
  224. package/dot_config/systemd/user/dotfiles-maintenance.service +8 -0
  225. package/dot_config/systemd/user/dotfiles-maintenance.timer +11 -0
  226. package/dot_config/systemd/user/pueued.service +12 -0
  227. package/dot_config/systemd/user/ssh-agent.service +12 -0
  228. package/dot_config/tmux/tmux.conf.tmpl +80 -38
  229. package/dot_config/topgrade.toml.tmpl +54 -0
  230. package/dot_config/user-dirs.dirs +9 -0
  231. package/dot_config/vscode/settings.json.tmpl +9 -50
  232. package/dot_config/waybar/config.jsonc.tmpl +90 -0
  233. package/dot_config/waybar/style.css.tmpl +211 -0
  234. package/dot_config/wezterm/wezterm.lua.tmpl +31 -203
  235. package/dot_config/xdg-desktop-portal/niri-portals.conf +5 -0
  236. package/dot_config/yazi/keymap.toml +67 -0
  237. package/dot_config/yazi/theme.toml +102 -0
  238. package/dot_config/zathura/zathurarc +52 -0
  239. package/dot_config/zellij/{config.kdl → config.kdl.tmpl} +1 -1
  240. package/dot_config/zsh/dot_zprofile +1 -7
  241. package/dot_config/zsh/dot_zshenv +2 -3
  242. package/dot_config/zsh/dot_zshrc.tmpl +368 -69
  243. package/dot_config/zsh/rc.d/00-alias-shims.zsh +77 -0
  244. package/dot_config/zsh/rc.d/05-ssh-agent.zsh +17 -4
  245. package/dot_config/zsh/rc.d/10-env.zsh.tmpl +4 -4
  246. package/dot_config/zsh/rc.d/20-zinit.zsh +65 -0
  247. package/dot_config/zsh/rc.d/30-options.zsh.tmpl +101 -30
  248. package/dot_config/zsh/rc.d/99-alias-wrapper.zsh +32 -0
  249. package/dot_local/bin/__pycache__/executable_dot-load-benchmark-ptycpython-312.pyc +0 -0
  250. package/dot_local/bin/executable_ai-update +195 -0
  251. package/dot_local/bin/executable_ai_core +113 -91
  252. package/dot_local/bin/executable_antigravity +11 -0
  253. package/dot_local/bin/executable_b64 +61 -36
  254. package/dot_local/bin/executable_bm +77 -0
  255. package/dot_local/bin/executable_cb +39 -0
  256. package/dot_local/bin/executable_dot +543 -132
  257. package/dot_local/bin/executable_dot-ai +36 -0
  258. package/dot_local/bin/executable_dot-bootstrap +77 -0
  259. package/dot_local/bin/executable_dot-launch-or-focus +52 -0
  260. package/dot_local/bin/executable_dot-load-benchmark +31 -0
  261. package/dot_local/bin/executable_dot-load-benchmark-pty +77 -0
  262. package/dot_local/bin/executable_dot-theme-sync +952 -0
  263. package/dot_local/bin/executable_dot_completion +2 -0
  264. package/dot_local/bin/executable_dtags +28 -0
  265. package/dot_local/bin/executable_epoch +43 -38
  266. package/dot_local/bin/executable_extract +32 -99
  267. package/dot_local/bin/executable_gbd +52 -0
  268. package/dot_local/bin/executable_gd +42 -0
  269. package/dot_local/bin/executable_git-ai-commit +35 -20
  270. package/dot_local/bin/executable_git-ai-diff +33 -18
  271. package/dot_local/bin/executable_gl +101 -0
  272. package/dot_local/bin/executable_hash +56 -18
  273. package/dot_local/bin/executable_hashsum +160 -0
  274. package/dot_local/bin/executable_hex +44 -8
  275. package/dot_local/bin/executable_jsonv +34 -10
  276. package/dot_local/bin/executable_jwt +22 -6
  277. package/dot_local/bin/executable_kill-port +18 -2
  278. package/dot_local/bin/executable_lorem +21 -6
  279. package/dot_local/bin/executable_mkscript +35 -0
  280. package/dot_local/bin/executable_monitor +56 -0
  281. package/dot_local/bin/{executable_ip → executable_myip} +16 -2
  282. package/dot_local/bin/executable_notify +22 -0
  283. package/dot_local/bin/executable_open +36 -0
  284. package/dot_local/bin/executable_pw +27 -0
  285. package/dot_local/bin/executable_rec-start +46 -0
  286. package/dot_local/bin/executable_rec-stop +35 -0
  287. package/dot_local/bin/executable_regex +49 -13
  288. package/dot_local/bin/executable_start-niri +8 -0
  289. package/dot_local/bin/executable_tmux-sessionizer +276 -149
  290. package/dot_local/bin/executable_tour +112 -74
  291. package/dot_local/bin/executable_up +21 -0
  292. package/dot_local/bin/executable_update +45 -11
  293. package/dot_local/bin/executable_uuid +37 -7
  294. package/dot_local/bin/executable_win +32 -0
  295. package/dot_local/bin/executable_yamlv +25 -7
  296. package/dot_local/share/bash-completion/completions/dot +62 -44
  297. package/dot_local/share/icons/hicolor/128x128/apps/rousseau.png +0 -0
  298. package/dot_local/share/icons/hicolor/16x16/apps/rousseau.png +0 -0
  299. package/dot_local/share/icons/hicolor/24x24/apps/rousseau.png +0 -0
  300. package/dot_local/share/icons/hicolor/256x256/apps/rousseau.png +0 -0
  301. package/dot_local/share/icons/hicolor/32x32/apps/rousseau.png +0 -0
  302. package/dot_local/share/icons/hicolor/48x48/apps/rousseau.png +0 -0
  303. package/dot_local/share/icons/hicolor/512x512/apps/rousseau.png +0 -0
  304. package/dot_local/share/icons/hicolor/64x64/apps/rousseau.png +0 -0
  305. package/dot_local/share/icons/hicolor/96x96/apps/rousseau.png +0 -0
  306. package/dot_local/share/icons/hicolor/scalable/apps/rousseau.png +0 -0
  307. package/dot_local/share/man/man1/dot.1 +149 -0
  308. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_download +64 -0
  309. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_install +18 -0
  310. package/dot_local/share/mise/plugins/kiro-cli/bin/executable_list-all +13 -0
  311. package/dot_local/share/wayland-sessions/niri.desktop.tmpl +6 -0
  312. package/dot_local/share/zsh/completions/_dot +283 -0
  313. package/install.sh +297 -210
  314. package/package.json +17 -5
  315. package/scripts/ci/check-copyright-headers.sh +96 -0
  316. package/scripts/ci/guard-gitleaks-checkout.sh +57 -0
  317. package/scripts/ci/install-chezmoi-verified.sh +64 -0
  318. package/scripts/ci/validate-ci-config.sh +41 -39
  319. package/scripts/demo/record.sh +3 -2
  320. package/scripts/diagnostics/a2a-conformance.sh +162 -0
  321. package/scripts/diagnostics/alias-governance.sh +137 -0
  322. package/scripts/diagnostics/aliases-cheatsheet.sh +73 -0
  323. package/scripts/diagnostics/aliases-manifest.sh +31 -0
  324. package/scripts/diagnostics/benchmark.sh +209 -29
  325. package/scripts/diagnostics/conflicts.sh +72 -0
  326. package/scripts/diagnostics/doctor-unified.sh +38 -0
  327. package/scripts/diagnostics/doctor.sh +491 -65
  328. package/scripts/diagnostics/drift-dashboard.sh +17 -6
  329. package/scripts/diagnostics/health.sh +351 -110
  330. package/scripts/diagnostics/history-analysis.sh +12 -4
  331. package/scripts/diagnostics/mcp-doctor.sh +575 -0
  332. package/scripts/diagnostics/perf.sh +225 -0
  333. package/scripts/diagnostics/scorecard.sh +118 -0
  334. package/scripts/diagnostics/secret-governance.sh +58 -0
  335. package/scripts/diagnostics/security-score.sh +139 -93
  336. package/scripts/diagnostics/smoke-test.sh +87 -0
  337. package/scripts/diagnostics/snapshot.sh +89 -0
  338. package/scripts/diagnostics/verify.sh +107 -0
  339. package/scripts/diagnostics/verify_state.sh +2 -2
  340. package/scripts/diagnostics/version-locks.sh +79 -0
  341. package/scripts/diagnostics/workstation-attestation.sh +181 -0
  342. package/scripts/docs/build-manual.sh +883 -0
  343. package/scripts/docs/check-manual.sh +213 -0
  344. package/scripts/dot/commands/agent.sh +465 -0
  345. package/scripts/dot/commands/ai.sh +416 -0
  346. package/scripts/dot/commands/aliases.sh +250 -0
  347. package/scripts/dot/commands/appearance.sh +21 -4
  348. package/scripts/dot/commands/core.sh +59 -4
  349. package/scripts/dot/commands/diagnostics.sh +132 -3
  350. package/scripts/dot/commands/fleet.sh +399 -0
  351. package/scripts/dot/commands/lint.sh +177 -0
  352. package/scripts/dot/commands/manual.sh +168 -0
  353. package/scripts/dot/commands/meta.sh +148 -17
  354. package/scripts/dot/commands/patterns.sh +54 -0
  355. package/scripts/dot/commands/restore.sh +57 -35
  356. package/scripts/dot/commands/secrets.sh +151 -9
  357. package/scripts/dot/commands/security.sh +3 -0
  358. package/scripts/dot/commands/tools.sh +268 -27
  359. package/scripts/dot/data/alias-deprecations.tsv +2 -0
  360. package/scripts/dot/lib/bento.sh +49 -0
  361. package/scripts/dot/lib/log.sh +194 -0
  362. package/scripts/dot/lib/platform.sh +98 -0
  363. package/scripts/dot/lib/ui.sh +507 -0
  364. package/scripts/dot/lib/utils.sh +318 -18
  365. package/scripts/fonts/install-nerd-fonts.sh +19 -10
  366. package/scripts/fonts/patch-fonts.sh +1 -0
  367. package/scripts/git-hooks/install.sh +11 -0
  368. package/scripts/git-hooks/pre-commit +12 -0
  369. package/scripts/git-hooks/pre-commit-audit.sh +145 -0
  370. package/scripts/git-hooks/pre-push +29 -0
  371. package/scripts/git-hooks/prepare-commit-msg +29 -0
  372. package/scripts/lib/secrets_provider.sh +158 -0
  373. package/scripts/maintenance/check-updates.sh +131 -0
  374. package/scripts/ops/ai-setup.sh +55 -0
  375. package/scripts/ops/bundle.sh +77 -0
  376. package/scripts/ops/chaos.sh +49 -0
  377. package/scripts/ops/chezmoi-apply.sh +245 -17
  378. package/scripts/ops/chezmoi-diff.sh +1 -0
  379. package/scripts/ops/chezmoi-remove.sh +2 -0
  380. package/scripts/ops/chezmoi-update.sh +34 -2
  381. package/scripts/ops/heal-chezmoi.sh +51 -0
  382. package/scripts/ops/heal-system.sh +128 -0
  383. package/scripts/ops/heal-tools.sh +340 -0
  384. package/scripts/ops/heal.sh +98 -342
  385. package/scripts/ops/post-apply-repair.sh +106 -0
  386. package/scripts/ops/prewarm.sh +127 -0
  387. package/scripts/ops/release.sh +252 -0
  388. package/scripts/ops/rollback.sh +86 -28
  389. package/scripts/ops/setup.sh +137 -0
  390. package/scripts/ops/teleport.sh +2 -1
  391. package/scripts/qa/coverage-baseline.sh +60 -0
  392. package/scripts/qa/docs-coverage.sh +111 -0
  393. package/scripts/qa/reliability-audit.sh +138 -0
  394. package/scripts/qa/traceability-coverage.sh +116 -0
  395. package/scripts/qa/validate-examples.sh +26 -0
  396. package/scripts/qa/wsl-contract.sh +11 -0
  397. package/scripts/release/package-policy-bundles.sh +125 -0
  398. package/scripts/secrets/age-init.sh +1 -0
  399. package/scripts/secrets/create-secrets-file.sh +1 -0
  400. package/scripts/secrets/encrypt-ssh-key.sh +1 -0
  401. package/scripts/security/backup.sh +44 -4
  402. package/scripts/security/dns-doh.sh +36 -14
  403. package/scripts/security/encryption-check.sh +27 -12
  404. package/scripts/security/enforce-policies.sh +11 -16
  405. package/scripts/security/firewall.sh +76 -20
  406. package/scripts/security/lock-configs.sh +2 -2
  407. package/scripts/security/lock-screen.sh +40 -18
  408. package/scripts/security/manage-secrets.sh +42 -29
  409. package/scripts/security/ssh-cert.sh +203 -0
  410. package/scripts/security/telemetry-kill.sh +40 -18
  411. package/scripts/security/usb-safety.sh +37 -15
  412. package/scripts/theme/apply-gnome-theme.sh +87 -56
  413. package/scripts/theme/extract-theme.py +677 -0
  414. package/scripts/theme/install-boot-logo.sh +1 -0
  415. package/scripts/theme/install-catppuccin-themes.sh +57 -33
  416. package/scripts/theme/install-cursors.sh +1 -0
  417. package/scripts/theme/install-file-icons.sh +1 -0
  418. package/scripts/theme/install-grub-theme.sh +11 -1
  419. package/scripts/theme/install-lock-icon.sh +1 -0
  420. package/scripts/theme/merge-wallpaper.sh +141 -0
  421. package/scripts/theme/rebuild-themes.sh +309 -0
  422. package/scripts/theme/switch.sh +308 -137
  423. package/scripts/theme/wallpaper-rotate.sh +66 -12
  424. package/scripts/theme/wallpaper-sync.sh +386 -31
  425. package/scripts/tools/cmatrix.sh +1 -0
  426. package/scripts/tools/detect-collisions.py +1 -1
  427. package/scripts/tools/emoji-picker.sh +4 -1
  428. package/scripts/tools/figlet-banner.sh +1 -0
  429. package/scripts/tools/log-rotate.sh +2 -1
  430. package/scripts/tools/lolcat-wrap.sh +1 -0
  431. package/scripts/tools/pipes.sh +1 -0
  432. package/scripts/tuning/linux.sh +23 -13
  433. package/scripts/tuning/macos.sh +13 -4
  434. package/scripts/uninstall.sh +85 -0
  435. package/scripts/version-sync.sh +487 -0
  436. package/templates/chezmoi-data/geekom-a9.toml.example +21 -0
  437. package/templates/chezmoi-data/mac-m1.toml.example +16 -0
  438. package/templates/chezmoi-data/mac-t2-linux.toml.example +21 -0
  439. package/templates/chezmoi-data/surface-pro-7p.toml.example +21 -0
  440. package/templates/projects/go/.github/workflows/ci.yml +31 -0
  441. package/templates/projects/go/README.md +1 -1
  442. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +1 -0
  443. package/templates/projects/go/go.sum +0 -0
  444. package/templates/projects/molecule/README.md +1 -1
  445. package/templates/projects/node/.github/workflows/ci.yml +30 -0
  446. package/templates/projects/node/README.md +1 -1
  447. package/templates/projects/node/package-lock.json +12 -0
  448. package/templates/projects/node/src/index.js +1 -0
  449. package/templates/projects/packer/README.md +1 -1
  450. package/templates/projects/python/.github/workflows/ci.yml +34 -0
  451. package/templates/projects/python/README.md +1 -1
  452. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +1 -0
  453. package/templates/projects/python/tests/test_basic.py +1 -0
  454. package/docs/ARCHITECTURE.md +0 -229
  455. package/docs/COMPLIANCE.md +0 -47
  456. package/docs/FEATURES.md +0 -166
  457. package/docs/FONTS.md +0 -147
  458. package/docs/INSTALL.md +0 -119
  459. package/docs/KEYS.md +0 -40
  460. package/docs/OPERATIONS.md +0 -130
  461. package/docs/PR_DESCRIPTION.md +0 -149
  462. package/docs/SECRETS.md +0 -76
  463. package/docs/SECURITY.md +0 -30
  464. package/docs/SECURITY_CHECKLIST.md +0 -25
  465. package/docs/TASK.md +0 -99
  466. package/docs/TESTING.md +0 -190
  467. package/docs/TOOLS.md +0 -146
  468. package/docs/UTILS.md +0 -105
  469. package/docs/WALKTHROUGH.md +0 -165
  470. package/dot_config/clippy.toml +0 -55
  471. package/dot_config/dotfiles/versions.env.tmpl +0 -19
  472. package/dot_config/firefox/user.js +0 -8
  473. package/dot_config/git/config.tmpl +0 -77
  474. package/dot_config/go/aliases.sh +0 -61
  475. package/dot_config/go/env.sh +0 -24
  476. package/dot_config/ice/README.md +0 -13
  477. package/dot_config/ipython/profile_default/ipython_config.py.tmpl +0 -5
  478. package/dot_config/lsd/config.yaml +0 -19
  479. package/dot_config/nvim/snippets/all.lua +0 -9
  480. package/dot_config/nvim/snippets/python.lua +0 -16
  481. package/dot_config/shell/00-container-detect.sh +0 -53
  482. package/dot_config/shell/05-core-safety.sh.tmpl +0 -13
  483. package/dot_config/shell/40-ls-colors.sh.tmpl +0 -31
  484. package/dot_config/shell/90-theme-switch.sh +0 -70
  485. package/dot_config/topgrade/topgrade.toml.tmpl +0 -42
  486. package/dot_config/waybar/style.css +0 -8
  487. package/dot_config/zsh/rc.d/20-zinit.zsh.tmpl +0 -22
  488. package/dot_local/bin/executable_zig-install +0 -89
  489. package/dot_local/bin/voice_ops +0 -7
  490. package/scripts/ops/health-check.sh +0 -380
  491. package/scripts/tests/README.md +0 -241
  492. package/scripts/tests/benchmark.sh +0 -91
  493. package/scripts/tests/framework/assertions.sh +0 -283
  494. package/scripts/tests/framework/mocks.sh +0 -201
  495. package/scripts/tests/framework/test_runner.sh +0 -189
  496. package/scripts/tests/integration/test_install.sh +0 -237
  497. package/scripts/tests/performance/benchmark_runner.sh +0 -156
  498. package/scripts/tests/performance/regression_check.sh +0 -73
  499. package/scripts/tests/performance/stress_test.sh +0 -65
  500. package/scripts/tests/test-aliases.sh +0 -25
  501. package/scripts/tests/test-docker.sh +0 -48
  502. package/scripts/tests/unit/test_ai_aliases.sh +0 -158
  503. package/scripts/tests/unit/test_ai_cli_checks.sh +0 -47
  504. package/scripts/tests/unit/test_backup.sh +0 -227
  505. package/scripts/tests/unit/test_case_functions.sh +0 -238
  506. package/scripts/tests/unit/test_cd_aliases.sh +0 -367
  507. package/scripts/tests/unit/test_dot_cli.sh +0 -217
  508. package/scripts/tests/unit/test_encode64.sh +0 -67
  509. package/scripts/tests/unit/test_environment.sh +0 -78
  510. package/scripts/tests/unit/test_extract.sh +0 -163
  511. package/scripts/tests/unit/test_framework_edge_cases.sh +0 -113
  512. package/scripts/tests/unit/test_genpass.sh +0 -298
  513. package/scripts/tests/unit/test_install_edge_cases.sh +0 -167
  514. package/scripts/tests/unit/test_installers.sh +0 -172
  515. package/scripts/tests/unit/test_keygen.sh +0 -68
  516. package/scripts/tests/unit/test_logging.sh +0 -96
  517. package/scripts/tests/unit/test_os_detection_comprehensive.sh +0 -388
  518. package/scripts/tests/unit/test_package_managers_comprehensive.sh +0 -321
  519. package/scripts/tests/unit/test_prependpath.sh +0 -66
  520. package/scripts/tests/unit/test_prependpath_refactored.sh +0 -89
  521. package/scripts/tests/unit/test_rd.sh +0 -230
  522. package/scripts/tests/unit/test_security_fixes.sh +0 -130
  523. package/scripts/tests/unit/test_security_scripts.sh +0 -87
  524. package/scripts/tests/unit/test_template_validation.sh +0 -238
  525. package/scripts/tests/unit/test_utility_functions.sh +0 -144
  526. package/scripts/tests/unit/test_wave1_alias_split.sh +0 -132
  527. package/scripts/tests/unit/test_wave1_ci_pinning.sh +0 -61
  528. package/scripts/tests/unit/test_wave1_gitleaks_config.sh +0 -52
  529. package/scripts/tests/unit/test_wave1_heal_fixes.sh +0 -97
  530. package/scripts/tests/unit/test_wave1_install_gpg.sh +0 -35
  531. package/scripts/tests/unit/test_wave1_zshenv_path.sh +0 -89
  532. package/scripts/tests/unit/test_wave1_zshrc_lazy_hook.sh +0 -115
  533. package/scripts/tests/unit/test_wave2_dot_new_guard.sh +0 -75
  534. package/scripts/tests/unit/test_zipf.sh +0 -76
  535. /package/docs/{LEGACY_ROADMAP.md → archive/LEGACY_ROADMAP.md} +0 -0
  536. /package/docs/{REPO_AUDIT.md → archive/REPO_AUDIT.md} +0 -0
  537. /package/docs/{KEY_ROTATION.md → security/KEY_ROTATION.md} +0 -0
  538. /package/dot_config/ansible/{ansible.cfg.tmpl → ansible.cfg} +0 -0
  539. /package/dot_config/docker/{config.json.tmpl → config.json} +0 -0
  540. /package/dot_config/k9s/{config.yaml.tmpl → config.yaml} +0 -0
  541. /package/dot_config/pypoetry/{config.toml.tmpl → config.toml} +0 -0
  542. /package/dot_config/{pyrightconfig.json.tmpl → pyrightconfig.json} +0 -0
  543. /package/dot_config/tflint/{tflint.hcl.tmpl → tflint.hcl} +0 -0
  544. /package/dot_config/yarn/{yarnrc.yml.tmpl → yarnrc.yml} +0 -0
  545. /package/dot_config/zsh/rc.d/{40-bell.zsh.tmpl → 40-bell.zsh} +0 -0
  546. /package/dot_config/zsh/rc.d/{50-login-fortune.zsh.tmpl → 50-login-fortune.zsh} +0 -0
@@ -0,0 +1,164 @@
1
+ # Operations
2
+
3
+ Core workflows for keeping your dotfiles running across platforms.
4
+
5
+ ---
6
+
7
+ ## Platforms
8
+
9
+ ### macOS
10
+
11
+ **Primary manager**: `Homebrew`
12
+
13
+ - **Update**:
14
+ ```bash
15
+ chezmoi update
16
+ ```
17
+ This runs `brew bundle install` behind the scenes to reconcile against the declared Brewfiles.
18
+ - **Permission issues**: `sudo chown -R $(whoami) $(brew --prefix)/*`
19
+ - **Drift**: Run `brew bundle cleanup` to remove unmanaged packages.
20
+
21
+ ### Linux (Debian, Ubuntu, Kali)
22
+
23
+ **Primary manager**: `apt-get` / `snap`
24
+
25
+ - **Update**:
26
+ ```bash
27
+ sudo apt update && sudo apt upgrade -y
28
+ chezmoi update
29
+ ```
30
+ On Linux, `chezmoi` focuses on configuration. Package updates work best through the OS package manager to avoid `sudo` conflicts.
31
+ - **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`.
32
+
33
+ ### Windows (WSL2)
34
+
35
+ **Primary manager**: `apt-get` (inside WSL)
36
+
37
+ - **Update**: Same as Linux.
38
+ - **Clipboard**: Dotfiles configures `win32yank.exe` automatically for clipboard sharing.
39
+ - **Performance**: Keep project files inside the Linux filesystem (`~/projects`), not in `/mnt/c/`, for dramatically better IO.
40
+
41
+ ---
42
+
43
+ ## Workflows
44
+
45
+ ### Apply changes
46
+
47
+ After editing any config file:
48
+
49
+ ```bash
50
+ dot apply
51
+ ```
52
+
53
+ Triggers `dot_zshrc` reload and audit logging.
54
+
55
+ ### Upgrade-safe apply (recommended)
56
+
57
+ ```bash
58
+ git pull
59
+ DOTFILES_NONINTERACTIVE=1 dot apply --force
60
+ dot doctor
61
+ ```
62
+
63
+ `dot apply` includes post-apply checks that:
64
+ - Remove stale read-only zsh cache files (`~/.config/shell/*.zwc`, `~/.config/zsh/**/*.zwc`)
65
+ - Validate that `dot` resolves to `~/.local/bin/dot` in a fresh login shell
66
+
67
+ Finish by reloading your session (`exec zsh`) or restarting the terminal.
68
+
69
+ ### Async updates
70
+
71
+ Run updates in the background; you'll get a status banner on the next shell launch:
72
+
73
+ ```bash
74
+ dot update --async
75
+ ```
76
+
77
+ ### Roll back
78
+
79
+ If an update breaks your setup:
80
+
81
+ ```bash
82
+ cd ~/.dotfiles
83
+ git reset --hard HEAD@{1}
84
+ chezmoi apply
85
+ ```
86
+
87
+ ### Offline / air-gapped mode
88
+
89
+ ```bash
90
+ # 1. On a connected machine, bundle your setup:
91
+ dot bundle ~/Downloads
92
+
93
+ # 2. Transfer the archive to the offline machine, then:
94
+ tar --zstd -xf dotfiles_offline_bundle_*.tar.zst -P
95
+ cd ~/.dotfiles
96
+ ./install.sh --force
97
+ ```
98
+
99
+ ### Pre-warm caches
100
+
101
+ Regenerate all tool caches to eliminate shell startup latency:
102
+
103
+ ```bash
104
+ dot prewarm
105
+ ```
106
+
107
+ ### Debug
108
+
109
+ If something's slow or broken:
110
+
111
+ 1. **Check health**:
112
+ ```bash
113
+ dot doctor
114
+ dot health --fix
115
+ ```
116
+ 2. **Smoke test**:
117
+ ```bash
118
+ dot smoke-test
119
+ ```
120
+ 3. **Scorecard**:
121
+ ```bash
122
+ dot scorecard
123
+ ```
124
+ 4. **Chaos testing (self-healing)**:
125
+ ```bash
126
+ dot chaos --force
127
+ dot heal --force
128
+ ```
129
+ 5. **Startup profiling**:
130
+ ```bash
131
+ dot perf --profile
132
+ ```
133
+ 6. **Post-merge verification**:
134
+ ```bash
135
+ dot verify
136
+ ```
137
+ 7. **Inspect alias behavior**:
138
+ ```bash
139
+ dot aliases list
140
+ dot aliases why dprune
141
+ DOTFILES_ALIAS_POLICY=strict bash ~/.dotfiles/scripts/diagnostics/alias-governance.sh
142
+ ```
143
+ 8. **Verbose mode**:
144
+ ```bash
145
+ DOTFILES_DEBUG=1 dot apply
146
+ ```
147
+
148
+ ### Safety flags
149
+
150
+ Destructive aliases are disabled by default. Enable only when needed:
151
+
152
+ ```bash
153
+ export DOTFILES_ENABLE_DANGEROUS_ALIASES=1
154
+ ```
155
+
156
+ ### Tiered alias loading
157
+
158
+ Core aliases load eagerly. Ecosystem aliases are lazy-loaded and can be filtered:
159
+
160
+ ```bash
161
+ export DOTFILES_ALIAS_ECOSYSTEMS=python,node
162
+ ```
163
+
164
+ Valid ecosystem tags: `python`, `node`, `rust`, `network`, `legacy`.
@@ -0,0 +1,116 @@
1
+ # Reliability
2
+
3
+ ## Reliability scorecard
4
+
5
+ - Unit coverage: 100% module mapping target, enforced by `tests/framework/module_coverage.sh`
6
+ - Integration depth: 11 integration test files in `tests/integration/`
7
+ - Regression automation: 436 discovered test files and 2149 named tests in the current baseline
8
+
9
+ ## Coverage gap map
10
+
11
+ | Module | Missing path | Risk level | Proposed test case |
12
+ | :--- | :--- | :--- | :--- |
13
+ | `scripts/qa/reliability-audit.sh` | Quick mode and integration mode branch handling | Closed | Covered by `tests/unit/misc/test_qa_reliability_behaviour.sh` |
14
+ | `scripts/git-hooks/pre-push` | Audit command failure path | Closed | Covered by `tests/unit/misc/test_git_hooks_pre_push_behaviour.sh` |
15
+ | `tests/framework/module_coverage.sh` | False-positive module matches | Closed | Covered by `tests/unit/misc/test_module_coverage_behaviour.sh` |
16
+ | `examples/*.sh` | Drift between examples and real commands | Closed | Examples execute in CI through `Examples Contract` and `validate-examples.sh` |
17
+
18
+ ## Integration boundaries
19
+
20
+ ```mermaid
21
+ flowchart LR
22
+ Dev[Developer] --> Hook[pre-push hook]
23
+ Hook --> Audit[reliability-audit.sh]
24
+ Audit --> Syntax[Shell syntax gate]
25
+ Audit --> Unit[Unit suite]
26
+ Audit --> Coverage[Module coverage]
27
+ Audit --> Examples[Example validation]
28
+ Audit --> WSL[WSL contract]
29
+ Audit --> Integration[Integration suite]
30
+ Integration --> Repo[Dotfiles workflows]
31
+ WSL --> Repo
32
+ ```
33
+
34
+ ```mermaid
35
+ sequenceDiagram
36
+ participant Dev as Developer
37
+ participant Git as Git client
38
+ participant Hook as pre-push
39
+ participant Audit as reliability-audit.sh
40
+ participant Suite as tests/framework/test_runner.sh
41
+ participant Cov as module_coverage.sh
42
+ participant Ex as validate-examples.sh
43
+ participant WSL as wsl-contract.sh
44
+
45
+ Dev->>Git: git push
46
+ Git->>Hook: invoke pre-push
47
+ Hook->>Hook: verify signed commits
48
+ Hook->>Audit: run quick gate
49
+ Audit->>Suite: run unit suite
50
+ Audit->>Cov: enforce 100% module mapping
51
+ Audit->>Ex: execute examples
52
+ Audit->>WSL: verify WSL parity contract
53
+ Ex-->>Audit: pass
54
+ Cov-->>Audit: pass
55
+ WSL-->>Audit: pass
56
+ Suite-->>Audit: pass
57
+ Audit-->>Hook: pass
58
+ Hook-->>Git: allow push
59
+ ```
60
+
61
+ ## CI gate
62
+
63
+ ```yaml
64
+ name: Reliability Gate
65
+
66
+ on:
67
+ pull_request:
68
+ push:
69
+ branches: [master]
70
+ workflow_dispatch:
71
+
72
+ jobs:
73
+ reliability:
74
+ strategy:
75
+ fail-fast: false
76
+ matrix:
77
+ os: [ubuntu-latest, macos-latest]
78
+ runs-on: ${{ matrix.os }}
79
+ steps:
80
+ - uses: actions/checkout@v6
81
+ - name: Reliability audit
82
+ run: bash ./scripts/qa/reliability-audit.sh --with-integration
83
+
84
+ examples-contract:
85
+ runs-on: ubuntu-latest
86
+ steps:
87
+ - uses: actions/checkout@v6
88
+ - name: Validate executable examples
89
+ run: bash ./scripts/qa/validate-examples.sh
90
+
91
+ wsl-contract:
92
+ runs-on: ubuntu-latest
93
+ steps:
94
+ - uses: actions/checkout@v6
95
+ - name: Validate WSL parity contract
96
+ run: bash ./scripts/qa/wsl-contract.sh
97
+
98
+ reliability-summary:
99
+ needs: [reliability, examples-contract, wsl-contract]
100
+ runs-on: ubuntu-latest
101
+ ```
102
+
103
+ ## Functional examples
104
+
105
+ - `examples/example-test-suite.sh`: Runs a focused unit slice.
106
+ - `examples/example-coverage-gate.sh`: Runs the module coverage contract.
107
+ - `examples/example-git-hooks.sh`: Shows the local hook entrypoints.
108
+ - `examples/example-platform-contract.sh`: Shows the platform and host contract across macOS, Linux, and WSL.
109
+
110
+ ## Local guardrail
111
+
112
+ `make test` is the canonical reliability command. It runs syntax checks, unit tests, module coverage, executable examples, and integration tests.
113
+
114
+ For a lightweight repository-wide snapshot, run `bash ./scripts/qa/coverage-baseline.sh --with-module-coverage`.
115
+
116
+ Core internal behaviors are traced through `bash ./scripts/qa/traceability-coverage.sh`.
@@ -20,9 +20,9 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
20
20
  **Goal:** "Observable Shell Lifecycle".
21
21
  > *The shell is instrumented: failures, timing, and lifecycle events are visible by design.*
22
22
 
23
- - [ ] **Audit Structuring**: JSON-structured logging for bootstrap and provisioning events.
24
- - [ ] **Debug Modes**: First-class support for `DOTFILES_DEBUG=1` and `DOTFILES_TRACE=1`.
25
- - [ ] **Telemetry (Local)**: Granular startup timing breakdown (init vs plugins vs prompt).
23
+ - [x] **Audit Structuring**: JSON-structured logging for bootstrap and provisioning events.
24
+ - [x] **Debug Modes**: First-class support for `DOTFILES_DEBUG=1` and `DOTFILES_TRACE=1`.
25
+ - [x] **Telemetry (Local)**: Granular startup timing breakdown via `dot perf`.
26
26
  - [ ] **Health Dashboard (Phase 39)**: CLI view of system "health" metrics.
27
27
  - [ ] **System Status (Phase 39)**: Real-time resource usage, battery, and network stats.
28
28
  - [ ] **Update Manager (Phase 39)**: Visual interface for tool updates and migration.
@@ -31,8 +31,8 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
31
31
  **Goal:** "Explicit Secrets Model".
32
32
  > *Secrets are never committed; sensitive state is encrypted or host-local by default.*
33
33
 
34
- - [ ] **Secret Driver**: Native integration with 1Password/Bitwarden CLI via `chezmoi`.
35
- - [ ] **Encryption**: Promoted use of `age` encryption for all private config files.
34
+ - [x] **Secret Driver**: Native integration with 1Password/Bitwarden CLI via `chezmoi`.
35
+ - [x] **Encryption**: Promoted use of `age` encryption for all private config files.
36
36
  - [ ] **Leak Prevention (Phase 29)**: Pre-commit hooks (TruffleHog/Gitleaks) for high-entropy detection.
37
37
  - [ ] **Vault Integration (Phase 29)**: Native HashiCorp Vault support.
38
38
  - [ ] **Hardware Enclaves (Phase 29)**: Support for Secure Enclave/TPM key storage.
@@ -65,7 +65,7 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
65
65
  **Goal:** "Documented Threat Model".
66
66
  > *Security decisions are driven by an explicit, documented threat model.*
67
67
 
68
- - [ ] **Threat Model Doc**: A lightweight document defining the trust boundary (Local Machine).
68
+ - [x] **Threat Model Doc**: A lightweight document defining the trust boundary (Local Machine). See `docs/security/THREAT_MODEL.md`.
69
69
  - [ ] **Supply Chain**: Verification steps for upstream dependencies.
70
70
  - [ ] **Identity & Access (Phase 40)**:
71
71
  - [ ] **SSH Certs**: Short-lived SSH Certificates.
@@ -77,9 +77,9 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
77
77
  **Goal:** "Self-Validating Environment".
78
78
  > *The environment can validate itself after installation or update.*
79
79
 
80
- - [ ] **Smoke Tests**: Automated verification of key aliases (`ls`, `git`, `docker`).
81
- - [ ] **CI Validation**: GitHub Actions workflow to boot and verify the shell syntax.
82
- - [ ] **Chaos Engineering (Phase 41)**:
80
+ - [x] **Smoke Tests**: Automated verification of key aliases (`ls`, `git`, `docker`).
81
+ - [x] **CI Validation**: GitHub Actions workflow to boot and verify the shell syntax.
82
+ - [x] **Chaos Engineering (Phase 41)**:
83
83
  - [ ] **Config Chaos**: Randomly corrupt config files to test recovery.
84
84
  - [ ] **Network Simulation**: Simulate high latency/packet loss.
85
85
  - [ ] **Permission Fuzzing**: Verify strict umask behavior.
@@ -88,13 +88,13 @@ This roadmap steers the project from a "feature-rich dotfiles repo" to an **Ente
88
88
  **Goal:** "Supported Platforms Matrix".
89
89
  > *Only listed platforms are guaranteed to work; others are best-effort.*
90
90
 
91
- - [ ] **Support Matrix**: Explicit table of OS/Version support (macOS 14+, Ubuntu 24.04+, WSL2).
91
+ - [x] **Support Matrix**: Explicit table of OS/Version support. See `docs/reference/SUPPORT_MATRIX.md`.
92
92
  - [ ] **Windows Deep Integration (Phase 53)**:
93
93
  - [ ] **PowerShell Profile**: Mirror Zsh functionality.
94
94
  - [ ] **WinGet**: Declarative package management.
95
95
  - [ ] **WSL Bridge**: Seamless interop.
96
96
  - [ ] **Linux Deep Integration (Phase 55)**:
97
- - [ ] **Systemd User Units**: User service management.
97
+ - [x] **Systemd User Units**: User service management.
98
98
  - [ ] **Desktop Envs**: GNOME/KDE/Sway configs.
99
99
 
100
100
  ---
@@ -0,0 +1,195 @@
1
+ # Testing strategy
2
+
3
+ ## Overview
4
+
5
+ The repo uses a multi-layer testing approach: unit tests for individual functions, integration tests for system-wide behavior, and performance benchmarks for resource efficiency.
6
+
7
+ ## Quick start
8
+
9
+ ```bash
10
+ # Run all unit tests
11
+ ./tests/framework/test_runner.sh
12
+
13
+ # Run a specific test suite
14
+ ./tests/framework/test_runner.sh extract
15
+
16
+ # Run integration tests
17
+ RUN_INTEGRATION=1 ./tests/framework/test_runner.sh
18
+
19
+ # Run performance benchmarks
20
+ ./tests/performance/benchmark_runner.sh
21
+ ```
22
+
23
+ ## Test structure
24
+
25
+ ```text
26
+ tests/
27
+ ├── framework/ # Test framework
28
+ │ ├── assertions.sh # 16 assertion functions
29
+ │ ├── mocks.sh # Mock utilities
30
+ │ └── test_runner.sh # Test executor
31
+ ├── unit/ # 425 unit test files
32
+ ├── integration/ # 11 integration test files
33
+ └── performance/ # Benchmarks
34
+ ```
35
+
36
+ ## Writing tests
37
+
38
+ ### Test file template
39
+
40
+ ```bash
41
+ #!/usr/bin/env bash
42
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
43
+ source "$SCRIPT_DIR/../framework/assertions.sh"
44
+
45
+ # Source the function under test
46
+ source "$HOME/.dotfiles/.chezmoitemplates/functions/myfunction.sh"
47
+
48
+ # Test cases
49
+ test_start "function_basic_usage"
50
+ assert_exit_code 0 "myfunction arg1"
51
+
52
+ test_start "function_no_args"
53
+ assert_exit_code 1 "myfunction"
54
+ ```
55
+
56
+ ### Available assertions
57
+
58
+ | Function | Description |
59
+ |----------|-------------|
60
+ | `assert_equals expected actual [msg]` | Two values are equal |
61
+ | `assert_not_equals unexpected actual [msg]` | Two values differ |
62
+ | `assert_exit_code code command` | Command exits with given code |
63
+ | `assert_output_contains needle command` | Output contains string |
64
+ | `assert_output_not_contains needle command` | Output lacks string |
65
+ | `assert_output_matches pattern command` | Output matches regex |
66
+ | `assert_file_exists path [msg]` | File exists |
67
+ | `assert_file_not_exists path [msg]` | File doesn't exist |
68
+ | `assert_dir_exists path [msg]` | Directory exists |
69
+ | `assert_dir_not_exists path [msg]` | Directory doesn't exist |
70
+ | `assert_true condition [msg]` | Condition is true |
71
+ | `assert_false condition [msg]` | Condition is false |
72
+ | `assert_empty value [msg]` | String is empty |
73
+ | `assert_not_empty value [msg]` | String isn't empty |
74
+ | `assert_file_contains file needle [msg]` | File contains text |
75
+ | `assert_file_not_contains file needle [msg]` | File lacks text |
76
+
77
+ ### Mock utilities
78
+
79
+ | Function | Description |
80
+ |----------|-------------|
81
+ | `mock_init` | Initialize mock environment |
82
+ | `mock_command name output [exit_code]` | Create a mock command |
83
+ | `mock_command_spy name [output] [exit_code]` | Create a mock that records calls |
84
+ | `mock_get_calls name` | Get spy call history |
85
+ | `mock_call_count name` | Get number of spy calls |
86
+ | `mock_file content [filename]` | Create temp file with content |
87
+ | `mock_dir [prefix]` | Create temp directory |
88
+ | `mock_archive type [content]` | Create a mock archive file |
89
+ | `mock_env var_name value` | Set an environment variable |
90
+ | `mock_cleanup` | Clean up all mocks |
91
+
92
+ ## Test categories
93
+
94
+ ### Unit tests (`tests/unit/`)
95
+
96
+ Test individual functions in isolation. Each file follows the `test_*.sh` naming convention and is discoverable with `ls tests/unit/`.
97
+
98
+ ### Integration tests (`tests/integration/`)
99
+
100
+ Test complete workflows like the installation script and end-to-end apply behavior.
101
+
102
+ ### Performance tests (`tests/performance/`)
103
+
104
+ Measure resource efficiency with shell startup benchmarks and load tests.
105
+
106
+ ## Coverage goals
107
+
108
+ | Category | Target | Current |
109
+ |----------|--------|---------|
110
+ | Module coverage | >=95% | 100% |
111
+ | Unit test files | - | 425 |
112
+ | Integration test files | - | 11 |
113
+ | Total test files | - | 436 |
114
+ | Named tests (`test_start`) | - | 2149 |
115
+ | Unit test pass rate | 100% | 100% |
116
+
117
+ CI enforces module coverage via:
118
+
119
+ ```bash
120
+ MIN_COVERAGE=95 ./tests/framework/module_coverage.sh
121
+ ```
122
+
123
+ For a current local baseline, run:
124
+
125
+ ```bash
126
+ bash ./scripts/qa/coverage-baseline.sh --with-module-coverage
127
+ ```
128
+
129
+ For core internal behavior traceability, run:
130
+
131
+ ```bash
132
+ bash ./scripts/qa/traceability-coverage.sh
133
+ ```
134
+
135
+ ## CI integration
136
+
137
+ Tests run automatically on every push to main, every pull request, and weekly scheduled runs (Monday 6 AM UTC).
138
+
139
+ ### GitHub Actions example
140
+
141
+ ```yaml
142
+ - name: Run Tests
143
+ run: |
144
+ chmod +x ./tests/framework/test_runner.sh
145
+ ./tests/framework/test_runner.sh
146
+
147
+ - name: Run Integration Tests
148
+ run: |
149
+ RUN_INTEGRATION=1 ./tests/framework/test_runner.sh
150
+
151
+ - name: Run Performance Benchmarks
152
+ run: |
153
+ ./tests/performance/benchmark_runner.sh
154
+ ```
155
+
156
+ ## Environment variables
157
+
158
+ | Variable | Default | Description |
159
+ |----------|---------|-------------|
160
+ | `RUN_INTEGRATION` | `0` | Set to `1` to include integration tests |
161
+ | `VERBOSE` | `0` | Set to `1` for verbose output |
162
+ | `REPO_ROOT` | Auto-detected | Repository root directory |
163
+ | `TESTS_DIR` | Auto-detected | Tests directory |
164
+
165
+ ## Best practices
166
+
167
+ 1. **Isolation** -- Each test should be independent and self-contained.
168
+ 2. **Cleanup** -- Use mocks that auto-cleanup via traps.
169
+ 3. **No sleep** -- Avoid `sleep` or hardcoded delays.
170
+ 4. **Descriptive names** -- Test names should describe what's being verified.
171
+ 5. **Edge cases** -- Test error conditions, not just happy paths.
172
+ 6. **Security** -- Include tests for dangerous input rejection.
173
+
174
+ ## Troubleshooting
175
+
176
+ ### Tests not found
177
+
178
+ Make sure test files match the `test_*.sh` pattern and are executable:
179
+
180
+ ```bash
181
+ chmod +x tests/unit/test_*.sh
182
+ chmod +x tests/integration/test_*.sh
183
+ ```
184
+
185
+ ### Function not available
186
+
187
+ If a test reports "function not available", verify the source file exists:
188
+
189
+ ```bash
190
+ ls -la .chezmoitemplates/functions/
191
+ ```
192
+
193
+ ### Mock cleanup issues
194
+
195
+ If mocks aren't cleaning up, make sure you aren't running with `set -e` before mock operations that might intentionally fail.
@@ -0,0 +1,31 @@
1
+ # Behavioral Traceability
2
+
3
+ This matrix ties core internal behaviors to implementation files, automated tests, and prose documentation.
4
+
5
+ It is enforced by `bash ./scripts/qa/traceability-coverage.sh`.
6
+
7
+ | Behavior ID | Behavior | Implementation | Test Evidence | Documentation |
8
+ |-------------|----------|----------------|---------------|---------------|
9
+ | BT-01 | AI status, launcher, and cache lifecycle | `scripts/dot/commands/ai.sh` | `tests/unit/dot-cli/test_dot_commands_ai.sh` | `docs/AI.md`, `docs/reference/UTILS.md` |
10
+ | BT-02 | Agent profiles, checkpoints, and conformance | `scripts/dot/commands/agent.sh` | `tests/unit/dot-cli/test_dot_commands_agent.sh`, `tests/unit/dot-cli/test_dot_agent_mode.sh`, `tests/unit/dot-cli/test_dot_a2a_conformance.sh` | `docs/operations/TRUSTED_AGENT_WORKSTATION.md`, `docs/interop/A2A.md`, `docs/reference/UTILS.md` |
11
+ | BT-03 | MCP policy validation and registry inspection | `scripts/dot/commands/meta.sh`, `scripts/diagnostics/mcp-doctor.sh` | `tests/unit/dot-cli/test_dot_commands_meta.sh`, `tests/unit/dot-cli/test_dot_cli.sh` | `docs/security/MCP_POLICY.md`, `docs/operations/TRUSTED_AGENT_WORKSTATION.md`, `docs/reference/UTILS.md` |
12
+ | BT-04 | Fleet status, drift, namespace, and events workflows | `scripts/dot/commands/fleet.sh` | `tests/unit/dot-cli/test_dot_commands_fleet.sh`, `tests/unit/dot-cli/test_dot_fleet_enforcement.sh` | `docs/operations/TRUSTED_AGENT_WORKSTATION.md`, `docs/operations/ATTESTATION.md`, `docs/reference/UTILS.md` |
13
+ | BT-05 | Secrets command surface and shell autoload buckets | `scripts/dot/commands/secrets.sh`, `dot_config/shell/10-secrets.sh` | `tests/unit/dot-cli/test_dot_commands_secrets.sh`, `tests/unit/shell/test_shell_secrets_autoload.sh` | `docs/security/SECRETS.md`, `docs/reference/UTILS.md` |
14
+ | BT-06 | Theme synchronization and multi-tool theme application | `dot_local/bin/executable_dot-theme-sync` | `tests/unit/theme/test_dot_theme_sync.sh` | `docs/guides/THEMING.md`, `docs/reference/THEMES.md`, `docs/reference/SCRIPTS.md` |
15
+ | BT-07 | Reliability audit orchestration | `scripts/qa/reliability-audit.sh` | `tests/unit/misc/test_qa_reliability.sh`, `tests/unit/misc/test_qa_reliability_behaviour.sh` | `docs/operations/RELIABILITY.md`, `docs/operations/TESTING.md` |
16
+ | BT-08 | Repository coverage baseline audit | `scripts/qa/coverage-baseline.sh` | `tests/unit/misc/test_qa_coverage_baseline.sh` | `docs/operations/RELIABILITY.md`, `docs/operations/TESTING.md` |
17
+ | BT-09 | Documentation coverage contract for public surfaces | `scripts/qa/docs-coverage.sh` | `tests/unit/misc/test_qa_docs_coverage.sh`, `tests/unit/misc/test_qa_docs_repo_coverage.sh` | `docs/operations/RELIABILITY.md`, `docs/reference/UTILS.md`, `docs/reference/SCRIPTS.md` |
18
+ | BT-10 | Repository executable-surface coverage gate | `tests/framework/module_coverage.sh` | `tests/unit/tools/test_public_entrypoints.sh`, `tests/unit/misc/test_module_coverage_behaviour.sh` | `docs/operations/TESTING.md`, `docs/security/VERIFICATION_VALIDATION.md`, `docs/reference/SCRIPTS.md` |
19
+ | BT-11 | Core apply, diff, status, edit, and commit workflows | `scripts/dot/commands/core.sh` | `tests/unit/dot-cli/test_dot_commands_core.sh`, `tests/unit/dot-cli/test_dot_cli.sh` | `docs/reference/UTILS.md` |
20
+ | BT-12 | Alias discovery, search, and governance workflows | `scripts/dot/commands/aliases.sh` | `tests/unit/dot-cli/test_dot_commands_aliases.sh` | `docs/reference/ALIASES.md`, `docs/reference/UTILS.md` |
21
+ | BT-13 | Appearance and theme command workflows | `scripts/dot/commands/appearance.sh` | `tests/unit/dot-cli/test_dot_commands_appearance.sh` | `docs/guides/THEMING.md`, `docs/reference/UTILS.md` |
22
+ | BT-14 | Diagnostics command workflows | `scripts/dot/commands/diagnostics.sh` | `tests/unit/dot-cli/test_dot_commands_diagnostics.sh` | `docs/operations/RELIABILITY.md`, `docs/reference/UTILS.md` |
23
+ | BT-15 | Lint command workflow | `scripts/dot/commands/lint.sh` | `tests/unit/dot-cli/test_dot_commands_lint.sh`, `tests/unit/dot-cli/test_lint.sh` | `docs/operations/TESTING.md`, `docs/reference/UTILS.md` |
24
+ | BT-16 | AI steering pattern workflows | `scripts/dot/commands/patterns.sh` | `tests/unit/dot-cli/test_dot_commands_patterns.sh` | `docs/AI.md` |
25
+ | BT-17 | Restore and rollback workflows | `scripts/dot/commands/restore.sh` | `tests/unit/dot-cli/test_dot_commands_restore.sh` | `docs/reference/UTILS.md` |
26
+ | BT-18 | Security command workflows | `scripts/dot/commands/security.sh` | `tests/unit/dot-cli/test_dot_commands_security.sh` | `docs/reference/UTILS.md`, `docs/security/COMPLIANCE.md` |
27
+ | BT-19 | Tool catalog and sandbox workflows | `scripts/dot/commands/tools.sh` | `tests/unit/dot-cli/test_dot_commands_tools.sh` | `docs/reference/TOOLS.md`, `docs/reference/UTILS.md` |
28
+ | BT-20 | Example validation contract | `scripts/qa/validate-examples.sh` | `tests/unit/misc/test_qa_reliability.sh` | `docs/operations/RELIABILITY.md` |
29
+ | BT-21 | WSL parity contract | `scripts/qa/wsl-contract.sh` | `tests/unit/misc/test_qa_reliability.sh` | `docs/operations/RELIABILITY.md`, `docs/reference/SUPPORT_MATRIX.md` |
30
+ | BT-22 | Internal behavior traceability contract | `scripts/qa/traceability-coverage.sh` | `tests/unit/misc/test_qa_traceability_coverage.sh` | `docs/operations/TRACEABILITY.md`, `docs/operations/RELIABILITY.md` |
31
+ | BT-23 | Multi-format Manual pipeline | `scripts/docs/build-manual.sh`, `scripts/docs/check-manual.sh`, `scripts/dot/commands/manual.sh` | `tests/unit/docs/test_build_manual.sh`, `tests/unit/docs/test_check_manual.sh`, `tests/unit/dot-cli/test_dot_commands_manual.sh` | `docs/manual/`, `docs/README.md`, `README.md` |
@@ -0,0 +1,61 @@
1
+ # Trusted Agent Workstation
2
+
3
+ This repository is more than shell setup.
4
+
5
+ It defines a signed, local-first workstation baseline for agentic development on macOS, Linux, WSL, and PowerShell.
6
+
7
+ ## Core model
8
+
9
+ - bounded agent profiles
10
+ - tracked MCP policy and registry
11
+ - workstation attestation
12
+ - signed commits and verified merges
13
+ - cross-platform CLI and diagnostics
14
+
15
+ ## Governance artifacts
16
+
17
+ The source of truth lives in tracked JSON artifacts:
18
+
19
+ - [policy-bundles.json](/home/seb/.dotfiles/dot_config/dotfiles/policy-bundles.json)
20
+ - [agent-profiles.json](/home/seb/.dotfiles/dot_config/dotfiles/agent-profiles.json)
21
+ - [mcp-policy.json](/home/seb/.dotfiles/dot_config/dotfiles/mcp-policy.json)
22
+ - [mcp-registry.json](/home/seb/.dotfiles/dot_config/dotfiles/mcp-registry.json)
23
+ - [model-registry.json](/home/seb/.dotfiles/dot_config/dotfiles/model-registry.json)
24
+ - [prompt-registry.json](/home/seb/.dotfiles/dot_config/dotfiles/prompt-registry.json)
25
+
26
+ ## Enterprise path
27
+
28
+ Phase 1 establishes:
29
+
30
+ - product framing
31
+ - policy bundles
32
+ - prompt and model change control
33
+ - attestation evidence for governance state
34
+
35
+ Implemented next-layer controls:
36
+
37
+ - filesystem-backed fleet attestation export
38
+ - replayable agent checkpoints
39
+ - signed policy bundle release workflow
40
+ - tracked A2A conformance validation
41
+
42
+ Further phases add:
43
+
44
+ - central audit export
45
+ - fleet drift dashboards
46
+ - checkpoint policies and retention controls
47
+ - broader protocol interoperability coverage
48
+
49
+ ## Validation
50
+
51
+ Run:
52
+
53
+ ```bash
54
+ dot doctor
55
+ dot mcp --strict
56
+ dot mode list
57
+ dot agent card --json
58
+ dot attest --json
59
+ ```
60
+
61
+ Every governance change requires a signed commit.