@sebastienrousseau/dotfiles 0.2.519 → 0.2.521

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 (306) hide show
  1. package/CHANGELOG.md +200 -0
  2. package/LICENSE-APACHE +190 -0
  3. package/{LICENSE → LICENSE-MIT} +1 -1
  4. package/README.md +1172 -166
  5. package/install.sh +77 -11
  6. package/package.json +8 -8
  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/CNAME +0 -1
  12. package/docs/CONFIG_STRATEGY.md +0 -124
  13. package/docs/COPYRIGHT +0 -7
  14. package/docs/GOVERNANCE.md +0 -98
  15. package/docs/MAINTAINERS.md +0 -41
  16. package/docs/NAMING_CONVENTIONS.md +0 -102
  17. package/docs/OPENCODE.md +0 -127
  18. package/docs/README.md +0 -84
  19. package/docs/STRUCTURE.md +0 -102
  20. package/docs/adr/ADR-001-ci-cd-pipeline.md +0 -118
  21. package/docs/adr/ADR-002-shell-performance.md +0 -130
  22. package/docs/adr/ADR-003-security-first.md +0 -158
  23. package/docs/adr/ADR-004-cli-architecture.md +0 -171
  24. package/docs/adr/ADR-005-chezmoi-choice.md +0 -99
  25. package/docs/adr/ADR-006-shell-selection.md +0 -124
  26. package/docs/adr/ADR-007-multi-shell-parity.md +0 -62
  27. package/docs/adr/ADR-008-alias-system-architecture.md +0 -95
  28. package/docs/adr/ADR-009-wallpaper-driven-theming.md +0 -131
  29. package/docs/adr/ADR-010-starship-transient-prompt.md +0 -144
  30. package/docs/adr/ADR-011-nushell-tier3-keep.md +0 -144
  31. package/docs/adr/ADR-012-ai-fleet-local-proxy.md +0 -79
  32. package/docs/adr/README.md +0 -40
  33. package/docs/architecture/AI_COST_OPTIMIZATION.md +0 -144
  34. package/docs/architecture/ARCHITECTURE.md +0 -117
  35. package/docs/architecture/INTEROP.md +0 -44
  36. package/docs/architecture/REPO_LAYOUT.md +0 -241
  37. package/docs/architecture/WALKTHROUGH.md +0 -86
  38. package/docs/architecture/fleet-deployment.md +0 -77
  39. package/docs/archive/EUXIS_2026_REVIEW.md +0 -127
  40. package/docs/archive/LEGACY_ROADMAP.md +0 -6
  41. package/docs/archive/MILESTONE_v0.2.493.md +0 -47
  42. package/docs/archive/PLAN.md +0 -199
  43. package/docs/archive/REPO_AUDIT.md +0 -31
  44. package/docs/articles/.pages +0 -6
  45. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +0 -216
  46. package/docs/articles/2026-07-05-fish-startup-abbr.md +0 -153
  47. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +0 -128
  48. package/docs/articles/index.md +0 -36
  49. package/docs/guides/INSTALL.md +0 -144
  50. package/docs/guides/NEOVIM_IDE_GUIDE.md +0 -61
  51. package/docs/guides/THEMING.md +0 -230
  52. package/docs/guides/TROUBLESHOOTING.md +0 -176
  53. package/docs/guides/WSL2_NIX_TROUBLESHOOTING.md +0 -792
  54. package/docs/index.md +0 -132
  55. package/docs/interop/A2A.md +0 -39
  56. package/docs/interop/POWERSHELL.md +0 -102
  57. package/docs/manual/00-introduction.md +0 -89
  58. package/docs/manual/01-concepts/01-architecture.md +0 -138
  59. package/docs/manual/01-concepts/02-trust-model.md +0 -183
  60. package/docs/manual/01-concepts/03-theme-engine.md +0 -186
  61. package/docs/manual/01-concepts/04-fleet.md +0 -148
  62. package/docs/manual/01-concepts/05-self-healing.md +0 -204
  63. package/docs/manual/02-tutorials/01-first-install.md +0 -197
  64. package/docs/manual/02-tutorials/02-add-wallpaper.md +0 -216
  65. package/docs/manual/02-tutorials/03-create-profile.md +0 -244
  66. package/docs/manual/02-tutorials/04-encrypt-secret.md +0 -281
  67. package/docs/manual/02-tutorials/05-deploy-fleet.md +0 -283
  68. package/docs/manual/03-reference/01-dot-cli.md +0 -450
  69. package/docs/manual/03-reference/02-config-files.md +0 -265
  70. package/docs/manual/03-reference/03-environment.md +0 -124
  71. package/docs/manual/03-reference/04-templates.md +0 -190
  72. package/docs/manual/03-reference/05-feature-flags.md +0 -187
  73. package/docs/manual/04-cookbook/01-recipes.md +0 -285
  74. package/docs/manual/04-cookbook/02-troubleshooting.md +0 -351
  75. package/docs/manual/04-cookbook/03-faq.md +0 -175
  76. package/docs/manual/05-appendices/A-platform-matrix.md +0 -101
  77. package/docs/manual/05-appendices/B-security-checklist.md +0 -85
  78. package/docs/manual/05-appendices/C-glossary.md +0 -40
  79. package/docs/manual/05-appendices/D-bibliography.md +0 -58
  80. package/docs/manual/05-appendices/E-license.md +0 -38
  81. package/docs/manual/_toc.yml +0 -58
  82. package/docs/manual/command-index.md +0 -155
  83. package/docs/manual/concept-index.md +0 -168
  84. package/docs/manual/index.md +0 -66
  85. package/docs/operations/ARCHITECTURE_ROADMAP.md +0 -7
  86. package/docs/operations/ATTESTATION.md +0 -44
  87. package/docs/operations/CI_CADENCE.md +0 -107
  88. package/docs/operations/CI_COMPOSITES.md +0 -156
  89. package/docs/operations/COMPLETIONS.md +0 -123
  90. package/docs/operations/COVERAGE.md +0 -204
  91. package/docs/operations/DRIFT.md +0 -107
  92. package/docs/operations/HARD_AUDIT_2026.md +0 -631
  93. package/docs/operations/MAINTENANCE.md +0 -63
  94. package/docs/operations/MANIFEST.md +0 -127
  95. package/docs/operations/MIGRATION.md +0 -109
  96. package/docs/operations/OPERATIONS.md +0 -188
  97. package/docs/operations/PERFORMANCE.md +0 -133
  98. package/docs/operations/REGISTRY.md +0 -90
  99. package/docs/operations/RELEASE_PIPELINE.md +0 -128
  100. package/docs/operations/RELIABILITY.md +0 -122
  101. package/docs/operations/RFC_v0_2_503_reorganization.md +0 -280
  102. package/docs/operations/ROADMAP.md +0 -10
  103. package/docs/operations/ROADMAP_2026.md +0 -7
  104. package/docs/operations/ROADMAP_V0_2_503.md +0 -10
  105. package/docs/operations/TESTING.md +0 -216
  106. package/docs/operations/TRACEABILITY.md +0 -43
  107. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +0 -65
  108. package/docs/operations/VERSION_SYNC.md +0 -393
  109. package/docs/reference/ALIASES.md +0 -131
  110. package/docs/reference/ALIASES_CHEATSHEET.md +0 -32
  111. package/docs/reference/ALIASES_DEPRECATIONS.md +0 -13
  112. package/docs/reference/FEATURES.md +0 -66
  113. package/docs/reference/FONTS.md +0 -112
  114. package/docs/reference/POWERSHELL_PARITY.md +0 -82
  115. package/docs/reference/PROFILES.md +0 -69
  116. package/docs/reference/SCREENSHOTS.md +0 -121
  117. package/docs/reference/SCRIPTS.md +0 -71
  118. package/docs/reference/SUPPORT_MATRIX.md +0 -80
  119. package/docs/reference/THEMES.md +0 -117
  120. package/docs/reference/TOOLS.md +0 -110
  121. package/docs/reference/UTILS.md +0 -242
  122. package/docs/registry.json +0 -6
  123. package/docs/schema/dot-env-v1.json +0 -110
  124. package/docs/schema/dot-registry-v1.json +0 -33
  125. package/docs/security/AI_ACT_COMPLIANCE.md +0 -94
  126. package/docs/security/AUDIT_BYPASS.md +0 -103
  127. package/docs/security/AUTOMATION_SECRETS.md +0 -26
  128. package/docs/security/CI_EGRESS_ALLOWLIST.md +0 -127
  129. package/docs/security/CI_PINNING.md +0 -129
  130. package/docs/security/COMMIT_SIGNING.md +0 -138
  131. package/docs/security/COMPLIANCE.md +0 -458
  132. package/docs/security/DEPS_DEV_EXCEPTIONS.md +0 -86
  133. package/docs/security/DISCLOSURE.md +0 -130
  134. package/docs/security/ENCRYPTION.md +0 -57
  135. package/docs/security/FMEA.md +0 -159
  136. package/docs/security/FUZZING.md +0 -114
  137. package/docs/security/HISTORY_FILTERING.md +0 -132
  138. package/docs/security/INCIDENT_RESPONSE.md +0 -579
  139. package/docs/security/INSTALL_VERIFICATION.md +0 -122
  140. package/docs/security/KEYS.md +0 -49
  141. package/docs/security/KEY_ROTATION.md +0 -303
  142. package/docs/security/MCP_POLICY.md +0 -78
  143. package/docs/security/POLICY_RELEASES.md +0 -37
  144. package/docs/security/README.md +0 -28
  145. package/docs/security/SCORECARD.md +0 -195
  146. package/docs/security/SECRETS.md +0 -158
  147. package/docs/security/SECURITY.md +0 -45
  148. package/docs/security/SECURITY_CHECKLIST.md +0 -55
  149. package/docs/security/SHELL_EXEMPTIONS.md +0 -145
  150. package/docs/security/SOUP_REGISTER.md +0 -36
  151. package/docs/security/THREAT_MODEL.md +0 -130
  152. package/docs/security/VERIFICATION_VALIDATION.md +0 -228
  153. package/docs/security/VERIFY_RELEASE.md +0 -201
  154. package/docs/security/security-pubkey.asc +0 -15
  155. package/docs/stylesheets/extra.css +0 -444
  156. package/docs/themes/README.md +0 -10
  157. package/docs/themes/VISUAL_INTEGRITY_REPORT.md +0 -30
  158. package/docs/themes/hero-shot.svg +0 -78
  159. package/scripts/README.md +0 -123
  160. package/scripts/ci/check-copyright-headers.sh +0 -8
  161. package/scripts/ci/check-shell-preamble.sh +0 -8
  162. package/scripts/ci/guard-gitleaks-checkout.sh +0 -8
  163. package/scripts/demo/record.sh +0 -43
  164. package/scripts/diagnostics/a2a-conformance.sh +0 -163
  165. package/scripts/diagnostics/alias-governance.sh +0 -138
  166. package/scripts/diagnostics/aliases-cheatsheet.sh +0 -74
  167. package/scripts/diagnostics/aliases-manifest.sh +0 -77
  168. package/scripts/diagnostics/benchmark.sh +0 -408
  169. package/scripts/diagnostics/conflicts.sh +0 -73
  170. package/scripts/diagnostics/doctor-unified.sh +0 -39
  171. package/scripts/diagnostics/doctor.sh +0 -751
  172. package/scripts/diagnostics/drift-dashboard.sh +0 -202
  173. package/scripts/diagnostics/health.sh +0 -623
  174. package/scripts/diagnostics/history-analysis.sh +0 -86
  175. package/scripts/diagnostics/mcp-doctor.sh +0 -582
  176. package/scripts/diagnostics/perf.sh +0 -453
  177. package/scripts/diagnostics/scorecard.sh +0 -119
  178. package/scripts/diagnostics/secret-governance.sh +0 -65
  179. package/scripts/diagnostics/security-score.sh +0 -467
  180. package/scripts/diagnostics/smoke-test.sh +0 -88
  181. package/scripts/diagnostics/snapshot.sh +0 -90
  182. package/scripts/diagnostics/verify.sh +0 -108
  183. package/scripts/diagnostics/verify_state.sh +0 -73
  184. package/scripts/diagnostics/version-locks.sh +0 -94
  185. package/scripts/diagnostics/workstation-attestation.sh +0 -187
  186. package/scripts/dot/commands/agent.sh +0 -485
  187. package/scripts/dot/commands/agents.sh +0 -336
  188. package/scripts/dot/commands/ai.sh +0 -587
  189. package/scripts/dot/commands/aliases.sh +0 -277
  190. package/scripts/dot/commands/appearance.sh +0 -110
  191. package/scripts/dot/commands/completion.sh +0 -134
  192. package/scripts/dot/commands/core.sh +0 -217
  193. package/scripts/dot/commands/diagnostics.sh +0 -265
  194. package/scripts/dot/commands/env-emit.sh +0 -203
  195. package/scripts/dot/commands/fleet.sh +0 -688
  196. package/scripts/dot/commands/init.sh +0 -185
  197. package/scripts/dot/commands/lint.sh +0 -208
  198. package/scripts/dot/commands/manual.sh +0 -169
  199. package/scripts/dot/commands/meta.sh +0 -333
  200. package/scripts/dot/commands/patterns.sh +0 -55
  201. package/scripts/dot/commands/registry.sh +0 -419
  202. package/scripts/dot/commands/restore.sh +0 -232
  203. package/scripts/dot/commands/secrets.sh +0 -296
  204. package/scripts/dot/commands/security.sh +0 -102
  205. package/scripts/dot/commands/tools.sh +0 -556
  206. package/scripts/dot/data/alias-deprecations.tsv +0 -2
  207. package/scripts/dot/powershell/Dot.psm1 +0 -319
  208. package/scripts/fonts/install-nerd-fonts.sh +0 -75
  209. package/scripts/fonts/patch-fonts.sh +0 -36
  210. package/scripts/git-hooks/install.sh +0 -12
  211. package/scripts/git-hooks/pre-commit +0 -12
  212. package/scripts/git-hooks/pre-commit-audit.sh +0 -146
  213. package/scripts/git-hooks/pre-push +0 -105
  214. package/scripts/git-hooks/prepare-commit-msg +0 -29
  215. package/scripts/lib/secrets_provider.sh +0 -185
  216. package/scripts/ops/ai-setup.sh +0 -71
  217. package/scripts/ops/bundle.sh +0 -104
  218. package/scripts/ops/chaos.sh +0 -50
  219. package/scripts/ops/chezmoi-apply.sh +0 -333
  220. package/scripts/ops/chezmoi-diff.sh +0 -16
  221. package/scripts/ops/chezmoi-remove.sh +0 -46
  222. package/scripts/ops/chezmoi-update.sh +0 -63
  223. package/scripts/ops/heal-chezmoi.sh +0 -87
  224. package/scripts/ops/heal-system.sh +0 -129
  225. package/scripts/ops/heal-tools.sh +0 -297
  226. package/scripts/ops/heal.sh +0 -223
  227. package/scripts/ops/post-apply-repair.sh +0 -107
  228. package/scripts/ops/prewarm.sh +0 -128
  229. package/scripts/ops/release.sh +0 -262
  230. package/scripts/ops/rollback.sh +0 -604
  231. package/scripts/ops/setup.sh +0 -138
  232. package/scripts/ops/teleport.sh +0 -34
  233. package/scripts/qa/check-version-consistency.sh +0 -124
  234. package/scripts/qa/coverage-baseline.sh +0 -61
  235. package/scripts/qa/docs-coverage.sh +0 -112
  236. package/scripts/qa/examples-coverage.sh +0 -94
  237. package/scripts/qa/powershell-contract.ps1 +0 -95
  238. package/scripts/qa/reliability-audit.sh +0 -139
  239. package/scripts/qa/scorecard-snapshot.sh +0 -128
  240. package/scripts/qa/traceability-coverage.sh +0 -117
  241. package/scripts/qa/validate-examples.sh +0 -27
  242. package/scripts/qa/wsl-contract.sh +0 -12
  243. package/scripts/secrets/age-init.sh +0 -82
  244. package/scripts/secrets/create-secrets-file.sh +0 -46
  245. package/scripts/secrets/encrypt-ssh-key.sh +0 -44
  246. package/scripts/security/backup.sh +0 -58
  247. package/scripts/security/check-disclosure-key-expiry.sh +0 -111
  248. package/scripts/security/dns-doh.sh +0 -52
  249. package/scripts/security/encryption-check.sh +0 -55
  250. package/scripts/security/enforce-policies.sh +0 -335
  251. package/scripts/security/firewall.sh +0 -91
  252. package/scripts/security/lock-configs.sh +0 -67
  253. package/scripts/security/lock-screen.sh +0 -56
  254. package/scripts/security/manage-secrets.sh +0 -429
  255. package/scripts/security/ssh-cert.sh +0 -204
  256. package/scripts/security/telemetry-kill.sh +0 -51
  257. package/scripts/security/usb-safety.sh +0 -52
  258. package/scripts/theme/apply-gnome-theme.sh +0 -333
  259. package/scripts/theme/extract-heic-frames.sh +0 -115
  260. package/scripts/theme/extract-theme.py +0 -742
  261. package/scripts/theme/install-boot-logo.sh +0 -63
  262. package/scripts/theme/install-catppuccin-themes.sh +0 -371
  263. package/scripts/theme/install-cursors.sh +0 -26
  264. package/scripts/theme/install-file-icons.sh +0 -27
  265. package/scripts/theme/install-grub-theme.sh +0 -62
  266. package/scripts/theme/install-lock-icon.sh +0 -31
  267. package/scripts/theme/merge-wallpaper.sh +0 -146
  268. package/scripts/theme/rebuild-themes.sh +0 -544
  269. package/scripts/theme/switch.sh +0 -449
  270. package/scripts/theme/wallpaper-rotate.sh +0 -137
  271. package/scripts/theme/wallpaper-sync.sh +0 -690
  272. package/scripts/tools/cmatrix.sh +0 -22
  273. package/scripts/tools/detect-collisions.py +0 -103
  274. package/scripts/tools/emoji-picker.sh +0 -49
  275. package/scripts/tools/figlet-banner.sh +0 -19
  276. package/scripts/tools/log-rotate.sh +0 -31
  277. package/scripts/tools/lolcat-wrap.sh +0 -20
  278. package/scripts/tools/pipes.sh +0 -49
  279. package/scripts/tuning/linux.sh +0 -186
  280. package/scripts/tuning/macos.sh +0 -56
  281. package/scripts/uninstall.sh +0 -86
  282. package/scripts/version-sync.sh +0 -654
  283. package/templates/chezmoi-data/geekom-a9.toml.example +0 -21
  284. package/templates/chezmoi-data/mac-m1.toml.example +0 -16
  285. package/templates/chezmoi-data/mac-t2-linux.toml.example +0 -21
  286. package/templates/chezmoi-data/surface-pro-7p.toml.example +0 -21
  287. package/templates/projects/go/.github/workflows/ci.yml +0 -31
  288. package/templates/projects/go/README.md +0 -7
  289. package/templates/projects/go/cmd/__PROJECT_NAME__/main.go +0 -8
  290. package/templates/projects/go/go.mod +0 -3
  291. package/templates/projects/go/go.sum +0 -0
  292. package/templates/projects/molecule/README.md +0 -7
  293. package/templates/projects/molecule/converge.yml +0 -7
  294. package/templates/projects/molecule/molecule.yml +0 -16
  295. package/templates/projects/node/.github/workflows/ci.yml +0 -30
  296. package/templates/projects/node/README.md +0 -7
  297. package/templates/projects/node/package-lock.json +0 -12
  298. package/templates/projects/node/package.json +0 -10
  299. package/templates/projects/node/src/index.js +0 -3
  300. package/templates/projects/packer/README.md +0 -15
  301. package/templates/projects/packer/main.pkr.hcl +0 -15
  302. package/templates/projects/python/.github/workflows/ci.yml +0 -34
  303. package/templates/projects/python/README.md +0 -7
  304. package/templates/projects/python/pyproject.toml +0 -25
  305. package/templates/projects/python/src/__PROJECT_NAME__/__init__.py +0 -2
  306. 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 | `.github/SECURITY.md` |
