@sebastienrousseau/dotfiles 0.2.520 → 0.2.522

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 (323) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/LICENSE-MIT +21 -0
  4. package/README.md +43 -37
  5. package/install.sh +76 -10
  6. package/package.json +7 -7
  7. package/tools/README.md +49 -0
  8. package/tools/ci/install-chezmoi-verified.sh +68 -0
  9. package/docs/.vitepress/reports/localization-readability-audit.md +0 -73
  10. package/docs/AI.md +0 -179
  11. package/docs/ARCHITECTURE.md +0 -117
  12. package/docs/CNAME +0 -1
  13. package/docs/CONFIG_STRATEGY.md +0 -124
  14. package/docs/COPYRIGHT +0 -7
  15. package/docs/ECOSYSTEM.md +0 -220
  16. package/docs/GOLD-STANDARD-AUDIT.md +0 -352
  17. package/docs/GOVERNANCE.md +0 -98
  18. package/docs/MAINTAINERS.md +0 -41
  19. package/docs/MINIMUM-TOOLCHAIN.md +0 -100
  20. package/docs/NAMING_CONVENTIONS.md +0 -102
  21. package/docs/OPENCODE.md +0 -127
  22. package/docs/README.md +0 -84
  23. package/docs/STRUCTURE.md +0 -102
  24. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  25. package/docs/adr/ADR-002-shell-performance.md +0 -130
  26. package/docs/adr/ADR-003-security-first.md +0 -158
  27. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  28. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  29. package/docs/adr/ADR-006-shell-selection.md +0 -124
  30. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  31. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  32. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  33. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  34. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  35. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  36. package/docs/adr/README.md +0 -40
  37. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  38. package/docs/architecture/ARCHITECTURE.md +0 -20
  39. package/docs/architecture/INTEROP.md +0 -44
  40. package/docs/architecture/REPO_LAYOUT.md +0 -241
  41. package/docs/architecture/WALKTHROUGH.md +0 -86
  42. package/docs/architecture/fleet-deployment.md +0 -77
  43. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  44. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  45. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  46. package/docs/archive/PLAN.md +0 -199
  47. package/docs/archive/REPO_AUDIT.md +0 -31
  48. package/docs/articles/.pages +0 -6
  49. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  50. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  51. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  52. package/docs/articles/index.md +0 -36
  53. package/docs/guides/INSTALL.md +0 -144
  54. package/docs/guides/MACOS_ICLOUD_SYMLINKS.md +0 -121
  55. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  56. package/docs/guides/THEMING.md +0 -230
  57. package/docs/guides/TROUBLESHOOTING.md +0 -176
  58. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  59. package/docs/index.md +0 -132
  60. package/docs/interop/A2A.md +0 -39
  61. package/docs/interop/POWERSHELL.md +0 -102
  62. package/docs/manual/00-introduction.md +0 -89
  63. package/docs/manual/01-concepts/01-architecture.md +0 -138
  64. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  65. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  66. package/docs/manual/01-concepts/04-fleet.md +0 -148
  67. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  68. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  69. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  70. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  71. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  72. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  73. package/docs/manual/03-reference/01-dot-cli.md +0 -475
  74. package/docs/manual/03-reference/02-config-files.md +0 -265
  75. package/docs/manual/03-reference/03-environment.md +0 -124
  76. package/docs/manual/03-reference/04-templates.md +0 -190
  77. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  78. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  79. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  80. package/docs/manual/04-cookbook/03-faq.md +0 -175
  81. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  82. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  83. package/docs/manual/05-appendices/C-glossary.md +0 -40
  84. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  85. package/docs/manual/05-appendices/E-license.md +0 -38
  86. package/docs/manual/_toc.yml +0 -58
  87. package/docs/manual/command-index.md +0 -175
  88. package/docs/manual/concept-index.md +0 -170
  89. package/docs/manual/index.md +0 -66
  90. package/docs/migration/README.md +0 -81
  91. package/docs/migration/from-bare-git-repo.md +0 -156
  92. package/docs/migration/from-gnu-stow.md +0 -165
  93. package/docs/migration/from-plain-chezmoi.md +0 -148
  94. package/docs/migration/from-yadm.md +0 -187
  95. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  96. package/docs/operations/ATTESTATION.md +0 -44
  97. package/docs/operations/CI_CADENCE.md +0 -107
  98. package/docs/operations/CI_COMPOSITES.md +0 -156
  99. package/docs/operations/COMPLETIONS.md +0 -123
  100. package/docs/operations/COVERAGE.md +0 -204
  101. package/docs/operations/DRIFT.md +0 -107
  102. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  103. package/docs/operations/MAINTENANCE.md +0 -63
  104. package/docs/operations/MANIFEST.md +0 -127
  105. package/docs/operations/MIGRATION.md +0 -109
  106. package/docs/operations/OPERATIONS.md +0 -188
  107. package/docs/operations/PERFORMANCE.md +0 -133
  108. package/docs/operations/PERFORMANCE_BUDGETS.md +0 -196
  109. package/docs/operations/REGISTRY.md +0 -90
  110. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  111. package/docs/operations/RELIABILITY.md +0 -122
  112. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  113. package/docs/operations/ROADMAP.md +0 -10
  114. package/docs/operations/ROADMAP_2026.md +0 -7
  115. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  116. package/docs/operations/TESTING.md +0 -216
  117. package/docs/operations/TRACEABILITY.md +0 -44
  118. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  119. package/docs/operations/VERSION_SYNC.md +0 -393
  120. package/docs/packaging.md +0 -222
  121. package/docs/reference/ALIASES.md +0 -131
  122. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  123. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  124. package/docs/reference/FEATURE-MATRIX.md +0 -646
  125. package/docs/reference/FEATURES.md +0 -66
  126. package/docs/reference/FONTS.md +0 -112
  127. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  128. package/docs/reference/PROFILES.md +0 -69
  129. package/docs/reference/SCREENSHOTS.md +0 -121
  130. package/docs/reference/SCRIPTS.md +0 -71
  131. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  132. package/docs/reference/THEMES.md +0 -117
  133. package/docs/reference/TOOLS.md +0 -110
  134. package/docs/reference/UTILS.md +0 -243
  135. package/docs/registry.json +0 -6
  136. package/docs/schema/dot-env-v1.json +0 -110
  137. package/docs/schema/dot-registry-v1.json +0 -33
  138. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  139. package/docs/security/AUDIT_BYPASS.md +0 -103
  140. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  141. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  142. package/docs/security/CI_PINNING.md +0 -129
  143. package/docs/security/COMMIT_SIGNING.md +0 -138
  144. package/docs/security/COMPLIANCE.md +0 -458
  145. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  146. package/docs/security/DISCLOSURE.md +0 -130
  147. package/docs/security/ENCRYPTION.md +0 -57
  148. package/docs/security/FMEA.md +0 -159
  149. package/docs/security/FUZZING.md +0 -209
  150. package/docs/security/HISTORY_FILTERING.md +0 -132
  151. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  152. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  153. package/docs/security/KEYS.md +0 -49
  154. package/docs/security/KEY_ROTATION.md +0 -303
  155. package/docs/security/MCP_POLICY.md +0 -78
  156. package/docs/security/POLICY_RELEASES.md +0 -37
  157. package/docs/security/README.md +0 -28
  158. package/docs/security/SCORECARD.md +0 -195
  159. package/docs/security/SECRETS.md +0 -158
  160. package/docs/security/SECURITY.md +0 -45
  161. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  162. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  163. package/docs/security/SOUP_REGISTER.md +0 -36
  164. package/docs/security/THREAT_MODEL.md +0 -130
  165. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  166. package/docs/security/VERIFY_RELEASE.md +0 -201
  167. package/docs/security/security-pubkey.asc +0 -15
  168. package/docs/stylesheets/extra.css +0 -444
  169. package/docs/themes/README.md +0 -10
  170. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  171. package/docs/themes/hero-shot.svg +0 -78
  172. package/scripts/README.md +0 -123
  173. package/scripts/ci/check-copyright-headers.sh +0 -8
  174. package/scripts/ci/check-shell-preamble.sh +0 -8
  175. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  176. package/scripts/demo/record.sh +0 -43
  177. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  178. package/scripts/diagnostics/alias-governance.sh +0 -165
  179. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  180. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  181. package/scripts/diagnostics/attest-verify.sh +0 -147
  182. package/scripts/diagnostics/benchmark.sh +0 -408
  183. package/scripts/diagnostics/conflicts.sh +0 -73
  184. package/scripts/diagnostics/doctor-unified.sh +0 -43
  185. package/scripts/diagnostics/doctor.sh +0 -797
  186. package/scripts/diagnostics/drift-dashboard.sh +0 -203
  187. package/scripts/diagnostics/health.sh +0 -656
  188. package/scripts/diagnostics/history-analysis.sh +0 -86
  189. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  190. package/scripts/diagnostics/perf.sh +0 -453
  191. package/scripts/diagnostics/scorecard.sh +0 -120
  192. package/scripts/diagnostics/secret-governance.sh +0 -65
  193. package/scripts/diagnostics/security-score.sh +0 -467
  194. package/scripts/diagnostics/smoke-test.sh +0 -88
  195. package/scripts/diagnostics/snapshot.sh +0 -90
  196. package/scripts/diagnostics/verify.sh +0 -108
  197. package/scripts/diagnostics/verify_state.sh +0 -73
  198. package/scripts/diagnostics/version-locks.sh +0 -94
  199. package/scripts/diagnostics/workstation-attestation.sh +0 -212
  200. package/scripts/dot/commands/agent.sh +0 -535
  201. package/scripts/dot/commands/agents.sh +0 -352
  202. package/scripts/dot/commands/ai.sh +0 -600
  203. package/scripts/dot/commands/aliases.sh +0 -277
  204. package/scripts/dot/commands/appearance.sh +0 -110
  205. package/scripts/dot/commands/completion.sh +0 -171
  206. package/scripts/dot/commands/core.sh +0 -217
  207. package/scripts/dot/commands/diagnostics.sh +0 -265
  208. package/scripts/dot/commands/env-emit.sh +0 -203
  209. package/scripts/dot/commands/fleet.sh +0 -711
  210. package/scripts/dot/commands/init.sh +0 -185
  211. package/scripts/dot/commands/lint.sh +0 -208
  212. package/scripts/dot/commands/manual.sh +0 -169
  213. package/scripts/dot/commands/meta.sh +0 -438
  214. package/scripts/dot/commands/patterns.sh +0 -55
  215. package/scripts/dot/commands/registry.sh +0 -455
  216. package/scripts/dot/commands/restore.sh +0 -232
  217. package/scripts/dot/commands/secrets.sh +0 -296
  218. package/scripts/dot/commands/security.sh +0 -102
  219. package/scripts/dot/commands/tools.sh +0 -570
  220. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  221. package/scripts/dot/powershell/Dot.psm1 +0 -319
  222. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  223. package/scripts/fonts/patch-fonts.sh +0 -36
  224. package/scripts/git-hooks/install.sh +0 -12
  225. package/scripts/git-hooks/pre-commit +0 -12
  226. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  227. package/scripts/git-hooks/pre-push +0 -105
  228. package/scripts/git-hooks/prepare-commit-msg +0 -29
  229. package/scripts/lib/secrets_provider.sh +0 -200
  230. package/scripts/nvim/headless-upgrade.lua +0 -81
  231. package/scripts/ops/ai-setup.sh +0 -71
  232. package/scripts/ops/bundle.sh +0 -104
  233. package/scripts/ops/chaos.sh +0 -50
  234. package/scripts/ops/chezmoi-apply.sh +0 -333
  235. package/scripts/ops/chezmoi-diff.sh +0 -16
  236. package/scripts/ops/chezmoi-remove.sh +0 -46
  237. package/scripts/ops/chezmoi-update.sh +0 -67
  238. package/scripts/ops/heal-chezmoi.sh +0 -87
  239. package/scripts/ops/heal-system.sh +0 -129
  240. package/scripts/ops/heal-tools.sh +0 -297
  241. package/scripts/ops/heal.sh +0 -223
  242. package/scripts/ops/post-apply-repair.sh +0 -107
  243. package/scripts/ops/prewarm.sh +0 -128
  244. package/scripts/ops/release.sh +0 -262
  245. package/scripts/ops/rollback.sh +0 -613
  246. package/scripts/ops/setup.sh +0 -138
  247. package/scripts/ops/teleport.sh +0 -34
  248. package/scripts/qa/check-feature-matrix.sh +0 -296
  249. package/scripts/qa/check-version-consistency.sh +0 -12
  250. package/scripts/qa/coverage-baseline.sh +0 -61
  251. package/scripts/qa/docs-coverage.sh +0 -118
  252. package/scripts/qa/examples-coverage.sh +0 -94
  253. package/scripts/qa/powershell-contract.ps1 +0 -95
  254. package/scripts/qa/reliability-audit.sh +0 -139
  255. package/scripts/qa/scorecard-snapshot.sh +0 -128
  256. package/scripts/qa/traceability-coverage.sh +0 -124
  257. package/scripts/qa/validate-examples.sh +0 -90
  258. package/scripts/qa/wsl-contract.sh +0 -12
  259. package/scripts/secrets/age-init.sh +0 -82
  260. package/scripts/secrets/create-secrets-file.sh +0 -46
  261. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  262. package/scripts/security/backup.sh +0 -58
  263. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  264. package/scripts/security/dns-doh.sh +0 -52
  265. package/scripts/security/encryption-check.sh +0 -55
  266. package/scripts/security/enforce-policies.sh +0 -552
  267. package/scripts/security/firewall.sh +0 -91
  268. package/scripts/security/lock-configs.sh +0 -67
  269. package/scripts/security/lock-screen.sh +0 -56
  270. package/scripts/security/manage-secrets.sh +0 -429
  271. package/scripts/security/ssh-cert.sh +0 -204
  272. package/scripts/security/telemetry-kill.sh +0 -51
  273. package/scripts/security/usb-safety.sh +0 -52
  274. package/scripts/theme/apply-gnome-theme.sh +0 -333
  275. package/scripts/theme/extract-heic-frames.sh +0 -115
  276. package/scripts/theme/extract-theme.py +0 -1020
  277. package/scripts/theme/install-boot-logo.sh +0 -63
  278. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  279. package/scripts/theme/install-cursors.sh +0 -26
  280. package/scripts/theme/install-file-icons.sh +0 -27
  281. package/scripts/theme/install-grub-theme.sh +0 -62
  282. package/scripts/theme/install-lock-icon.sh +0 -31
  283. package/scripts/theme/merge-wallpaper.sh +0 -146
  284. package/scripts/theme/rebuild-themes.sh +0 -603
  285. package/scripts/theme/switch.sh +0 -476
  286. package/scripts/theme/wallpaper-rotate.sh +0 -137
  287. package/scripts/theme/wallpaper-sync.sh +0 -690
  288. package/scripts/tools/cmatrix.sh +0 -22
  289. package/scripts/tools/detect-collisions.py +0 -103
  290. package/scripts/tools/emoji-picker.sh +0 -49
  291. package/scripts/tools/figlet-banner.sh +0 -19
  292. package/scripts/tools/log-rotate.sh +0 -31
  293. package/scripts/tools/lolcat-wrap.sh +0 -20
  294. package/scripts/tools/pipes.sh +0 -49
  295. package/scripts/tuning/linux.sh +0 -186
  296. package/scripts/tuning/macos.sh +0 -56
  297. package/scripts/uninstall.sh +0 -86
  298. package/scripts/verify-release-versions +0 -156
  299. package/scripts/version-sync.sh +0 -714
  300. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  301. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  302. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  303. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  304. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  305. package/templates/projects/go/README.md +0 -7
  306. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  307. package/templates/projects/go/go.mod +0 -3
  308. package/templates/projects/go/go.sum +0 -0
  309. package/templates/projects/molecule/README.md +0 -7
  310. package/templates/projects/molecule/converge.yml +0 -7
  311. package/templates/projects/molecule/molecule.yml +0 -16
  312. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  313. package/templates/projects/node/README.md +0 -7
  314. package/templates/projects/node/package-lock.json +0 -12
  315. package/templates/projects/node/package.json +0 -10
  316. package/templates/projects/node/src/index.js +0 -3
  317. package/templates/projects/packer/README.md +0 -15
  318. package/templates/projects/packer/main.pkr.hcl +0 -15
  319. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  320. package/templates/projects/python/README.md +0 -7
  321. package/templates/projects/python/pyproject.toml +0 -25
  322. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  323. package/templates/projects/python/tests/test_basic.py +0 -3
