@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
@@ -1,280 +0,0 @@
1
- ---
2
- title: "RFC: v0.2.503 Repository Reorganisation"
3
- status: Accepted — shipping incrementally in this PR
4
- authors: ['@sebastienrousseau']
5
- opened: 2026-05-17
6
- accepted: 2026-05-17
7
- target: v0.2.503
8
- ---
9
-
10
- # RFC: v0.2.503 Repository Reorganisation
11
-
12
- > **Status: Accepted.** This RFC was opened in this PR and
13
- > immediately accepted by the maintainer with explicit decision to
14
- > ship the reorganisation incrementally within v0.2.503 rather
15
- > than the originally-proposed two-version deprecation window.
16
- > Phases land as separate commits on `feat/v0.2.503`; each is
17
- > independently atomic and verified by `dot lint` + the existing
18
- > test matrix.
19
-
20
- ## Summary
21
-
22
- Split the current chezmoi-managed monorepo into a **framework layer**
23
- (distributable CLI + library) and a **defaults layer** (user-facing
24
- configuration), with the framework layer publishable as a
25
- standalone tarball to Homebrew, Scoop, and AUR. Maintain
26
- backwards-compatible behaviour for existing users via a one-shot
27
- migration script that runs on first apply after upgrade.
28
-
29
- ## Motivation
30
-
31
- R4 hard-audit identified the framework/user-config intermingling
32
- as the **highest-leverage structural gap** blocking de-facto-
33
- framework status (`HARD_AUDIT_2026.md` §8.5 Top-5 adoption gaps).
34
- Concrete symptoms:
35
-
36
- 1. **Distribution stuck at "curl-pipe-bash".** The Homebrew /
37
- Scoop / AUR manifests scaffolded in v0.2.503
38
- (`install/{homebrew,scoop,aur}/`) cannot publish until there's
39
- a single `bin/dot` tarball — chezmoi's `dot_*` / `executable_*`
40
- / `private_*` prefixes force the current layout. Until that's
41
- fixed, downstream distros have nothing to package.
42
-
43
- 2. **New contributor onboarding cost.** Even with the v0.2.503
44
- `STRUCTURE.md`, ~20 chezmoi-prefixed root paths require a
45
- concept (the chezmoi naming contract) to navigate. A
46
- `bin/` + `lib/` + `defaults/` layout is self-documenting.
47
-
48
- 3. **Framework forks are blocked.** Anyone wanting to fork the
49
- *CLI* without the maintainer's personal configs has to
50
- manually delete 80+ tool-specific directories under
51
- `dot_config/`. A clean separation makes "fork the framework,
52
- apply my own defaults" a one-command flow.
53
-
54
- 4. **Test surface bleed.** CI runs `chezmoi apply --dry-run` on
55
- every PR, exercising both framework templates AND the
56
- maintainer's personal defaults. A real consumer running the
57
- framework will not exercise the maintainer's `dot_config/aider/`
58
- etc. — and yet a regression there blocks CI.
59
-
60
- The reorganisation is **breaking** for existing user installs:
61
- chezmoi tracks deployed files by source path, so moving
62
- `bin/dot` to `bin/dot` means the old
63
- `~/.local/bin/dot` would be removed before the new path is
64
- installed. Mitigation: ship a `migrate-v0.2-to-v0.3.sh` script
65
- that runs before the first post-upgrade `chezmoi apply`.
66
-
67
- ## Detailed design
68
-
69
- ### Target layout
70
-
71
- Following the [Debian/aws-cli](https://github.com/Debian/aws-cli)
72
- discipline (every top-level path has a clear purpose; contributor
73
- orients in <30 seconds):
74
-
75
- ```
76
- .
77
- ├── bin/ # CLI entrypoints
78
- │ ├── dot # was bin/dot
79
- │ ├── dot-load-benchmark-pty # was bin/dot-load-benchmark-pty
80
- │ ├── dot-theme-sync # was bin/dot-theme-sync
81
- │ ├── dot-bootstrap # was bin/dot-bootstrap
82
- │ └── dot-update # was dot_local/bin/executable_update (renamed)
83
- ├── lib/ # Framework library (no chezmoi)
84
- │ ├── commands/ # was scripts/dot/commands/
85
- │ ├── ui.sh # was scripts/dot/lib/ui.sh
86
- │ ├── utils.sh # was scripts/dot/lib/utils.sh
87
- │ ├── platform.sh # was scripts/dot/lib/platform.sh
88
- │ ├── log.sh # was scripts/dot/lib/log.sh
89
- │ ├── bento.sh # was scripts/dot/lib/bento.sh
90
- │ └── secrets_provider.sh # was scripts/lib/secrets_provider.sh
91
- ├── share/ # OS-conventional resources
92
- │ ├── man/man1/dot.1 # was dot_local/share/man/man1/dot.1
93
- │ ├── completions/ # was dot_local/share/zsh/completions/
94
- │ └── docs/ # was docs/
95
- ├── defaults/ # User-facing default config (was dot_config/, etc.)
96
- │ ├── home/ # dotfiles deployed to $HOME (dot_X → .X)
97
- │ ├── config/ # dotfiles deployed to $XDG_CONFIG_HOME
98
- │ └── tools/ # per-tool configs (mise/, npmrc/, ...)
99
- ├── install/ # Distribution + bootstrap
100
- │ ├── install.sh # was install.sh (moved one level down)
101
- │ ├── homebrew/dot.rb # already at install/homebrew/ in v0.2.503
102
- │ ├── scoop/dot.json # already at install/scoop/ in v0.2.503
103
- │ ├── aur/PKGBUILD # already at install/aur/ in v0.2.503
104
- │ ├── provision/ # was install/provision/ (chezmoi run_onchange_ hooks)
105
- │ └── migrate/ # NEW: migrate-v0_2-to-v0_3.sh + rollback
106
- ├── tests/ # unchanged
107
- ├── examples/ # unchanged
108
- ├── tools/ # NEW: ops scripts not shipped to users
109
- │ ├── ci/ # was tools/ci/
110
- │ ├── release/ # was tools/release/
111
- │ ├── maintenance/ # was tools/maintenance/
112
- │ ├── docs/ # was tools/docs/
113
- │ └── version-sync.sh # was scripts/version-sync.sh
114
- ├── .chezmoiroot # NEW: points at defaults/
115
- ├── README.md
116
- ├── LICENSE
117
- ├── CHANGELOG.md
118
- ├── CLAUDE.md / AGENTS.md / per-harness renders
119
- └── (no more dot_X at root)
120
- ```
121
-
122
- ### chezmoi adaptation
123
-
124
- `.chezmoiroot` lets chezmoi treat a subdirectory as the source
125
- root. With `.chezmoiroot = "defaults"`, chezmoi will look for
126
- `defaults/home/dot_zshrc`, `defaults/config/dot_starship.toml`,
127
- etc. — and deploy to the normal `~/.zshrc` / `~/.config/starship.toml`
128
- paths.
129
-
130
- This means:
131
-
132
- - Repo top-level is no longer required to follow chezmoi naming.
133
- - `bin/dot` is a plain shell script, not `dot_local/bin/executable_dot`.
134
- - `share/man/man1/dot.1` is a plain file, not chezmoi-deployed.
135
- - A Homebrew formula can `bin.install 'bin/dot'` directly.
136
-
137
- ### Migration tool
138
-
139
- `install/migrate/migrate-v0.2-to-v0.3.sh`:
140
-
141
- 1. Detect existing chezmoi state at `~/.local/share/chezmoi` /
142
- `~/.config/chezmoi/chezmoi.toml`.
143
- 2. Read the user's pinned source repo from chezmoi.toml; if it's
144
- `sebastienrousseau/dotfiles@<v0.2.x>`, warn and confirm.
145
- 3. Run `chezmoi diff` and persist the per-file output to
146
- `~/.local/state/dotfiles/v0_2_to_v0_3_pre_diff.log` so the
147
- user has a record of pre-migration state.
148
- 4. Run `chezmoi forget` for paths that are moving (no destructive
149
- delete — chezmoi forget only un-tracks).
150
- 5. Update `~/.config/chezmoi/chezmoi.toml` to point at the new
151
- sourceDir with `.chezmoiroot` honoured.
152
- 6. Run `chezmoi apply` — picks up the new layout and re-creates
153
- the user's files at their canonical paths.
154
- 7. Run `dot doctor` and `dot lint` to verify.
155
-
156
- The migration is **idempotent** and **safe to abort**: at step 4
157
- the chezmoi state is removed but no user data is deleted. At step
158
- 6 chezmoi notices "these files already exist on disk with content
159
- matching the source" and is a no-op.
160
-
161
- ### Library bash-source paths
162
-
163
- Today `scripts/dot/commands/<cmd>.sh` does:
164
-
165
- ```bash
166
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
167
- source "$SCRIPT_DIR/../lib/utils.sh"
168
- ```
169
-
170
- After reorganisation:
171
-
172
- ```bash
173
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
174
- source "$SCRIPT_DIR/../utils.sh" # commands/<cmd>.sh → lib/utils.sh
175
- ```
176
-
177
- Or, more robustly, drive lookup from a single env var set by `bin/dot`:
178
-
179
- ```bash
180
- : "${DOT_LIB:=$(dirname "$(realpath "$0")")/../lib}"
181
- source "$DOT_LIB/utils.sh"
182
- ```
183
-
184
- The Homebrew formula sets `$DOT_LIB` to `${libexec}/lib` so
185
- `bin/dot` finds its library wherever the package manager installed
186
- it.
187
-
188
- ### Distribution surface
189
-
190
- Once `bin/dot` is standalone:
191
-
192
- | Channel | Artefact | Verify command |
193
- |---------|----------|----------------|
194
- | Homebrew tap | `dot-${VERSION}-${OS}-${ARCH}.tar.gz` | `brew install sebastienrousseau/tap/dot && dot version` |
195
- | Scoop bucket | `dot.json` → `dot-${VERSION}-windows-${ARCH}.zip` | `scoop install dot && dot version` |
196
- | AUR | `dotfiles-git` PKGBUILD building from source | `paru -S dotfiles-git && dot version` |
197
- | `install.sh` | Same SHA256-verified path as today | `bash install.sh` |
198
- | Direct tarball | Cosign-signed + SLSA-attested release asset | per `docs/security/VERIFY_RELEASE.md` |
199
-
200
- The chezmoi-managed `defaults/` subtree is **only** consumed when
201
- a user wants the maintainer's opinionated config layer. It's a
202
- strict superset: install `dot` standalone for the CLI; layer
203
- `defaults/` on top if you want the wallpaper-theming +
204
- multi-shell setup.
205
-
206
- ## Backwards compatibility
207
-
208
- | Surface | v0.2.x behaviour | v0.2.503 behaviour | Breaking? |
209
- |---------|------------------|------------------|-----------|
210
- | `~/.local/bin/dot` | Deployed by chezmoi | Replaced by Homebrew/Scoop install, OR symlinked by chezmoi from the new source | Yes — path may move; migration script handles it |
211
- | `~/.zshrc` etc | Source-pinned at `dot_zshrc` | Source-pinned at `defaults/home/dot_zshrc`, chezmoi reads via `.chezmoiroot` | No — destination path unchanged |
212
- | `dot <cmd>` API | All subcommands work as documented | Same | No |
213
- | `scripts/dot/commands/*.sh` consumers | Direct source paths used in user customisations | Path moves to `lib/commands/*.sh` | Yes — affects any user who source'd these directly |
214
- | `.chezmoidata.toml` | Repo root | Repo root (unchanged for compatibility with old user `chezmoi init` flows) | No |
215
-
216
- ### Two-version deprecation window
217
-
218
- v0.2.503 ships with the migration script and a deprecation warning
219
- in `dot doctor`. v0.4.0 removes any v0.2.x shim code. Users who
220
- skip v0.2.503 entirely (v0.2.x → v0.4.0) hit a hard error and must
221
- run the migration tool from a v0.3.x release manually.
222
-
223
- ## Alternatives considered
224
-
225
- ### A) Keep the chezmoi monorepo as-is
226
-
227
- **Pros**: zero migration cost; works today.
228
- **Rejected**: blocks Homebrew/Scoop/AUR publication permanently. The
229
- Top-5 adoption gap remains. R4 audit's "9.0/10 internal · 7.5/10
230
- adoption" plateau persists.
231
-
232
- ### B) Two-repo split (framework + defaults)
233
-
234
- Publish `dot` framework at `sebastienrousseau/dot` and the
235
- maintainer's personal defaults at `sebastienrousseau/dotfiles`.
236
-
237
- **Pros**: cleanest possible separation. Framework forks trivial.
238
- **Rejected (for v0.3)**: requires a second repo, doubles the CI
239
- matrix, and forces users to install from two sources. Defer to
240
- v0.4 if v0.3 single-repo with `.chezmoiroot` proves insufficient.
241
-
242
- ### C) Rename current root files only (cosmetic)
243
-
244
- Just rename `bin/dot` → `bin/executable_dot`
245
- without `.chezmoiroot`.
246
-
247
- **Rejected**: chezmoi only resolves the `executable_` /
248
- `dot_` prefixes for files inside its source root, so moving the
249
- prefixed file outside breaks chezmoi-driven install entirely
250
- without giving us a standalone tarball.
251
-
252
- ## Unresolved questions
253
-
254
- 1. **How does the `defaults/` subtree behave when a user wants to override one default?** Today they edit `dot_config/X.tmpl` directly. Post-reorg, do they: (a) edit `defaults/config/X.tmpl` and live with merge conflicts on framework updates, or (b) use a chezmoi `data` override + template conditional, or (c) maintain a second repo layered atop `defaults/`?
255
- 2. **Should `install/migrate/` ship in the regular framework install, or only via a one-shot `https://...migrate.sh` URL?** Bundling it forever increases install size; URL-only requires the user to find and trust the right URL during a stressful upgrade moment.
256
- 3. **Does `.chezmoiroot` survive existing user customisations in `~/.config/chezmoi/chezmoi.toml`?** Needs verification on a real upgrade test.
257
- 4. **Windows-native `bin/dot`**: standalone PowerShell rewrite, or wrapper that shells to bash via WSL/git-bash? `POWERSHELL_PARITY.md` documents the current stub state.
258
-
259
- ## Implementation plan
260
-
261
- | Phase | Scope | Effort |
262
- |-------|-------|--------|
263
- | 1 | Draft + ratify this RFC. Get user OK. | Done (this PR's draft) |
264
- | 2 | Create `defaults/`, `bin/`, `lib/`, `share/`, `tools/` and copy files. Update bash source paths. Add `.chezmoiroot`. | 1 week |
265
- | 3 | Write `install/migrate/migrate-v0_2-to-v0_3.sh`. Test against a synthetic v0.2.503-installed environment. | 3 days |
266
- | 4 | Update CI: every workflow that references `scripts/`, `dot_local/`, `dot_config/` needs path updates. | 3 days |
267
- | 5 | Update every doc that references the old paths. Most are in `docs/manual/`. | 1 day |
268
- | 6 | Cut v0.2.999 RC as a deprecation-warning-only release; let real users dry-run the migration. | 1 day + 2-week soak |
269
- | 7 | Cut v0.2.503 with the actual reorg + migration tool. | 1 day |
270
- | 8 | Publish to Homebrew/Scoop/AUR using `install/{homebrew,scoop,aur}/` scaffolds. | 1 week |
271
- | **Total** | | **~5 weeks calendar time** |
272
-
273
- ## See also
274
-
275
- - `HARD_AUDIT_2026.md` §8.3 — cross-platform gap analysis.
276
- - `HARD_AUDIT_2026.md` §8.5 — Top-5 de-facto adoption gaps.
277
- - `STRUCTURE.md` — today's layout (honest about the chezmoi-prefix forcing function).
278
- - `GOVERNANCE.md` — RFC process this document follows.
279
- - `install/README.md` — distribution-channel publication checklist.
280
- - Reference: [Debian/aws-cli](https://github.com/Debian/aws-cli) — clean top-level discipline.
@@ -1,10 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Roadmap
6
-
7
- The canonical roadmap is [`../../ROADMAP.md`](../../ROADMAP.md).
8
-
9
- This file is retained only so existing documentation links continue to resolve.
10
- Do not add active planning content here.
@@ -1,7 +0,0 @@
1
- # 2026 Roadmap
2
-
3
- Historical content from this file has been consolidated into the canonical
4
- [`../../ROADMAP.md`](../../ROADMAP.md).
5
-
6
- This path is retained only for compatibility with older links. New roadmap work
7
- belongs in the root roadmap or in GitHub issues and milestones.
@@ -1,10 +0,0 @@
1
- ---
2
- title: "v0.2.503 Roadmap - Historical"
3
- ---
4
-
5
- # v0.2.503 Roadmap
6
-
7
- This v0.2.503 planning document is historical. Active roadmap content has been
8
- consolidated into [`../../ROADMAP.md`](../../ROADMAP.md).
9
-
10
- Release history remains in [`../../CHANGELOG.md`](../../CHANGELOG.md).
@@ -1,216 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Testing strategy
6
-
7
- ## Overview
8
-
9
- The repo uses a multi-layer testing approach: unit tests for individual functions, integration tests for system-wide behavior, and performance benchmarks for resource efficiency.
10
-
11
- ## Quick start
12
-
13
- ```bash
14
- # Run all unit tests
15
- ./tests/framework/test_runner.sh
16
-
17
- # Run a specific test suite
18
- ./tests/framework/test_runner.sh extract
19
-
20
- # Run integration tests
21
- RUN_INTEGRATION=1 ./tests/framework/test_runner.sh
22
-
23
- # Run performance benchmarks
24
- ./benches/benchmark_runner.sh
25
-
26
- # Run unit tests in parallel (parsed per-file output, deterministic order)
27
- ./tests/framework/test_runner.sh --jobs auto
28
-
29
- # Strict mode: promote silent `command not found` / `unbound variable`
30
- # inside cov_exercise_functions_file to test failures. Default is
31
- # tolerant (the helper sources dot command files in a clean shell where
32
- # their lib/dot/ helpers are intentionally unresolved). Use STRICT=1
33
- # locally before pushing to catch the class of bug that escaped
34
- # review pre-v0.2.503 (e.g. agent.sh: _agent_repo_root falling
35
- # through to a missing require_source_dir).
36
- DOT_STRICT=1 ./tests/framework/test_runner.sh
37
- ```
38
-
39
- The runner's FINAL SUMMARY lists which test files failed (not just
40
- the total count) so locating a regression in a 4000+ assertion run
41
- doesn't require grepping back through the full log. Per-file failure
42
- counts and crashed-file markers appear inline.
43
-
44
- ## Test structure
45
-
46
- ```text
47
- tests/
48
- ├── framework/ # Test framework
49
- │ ├── assertions.sh # 16 assertion functions
50
- │ ├── mocks.sh # Mock utilities
51
- │ └── test_runner.sh # Test executor
52
- ├── unit/ # 425 unit test files
53
- ├── integration/ # 11 integration test files
54
- └── performance/ # Benchmarks
55
- ```
56
-
57
- ## Writing tests
58
-
59
- ### Test file template
60
-
61
- ```bash
62
- #!/usr/bin/env bash
63
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
64
- source "$SCRIPT_DIR/../framework/assertions.sh"
65
-
66
- # Source the function under test
67
- source "$HOME/.dotfiles/.chezmoitemplates/functions/myfunction.sh"
68
-
69
- # Test cases
70
- test_start "function_basic_usage"
71
- assert_exit_code 0 "myfunction arg1"
72
-
73
- test_start "function_no_args"
74
- assert_exit_code 1 "myfunction"
75
- ```
76
-
77
- ### Available assertions
78
-
79
- | Function | Description |
80
- |----------|-------------|
81
- | `assert_equals expected actual [msg]` | Two values are equal |
82
- | `assert_not_equals unexpected actual [msg]` | Two values differ |
83
- | `assert_exit_code code command` | Command exits with given code |
84
- | `assert_output_contains needle command` | Output contains string |
85
- | `assert_output_not_contains needle command` | Output lacks string |
86
- | `assert_output_matches pattern command` | Output matches regex |
87
- | `assert_file_exists path [msg]` | File exists |
88
- | `assert_file_not_exists path [msg]` | File doesn't exist |
89
- | `assert_dir_exists path [msg]` | Directory exists |
90
- | `assert_dir_not_exists path [msg]` | Directory doesn't exist |
91
- | `assert_true condition [msg]` | Condition is true |
92
- | `assert_false condition [msg]` | Condition is false |
93
- | `assert_empty value [msg]` | String is empty |
94
- | `assert_not_empty value [msg]` | String isn't empty |
95
- | `assert_file_contains file needle [msg]` | File contains text |
96
- | `assert_file_not_contains file needle [msg]` | File lacks text |
97
-
98
- ### Mock utilities
99
-
100
- | Function | Description |
101
- |----------|-------------|
102
- | `mock_init` | Initialize mock environment |
103
- | `mock_command name output [exit_code]` | Create a mock command |
104
- | `mock_command_spy name [output] [exit_code]` | Create a mock that records calls |
105
- | `mock_get_calls name` | Get spy call history |
106
- | `mock_call_count name` | Get number of spy calls |
107
- | `mock_file content [filename]` | Create temp file with content |
108
- | `mock_dir [prefix]` | Create temp directory |
109
- | `mock_archive type [content]` | Create a mock archive file |
110
- | `mock_env var_name value` | Set an environment variable |
111
- | `mock_cleanup` | Clean up all mocks |
112
-
113
- ## Test categories
114
-
115
- ### Unit tests (`tests/unit/`)
116
-
117
- Test individual functions in isolation. Each file follows the `test_*.sh` naming convention and is discoverable with `ls tests/unit/`.
118
-
119
- ### Integration tests (`tests/integration/`)
120
-
121
- Test complete workflows like the installation script and end-to-end apply behavior.
122
-
123
- ### Performance tests (`benches/`)
124
-
125
- Measure resource efficiency with shell startup benchmarks and load tests.
126
-
127
- ## Coverage goals
128
-
129
- | Category | Target | Current |
130
- |----------|--------|---------|
131
- | Module coverage | >=95% | 100% |
132
- | Unit test files | - | 425 |
133
- | Integration test files | - | 11 |
134
- | Total test files | - | 436 |
135
- | Named tests (`test_start`) | - | 2149 |
136
- | Unit test pass rate | 100% | 100% |
137
-
138
- CI enforces module coverage via:
139
-
140
- ```bash
141
- MIN_COVERAGE=95 ./tests/framework/module_coverage.sh
142
- ```
143
-
144
- For a current local baseline, run:
145
-
146
- ```bash
147
- bash ./scripts/qa/coverage-baseline.sh --with-module-coverage
148
- ```
149
-
150
- For core internal behavior traceability, run:
151
-
152
- ```bash
153
- bash ./scripts/qa/traceability-coverage.sh
154
- ```
155
-
156
- ## CI integration
157
-
158
- Tests run automatically on every push to main, every pull request, and weekly scheduled runs (Monday 6 AM UTC).
159
-
160
- ### GitHub Actions example
161
-
162
- ```yaml
163
- - name: Run Tests
164
- run: |
165
- chmod +x ./tests/framework/test_runner.sh
166
- ./tests/framework/test_runner.sh
167
-
168
- - name: Run Integration Tests
169
- run: |
170
- RUN_INTEGRATION=1 ./tests/framework/test_runner.sh
171
-
172
- - name: Run Performance Benchmarks
173
- run: |
174
- ./benches/benchmark_runner.sh
175
- ```
176
-
177
- ## Environment variables
178
-
179
- | Variable | Default | Description |
180
- |----------|---------|-------------|
181
- | `RUN_INTEGRATION` | `0` | Set to `1` to include integration tests |
182
- | `VERBOSE` | `0` | Set to `1` for verbose output |
183
- | `REPO_ROOT` | Auto-detected | Repository root directory |
184
- | `TESTS_DIR` | Auto-detected | Tests directory |
185
-
186
- ## Best practices
187
-
188
- 1. **Isolation** -- Each test should be independent and self-contained.
189
- 2. **Cleanup** -- Use mocks that auto-cleanup via traps.
190
- 3. **No sleep** -- Avoid `sleep` or hardcoded delays.
191
- 4. **Descriptive names** -- Test names should describe what's being verified.
192
- 5. **Edge cases** -- Test error conditions, not just happy paths.
193
- 6. **Security** -- Include tests for dangerous input rejection.
194
-
195
- ## Troubleshooting
196
-
197
- ### Tests not found
198
-
199
- Make sure test files match the `test_*.sh` pattern and are executable:
200
-
201
- ```bash
202
- chmod +x tests/unit/test_*.sh
203
- chmod +x tests/integration/test_*.sh
204
- ```
205
-
206
- ### Function not available
207
-
208
- If a test reports "function not available", verify the source file exists:
209
-
210
- ```bash
211
- ls -la .chezmoitemplates/functions/
212
- ```
213
-
214
- ### Mock cleanup issues
215
-
216
- If mocks aren't cleaning up, make sure you aren't running with `set -e` before mock operations that might intentionally fail.
@@ -1,44 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Behavioral Traceability
6
-
7
- This matrix ties core internal behaviors to implementation files, automated tests, and prose documentation.
8
-
9
- It is enforced by `bash ./scripts/qa/traceability-coverage.sh`.
10
-
11
- | Behavior ID | Behavior | Implementation | Test Evidence | Documentation |
12
- |-------------|----------|----------------|---------------|---------------|
13
- | BT-01 | AI status, launcher, and cache lifecycle | `scripts/dot/commands/ai.sh` | `tests/unit/dot-cli/test_dot_commands_ai.sh` | `docs/AI.md`, `docs/reference/UTILS.md` |
14
- | BT-02 | Agent profiles, checkpoints, and conformance | `scripts/dot/commands/agent.sh` | `tests/unit/dot-cli/test_dot_commands_agent.sh`, `tests/unit/dot-cli/test_dot_agent_mode.sh`, `tests/unit/dot-cli/test_dot_a2a_conformance.sh` | `docs/operations/TRUSTED_AGENT_WORKSTATION.md`, `docs/interop/A2A.md`, `docs/reference/UTILS.md` |
15
- | BT-03 | MCP policy validation and registry inspection | `scripts/dot/commands/meta.sh`, `scripts/diagnostics/mcp-doctor.sh` | `tests/unit/dot-cli/test_dot_commands_meta.sh`, `tests/unit/dot-cli/test_dot_cli.sh` | `docs/security/MCP_POLICY.md`, `docs/operations/TRUSTED_AGENT_WORKSTATION.md`, `docs/reference/UTILS.md` |
16
- | BT-04 | Fleet status, drift, namespace, and events workflows | `scripts/dot/commands/fleet.sh` | `tests/unit/dot-cli/test_dot_commands_fleet.sh`, `tests/unit/dot-cli/test_dot_fleet_enforcement.sh` | `docs/operations/TRUSTED_AGENT_WORKSTATION.md`, `docs/operations/ATTESTATION.md`, `docs/reference/UTILS.md` |
17
- | BT-05 | Secrets command surface and shell autoload buckets | `scripts/dot/commands/secrets.sh`, `defaults/dot_config/shell/10-secrets.sh` | `tests/unit/dot-cli/test_dot_commands_secrets.sh`, `tests/unit/shell/test_shell_secrets_autoload.sh` | `docs/security/SECRETS.md`, `docs/reference/UTILS.md` |
18
- | BT-06 | Theme synchronization and multi-tool theme application | `bin/dot-theme-sync` | `tests/unit/theme/test_dot_theme_sync.sh` | `docs/guides/THEMING.md`, `docs/reference/THEMES.md`, `docs/reference/SCRIPTS.md` |
19
- | BT-07 | Reliability audit orchestration | `scripts/qa/reliability-audit.sh` | `tests/unit/misc/test_qa_reliability.sh`, `tests/unit/misc/test_qa_reliability_behaviour.sh` | `docs/operations/RELIABILITY.md`, `docs/operations/TESTING.md` |
20
- | BT-08 | Repository coverage baseline audit | `scripts/qa/coverage-baseline.sh` | `tests/unit/misc/test_qa_coverage_baseline.sh` | `docs/operations/RELIABILITY.md`, `docs/operations/TESTING.md` |
21
- | BT-09 | Documentation coverage contract for public surfaces | `scripts/qa/docs-coverage.sh` | `tests/unit/misc/test_qa_docs_coverage.sh`, `tests/unit/misc/test_qa_docs_repo_coverage.sh` | `docs/operations/RELIABILITY.md`, `docs/reference/UTILS.md`, `docs/reference/SCRIPTS.md` |
22
- | BT-10 | Repository executable-surface coverage gate | `tests/framework/module_coverage.sh` | `tests/unit/tools/test_public_entrypoints.sh`, `tests/unit/misc/test_module_coverage_behaviour.sh` | `docs/operations/TESTING.md`, `docs/security/VERIFICATION_VALIDATION.md`, `docs/reference/SCRIPTS.md` |
23
- | BT-11 | Core apply, diff, status, edit, and commit workflows | `scripts/dot/commands/core.sh` | `tests/unit/dot-cli/test_dot_commands_core.sh`, `tests/unit/dot-cli/test_dot_cli.sh` | `docs/reference/UTILS.md` |
24
- | BT-12 | Alias discovery, search, and governance workflows | `scripts/dot/commands/aliases.sh` | `tests/unit/dot-cli/test_dot_commands_aliases.sh` | `docs/reference/ALIASES.md`, `docs/reference/UTILS.md` |
25
- | BT-13 | Appearance and theme command workflows | `scripts/dot/commands/appearance.sh` | `tests/unit/dot-cli/test_dot_commands_appearance.sh` | `docs/guides/THEMING.md`, `docs/reference/UTILS.md` |
26
- | BT-14 | Diagnostics command workflows | `scripts/dot/commands/diagnostics.sh` | `tests/unit/dot-cli/test_dot_commands_diagnostics.sh` | `docs/operations/RELIABILITY.md`, `docs/reference/UTILS.md` |
27
- | BT-15 | Lint command workflow | `scripts/dot/commands/lint.sh` | `tests/unit/dot-cli/test_dot_commands_lint.sh`, `tests/unit/dot-cli/test_lint.sh` | `docs/operations/TESTING.md`, `docs/reference/UTILS.md` |
28
- | BT-16 | AI steering pattern workflows | `scripts/dot/commands/patterns.sh` | `tests/unit/dot-cli/test_dot_commands_patterns.sh` | `docs/AI.md` |
29
- | BT-17 | Restore and rollback workflows | `scripts/dot/commands/restore.sh` | `tests/unit/dot-cli/test_dot_commands_restore.sh` | `docs/reference/UTILS.md` |
30
- | BT-18 | Security command workflows | `scripts/dot/commands/security.sh` | `tests/unit/dot-cli/test_dot_commands_security.sh` | `docs/reference/UTILS.md`, `docs/security/COMPLIANCE.md` |
31
- | BT-19 | Tool catalog and sandbox workflows | `scripts/dot/commands/tools.sh` | `tests/unit/dot-cli/test_dot_commands_tools.sh` | `docs/reference/TOOLS.md`, `docs/reference/UTILS.md` |
32
- | BT-20 | Example validation contract | `scripts/qa/validate-examples.sh` | `tests/unit/misc/test_qa_reliability.sh` | `docs/operations/RELIABILITY.md` |
33
- | BT-21 | WSL parity contract | `scripts/qa/wsl-contract.sh` | `tests/unit/misc/test_qa_reliability.sh` | `docs/operations/RELIABILITY.md`, `docs/reference/SUPPORT_MATRIX.md` |
34
- | BT-22 | Internal behavior traceability contract | `scripts/qa/traceability-coverage.sh` | `tests/unit/misc/test_qa_traceability_coverage.sh` | `docs/operations/TRACEABILITY.md`, `docs/operations/RELIABILITY.md` |
35
- | BT-23 | Multi-format Manual pipeline | `tools/docs/build-manual.sh`, `tools/docs/check-manual.sh`, `scripts/dot/commands/manual.sh` | `tests/unit/docs/test_build_manual.sh`, `tests/unit/docs/test_check_manual.sh`, `tests/unit/dot-cli/test_dot_commands_manual.sh` | `docs/manual/`, `docs/README.md`, `README.md` |
36
- | BT-24 | Multi-harness AI agent context (AGENTS.md generator) | `scripts/dot/commands/agents.sh` | `tests/unit/auto/test_auto_dot_driver.sh` | `AGENTS.md`, `CLAUDE.md`, `docs/operations/HARD_AUDIT_2026.md` |
37
- | BT-25 | Bootstrap foreign dotfiles repo through chezmoi harness | `scripts/dot/commands/init.sh` | `tests/unit/auto/test_auto_dot_driver.sh` | `docs/operations/ROADMAP_2026.md`, `docs/manual/03-reference/01-dot-cli.md` |
38
- | BT-26 | Module registry discovery and install scaffold | `scripts/dot/commands/registry.sh` | `tests/unit/auto/test_auto_dot_driver.sh` | `docs/operations/REGISTRY.md`, `docs/registry.json` |
39
- | BT-27 | Workstation environment manifest emitter (`dot env emit`) | `scripts/dot/commands/env-emit.sh` | `tests/unit/dot-cli/test_cmd_env_emit.sh` | `docs/operations/MANIFEST.md`, `docs/schema/dot-env-v1.json` |
40
- | BT-28 | Cross-file version-string consistency contract | `scripts/qa/check-version-consistency.sh` | `tests/unit/qa/test_check_version_consistency.sh` | `docs/operations/RELIABILITY.md` |
41
- | BT-29 | OpenSSF Scorecard nightly snapshot artefact | `scripts/qa/scorecard-snapshot.sh` | `tests/unit/qa/test_scorecard_snapshot.sh` | `docs/security/SCORECARD.md` |
42
- | BT-30 | Shell completion generator (`dot completion <shell>`) | `scripts/dot/commands/completion.sh` | `tests/unit/dot-cli/test_dot_completion.sh` | `docs/reference/UTILS.md` |
43
- | BT-31 | Examples coverage contract (feature/command → example) | `scripts/qa/examples-coverage.sh` | `tests/unit/misc/test_qa_examples_coverage.sh` | `docs/reference/UTILS.md` |
44
- | BT-32 | Feature matrix drift gate (command → test, benchmark, example) | `scripts/qa/check-feature-matrix.sh` | `tests/unit/misc/test_qa_check_feature_matrix.sh` | `docs/reference/FEATURE-MATRIX.md`, `docs/operations/TESTING.md` |
@@ -1,65 +0,0 @@
1
- ---
2
- render_with_liquid: false
3
- ---
4
-
5
- # Trusted Agent Workstation
6
-
7
- This repository is more than shell setup.
8
-
9
- It defines a signed, local-first workstation baseline for agentic development on macOS, Linux, WSL, and PowerShell.
10
-
11
- ## Core model
12
-
13
- - bounded agent profiles
14
- - tracked MCP policy and registry
15
- - workstation attestation
16
- - signed commits and verified merges
17
- - cross-platform CLI and diagnostics
18
-
19
- ## Governance artifacts
20
-
21
- The source of truth lives in tracked JSON artifacts:
22
-
23
- - [policy-bundles.json](https://github.com/sebastienrousseau/dotfiles/blob/main/defaults/dot_config/dotfiles/policy-bundles.json)
24
- - [agent-profiles.json](https://github.com/sebastienrousseau/dotfiles/blob/main/defaults/dot_config/dotfiles/agent-profiles.json)
25
- - [mcp-policy.json](https://github.com/sebastienrousseau/dotfiles/blob/main/defaults/dot_config/dotfiles/mcp-policy.json)
26
- - [mcp-registry.json](https://github.com/sebastienrousseau/dotfiles/blob/main/defaults/dot_config/dotfiles/mcp-registry.json)
27
- - [model-registry.json](https://github.com/sebastienrousseau/dotfiles/blob/main/defaults/dot_config/dotfiles/model-registry.json)
28
- - [prompt-registry.json](https://github.com/sebastienrousseau/dotfiles/blob/main/defaults/dot_config/dotfiles/prompt-registry.json)
29
-
30
- ## Enterprise path
31
-
32
- Phase 1 establishes:
33
-
34
- - product framing
35
- - policy bundles
36
- - prompt and model change control
37
- - attestation evidence for governance state
38
-
39
- Implemented next-layer controls:
40
-
41
- - filesystem-backed fleet attestation export
42
- - replayable agent checkpoints
43
- - signed policy bundle release workflow
44
- - tracked A2A conformance validation
45
-
46
- Further phases add:
47
-
48
- - central audit export
49
- - fleet drift dashboards
50
- - checkpoint policies and retention controls
51
- - broader protocol interoperability coverage
52
-
53
- ## Validation
54
-
55
- Run:
56
-
57
- ```bash
58
- dot doctor
59
- dot mcp --strict
60
- dot mode list
61
- dot agent card --json
62
- dot attest --json
63
- ```
64
-
65
- Every governance change requires a signed commit.