374
- | CONTRIBUTING.md | Contribution guidelines | `.github/CONTRIBUTING.md` |
375
- | CODEOWNERS | Code ownership | `.github/CODEOWNERS` |
376
- | INCIDENT_RESPONSE.md | Incident response plan | `docs/security/` |
377
- | FMEA.md | Failure Mode & Effects Analysis | `docs/security/` |
378
- | VERIFICATION_VALIDATION.md | ISO 13485-style V&V report | `docs/security/` |
379
- | .editorconfig | Editor settings | Root |
380
- | .gitattributes | Git attributes | Root |
381
-
382
- ### Vulnerability Response SLA
383
-
384
- | Severity | Initial Response | Resolution Target |
385
- |----------|------------------|-------------------|
386
- | Critical | 24 hours | 48 hours |
387
- | High | 72 hours | 7 days |
388
- | Medium | 5 business days | 30 days |
389
- | Low | 10 business days | 90 days |
390
-
391
- ---
392
-
393
- ## Audit & Forensics
394
-
395
- ### Immutability
396
-
397
- Lock critical configuration files:
398
-
399
- ```bash
400
- lock-configs # Sets chflags uchg (macOS) or chattr +i (Linux)
401
- ```
402
-
403
- ### Audit Trail
404
-
405
- ```bash
406
- # View dotfiles operations log
407
- dot audit
408
-
409
- # Log location
410
- ~/.local/share/dotfiles.log
411
- ```
412
-
413
- ### Supply Chain Security
414
-
415
- | Control | Implementation |
416
- |---------|----------------|
417
- | SBOM | Generated for every release (SPDX) |
418
- | Provenance | SLSA Level 3 build attestation |
419
- | Dependencies | Pinned versions, weekly updates |
420
-
421
- ---
422
-
423
- ## Verification Commands
424
-
425
- ### Manual Verification
426
-
427
- ```bash
428
- # Run all pre-commit hooks
429
- pre-commit run --all-files
430
-
431
- # Run unit tests
432
- ./tests/framework/test_runner.sh
433
-
434
- # Check for insecure patterns
435
- grep -rn --include="*.sh" -E 'curl.*-k|wget.*--no-check' .
436
-
437
- # Validate .gitattributes
438
- grep "text=auto" .gitattributes && echo "OK"
439
- ```
440
-
441
- ### Automated Verification
442
-
443
- | Schedule | Check |
444
- |----------|-------|
445
- | Every PR | compliance-guard, cross-platform-test |
446
- | Weekly | Full security scan, CodeQL |
447
- | Nightly | Tool version checks |
448
-
449
- ---
450
-
451
- ## References
452
-
453
- - [SOC 2 Type II](https://www.aicpa.org/soc2)
454
- - [ISO 27001:2022](https://www.iso.org/standard/27001)
455
- - [OWASP Top 10](https://owasp.org/Top10/)
456
- - [Google Shell Style Guide](https://google.github.io/styleguide/shellguide.html)
457
- - [ShellCheck Wiki](https://www.shellcheck.net/wiki/)
458
- - [SLSA Framework](https://slsa.dev/)
@@ -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
- [`.github/SECURITY.md`](https://github.com/sebastienrousseau/dotfiles/blob/main/.github/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
- [`.github/SECURITY.md`](https://github.com/sebastienrousseau/dotfiles/blob/main/.github/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
- `.github/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
- - [`.github/SECURITY.md`](https://github.com/sebastienrousseau/dotfiles/blob/main/.github/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).