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