@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,458 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Compliance Architecture
6
+
7
+ This document describes the compliance, security, and cross-platform compatibility controls implemented in this repository, mapped to standard regulatory frameworks (SOC 2, ISO 27001, GDPR).
8
+
9
+ ## Overview
10
+
11
+ | Framework | Status | Description |
12
+ |-----------|--------|-------------|
13
+ | SOC 2 Type II | Aligned | Security, availability, and confidentiality |
14
+ | ISO 27001 | Aligned | Information security management controls |
15
+ | GDPR/HIPAA | Aligned | Privacy and data protection |
16
+ | ISO 13485 | Aligned | Risk management (FMEA), verification & validation |
17
+ | ALCOA | Implemented | Audit trail integrity |
18
+ | EU AI Act | Exempt | Minimal risk, open-source exemption (Article 2(12)) |
19
+
20
+ ---
21
+
22
+ ## EU AI Act (Regulation (EU) 2024/1689)
23
+
24
+ | Requirement | Status | Implementation |
25
+ |-------------|--------|----------------|
26
+ | **Risk classification** | Minimal risk | No high-risk use cases (Annex III) |
27
+ | **Open-source exemption** | Applicable | MIT license, no model weights distributed (Article 2(12)) |
28
+ | **Prohibited practices** | Confirmed none | No subliminal, exploitative, or social scoring use (Article 5) |
29
+ | **Transparency** | Voluntary | Agent session logging, model registry, attestation |
30
+ | **GPAI provisions** | Not applicable | Consumer of AI APIs, not a provider |
31
+
32
+ See [AI_ACT_COMPLIANCE.md](AI_ACT_COMPLIANCE.md) for full assessment.
33
+
34
+ ---
35
+
36
+ ## Regulatory Mapping
37
+
38
+ ### SOC 2 Type II
39
+
40
+ | Control | Description | Implementation |
41
+ |---------|-------------|----------------|
42
+ | **CC6.1** | Logical Access Security | `zsh` restricted permissions, SSH key management via `1Password`/Agents |
43
+ | **CC6.8** | Unauthorized Code Protection | GPG/SSH signed commits, `slsa-framework` workflow |
44
+ | **CC7.1** | System Operations | `compliance-guard.yml` blocks insecure patterns |
45
+ | **CC7.2** | Change Detection | Pre-commit hooks detect security violations |
46
+ | **CC8.1** | Change Management | Git-based IaC, PR templates, CODEOWNERS |
47
+ | **A1.2** | Audit Logs | `~/.local/share/dotfiles.log` tracks operations |
48
+
49
+ ### ISO 27001
50
+
51
+ | Control | Description | Implementation |
52
+ |---------|-------------|----------------|
53
+ | **A.9.1.1** | Access Control Policy | Principle of Least Privilege (umask 022/077) |
54
+ | **A.9.4.1** | Information Access Restriction | `chmod 777/666` blocked by CI |
55
+ | **A.12.1.2** | Change Management | Git version control with CI/CD verification |
56
+ | **A.12.6.1** | Technical Vulnerability Management | Gitleaks, TruffleHog secrets scanning |
57
+ | **A.13.1.1** | Network Controls | TLS enforcement (no `curl -k`) |
58
+ | **A.14.2.5** | Secure Engineering | ShellCheck, cross-platform testing |
59
+ | **A.14.2.8** | System Security Testing | Module coverage gate (>=95%, currently 100%), weekly scans |
60
+
61
+ ### GDPR / HIPAA (Privacy)
62
+
63
+ | Requirement | Description | Implementation |
64
+ |-------------|-------------|----------------|
65
+ | **Data Minimization** | Limit data collection | `privacy-mode` disables CLI telemetry |
66
+ | **Integrity** | Protect against tampering | `lock-configs` prevents modification |
67
+ | **Encryption** | Protect data at rest | Age encryption for sensitive dotfiles |
68
+
69
+ ---
70
+
71
+ ## Security Controls
72
+
73
+ ### TLS Enforcement
74
+
75
+ All network operations require valid TLS certificates:
76
+
77
+ | Control | Pattern Blocked | Enforcement |
78
+ |---------|-----------------|-------------|
79
+ | Insecure curl | `curl -k`, `--insecure` | Pre-commit + CI |
80
+ | Certificate bypass | `wget --no-check-certificate` | Pre-commit + CI |
81
+ | Plaintext HTTP | `http://` URLs | CI warning |
82
+
83
+ **Files:**
84
+
85
+ - Pre-commit: `config/pre-commit-config.yaml`
86
+ - CI: `.github/workflows/compliance-guard.yml`
87
+
88
+ ### Secrets Management
89
+
90
+ | Tool | Purpose | Configuration |
91
+ |------|---------|---------------|
92
+ | Gitleaks | Prevent secrets in commits | `config/gitleaks.toml` |
93
+ | TruffleHog | Deep secrets scanning | CI workflow |
94
+ | detect-secrets | Baseline secrets detection | `.secrets.baseline` |
95
+ | Age | Encrypt sensitive dotfiles | Chezmoi integration |
96
+
97
+ ### Permission Controls
98
+
99
+ | Control | Implementation |
100
+ |---------|----------------|
101
+ | Least privilege CI | `permissions: contents: read` default |
102
+ | No world-writable | `chmod 777/666` blocked by CI |
103
+ | CODEOWNERS | All paths mapped to reviewers |
104
+ | Signed commits | GPG signing enforced |
105
+
106
+ ### Dangerous Pattern Blocking
107
+
108
+ Patterns automatically blocked by CI and pre-commit hooks:
109
+
110
+ ```bash
111
+ # Blocked - insecure TLS
112
+ curl -k https://...
113
+ wget --no-check-certificate https://...
114
+
115
+ # Blocked - world-writable permissions
116
+ chmod 777 /path
117
+ chmod -R 666 /files
118
+
119
+ # Blocked - hardcoded credentials
120
+ password="literal_value"
121
+ ```
122
+
123
+ ---
124
+
125
+ ## Cross-Platform Compatibility
126
+
127
+ ### Supported Platforms
128
+
129
+ | Platform | Tools | Default Shell | Bash Version |
130
+ |----------|-------|---------------|--------------|
131
+ | Linux | GNU | Bash | 5.x |
132
+ | macOS | BSD | Zsh | 3.2 (system) |
133
+ | WSL | GNU | Bash | 5.x |
134
+
135
+ ### Line Ending Normalization
136
+
137
+ Configured in `.gitattributes`:
138
+
139
+ | Pattern | Line Ending | Reason |
140
+ |---------|-------------|--------|
141
+ | `*.sh` | LF | Unix scripts |
142
+ | `*.bash` | LF | Unix scripts |
143
+ | `*.zsh` | LF | Unix scripts |
144
+ | `*.bat` | CRLF | Windows batch |
145
+ | `*.ps1` | CRLF | PowerShell |
146
+
147
+ ### BSD vs GNU Compatibility
148
+
149
+ The `cross-platform-test.yml` workflow validates scripts on both platforms:
150
+
151
+ | Pattern | Issue | Portable Alternative |
152
+ |---------|-------|---------------------|
153
+ | `sed -i ''` | BSD requires backup ext | Check `$OSTYPE` |
154
+ | `sed -i` | GNU style | Check `$OSTYPE` |
155
+ | `grep -P` | GNU-only PCRE | Use `grep -E` |
156
+ | `date -d` | GNU-only | Use `date +%s` |
157
+ | `readarray` | Bash 4+ only | Use `while read` |
158
+ | `declare -A` | Bash 4+ only | Use indexed arrays |
159
+
160
+ ### Path Handling
161
+
162
+ | Requirement | Implementation |
163
+ |-------------|----------------|
164
+ | No hardcoded user paths | Use `$HOME` or `~` |
165
+ | Case-insensitive safe | No filename collisions |
166
+ | Cross-platform paths | No platform-specific path literals |
167
+
168
+ ---
169
+
170
+ ## CI/CD Pipeline
171
+
172
+ ### Workflow Matrix
173
+
174
+ | Workflow | Trigger | Purpose |
175
+ |----------|---------|---------|
176
+ | `ci.yml` | Push/PR | Full CI pipeline, ShellCheck, tests |
177
+ | `compliance-guard.yml` | Push/PR | Security pattern scanning |
178
+ | `cross-platform-test.yml` | Push/PR + weekly | BSD/GNU compatibility |
179
+ | `security-enhanced.yml` | Push/PR | Deep security analysis, SBOM |
180
+ | `codeql.yml` | Push/PR + weekly | Static code analysis |
181
+ | `sbom-diff.yml` | Pull request | SBOM diff and CVE correlation |
182
+ | `nightly.yml` | Daily 2 AM UTC | Dependency version checks |
183
+
184
+ ### Compliance Guard Jobs
185
+
186
+ ```text
187
+ compliance-guard.yml
188
+ ├── insecure-patterns # TLS, credentials, chmod
189
+ ├── portability # ShellCheck, paths, .gitattributes
190
+ ├── dockerfile-lint # Hadolint
191
+ └── compliance-summary # Report generation
192
+ ```
193
+
194
+ ### Cross-Platform Test Jobs
195
+
196
+ ```text
197
+ cross-platform-test.yml
198
+ ├── ubuntu-latest (GNU) # Linux compatibility
199
+ ├── macos-latest (BSD) # macOS compatibility
200
+ └── compatibility-report # Summary
201
+ ```
202
+
203
+ ### GitHub Actions Security
204
+
205
+ | Control | Implementation |
206
+ |---------|----------------|
207
+ | Pinned versions | All actions pinned to SHA or version |
208
+ | Minimal permissions | `contents: read` by default |
209
+ | Concurrency control | Cancel in-progress duplicates |
210
+ | Timeout limits | All jobs have explicit timeouts |
211
+
212
+ ---
213
+
214
+ ## Pre-Commit Hooks
215
+
216
+ ### Configuration
217
+
218
+ File: `config/pre-commit-config.yaml`
219
+
220
+ ### Hook Matrix
221
+
222
+ | Hook | Stage | Purpose |
223
+ |------|-------|---------|
224
+ | `shellcheck` | commit | Shell script linting |
225
+ | `shfmt` | commit | Shell script formatting |
226
+ | `gitleaks` | commit | Secrets detection |
227
+ | `detect-secrets` | commit | Credential scanning |
228
+ | `checkov` | commit | Infrastructure security |
229
+ | `hadolint` | commit | Dockerfile linting |
230
+ | `insecure-tls-check` | commit | Block `curl -k` |
231
+ | `dangerous-chmod-check` | commit | Block `chmod 777/666` |
232
+ | `security-policy-enforcement` | pre-push | Policy validation |
233
+
234
+ ### Installation
235
+
236
+ ```bash
237
+ pip install pre-commit
238
+ pre-commit install
239
+ pre-commit install --hook-type pre-push
240
+ ```
241
+
242
+ ---
243
+
244
+ ## Change Management
245
+
246
+ ### Pull Request Requirements
247
+
248
+ | Requirement | Implementation |
249
+ |-------------|----------------|
250
+ | PR template | `.github/PULL_REQUEST_TEMPLATE.md` |
251
+ | Code owners | `.github/CODEOWNERS` |
252
+ | CI checks | Required to pass |
253
+ | Review required | Auto-assigned via CODEOWNERS |
254
+
255
+ ### PR Template Checklist
256
+
257
+ ```markdown
258
+ - [ ] `chezmoi apply --dry-run` verified
259
+ - [ ] Manual testing on macOS
260
+ - [ ] Manual testing on Linux
261
+ - [ ] CI checks pass
262
+ ```
263
+
264
+ ### Commit Requirements
265
+
266
+ | Requirement | Implementation |
267
+ |-------------|----------------|
268
+ | Signed commits | GPG/SSH signing (cryptographically verified) |
269
+ | Conventional format | `feat:`, `fix:`, `docs:` prefixes |
270
+ | Co-author attribution | AI contributions attributed |
271
+
272
+ ### Cryptographic Identity Verification (ALCOA: Attributable)
273
+
274
+ For SOC 2 compliance, the "Attributable" principle requires that all changes are linked to a **verified cryptographic identity**, not just a username.
275
+
276
+ **Enforcement layers:**
277
+
278
+ | Layer | Mechanism | Status |
279
+ |-------|-----------|--------|
280
+ | Local | Pre-push hook blocks unsigned commits | Enforced |
281
+ | CI | `compliance-guard.yml` verifies signatures | Advisory |
282
+ | GitHub | Branch protection (optional) | Configurable |
283
+
284
+ **Pre-push hook location:** `scripts/git-hooks/pre-push`
285
+
286
+ ```bash
287
+ # The hook verifies each commit before push:
288
+ for c in $(git rev-list "$range"); do
289
+ if ! git verify-commit "$c" >/dev/null 2>&1; then
290
+ echo "Blocked: unsigned commit $c"
291
+ exit 1
292
+ fi
293
+ done
294
+ ```
295
+
296
+ **Setup signing:**
297
+
298
+ ```bash
299
+ # SSH signing (recommended)
300
+ git config --global gpg.format ssh
301
+ git config --global user.signingkey ~/.ssh/id_ed25519.pub
302
+ git config --global commit.gpgsign true
303
+
304
+ # GPG signing (alternative)
305
+ git config --global user.signingkey <YOUR_GPG_KEY_ID>
306
+ git config --global commit.gpgsign true
307
+
308
+ # Or use the dotfiles alias:
309
+ enable-signing ssh # or: enable-signing gpg
310
+ ```
311
+
312
+ **Install pre-push hook:**
313
+
314
+ ```bash
315
+ cp scripts/git-hooks/pre-push .git/hooks/pre-push
316
+ chmod +x .git/hooks/pre-push
317
+ ```
318
+
319
+ **GitHub Branch Protection (recommended):**
320
+
321
+ Enable "Require signed commits" in repository settings:
322
+ `Settings > Branches > Branch protection rules > Require signed commits`
323
+
324
+ ---
325
+
326
+ ## Test Coverage
327
+
328
+ ### Current Metrics
329
+
330
+ | Category | Count | Coverage |
331
+ |----------|-------|----------|
332
+ | Documentation files | 63 | Audited |
333
+ | Executable shell surfaces | 205 | Audited |
334
+ | Unit test files | 425 | Tested |
335
+ | Integration test files | 11 | Tested |
336
+ | **Total test files** | **436** | **Module coverage: 100% (threshold >=95%)** |
337
+ | **Named tests (`test_start`)** | **2149** | **Pass rate: 100%** |
338
+
339
+ ### Test Framework
340
+
341
+ ```text
342
+ tests/
343
+ ├── framework/
344
+ │ ├── assertions.sh # 16 assertion functions
345
+ │ ├── mocks.sh # Mock utilities
346
+ │ └── test_runner.sh # Test executor
347
+ ├── unit/
348
+ │ └── test_*.sh # 378 unit test files
349
+ ├── integration/
350
+ │ └── test_*.sh # 9 integration test files
351
+ └── performance/
352
+ └── benchmark_runner.sh
353
+ ```
354
+
355
+ ### Running Tests
356
+
357
+ ```bash
358
+ # Run all tests
359
+ ./tests/framework/test_runner.sh
360
+
361
+ # Run specific test
362
+ bash tests/unit/test_dot_commands_apply.sh
363
+ ```
364
+
365
+ ---
366
+
367
+ ## Security Documentation
368
+
369
+ ### Required Files
370
+
371
+ | File | Purpose | Location |
372
+ |------|---------|----------|
373
+ | SECURITY.md | Vulnerability reporting | `.github/SECURITY.md` |
374
+ | CONTRIBUTING.md | Contribution guidelines | `.github/CONTRIBUTING.md` |
375
+ | CODEOWNERS | Code ownership | `.github/CODEOWNERS` |
376
+ | INCIDENT_RESPONSE.md | Incident response plan | `docs/security/` |
377
+ | FMEA.md | Failure Mode & Effects Analysis | `docs/security/` |
378
+ | VERIFICATION_VALIDATION.md | ISO 13485-style V&V report | `docs/security/` |
379
+ | .editorconfig | Editor settings | Root |
380
+ | .gitattributes | Git attributes | Root |
381
+
382
+ ### Vulnerability Response SLA
383
+
384
+ | Severity | Initial Response | Resolution Target |
385
+ |----------|------------------|-------------------|
386
+ | Critical | 24 hours | 48 hours |
387
+ | High | 72 hours | 7 days |
388
+ | Medium | 5 business days | 30 days |
389
+ | Low | 10 business days | 90 days |
390
+
391
+ ---
392
+
393
+ ## Audit & Forensics
394
+
395
+ ### Immutability
396
+
397
+ Lock critical configuration files:
398
+
399
+ ```bash
400
+ lock-configs # Sets chflags uchg (macOS) or chattr +i (Linux)
401
+ ```
402
+
403
+ ### Audit Trail
404
+
405
+ ```bash
406
+ # View dotfiles operations log
407
+ dot audit
408
+
409
+ # Log location
410
+ ~/.local/share/dotfiles.log
411
+ ```
412
+
413
+ ### Supply Chain Security
414
+
415
+ | Control | Implementation |
416
+ |---------|----------------|
417
+ | SBOM | Generated for every release (SPDX) |
418
+ | Provenance | SLSA Level 3 build attestation |
419
+ | Dependencies | Pinned versions, weekly updates |
420
+
421
+ ---
422
+
423
+ ## Verification Commands
424
+
425
+ ### Manual Verification
426
+
427
+ ```bash
428
+ # Run all pre-commit hooks
429
+ pre-commit run --all-files
430
+
431
+ # Run unit tests
432
+ ./tests/framework/test_runner.sh
433
+
434
+ # Check for insecure patterns
435
+ grep -rn --include="*.sh" -E 'curl.*-k|wget.*--no-check' .
436
+
437
+ # Validate .gitattributes
438
+ grep "text=auto" .gitattributes && echo "OK"
439
+ ```
440
+
441
+ ### Automated Verification
442
+
443
+ | Schedule | Check |
444
+ |----------|-------|
445
+ | Every PR | compliance-guard, cross-platform-test |
446
+ | Weekly | Full security scan, CodeQL |
447
+ | Nightly | Tool version checks |
448
+
449
+ ---
450
+
451
+ ## References
452
+
453
+ - [SOC 2 Type II](https://www.aicpa.org/soc2)
454
+ - [ISO 27001:2022](https://www.iso.org/standard/27001)
455
+ - [OWASP Top 10](https://owasp.org/Top10/)
456
+ - [Google Shell Style Guide](https://google.github.io/styleguide/shellguide.html)
457
+ - [ShellCheck Wiki](https://www.shellcheck.net/wiki/)
458
+ - [SLSA Framework](https://slsa.dev/)
@@ -0,0 +1,86 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # deps.dev Advisory Exceptions
6
+
7
+ The CI workflow `.github/workflows/deps-dev-validation.yml` scans
8
+ direct dependencies (npm + PyPI + GitHub Actions) against the
9
+ [deps.dev Insights API](https://docs.deps.dev/) on every PR, every
10
+ push to `master`, and every Tuesday at 04:00 UTC. When an advisory
11
+ is reported at or above the threshold (default `HIGH`), the workflow
12
+ fails.
13
+
14
+ This page is where time-bound exceptions live. An entry here suppresses
15
+ the check for one specific `(ecosystem, package)` pair, with an expiry
16
+ date so the exception cannot accumulate quietly.
17
+
18
+ Managed under [#877](https://github.com/sebastienrousseau/dotfiles/issues/877).
19
+
20
+ ## Active exceptions
21
+
22
+ _(none currently)_
23
+
24
+ ## Adding an exception
25
+
26
+ Add an entry below in this exact format — the scanner greps for
27
+ `` `<ecosystem>:<package>` `` at the start of a line (case-sensitive,
28
+ backtick-delimited):
29
+
30
+ ```
31
+ `NPM:lodash` (expires 2026-12-31): Maintained fork; advisory affects
32
+ only the unused stream-API code path. Confirmed via static analysis.
33
+ Tracked under #NNNN.
34
+ ```
35
+
36
+ `<ecosystem>` is one of:
37
+
38
+ | Ecosystem | Source |
39
+ |---|---|
40
+ | `NPM` | `package.json` direct deps |
41
+ | `PYPI` | `pyproject.toml` direct deps |
42
+ | `GITHUB_ACTIONS` | `uses:` references in `.github/workflows/*.yml` |
43
+
44
+ `(expires YYYY-MM-DD)` is required. Use a 90-day window for routine
45
+ work; longer windows need a sentence explaining why and a follow-up
46
+ issue link.
47
+
48
+ ## When to add vs not add
49
+
50
+ **Legitimate exception**:
51
+
52
+ - The advisory is in a code path your usage doesn't reach (e.g.
53
+ vulnerable function isn't called by anything in this repo).
54
+ - The upstream fix is in flight and you've already opened a PR or
55
+ bumped to a beta.
56
+ - The package is end-of-life and you're tracking the migration to a
57
+ successor under a dedicated issue.
58
+
59
+ **Not an exception** — fix the dep instead:
60
+
61
+ - "Bumping the version is annoying" — that's the whole point of the
62
+ gate.
63
+ - "The advisory might be a false positive" — verify via deps.dev's
64
+ underlying source; if confirmed FP, file with deps.dev rather than
65
+ exception here.
66
+ - "We don't have time this sprint" — that's a deferral, not an
67
+ exception. Bump the issue to next sprint, don't suppress.
68
+
69
+ ## Expiry policy
70
+
71
+ The scanner does not currently parse expiry dates (deferred — needs
72
+ a date-comparison helper). A monthly maintainer review of this page
73
+ is the human gate. Any entry past its expiry should either be
74
+ resolved (dep bumped, exception removed) or re-justified with a new
75
+ expiry.
76
+
77
+ When the date-parsing automation lands, expired exceptions will
78
+ auto-fail the gate even when they're still listed here.
79
+
80
+ ## References
81
+
82
+ - [`scripts/ci/check-deps-dev.sh`](../../scripts/ci/check-deps-dev.sh) — the scanner.
83
+ - [`.github/workflows/deps-dev-validation.yml`](../../.github/workflows/deps-dev-validation.yml) — CI wiring.
84
+ - [`tests/unit/security/test_check_deps_dev.sh`](../../tests/unit/security/test_check_deps_dev.sh) — contract test against canned fixtures.
85
+ - [deps.dev API reference](https://docs.deps.dev/api/v3/).
86
+ - Issue [#877](https://github.com/sebastienrousseau/dotfiles/issues/877).
@@ -0,0 +1,57 @@
1
+ ---
2
+ render_with_liquid: false
3
+ ---
4
+
5
+ # Secrets Encryption with SOPS and age
6
+
7
+ ## Quick Start
8
+
9
+ ```bash
10
+ # 1. Generate an age key (one-time)
11
+ mkdir -p ~/.config/sops/age
12
+ age-keygen -o ~/.config/sops/age/keys.txt
13
+
14
+ # 2. Get your public key
15
+ age-keygen -y ~/.config/sops/age/keys.txt
16
+ # Output: age1abc123...
17
+
18
+ # 3. Update .sops.yaml with your public key
19
+ # Replace the placeholder key in .sops.yaml with your actual public key
20
+
21
+ # 4. Encrypt a file
22
+ sops --encrypt --age $(age-keygen -y ~/.config/sops/age/keys.txt) secrets.yaml > secrets.sops.yaml
23
+
24
+ # 5. Edit encrypted files
25
+ sops secrets.sops.yaml
26
+ ```
27
+
28
+ ## Key Management
29
+
30
+ - **Private key**: `~/.config/sops/age/keys.txt` — never commit this file.
31
+ - **Public key**: Safe to share. It lives in `.sops.yaml`.
32
+ - **Backup**: Keep your private key in a password manager or a hardware security module.
33
+
34
+ ## Recovery
35
+
36
+ If you lose your age private key, follow these steps:
37
+
38
+ 1. Create a new key: `age-keygen -o ~/.config/sops/age/keys.txt`
39
+ 2. Re-encrypt all secrets with the new public key.
40
+ 3. Update `.sops.yaml` with the new public key.
41
+
42
+ ## Integration with Chezmoi
43
+
44
+ Chezmoi has built-in support for age encryption.
45
+
46
+ ```bash
47
+ chezmoi add --encrypt ~/.ssh/config
48
+ ```
49
+
50
+ This encrypts the file in the source state. It uses the age key set in `~/.config/chezmoi/chezmoi.toml`:
51
+
52
+ ```toml
53
+ encryption = "age"
54
+ [age]
55
+ identity = "~/.config/sops/age/keys.txt"
56
+ recipient = "age1abc123..."
57
+ ```