@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,108 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # Dotfiles post-merge verification checks
5
- # Runs doctor + status + diff checks and exits non-zero on issues.
6
-
7
- set -euo pipefail
8
-
9
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10
- # shellcheck source=../../lib/dot/ui.sh
11
- # shellcheck disable=SC1091
12
- source "$SCRIPT_DIR/../../lib/dot/ui.sh"
13
-
14
- ui_init
15
- ui_dot_banner "Diagnostics"
16
- ui_header "Dotfiles Verify"
17
- echo ""
18
-
19
- failures=0
20
- dot_bin=""
21
- RUN_SECURITY=0
22
-
23
- # Parse arguments
24
- for arg in "$@"; do
25
- case "$arg" in
26
- --security | -s) RUN_SECURITY=1 ;;
27
- esac
28
- done
29
-
30
- resolve_dot_bin() {
31
- if command -v dot >/dev/null 2>&1; then
32
- command -v dot
33
- return
34
- fi
35
- if [[ -x "$HOME/.local/bin/dot" ]]; then
36
- printf "%s\n" "$HOME/.local/bin/dot"
37
- return
38
- fi
39
- local src_dir=""
40
- if [[ -n "${CHEZMOI_SOURCE_DIR:-}" && -d "${CHEZMOI_SOURCE_DIR}" ]]; then
41
- src_dir="${CHEZMOI_SOURCE_DIR}"
42
- elif [[ -d "$HOME/.dotfiles" ]]; then
43
- src_dir="$HOME/.dotfiles"
44
- elif [[ -d "$HOME/.local/share/chezmoi" ]]; then
45
- src_dir="$HOME/.local/share/chezmoi"
46
- fi
47
- if [[ -n "$src_dir" && -x "$src_dir/bin/dot" ]]; then
48
- printf "%s\n" "$src_dir/bin/dot"
49
- return
50
- fi
51
- return 1
52
- }
53
-
54
- run_step() {
55
- local label="$1"
56
- shift
57
-
58
- ui_info "Running" "$label"
59
- set +e
60
- "$@"
61
- local ec=$?
62
- set -e
63
-
64
- if [[ $ec -eq 0 ]]; then
65
- ui_ok "$label" "ok"
66
- else
67
- ui_err "$label" "failed (exit $ec)"
68
- failures=$((failures + 1))
69
- fi
70
- }
71
-
72
- if dot_bin="$(resolve_dot_bin)"; then
73
- if [[ $RUN_SECURITY -eq 1 ]]; then
74
- run_step "security-score" "$dot_bin" security-score
75
- else
76
- run_step "dot doctor" "$dot_bin" doctor
77
- run_step "dot status" "$dot_bin" status
78
- fi
79
- else
80
- # shellcheck disable=SC1091
81
- ui_err "dot binary" "not found in PATH, ~/.local/bin, or source tree"
82
- failures=$((failures + 1))
83
- fi
84
-
85
- ui_info "Running" "chezmoi diff"
86
- set +e
87
- diff_output="$(chezmoi diff 2>&1)"
88
- diff_ec=$?
89
- set -e
90
- if [[ $diff_ec -eq 0 ]]; then
91
- ui_ok "chezmoi diff" "clean"
92
- else
93
- ui_warn "chezmoi diff" "drift detected"
94
- if [[ -n "$diff_output" ]]; then
95
- printf "%s\n" "$diff_output"
96
- fi
97
- failures=$((failures + 1))
98
- fi
99
-
100
- echo ""
101
- if [[ $failures -eq 0 ]]; then
102
- ui_ok "Verification" "all checks passed"
103
- exit 0
104
- fi
105
-
106
- ui_err "Verification" "$failures check(s) failed"
107
- ui_info "Hint" "Run 'dot heal' then re-run 'dot verify'"
108
- exit 1
@@ -1,73 +0,0 @@
1
- #!/usr/bin/env bash
2
- # MIT License
3
- # SPDX-License-Identifier: Apache-2.0 OR MIT
4
- # Copyright (c) 2015-2026 Sebastien Rousseau
5
- # See LICENSE file for details.
6
-
7
- # Script: verify_state.sh
8
- # Description: Final verification of the dotfiles environment state.
9
-
10
- set -euo pipefail
11
-
12
- echo " Starting Final Environment Verification..."
13
-
14
- Errors=0
15
- ALIASES_CONFIG="$HOME/.config/shell/aliases.sh"
16
- AliasesConfigReported=0
17
-
18
- check_file() {
19
- if [[ ! -f "$1" ]]; then
20
- echo " Missing file: $1"
21
- Errors=$((Errors + 1))
22
- else
23
- echo " Found file: $1"
24
- fi
25
- }
26
-
27
- check_alias_in_config() {
28
- if [[ ! -f "$ALIASES_CONFIG" ]]; then
29
- if [[ "$AliasesConfigReported" -eq 0 ]]; then
30
- echo " Missing aliases config: $ALIASES_CONFIG"
31
- Errors=$((Errors + 1))
32
- AliasesConfigReported=1
33
- fi
34
- elif ! grep -q "$1" "$ALIASES_CONFIG"; then
35
- echo " Missing alias definition '$1' in built config"
36
- Errors=$((Errors + 1))
37
- else
38
- echo " Verified alias: $1"
39
- fi
40
- }
41
-
42
- # 1. Verify Docs
43
- # Post-Phase-4b (v0.2.503): chezmoi source is under the subdir
44
- # named in .chezmoiroot (typically "defaults/"). Paths without the
45
- # prefix silently return "missing" from any CWD other than
46
- # ~/.dotfiles/defaults/.
47
- check_file "defaults/.chezmoitemplates/aliases/security/README.md"
48
- check_file "defaults/.chezmoitemplates/aliases/legal/README.md"
49
-
50
- # 2. Verify Scripts
51
- check_file "scripts/security/lock-configs.sh"
52
- check_file "scripts/tools/detect-collisions.py"
53
- check_file "tests/test-aliases.sh"
54
-
55
- # 3. Verify Generated Config Content (Key Features)
56
- # Security
57
- check_alias_in_config "lock-configs"
58
- check_alias_in_config "unlock-configs"
59
- check_alias_in_config "enable-signing"
60
- # Legal
61
- check_alias_in_config "scan-licenses"
62
- check_alias_in_config "add-headers"
63
-
64
- # 4. Verify Workflows
65
- check_file ".github/workflows/security-release.yml"
66
-
67
- if [[ $Errors -eq 0 ]]; then
68
- echo " Verification Passed! All systems nominal."
69
- exit 0
70
- else
71
- echo "️ Verification Failed with $Errors errors."
72
- exit 1
73
- fi
@@ -1,94 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- # Version Locks Summary
5
- # Usage: dot locks
6
-
7
- set -euo pipefail
8
-
9
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
10
- # shellcheck source=../../lib/dot/ui.sh
11
- # shellcheck disable=SC1091
12
- source "$SCRIPT_DIR/../../lib/dot/ui.sh"
13
-
14
- ui_init
15
-
16
- resolve_source_dir() {
17
- if [[ -n "${CHEZMOI_SOURCE_DIR:-}" && -d "$CHEZMOI_SOURCE_DIR" ]]; then
18
- printf "%s\n" "$CHEZMOI_SOURCE_DIR"
19
- return
20
- fi
21
- if [[ -d "$HOME/.dotfiles" ]]; then
22
- printf "%s\n" "$HOME/.dotfiles"
23
- return
24
- fi
25
- if [[ -d "$HOME/.local/share/chezmoi" ]]; then
26
- printf "%s\n" "$HOME/.local/share/chezmoi"
27
- return
28
- fi
29
- return 1
30
- }
31
-
32
- src_dir=$(resolve_source_dir)
33
-
34
- # resolve_source_dir returns the repo root, but since the defaults/ reorg the
35
- # deployable tree lives under the .chezmoiroot subdir (defaults/). Descend
36
- # into it so paths like dot_config/... resolve. (Without this the mise lookup
37
- # below silently reported "config not found" on every run.)
38
- cm_src="$src_dir"
39
- if [[ -f "$src_dir/.chezmoiroot" ]]; then
40
- _cm_root="$(tr -d '[:space:]' <"$src_dir/.chezmoiroot")"
41
- [[ -n "$_cm_root" && -d "$src_dir/$_cm_root" ]] && cm_src="$src_dir/$_cm_root"
42
- fi
43
-
44
- ui_header "Version Locks"
45
-
46
- ui_section "mise toolchain"
47
- mise_config="$cm_src/dot_config/mise/conf.d/00-dotfiles.toml"
48
- if [[ -f "$mise_config" ]]; then
49
- awk -F= '
50
- /^\[tools\]/ {in_tools=1; next}
51
- /^\[/ {in_tools=0}
52
- in_tools && NF {
53
- gsub(/"/, "", $0)
54
- tool=$1
55
- gsub(/[[:space:]]+/, "", tool)
56
- ver=$2
57
- gsub(/^[[:space:]]+|[[:space:]]+$/, "", ver)
58
- if (tool != "") {
59
- printf "%s\t%s\n", tool, ver
60
- }
61
- }
62
- ' "$mise_config" | while IFS=$'\t' read -r tool ver; do
63
- [[ -n "$tool" ]] && ui_kv "$tool" "$ver"
64
- done
65
- else
66
- ui_warn "mise" "config not found"
67
- fi
68
-
69
- ui_section "Node/Python pins"
70
- # Chezmoi-tracked files (dot_*) live under $cm_src (defaults/) post-
71
- # Phase-4b, NOT at repo root. Using $src_dir here silently rendered
72
- # an empty section on every workstation.
73
- if [[ -f "$cm_src/dot_node-version" ]]; then
74
- ui_kv "node" "$(cat "$cm_src/dot_node-version")"
75
- fi
76
- if [[ -f "$cm_src/dot_noderc.tmpl" ]]; then
77
- ui_kv "noderc" "$(sed -n '1p' "$cm_src/dot_noderc.tmpl")"
78
- fi
79
-
80
- ui_section "Package manager locks"
81
- if [[ -f "$cm_src/dot_config/shell/Brewfile" ]]; then
82
- ui_kv "brew" "Brewfile present"
83
- fi
84
- if [[ -f "$cm_src/dot_config/shell/Brewfile.cli" ]]; then
85
- ui_kv "brew-cli" "Brewfile.cli present"
86
- fi
87
- # package.json (if any) is a repo-root artefact — use $src_dir.
88
- if [[ -f "$src_dir/package.json" ]]; then
89
- ui_kv "node" "package.json version pinned"
90
- fi
91
-
92
- ui_section "Notes"
93
- ui_info "Policy" "Prefer LTS and explicit pins for core runtimes"
94
- ui_info "Update" "Edit ~/.config/mise/config.toml to adjust pins"
@@ -1,212 +0,0 @@
1
- #!/usr/bin/env bash
2
- # SPDX-License-Identifier: Apache-2.0 OR MIT
3
- # Copyright (c) 2015-2026 Sebastien Rousseau
4
- ## Workstation attestation export.
5
- ##
6
- ## Produces a machine-readable evidence record for the current dotfiles
7
- ## workstation state: version, platform, signing, MCP posture, and agent mode.
8
-
9
- set -euo pipefail
10
-
11
- SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
12
- REPO_ROOT="${REPO_ROOT:-$(cd "$SCRIPT_DIR/../.." && pwd)}"
13
- # Export so child processes (the mcp-doctor subprocess below) inherit it
14
- # without the env-prefix dance that confuses shellcheck (SC2097/SC2098).
15
- export REPO_ROOT
16
-
17
- # shellcheck source=../../lib/dot/ui.sh
18
- source "$SCRIPT_DIR/../../lib/dot/ui.sh"
19
- # shellcheck source=../../lib/dot/platform.sh
20
- source "$SCRIPT_DIR/../../lib/dot/platform.sh"
21
- # shellcheck source=../../lib/dot/utils.sh
22
- source "$SCRIPT_DIR/../../lib/dot/utils.sh"
23
-
24
- JSON_MODE=0
25
- WRITE_PATH=""
26
- FLEET_STORE=""
27
- FLEET_ID=""
28
- VERIFY=0
29
- VERIFY_MAX_AGE=""
30
- while [[ $# -gt 0 ]]; do
31
- case "$1" in
32
- --json | -j)
33
- JSON_MODE=1
34
- shift
35
- ;;
36
- --verify | -V)
37
- VERIFY=1
38
- shift
39
- ;;
40
- --max-age | -a)
41
- VERIFY_MAX_AGE="${2:-}"
42
- VERIFY=1
43
- shift 2
44
- ;;
45
- --write | -w)
46
- WRITE_PATH="${2:-}"
47
- shift 2
48
- ;;
49
- --fleet-store | -F)
50
- FLEET_STORE="${2:-}"
51
- shift 2
52
- ;;
53
- --fleet-id | -I)
54
- FLEET_ID="${2:-}"
55
- shift 2
56
- ;;
57
- *)
58
- shift
59
- ;;
60
- esac
61
- done
62
-
63
- command -v jq >/dev/null 2>&1 || {
64
- echo "jq is required for workstation attestation." >&2
65
- exit 1
66
- }
67
-
68
- ui_init
69
-
70
- if [[ -z "$FLEET_STORE" && -n "${DOTFILES_FLEET_STORE:-}" ]]; then
71
- FLEET_STORE="$DOTFILES_FLEET_STORE"
72
- fi
73
-
74
- attestation_dir="${XDG_STATE_HOME:-$HOME/.local/state}/dotfiles/attestations"
75
- if [[ -n "$WRITE_PATH" ]]; then
76
- mkdir -p "$(dirname "$WRITE_PATH")"
77
- elif [[ "$JSON_MODE" -ne 1 && -z "$FLEET_STORE" ]]; then
78
- mkdir -p "$attestation_dir"
79
- WRITE_PATH="$attestation_dir/workstation-attestation.json"
80
- fi
81
-
82
- dot_version="$(dotfiles_version)"
83
- platform_id="$(dot_platform_id)"
84
- host_os="$(dot_host_os)"
85
- arch="$(uname -m)"
86
- hostname_value="$(hostname 2>/dev/null || true)"
87
- agent_profile_file="$REPO_ROOT/defaults/dot_config/dotfiles/agent-profiles.json"
88
- agent_card_file="$REPO_ROOT/defaults/dot_config/dotfiles/agent-card.json"
89
- agent_state_file="${AGENT_STATE_FILE:-$HOME/.config/dotfiles/agent-mode.env}"
90
- policy_bundles_file="$REPO_ROOT/defaults/dot_config/dotfiles/policy-bundles.json"
91
- model_registry_file="$REPO_ROOT/defaults/dot_config/dotfiles/model-registry.json"
92
- prompt_registry_file="$REPO_ROOT/defaults/dot_config/dotfiles/prompt-registry.json"
93
- mcp_policy_file="$REPO_ROOT/defaults/dot_config/dotfiles/mcp-policy.json"
94
- mcp_registry_file="$REPO_ROOT/defaults/dot_config/dotfiles/mcp-registry.json"
95
- signing_format="$(git config --global gpg.format 2>/dev/null || echo ssh)"
96
- signing_key="$(git config --global user.signingkey 2>/dev/null || true)"
97
- allowed_signers="$(git config --global gpg.ssh.allowedSignersFile 2>/dev/null || echo "$HOME/.config/git/allowed_signers")"
98
- merge_verify="$(git config --global --bool merge.verifySignatures 2>/dev/null || echo false)"
99
-
100
- if [[ -f "$agent_state_file" ]]; then
101
- current_profile="$(sed -n 's/^DOT_AGENT_PROFILE=//p' "$agent_state_file" | tail -n 1)"
102
- else
103
- current_profile=""
104
- fi
105
- if [[ -z "$current_profile" ]] && [[ -f "$agent_profile_file" ]]; then
106
- current_profile="$(jq -r '.defaultProfile // "ask"' "$agent_profile_file")"
107
- fi
108
-
109
- MCP_CONFIG="$REPO_ROOT/defaults/dot_config/claude/mcp_servers.json"
110
- export MCP_CONFIG
111
- mcp_summary="$(bash "$REPO_ROOT/scripts/diagnostics/mcp-doctor.sh" --strict --json)"
112
-
113
- attestation_json="$(
114
- jq -n \
115
- --arg generated_at "$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
116
- --arg repo_root "$REPO_ROOT" \
117
- --arg version "$dot_version" \
118
- --arg platform "$platform_id" \
119
- --arg host_os "$host_os" \
120
- --arg arch "$arch" \
121
- --arg hostname "$hostname_value" \
122
- --arg signing_format "$signing_format" \
123
- --arg signing_key "$signing_key" \
124
- --arg allowed_signers "$allowed_signers" \
125
- --argjson merge_verify "$([[ "$merge_verify" == "true" ]] && echo true || echo false)" \
126
- --arg current_profile "$current_profile" \
127
- --argjson mcp "$mcp_summary" \
128
- --slurpfile agent_profiles "$agent_profile_file" \
129
- --slurpfile agent_card "$agent_card_file" \
130
- --slurpfile policy_bundles "$policy_bundles_file" \
131
- --slurpfile model_registry "$model_registry_file" \
132
- --slurpfile prompt_registry "$prompt_registry_file" \
133
- --slurpfile mcp_policy "$mcp_policy_file" \
134
- --slurpfile mcp_registry "$mcp_registry_file" \
135
- '{
136
- generated_at: $generated_at,
137
- repo_root: $repo_root,
138
- dotfiles_version: $version,
139
- platform: {
140
- runtime: $platform,
141
- host_os: $host_os,
142
- architecture: $arch,
143
- hostname: $hostname
144
- },
145
- git_signing: {
146
- format: $signing_format,
147
- signing_key: $signing_key,
148
- allowed_signers_file: $allowed_signers,
149
- merge_verify_signatures: $merge_verify
150
- },
151
- agent: {
152
- current_profile: $current_profile,
153
- profiles: $agent_profiles[0],
154
- card: $agent_card[0]
155
- },
156
- governance: {
157
- policy_bundles: $policy_bundles[0],
158
- model_registry: $model_registry[0],
159
- prompt_registry: $prompt_registry[0]
160
- },
161
- mcp: {
162
- doctor: $mcp,
163
- policy: $mcp_policy[0],
164
- registry: $mcp_registry[0]
165
- }
166
- }'
167
- )"
168
-
169
- if [[ -n "$WRITE_PATH" ]]; then
170
- printf '%s\n' "$attestation_json" >"$WRITE_PATH"
171
- fi
172
-
173
- if [[ -n "$FLEET_STORE" ]]; then
174
- fleet_root="${FLEET_STORE%/}"
175
- fleet_id="${FLEET_ID:-${DOTFILES_FLEET_ID:-default}}"
176
- fleet_host="${hostname_value:-unknown-host}"
177
- fleet_dir="$fleet_root/$fleet_id/$fleet_host"
178
- fleet_file="$fleet_dir/workstation-attestation.json"
179
- fleet_timestamp_file="$fleet_dir/workstation-attestation-$(date -u +%Y%m%dT%H%M%SZ).json"
180
- mkdir -p "$fleet_dir"
181
- printf '%s\n' "$attestation_json" >"$fleet_file"
182
- printf '%s\n' "$attestation_json" >"$fleet_timestamp_file"
183
- fi
184
-
185
- # Hand the evidence to the WebAssembly verifier rather than printing it.
186
- # The module has no access to this machine beyond the bytes on its stdin, so
187
- # the verdict does not depend on the tools the machine under review happens
188
- # to have installed.
189
- if [[ "$VERIFY" -eq 1 ]]; then
190
- verify_args=(--verify)
191
- [[ "$JSON_MODE" -eq 1 ]] && verify_args+=(--json)
192
- [[ -n "$VERIFY_MAX_AGE" ]] && verify_args+=(--max-age "$VERIFY_MAX_AGE")
193
- verify_status=0
194
- printf '%s\n' "$attestation_json" |
195
- bash "$SCRIPT_DIR/attest-verify.sh" "${verify_args[@]}" || verify_status=$?
196
- exit "$verify_status"
197
- fi
198
-
199
- if [[ "$JSON_MODE" -eq 1 ]]; then
200
- printf '%s\n' "$attestation_json"
201
- else
202
- ui_dot_banner "Diagnostics"
203
- ui_header "Workstation Attestation"
204
- ui_ok "Version" "$dot_version"
205
- ui_ok "Platform" "$platform_id / $host_os / $arch"
206
- ui_ok "Agent profile" "$current_profile"
207
- ui_ok "MCP status" "$(printf '%s' "$mcp_summary" | jq -r '.status')"
208
- ui_ok "Output" "$WRITE_PATH"
209
- if [[ -n "$FLEET_STORE" ]]; then
210
- ui_ok "Fleet store" "$fleet_root/$fleet_id/$fleet_host"
211
- fi
212
- fi