package/docs/index.md DELETED
@@ -1,132 +0,0 @@
1
- ---
2
- title: .dotfiles — dark, signed, cross-platform
3
- description: Cross-platform, signed, local-first dotfiles for macOS, Linux, and WSL.
4
- hide:
5
- - navigation
6
- - toc
7
- render_with_liquid: false
8
- ---
9
-
10
- <section class="dot-hero" markdown>
11
-
12
- # .dotfiles
13
-
14
- <p class="tagline">Cross-platform, signed, local-first dotfiles for macOS, Linux, and WSL — multi-shell parity (bash/zsh/fish/nushell), a fast <code>dot</code> CLI, wallpaper-driven themes, SLSA-signed releases, and AI/MCP-aware tooling.</p>
15
-
16
- <div class="buttons">
17
- <a class="primary" href="guides/INSTALL/">Install →</a>
18
- <a href="https://github.com/sebastienrousseau/dotfiles">GitHub</a>
19
- <a href="reference/UTILS/">Utilities</a>
20
- <a href="ARCHITECTURE/">Architecture</a>
21
- </div>
22
-
23
- </section>
24
-
25
- ## What's inside
26
-
27
- <div class="grid cards" markdown>
28
-
29
- - :material-console:{ .lg .middle } **Multi-shell parity**
30
-
31
- ---
32
-
33
- Bash, Zsh, Fish, Nushell — same aliases, functions, prompt, and completions. Cross-shell env parity from `.chezmoidata.toml`.
34
-
35
- [→ Shell hub](reference/UTILS.md)
36
-
37
- - :material-lock-check:{ .lg .middle } **Signed & attested**
38
-
39
- ---
40
-
41
- Every commit SSH-signed, DCO enforced, SLSA-signed releases, SBOM + CVE gate, secret encryption via age.
42
-
43
- [→ Security](operations/ATTESTATION.md)
44
-
45
- - :material-palette:{ .lg .middle } **190 wallpaper-driven themes**
46
-
47
- ---
48
-
49
- K-Means CIELAB color extraction. Terminal, editor, DE — all follow the wallpaper. `dot theme rebuild --force` regenerates from `~/Pictures/Wallpapers/`.
50
-
51
- [→ Theme system](reference/UTILS.md)
52
-
53
- - :material-rocket-launch:{ .lg .middle } **Fast `dot` CLI**
54
-
55
- ---
56
-
57
- 142+ subcommands: apply, health, doctor, heal, ai, agent, fleet, secrets, teleport, uninstall — with fzf pickers and a Bubble Tea cockpit.
58
-
59
- [→ CLI reference](reference/UTILS.md)
60
-
61
- - :material-check-decagram:{ .lg .middle } **CI you can trust**
62
-
63
- ---
64
-
65
- 35+ checks — shellcheck, shfmt, luacheck, stylua, CodeQL, Snyk, grype/SBOM, deps.dev, doc-drift gate, examples contract at 100%.
66
-
67
- [→ Operations](operations/OPERATIONS.md)
68
-
69
- - :material-earth:{ .lg .middle } **Cross-platform**
70
-
71
- ---
72
-
73
- macOS (Intel & Apple Silicon), Linux (Ubuntu, Fedora, Arch, Alpine, openSUSE), WSL, PowerShell 7.5+, real BSDs.
74
-
75
- [→ Support matrix](reference/SUPPORT_MATRIX.md)
76
-
77
- - :material-brain:{ .lg .middle } **AI & MCP aware**
78
-
79
- ---
80
-
81
- 18-agent fleet cockpit (`dot ai`), local Claude gateway, MCP registry, context patterns, provider secrets — first-class support, not bolted on.
82
-
83
- [→ AI operations](AI.md)
84
-
85
- - :material-account-cog:{ .lg .middle } **Chezmoi under the hood**
86
-
87
- ---
88
-
89
- Deterministic templates, feature flags, profiles, `run_onchange_` hooks. Everything lives in `defaults/` and applies to `$HOME` on-demand.
90
-
91
- [→ Architecture](ARCHITECTURE.md)
92
-
93
- </div>
94
-
95
- ## Quick start
96
-
97
- Install onto a fresh machine:
98
-
99
- === "macOS / Linux / WSL"
100
-
101
- ```bash
102
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
103
- ```
104
-
105
- === "Windows (PowerShell 7+)"
106
-
107
- ```powershell
108
- iwr -useb https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.ps1 | iex
109
- ```
110
-
111
- Once installed:
112
-
113
- dot doctor # verify state
114
- dot health # dashboard with actionable warnings
115
- dot ai # launch the AI cockpit (Bubble Tea TUI)
116
- dot theme # pick a wallpaper-driven theme
117
- dot help all # full CLI reference
118
-
119
- ## Where to next
120
-
121
- - [**Install guide**](guides/INSTALL.md) — full bootstrap walkthrough, per-platform.
122
- - [**Utilities & `dot` CLI**](reference/UTILS.md) — every subcommand with examples.
123
- - [**Architecture**](ARCHITECTURE.md) — how the layers fit together.
124
- - [**Trusted agent workstation**](operations/TRUSTED_AGENT_WORKSTATION.md) — hardening + attestation runbook.
125
- - [**Troubleshooting**](guides/TROUBLESHOOTING.md) — the common gotchas.
126
- - [**Support matrix**](reference/SUPPORT_MATRIX.md) — OS × shell × package-manager grid.
127
- - [**Security overview**](security/SECURITY.md) — signing, attestation, secret handling, threat model.
128
-
129
- ## Current release
130
-
131
- - Release feed: [GitHub releases](https://github.com/sebastienrousseau/dotfiles/releases/latest)
132
- - Source: [sebastienrousseau/dotfiles](https://github.com/sebastienrousseau/dotfiles)
@@ -1,39 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Agent Interop
6
-
7
- The repository now ships an agent card and an A2A-ready discovery document.
8
-
9
- Artifacts:
10
-
11
- - [agent-card.json](https://github.com/sebastienrousseau/dotfiles/blob/main/defaults/dot_config/dotfiles/agent-card.json)
12
- - [agent.json](https://github.com/sebastienrousseau/dotfiles/blob/main/.well-known/agent.json)
13
-
14
- Core properties:
15
-
16
- - bounded profiles: `ask`, `plan`, `apply`, `audit`
17
- - MCP-governed execution
18
- - workstation attestation export
19
- - persistent agent session logs
20
- - replayable checkpoints
21
- - fleet attestation export
22
-
23
- Tracked governance artifacts:
24
-
25
- - policy bundles
26
- - prompt registry
27
- - model registry
28
-
29
- Session logs are stored in `~/.local/state/dotfiles/agent-sessions.jsonl`.
30
- Checkpoints are stored in `~/.local/state/dotfiles/checkpoints/`.
31
-
32
- Validate conformance with:
33
-
34
- ```bash
35
- dot agent conformance
36
- dot agent conformance --strict --json
37
- ```
38
-
39
- The current posture is A2A-ready with tracked conformance checks. It exposes identity, governance, checkpoints, and local evidence.
@@ -1,102 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
- {% raw %}
5
-
6
- # PowerShell Parity
7
-
8
- This page documents how PowerShell 7.5+ support is exercised in CI
9
- and what specifically is verified. Closes the docs slice of
10
- [#860](https://github.com/sebastienrousseau/dotfiles/issues/860).
11
-
12
- ## What ships
13
-
14
- | File | Role |
15
- |---|---|
16
- | [`dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl`](https://github.com/sebastienrousseau/dotfiles/blob/main/defaults/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl) | The dotfiles PowerShell profile. Deployed to `$PROFILE` (resolves to `~/.config/powershell/Microsoft.PowerShell_profile.ps1` on Linux/macOS; `Documents\PowerShell\Microsoft.PowerShell_profile.ps1` on Windows). |
17
- | [`scripts/qa/powershell-contract.ps1`](https://github.com/sebastienrousseau/dotfiles/blob/main/scripts/qa/powershell-contract.ps1) | The runtime contract. Renders the template, dot-sources it, asserts required function shims exist, runs PSScriptAnalyzer. |
18
- | [`tests/unit/install/test_powershell_profile_syntax.sh`](https://github.com/sebastienrousseau/dotfiles/blob/main/tests/unit/install/test_powershell_profile_syntax.sh) | Static-syntax test runnable on Linux/macOS via `pwsh` when present; falls back to brace-balance + textual invariants when not. |
19
-
20
- ## What's verified
21
-
22
- ### On every Linux/macOS PR (`tests/unit/install/...`)
23
-
24
- - Profile file exists at the expected path.
25
- - Defines the `dot` function shim so PowerShell users invoke the
26
- same CLI as Unix shells.
27
- - Sets `XDG_CONFIG_HOME` (matches Unix XDG conventions for
28
- `~/.config/powershell` discoverability).
29
- - Brace count balances (`{` vs `}`).
30
- - If `pwsh` is installed locally, parses the rendered template via
31
- `System.Management.Automation.Language.Parser` and fails on any
32
- parse error.
33
-
34
- ### On `windows-latest` runner via reliability-gate.yml
35
-
36
- The `powershell-contract` job runs `scripts/qa/powershell-contract.ps1`
37
- which does:
38
-
39
- 1. **Renders the template** via `chezmoi execute-template` so any
40
- chezmoi data references (e.g. `{{ .dotfiles_version }}`) resolve
41
- to real values before parsing.
42
- 2. **Dot-sources** the rendered profile and asserts no exception is
43
- thrown during load.
44
- 3. **Asserts the required function shims** are defined after load:
45
- `dot`, `d`, `ll`, `la`, `cat`.
46
- 4. **Runs PSScriptAnalyzer** at `Error` severity. Warnings surface
47
- but don't fail the gate (tightenable later).
48
-
49
- Exit non-zero on any failure. The job is in the `reliability-summary`
50
- required-checks list so a broken PowerShell profile blocks merge.
51
-
52
- ## Running locally
53
-
54
- ### On Linux/macOS
55
-
56
- ```bash
57
- # Static test — runs in any context.
58
- bash tests/unit/install/test_powershell_profile_syntax.sh
59
-
60
- # Full contract — needs pwsh + chezmoi installed.
61
- brew install --cask powershell # or apt / package manager equivalent
62
- pwsh ./scripts/qa/powershell-contract.ps1
63
- ```
64
-
65
- ### On Windows
66
-
67
- ```powershell
68
- .\scripts\qa\powershell-contract.ps1
69
- ```
70
-
71
- ## Known limitations
72
-
73
- - The contract doesn't currently exercise PowerShell-specific runtime
74
- semantics (e.g. PSDrive providers, custom completion). Those are a
75
- follow-up.
76
- - Function shims are smoke-tested by name only — we check that
77
- `Get-Command dot` resolves to a function, not that it actually
78
- invokes the right binary. A richer integration test that creates a
79
- fake `dot` binary and confirms the shim invokes it correctly is a
80
- future hardening step.
81
- - macOS is not in the matrix because `pwsh` isn't pre-installed on
82
- GitHub macOS runners. The Linux/macOS static test runs on every PR
83
- via the existing test suite; full pwsh validation is Windows-only
84
- to keep the matrix small.
85
-
86
- ## When to update this page
87
-
88
- - The PowerShell profile gains a new function → add it to the
89
- `RequiredFunctions` array in `powershell-contract.ps1` AND to the
90
- list above.
91
- - A static-test invariant is added → document it in the "What's
92
- verified on every PR" list.
93
- - The PSScriptAnalyzer severity is tightened from `Error` to
94
- `Warning` → update the relevant bullet here.
95
-
96
- ## References
97
-
98
- - [PowerShell 7 docs](https://learn.microsoft.com/en-us/powershell/scripting/overview)
99
- - [PSScriptAnalyzer rule reference](https://github.com/PowerShell/PSScriptAnalyzer/blob/main/docs/Rules/README.md)
100
- - `.github/workflows/reliability-gate.yml` — Windows job definition.
101
- - Issue [#860](https://github.com/sebastienrousseau/dotfiles/issues/860).
102
- {% endraw %}
@@ -1,89 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Introduction
6
-
7
- This manual describes `.dotfiles` v0.2.520 — a trusted agent workstation baseline for macOS, Linux, and WSL.
8
-
9
- The repository is more than a personal dotfiles collection. It ships as workstation infrastructure: signed, attested, multi-platform, AI-aware, and self-healing. Chezmoi handles templating and platform differences. The `dot` CLI sits on top and coordinates lifecycle operations.
10
-
11
- ## Who This Manual Is For
12
-
13
- - **Developers** who want a reproducible, signed development environment across machines
14
- - **Security engineers** who require cryptographic attestation, SBOM, and policy gates
15
- - **AI agent operators** running Claude Code, Codex, GitHub Copilot, or MCP-aware tooling
16
- - **Team leads** deploying standardized workstations across a fleet
17
-
18
- The content assumes basic familiarity with Git, shell environments, and chezmoi. No prior knowledge of the specific tools used (Mise, Nix, Age, SOPS, MCP) is required.
19
-
20
- ## What the Manual Covers
21
-
22
- - **Concepts** — the mental model behind the theme engine, trust model, fleet architecture, and self-healing
23
- - **Tutorials** — step-by-step walkthroughs for common tasks
24
- - **Reference** — every `dot` command, every config file, every template variable, every feature flag
25
- - **Cookbook** — 30+ specific recipes for day-to-day tasks and troubleshooting
26
- - **Appendices** — platform support matrix, security checklist, glossary, bibliography
27
-
28
- ## Getting the Manual
29
-
30
- The manual is published in nine formats — all generated from the same Markdown source on every release:
31
-
32
- | Format | Size | Use case |
33
- |:---|---:|:---|
34
- | HTML (single page) | ~200K | Offline browsing |
35
- | HTML (multi-page) | — | Web reading |
36
- | HTML gzipped (single) | ~50K | Fast download |
37
- | EPUB | ~150K | E-readers |
38
- | PDF | ~400K | Printing |
39
- | ASCII text | ~120K | Terminal pagers |
40
- | Markdown source | ~80K | Re-processing |
41
-
42
- Published at: `https://sebastienrousseau.github.io/dotfiles/manual/`
43
-
44
- Fetch from the CLI:
45
-
46
- ```sh
47
- dot manual # open in browser
48
- dot manual pdf # download and open PDF
49
- dot manual text # pipe plain text to pager
50
- ```
51
-
52
- ## Quick Install
53
-
54
- ```sh
55
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
56
- dot doctor
57
- ```
58
-
59
- Requires `git` and `curl`. Supported on macOS 14+, Ubuntu/Debian, Arch, Fedora, openSUSE, and WSL2.
60
-
61
- ## Conventions Used in This Manual
62
-
63
- | Convention | Meaning |
64
- |:---|:---|
65
- | `fixed-width` | Commands, file paths, environment variables |
66
- | **Bold** | Important terms introduced for the first time |
67
- | > Note: | Supplementary information |
68
- | > Warning: | Actions with potentially destructive effects |
69
-
70
- Command placeholders use `<angle-brackets>`. Optional arguments use `[brackets]`. Repeated arguments end with `...`.
71
-
72
- ## How to Read This Manual
73
-
74
- - **First-time users** — read [Introduction](#introduction), [First Install](02-tutorials/01-first-install.md), then browse the [Cookbook](04-cookbook/01-recipes.md).
75
- - **Upgrading** — read the [Migration section](../operations/MIGRATION.md) for your version delta.
76
- - **Deep diving** — the [Concepts](01-concepts/) chapters explain the architecture and rationale.
77
- - **Looking something up** — use the [Command Index](command-index.md) or [Concept Index](concept-index.md).
78
-
79
- ## Licensing
80
-
81
- The `.dotfiles` repository is licensed under the MIT License. See [Appendix E](05-appendices/E-license.md) for the full text.
82
-
83
- Individual tools packaged, referenced, or templated by this repository retain their original licenses.
84
-
85
- ## Reporting Issues
86
-
87
- - **Bugs and feature requests** — <https://github.com/sebastienrousseau/dotfiles/issues>
88
- - **Security vulnerabilities** — see [Security Policy](../security/SECURITY.md); do not open public issues for unpatched vulnerabilities
89
- - **Documentation corrections** — open a pull request against `docs/manual/` on the `main` branch
@@ -1,138 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Architecture
6
-
7
- `.dotfiles` is composed of four loosely coupled subsystems, coordinated by a single command-line interface.
8
-
9
- ## The Four Subsystems
10
-
11
- ### 1. Templating Engine — Chezmoi
12
-
13
- [Chezmoi](https://chezmoi.io) reads the source directory (`~/.dotfiles/` or `~/.local/share/chezmoi/`), renders templates using data from `.chezmoidata.toml`, and writes the results to the target paths in `$HOME`.
14
-
15
- Every file in the source directory follows chezmoi naming conventions:
16
-
17
- | Prefix / Suffix | Effect |
18
- |:---|:---|
19
- | `dot_` | Deployed with leading `.` (`dot_zshrc` → `~/.zshrc`) |
20
- | `executable_` | Sets `+x` permission on the destination |
21
- | `private_` | Sets `0600` permission on the destination |
22
- | `.tmpl` | Processed as a Go template with chezmoi data |
23
- | `run_onchange_` | Script runs when the target changes |
24
- | `run_before_` | Script runs before apply |
25
- | `run_after_` | Script runs after apply |
26
-
27
- ### 2. Runtime Management — Mise and Nix
28
-
29
- **Mise** ([mise.jdx.dev](https://mise.jdx.dev)) manages per-user language runtimes and CLI tools. All entries in `~/.config/mise/config.toml` are installed to `~/.local/share/mise/installs/`, activated by PATH shimming. No system-level packages are touched.
30
-
31
- **Nix Flakes** (`nix/flake.nix`) provide strictly reproducible builds when Mise's approximate semver-pinning is insufficient — for example, for declaring an entire system via Home Manager.
32
-
33
- ### 3. The `dot` CLI
34
-
35
- `dot` is the entry point for all lifecycle operations. It is a pure Bash script (no runtime dependencies) that dispatches to command handlers in `scripts/dot/commands/`.
36
-
37
- Each command is self-contained — any command can be invoked directly as a script if needed:
38
-
39
- ```sh
40
- bash ~/.dotfiles/scripts/dot/commands/diagnostics.sh doctor
41
- # equivalent to:
42
- dot doctor
43
- ```
44
-
45
- The CLI follows a grouping convention (see [dot CLI Reference](../03-reference/01-dot-cli.md)):
46
-
47
- - **Lifecycle** — `sync`, `apply`, `rollback`, `heal`, `bundle`
48
- - **Diagnostics** — `doctor`, `drift`, `benchmark`, `score`, `metrics`
49
- - **AI & Agents** — `ai`, `mcp`, `agent`, `mode`
50
- - **Configuration** — `theme`, `env`, `profile`, `secrets`
51
- - **Fleet** — `fleet`, `attest`
52
- - **Reference** — `help`, `search`, `version`, `manual`
53
-
54
- ### 4. Secrets and Attestation
55
-
56
- Secrets are encrypted at rest using **Age** (modern file encryption) with **SOPS** (YAML-aware envelope) or `chezmoi encrypt`. The private key never leaves `~/.config/age/keys.txt` (or the user's password manager).
57
-
58
- Attestation produces signed, machine-readable JSON recording:
59
-
60
- - Host identity (kernel, arch, hostname hash)
61
- - Policy hash (MCP policy, agent profiles)
62
- - Tool versions (mise, nix, key binaries)
63
- - Git HEAD and signature status
64
- - Timestamp and verification hash
65
-
66
- See [Trust Model](02-trust-model.md) for the full threat model.
67
-
68
- ## Data Flow
69
-
70
- ```mermaid
71
- graph TD
72
- User[User Shell] --> CLI{dot CLI}
73
-
74
- CLI --> L[Lifecycle Commands]
75
- CLI --> D[Diagnostics Commands]
76
- CLI --> A[AI Commands]
77
- CLI --> C[Config Commands]
78
- CLI --> F[Fleet Commands]
79
-
80
- L --> Chezmoi[Chezmoi Engine]
81
- C --> Chezmoi
82
-
83
- Chezmoi --> Source[~/.dotfiles source]
84
- Source --> Data[.chezmoidata.toml + themes.toml]
85
- Source --> Tmpl[.tmpl files]
86
-
87
- Data --> Render[Template render]
88
- Tmpl --> Render
89
- Render --> Target[~ target paths]
90
-
91
- Target --> Shells[Zsh / Fish / Bash / Nushell]
92
- Target --> Apps[Ghostty / Neovim / VS Code / etc.]
93
-
94
- Wallpapers[~/Pictures/Wallpapers/ + System] --> KMeans[K-Means CIELAB engine]
95
- KMeans --> ThemesT[themes.toml generated]
96
- ThemesT --> Data
97
-
98
- A --> MCP[MCP Policy + Registry]
99
- F --> Attest[Signed Attestation Logs]
100
- ```
101
-
102
- ## Startup Performance Model
103
-
104
- Shell startup is optimized via a three-tier caching strategy:
105
-
106
- 1. **Bake-at-apply-time** — values computed once during `chezmoi apply` (HOSTNAME, platform, OS version) are written directly into config files, avoiding subshells at startup.
107
- 2. **`_cached_eval` pattern** — slow initializers (mise, zoxide, atuin, starship) write their output to `~/.cache/shell/<tool>-init.sh`. Subsequent shells `source` the cache. Cache is invalidated when the binary's mtime changes.
108
- 3. **Lazy loading** — heavy layers (nvm, rbenv, direnv) are loaded on first invocation via shell function stubs.
109
-
110
- Target: ≤500ms cold shell startup, ≤100ms per component. Enforced by CI benchmark (see [Performance Reference](../03-reference/01-dot-cli.md#benchmark)).
111
-
112
- ## Per-Machine Profiles
113
-
114
- The `machine` key in `.chezmoidata.toml` (or the per-host override in `~/.config/chezmoi/chezmoi.toml`) selects a hardware preset from `.chezmoidata/hardware.toml`. Presets define:
115
-
116
- - Display scale (1.0, 1.5, 2.0)
117
- - Keyboard modifier hierarchy
118
- - Performance profile (desktop, laptop, low-power)
119
- - Feature flags (e.g. `features.dms = true` for Niri on Wayland)
120
-
121
- A single source tree deploys correctly to a MacBook, a Surface, a Linux desktop, and a WSL2 session — each rendering a platform-appropriate config.
122
-
123
- ## Trust Boundaries
124
-
125
- | Boundary | Trusted | Untrusted |
126
- |:---|:---|:---|
127
- | Source tree | Your Git history, signed commits | Unverified pull requests |
128
- | Secret store | `~/.config/age/keys.txt` | Environment variables, cloud storage |
129
- | Attestation logs | Signed by SSH ED25519 key | Unsigned JSON reports |
130
- | Template data | `.chezmoidata.toml` | User-provided template input |
131
-
132
- Every boundary is enforced: unsigned commits fail CI gates, secrets never appear in plaintext git history, attestation logs are hash-chained.
133
-
134
- ## Next
135
-
136
- - [Trust Model](02-trust-model.md) — detailed threat model and verification procedures
137
- - [Theme Engine](03-theme-engine.md) — K-Means CIELAB pipeline
138
- - [Fleet Architecture](04-fleet.md) — multi-host deployment model
@@ -1,183 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Trust Model
6
-
7
- The trust model combines cryptographic signing, local-first secrets, policy-gated agent operations, and machine-verifiable attestation.
8
-
9
- ## Threat Model Summary
10
-
11
- | Threat | Mitigation |
12
- |:---|:---|
13
- | Unauthorized code execution on the workstation | Signed commits, shellcheck gates, no `curl \| sh` in install path |
14
- | Secret leakage into Git history | Age/SOPS encryption, gitleaks in CI, `detect-secrets` baseline |
15
- | Tampered upstream tool | SHA256-pinned chezmoi installer, SBOM + Grype CVE scan |
16
- | Malicious agent behavior | MCP policy enforcement, agent profile allowlists, attestation logs |
17
- | Compromised fleet host | Per-host signing keys, attestation comparison, `dot chaos` self-tests |
18
- | Downgrade attacks | Version-sync enforcement, signed release tags |
19
-
20
- ## Identity and Signing
21
-
22
- ### SSH ED25519 for Git
23
-
24
- Every commit on `main` is signed with SSH ED25519:
25
-
26
- ```sh
27
- git verify-commit HEAD
28
- # Good "git" signature for you@example.com with ED25519 key SHA256:...
29
- ```
30
-
31
- The trust anchor is the signer's public key published in `~/.ssh/allowed_signers`. CI enforces signature verification on every PR.
32
-
33
- ### Verified Chezmoi Installer
34
-
35
- The `install.sh` script prefers `tools/ci/install-chezmoi-verified.sh`, which:
36
-
37
- 1. Downloads chezmoi from the upstream release URL
38
- 2. Verifies the SHA256 checksum against a hardcoded, version-pinned value
39
- 3. Falls back to `get.chezmoi.io` only if the verified path is unavailable
40
-
41
- No unverified binary is ever executed.
42
-
43
- ## Secrets
44
-
45
- ### Three Layers
46
-
47
- 1. **Repository-managed config** (`dot_config/**/*.tmpl`) — checked into Git, no secrets
48
- 2. **Local-only config** (`~/.config/*.local`) — gitignored, user-edited
49
- 3. **Encrypted secrets** (Age-encrypted `private_*` files, SOPS YAML) — checked in, decrypted on apply
50
-
51
- Example encrypted file:
52
-
53
- ```
54
- dot_config/api-keys.yaml.sops.yaml # SOPS-encrypted, safe to commit
55
- ```
56
-
57
- Decryption uses the user's Age private key at `~/.config/age/keys.txt`. Chezmoi invokes `age` or `sops` automatically during apply.
58
-
59
- ### Secret Scanning
60
-
61
- CI runs three independent scanners:
62
-
63
- | Scanner | Purpose | Threshold |
64
- |:---|:---|:---|
65
- | `gitleaks` | Pattern-based secret detection | Zero leaks on `main` |
66
- | `detect-secrets` | Baseline-comparing scanner | Zero new secrets vs `.secrets.baseline` |
67
- | `trufflehog` | Verified-secret scanner (API-tested) | Zero verified secrets |
68
-
69
- All three must pass for a commit to be merged.
70
-
71
- ## Agent Policy Enforcement
72
-
73
- AI agent operations (Claude Code, Codex, Copilot, Antigravity CLI, etc.) are governed by the **Model Context Protocol (MCP)** policy in `dot_config/dotfiles/mcp.json` and validated by `dot mcp`.
74
-
75
- ### Policy Structure
76
-
77
- ```json
78
- {
79
- "policy_version": "2026-01",
80
- "allowed_servers": ["fs", "shell", "github"],
81
- "denied_tools": ["network.raw", "fs.write:/etc"],
82
- "attestation_required": true,
83
- "signature": "<ed25519-signature>"
84
- }
85
- ```
86
-
87
- ### Enforcement Points
88
-
89
- 1. **On agent start** — `dot mcp --strict` validates the registry matches the policy hash
90
- 2. **Per-tool call** — MCP-aware agents check the policy before invoking a tool
91
- 3. **On commit** — `dot attest` records the active policy hash in the attestation log
92
-
93
- Violations are logged to `~/.local/state/dotfiles/mcp-violations.log` and reported by `dot doctor`.
94
-
95
- ## Attestation
96
-
97
- `dot attest` generates a signed JSON document containing:
98
-
99
- ```json
100
- {
101
- "version": "0.2.501",
102
- "timestamp": "2026-04-16T09:00:00Z",
103
- "host": {
104
- "hostname_sha256": "...",
105
- "kernel": "Darwin 25.4.0",
106
- "arch": "arm64"
107
- },
108
- "identity": {
109
- "ssh_key_sha256": "...",
110
- "git_signer": "you@example.com"
111
- },
112
- "policy": {
113
- "mcp_policy_sha256": "...",
114
- "agent_profile": "architect"
115
- },
116
- "tools": {
117
- "chezmoi": "2.47.1",
118
- "mise": "2026.4.0"
119
- },
120
- "git": {
121
- "head": "abc123...",
122
- "branch": "main",
123
- "signed": true,
124
- "verified": true
125
- }
126
- }
127
- ```
128
-
129
- The document is:
130
-
131
- - Signed with the user's SSH ED25519 key
132
- - Stored at `~/.local/state/dotfiles/attestation/YYYY-MM-DD-HHMMSS.json`
133
- - Optionally published to `~/.dotfiles/docs/attestations/` for team review
134
-
135
- ### Verifying Someone Else's Attestation
136
-
137
- ```sh
138
- dot verify --attestation <path>
139
- # ✓ Signature valid (ED25519)
140
- # ✓ Policy hash matches repository
141
- # ✓ Tool versions within supported range
142
- ```
143
-
144
- ## Fleet Trust Propagation
145
-
146
- Across multiple hosts, trust is established by:
147
-
148
- 1. Each host generates its own SSH key pair
149
- 2. Each host's public key is added to `~/.ssh/allowed_signers` on every other host
150
- 3. Attestations from any host can be verified by any other host
151
- 4. `dot fleet` compares attestations across the fleet and flags drift
152
-
153
- See [Fleet Architecture](04-fleet.md) for the full model.
154
-
155
- ## CI-Level Gates
156
-
157
- | Gate | Workflow | Blocks Merge |
158
- |:---|:---|:---|
159
- | Signed commits | `ci-enforced.yml` | Yes |
160
- | Shellcheck zero-warnings | `ci.yml` | Yes |
161
- | Gitleaks scan | `ci.yml` | Yes |
162
- | Copyright headers | `ci-enforced.yml` | Yes |
163
- | 100% executable module mapping | `ci-enforced.yml` | Yes |
164
- | Measured Bash line coverage | `coverage.yml` | Ratcheted floor; see `docs/operations/COVERAGE.md` |
165
- | Reliability (macOS + Linux) | `ci-enforced.yml` | Yes |
166
- | Checkov infrastructure scan | `ci-enforced.yml` | On severity MEDIUM+ |
167
- | SBOM (CycloneDX) | `ci.yml` | No (informational) |
168
- | Grype CVE scan | `ci.yml` | On severity CRITICAL |
169
- | Lychee link check | `ci.yml` (nightly) | No |
170
-
171
- ## Principles
172
-
173
- - **Local-first** — nothing leaves the workstation unless the user opts in
174
- - **Zero trust in transit** — every network-fetched artifact is checksum-verified
175
- - **Machine-readable evidence** — human-readable summaries are backed by signed JSON
176
- - **Reversible** — `dot rollback` undoes any change with a single command
177
-
178
- ## See Also
179
-
180
- - [Security Policy](../../security/SECURITY.md)
181
- - [Threat Model](../../security/THREAT_MODEL.md)
182
- - [MCP Policy Reference](../../security/MCP_POLICY.md)
183
- - [Attestation Operations](../../operations/ATTESTATION.md)