@sebastienrousseau/dotfiles 0.2.508 → 0.2.511

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 (82) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +5 -5
  3. package/docs/COPYRIGHT +1 -1
  4. package/docs/GOVERNANCE.md +2 -2
  5. package/docs/adr/ADR-011-nushell-tier3-keep.md +2 -2
  6. package/docs/articles/.pages +6 -0
  7. package/docs/articles/2026-07-05-custom-mkdocs-material-dark-theme.md +216 -0
  8. package/docs/articles/2026-07-05-fish-startup-abbr.md +153 -0
  9. package/docs/articles/2026-07-05-master-to-main-rename-runbook.md +128 -0
  10. package/docs/articles/index.md +36 -0
  11. package/docs/guides/INSTALL.md +3 -3
  12. package/docs/index.md +116 -27
  13. package/docs/interop/A2A.md +2 -2
  14. package/docs/interop/POWERSHELL.md +4 -4
  15. package/docs/manual/00-introduction.md +3 -3
  16. package/docs/manual/01-concepts/02-trust-model.md +3 -3
  17. package/docs/manual/01-concepts/04-fleet.md +1 -1
  18. package/docs/manual/02-tutorials/01-first-install.md +1 -1
  19. package/docs/manual/02-tutorials/05-deploy-fleet.md +2 -2
  20. package/docs/manual/03-reference/02-config-files.md +1 -1
  21. package/docs/manual/03-reference/04-templates.md +1 -1
  22. package/docs/manual/04-cookbook/01-recipes.md +1 -1
  23. package/docs/manual/04-cookbook/02-troubleshooting.md +1 -1
  24. package/docs/manual/05-appendices/B-security-checklist.md +1 -1
  25. package/docs/manual/command-index.md +76 -1
  26. package/docs/manual/index.md +1 -1
  27. package/docs/operations/ARCHITECTURE_ROADMAP.md +145 -0
  28. package/docs/operations/CI_CADENCE.md +2 -2
  29. package/docs/operations/COMPLETIONS.md +2 -2
  30. package/docs/operations/COVERAGE.md +4 -4
  31. package/docs/operations/DRIFT.md +1 -1
  32. package/docs/operations/MAINTENANCE.md +6 -6
  33. package/docs/operations/PERFORMANCE.md +6 -6
  34. package/docs/operations/RELIABILITY.md +1 -1
  35. package/docs/operations/ROADMAP_V0_2_503.md +1 -1
  36. package/docs/operations/TRACEABILITY.md +2 -0
  37. package/docs/operations/TRUSTED_AGENT_WORKSTATION.md +6 -6
  38. package/docs/operations/VERSION_SYNC.md +3 -3
  39. package/docs/reference/UTILS.md +82 -0
  40. package/docs/security/AUDIT_BYPASS.md +3 -3
  41. package/docs/security/AUTOMATION_SECRETS.md +1 -1
  42. package/docs/security/CI_PINNING.md +10 -10
  43. package/docs/security/COMMIT_SIGNING.md +10 -10
  44. package/docs/security/DEPS_DEV_EXCEPTIONS.md +4 -4
  45. package/docs/security/DISCLOSURE.md +3 -3
  46. package/docs/security/INCIDENT_RESPONSE.md +1 -1
  47. package/docs/security/INSTALL_VERIFICATION.md +2 -2
  48. package/docs/security/MCP_POLICY.md +4 -4
  49. package/docs/security/SCORECARD.md +7 -7
  50. package/docs/security/SECURITY_CHECKLIST.md +1 -1
  51. package/docs/security/SHELL_EXEMPTIONS.md +2 -2
  52. package/docs/security/SOUP_REGISTER.md +4 -4
  53. package/docs/stylesheets/extra.css +444 -0
  54. package/docs/themes/hero-shot.svg +1 -1
  55. package/install.sh +17 -6
  56. package/package.json +1 -1
  57. package/scripts/ci/check-copyright-headers.sh +1 -1
  58. package/scripts/ci/check-shell-preamble.sh +1 -1
  59. package/scripts/ci/guard-gitleaks-checkout.sh +1 -1
  60. package/scripts/diagnostics/aliases-manifest.sh +19 -1
  61. package/scripts/diagnostics/verify_state.sh +6 -2
  62. package/scripts/diagnostics/version-locks.sh +10 -6
  63. package/scripts/dot/commands/agent.sh +12 -7
  64. package/scripts/dot/commands/ai.sh +8 -5
  65. package/scripts/dot/commands/appearance.sh +14 -1
  66. package/scripts/dot/commands/completion.sh +134 -0
  67. package/scripts/dot/commands/core.sh +8 -0
  68. package/scripts/dot/commands/diagnostics.sh +16 -0
  69. package/scripts/dot/commands/fleet.sh +11 -4
  70. package/scripts/dot/commands/lint.sh +55 -30
  71. package/scripts/dot/commands/registry.sh +7 -1
  72. package/scripts/dot/commands/secrets.sh +61 -7
  73. package/scripts/dot/commands/security.sh +8 -0
  74. package/scripts/dot/commands/tools.sh +11 -2
  75. package/scripts/dot/powershell/Dot.psm1 +1 -1
  76. package/scripts/git-hooks/pre-commit-audit.sh +1 -1
  77. package/scripts/ops/heal-tools.sh +28 -0
  78. package/scripts/ops/teleport.sh +2 -2
  79. package/scripts/qa/examples-coverage.sh +94 -0
  80. package/scripts/tools/detect-collisions.py +19 -1
  81. package/scripts/version-sync.sh +36 -2
  82. package/docs/_config.yml +0 -59
@@ -0,0 +1,128 @@
1
+ ---
2
+ title: "Renaming master to main in 2026: A Zero-Downtime Runbook"
3
+ description: A supply-chain-safe procedure for renaming the default branch of a mature open-source repository — 96 in-repo edits, a grace-period mirror workflow, zero broken install URLs.
4
+ date: 2026-07-05
5
+ ---
6
+
7
+ # Renaming `master` to `main` in 2026: A Zero-Downtime Runbook for a Repository at the Heart of an Open-Source Supply Chain
8
+
9
+ *Renaming the default branch of a mature repository is a supply-chain event, not a cosmetic one; done wrong, it strands `curl \| bash` install commands, breaks CI, and severs external distribution channels.*
10
+
11
+ *Sebastien Rousseau · Published 5 Jul 2026 · 12 min read*
12
+
13
+ ## Why Default-Branch Naming Matters in 2026 #
14
+
15
+ Every open-source project with a public install path publishes a URL of the form `raw.githubusercontent.com/<owner>/<repo>/<branch>/install.sh`. Every downstream consumer who has copied that URL — into a README, a Slack message, a devcontainer, a company wiki, a StackOverflow answer, a Homebrew tap, an AUR PKGBUILD, an internal Ansible playbook — has taken an implicit dependency on that branch name. Renaming the branch is a **breaking change to the project's public API surface**, whether the maintainer intended one or not.
16
+
17
+ The industry moved off `master` as the default branch name years ago; new repositories default to `main`. Existing repositories, however, live with a naming inconsistency that becomes actively confusing when a maintainer has multiple projects — some on `main`, some still on `master`. The migration is unavoidable, but the operational risk profile is significant enough that most maintainers put it off indefinitely.
18
+
19
+ This article documents the migration of the [.dotfiles](https://github.com/sebastienrousseau/dotfiles) repository — 60+ files with hardcoded branch references, four external distribution channels, three CI providers tracking the default branch, and a public install command bookmarked by an unknown number of downstream users. The migration was **zero-downtime**: no install command broke, no CI job failed, no downstream integration degraded. The blueprint is generalisable to any medium-complexity open-source repository.
20
+
21
+ ## The Branch-Rename 2026 Architecture Lens #
22
+
23
+ A default-branch rename is not a single operation. It's a sequence of coordinated changes across a defined dependency graph, each with its own migration mechanism:
24
+
25
+ | Layer | Design Decision | Why It Matters | Risk if Mishandled |
26
+ |---|---|---|---|
27
+ | **GitHub metadata** | Native rename via Settings → Branches or `POST /repos/{owner}/{repo}/branches/{branch}/rename` | GitHub auto-migrates default-branch setting, open PR targets, branch-protection assignment, ruleset targeting, and Pages source | Renaming via manual `git push :old-name` + `git push new-name` skips the auto-migration and orphans PRs |
28
+ | **In-repo workflow triggers** | `.github/workflows/*.yml` `branches:` lists updated pre-rename | Workflows that trigger on `push:` or `pull_request:` targeting the old name silently stop firing after rename | Migration PR itself under-tested — the workflows it edits no longer fire on it |
29
+ | **Grace-period mirror** | New workflow fast-forwards `master` from `main` on every push | Preserves `raw.githubusercontent.com/…/master/…` URLs for downstream consumers who cannot be reached | External `curl \| bash` install commands return HTTP 404 the moment `master` ceases to exist |
30
+ | **Documentation URIs** | `mkdocs.yml` `edit_uri`, README install commands, docs prose | GitHub redirects `github.com/…/blob/master/…` automatically; `raw.githubusercontent.com/…/master/…` does **not** redirect | Docs site edit buttons point at nonexistent branches; install commands 404 |
31
+ | **Rulesets as code** | `.github/rulesets/<branch>.json` file renamed alongside the JSON `target.include` | Machine-readable ruleset files that reference `refs/heads/master` misalign with GitHub's auto-migrated state | Configuration drift between the in-repo policy source of truth and GitHub's live enforcement |
32
+ | **Test-suite assertions** | Regression tests that asserted `/master/` URLs in README updated to assert `/main/` | Tests written before rename fail *after* rename in the exact commit that fixes them | Migration PR shows red CI, blocking merge |
33
+ | **External distribution** | Homebrew tap, Scoop bucket, AUR PKGBUILD — pinned to release tags, not branches | Version-pinning insulates external distribution from branch renames | Branch-pinned distribution manifests break silently on rename |
34
+
35
+ ## Key Branch-Rename Migration Signals #
36
+
37
+ | Signal | Operational Benchmark | Reference | Technical Platform Implementation |
38
+ |---|---|---|---|
39
+ | **URL Reachability Post-Rename** | `HTTP 200` on both `main/install.sh` and `master/install.sh` for the full grace period | External-consumer continuity | Mirror workflow: `on: push: branches: [main]` → `git push origin main:refs/heads/master` |
40
+ | **CI Coverage on Migration PR** | Workflow-trigger `branches:` list transitionally includes both `main` and `master` | Migration PR must be tested against the current default | `pull_request: branches: [main, master]` — remove `master` once the mirror retires |
41
+ | **In-Repo URL Consistency** | Zero remaining `/master/` URIs on the head branch, excluding intentional mirror-preservation strings | Doc/install correctness | `git grep 'raw.githubusercontent.com/.../master/'` returns empty (or only test-fixture strings) |
42
+ | **Ruleset File Alignment** | `.github/rulesets/*.json` filename matches its `target.include` refspec | Config-as-code hygiene | File rename via `git mv` + JSON `target.include` update in the same commit |
43
+ | **Grace-Period Retirement Marker** | Calendar-visible tracking item with an explicit sunset date | Operational-debt visibility | GitHub issue with target date in title + calendar event (`.ics` or Google Calendar quick-add URL) |
44
+
45
+ ## Diagnosis: Enumerating the Blast Radius #
46
+
47
+ Before touching a single file, an authoritative audit surfaces the full inventory of `master` references. On the .dotfiles repository, that surfaced **~88 mechanical replacements across 60 files**, grouped as:
48
+
49
+ - **24 GitHub Actions workflow files** — trigger lists, `github.ref_name == 'master'` conditionals, `--base master` PR-creating steps, inline `@SHA # master` comments describing what commit was pinned
50
+ - **7 `raw.githubusercontent.com/.../master/…` URLs** — README install command, `install.sh` (referencing itself in its own comment header), `bin/dot-bootstrap`, `docs/index.md`, install guide, MkDocs edit_uri, chezmoi-data JSON `$id` field
51
+ - **~25 documentation files** — `github.com/…/blob/master/…` references in operations runbooks, security docs, architecture decision records
52
+ - **1 ruleset-as-code file** — `.github/rulesets/master.json` with a `target.include: refs/heads/master` field
53
+ - **1 regression test** — asserting the README contains `/master/` (a red-team catch: this test PROTECTS against accidental rename, which now needs its assertion inverted)
54
+ - **4 legitimately-kept references** — the `gbd` bulk-branch-delete script with a `main|master` whitelist regex, the `git-primary-branch` shell function's fallback path, the release-branch check in `scripts/ops/release.sh`, and Scorecard-linter fixtures demonstrating `@master` as an anti-pattern
55
+
56
+ ## Remediation Sequence #
57
+
58
+ The rename is executed as a five-phase sequence, each with a distinct commit or GitHub operation:
59
+
60
+ **Phase 1 — Pre-migration content preparation.** A single pull request rewrites all in-repo `master` references while `master` is still the default branch. This PR must merge before any GitHub-side rename. Workflow `pull_request:` triggers gain `[main, master]` (paired) so the PR itself triggers CI against the current default. The ruleset file is renamed via `git mv` and its JSON target updated. The regression test's assertion is inverted from "must contain `/master/`" to "must contain `/main/`".
61
+
62
+ **Phase 2 — GitHub-side rename.** Via UI (`Settings → Branches → Rename`) or API (`POST /repos/{owner}/{repo}/branches/master/rename`). GitHub auto-migrates default-branch setting, PR targets, branch-protection assignment, ruleset targeting, Pages source. Blocked if a branch-protection *rule pattern* targeting the new name already exists — delete the empty rule first via GraphQL:
63
+
64
+ ```
65
+ gh api graphql -f query='
66
+ mutation {
67
+ deleteBranchProtectionRule(input: { branchProtectionRuleId: "..." }) {
68
+ clientMutationId
69
+ }
70
+ }'
71
+ ```
72
+
73
+ **Phase 3 — Mirror workflow activation.** Trigger the pre-committed mirror workflow via `workflow_dispatch` or a small push to `main`. The workflow performs a fast-forward `git push origin main:refs/heads/master`, recreating `master` as a passive mirror. From this point forward, every push to `main` mirrors automatically.
74
+
75
+ **Phase 4 — Local clone update (per-workstation).** Every developer with an active clone runs:
76
+
77
+ ```
78
+ git branch -m master main
79
+ git fetch origin
80
+ git branch -u origin/main main
81
+ git remote set-head origin -a
82
+ ```
83
+
84
+ **Phase 5 — Retirement scheduling.** A GitHub issue with a title-embedded target date (`[2027-07-05] Retire master mirror + tighten workflow triggers to main-only`) plus a calendar reminder ensures the grace-period mirror doesn't become permanent operational debt.
85
+
86
+ ## Verification: URLs, CI, Docs Site #
87
+
88
+ Post-rename smoke tests:
89
+
90
+ ```
91
+ $ curl -sI https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh | head -1
92
+ HTTP/2 200
93
+ $ curl -sI https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh | head -1
94
+ HTTP/2 200
95
+ ```
96
+
97
+ Both branch names resolve during the grace period. When the mirror is retired in 12 months, `/master/` returns 404 by design — but by then no active install command should still reference it.
98
+
99
+ CI status post-rename: on the .dotfiles repository, the migration PR (`#961`) ran **70 checks green, 0 failed**, driven by the `[main, master]` trigger-list transitional configuration. The follow-up test-coverage PR (`#963`) confirmed no downstream test regression.
100
+
101
+ Docs site: MkDocs `edit_uri` — updated from `edit/master/docs/` to `edit/main/docs/` — resolves correctly. `github.com/…/blob/master/…` links continue to work via GitHub's built-in redirect; `raw.githubusercontent.com/…/master/…` works via the mirror.
102
+
103
+ ## Return on Resilience #
104
+
105
+ The commercial value of a supply-chain-safe rename is defensive, not offensive: nothing new is built, but nothing existing breaks.
106
+
107
+ | Metric | Result |
108
+ |---|---|
109
+ | Files updated in migration PR | 97 (96 edits + 1 rename + 1 new workflow) |
110
+ | Grace-period external URL uptime | 100% (both `/main/` and `/master/` return HTTP 200) |
111
+ | CI checks post-rename | 70 green, 0 failed |
112
+ | Downstream distribution channels broken | 0 (Homebrew tap, Scoop bucket, AUR pinned to tags) |
113
+ | Local-clone update commands | 4 lines, ~5 seconds per workstation |
114
+ | Operational debt introduced | 1 mirror workflow, retired via calendar-scheduled task 2027-07-05 |
115
+
116
+ ## Takeaways #
117
+
118
+ 1. **Land the in-repo edits before the GitHub-side rename.** Merging Phase 1 while `master` is still default gives you both a working CI baseline and a rehearsal.
119
+
120
+ 2. **Add the mirror workflow before renaming, not after.** The interval between the GitHub rename and the mirror's first fast-forward push is the window during which `raw.githubusercontent.com/…/master/…` returns 404. Minimising that window is a matter of ordering.
121
+
122
+ 3. **Update `pull_request:` triggers transitionally.** `branches: [main, master]` covers the migration PR itself (which targets the pre-rename default) and every future PR (which will target `main`). The grace-period `master` entry retires with the mirror.
123
+
124
+ 4. **Track retirement as an issue with an explicit sunset date.** Mirror workflows are the classic case of "temporary" becoming "permanent". A calendar event and a GitHub issue with a date-anchored title enforce end-of-life.
125
+
126
+ 5. **Rulesets-as-code files must be renamed alongside their JSON targets.** GitHub auto-migrates the *live* ruleset assignment; the file in your repo is the source-of-truth if you ever reapply. Both must agree.
127
+
128
+ The reference implementation landed as [PR #961](https://github.com/sebastienrousseau/dotfiles/pull/961) with the retirement issue tracked at [#962](https://github.com/sebastienrousseau/dotfiles/issues/962), shipped in [v0.2.510](https://github.com/sebastienrousseau/dotfiles/releases/tag/v0.2.510).
@@ -0,0 +1,36 @@
1
+ ---
2
+ title: Articles
3
+ description: Long-form writing on the design and operation of the .dotfiles framework.
4
+ ---
5
+
6
+ # Articles
7
+
8
+ Long-form writing on the design and operation of the [.dotfiles framework](https://github.com/sebastienrousseau/dotfiles) — deep dives into performance, supply-chain safety, developer experience, and the architectural decisions that shape a mature open-source dotfiles project.
9
+
10
+ <div class="grid cards" markdown>
11
+
12
+ - :material-console:{ .lg .middle } **[Fish Startup in 2026](2026-07-05-fish-startup-abbr.md)**
13
+
14
+ ---
15
+
16
+ Cutting interactive shell latency by 48% with `abbr` on multi-shell dotfiles. One printf format change + one chezmoi hook = 112 ms saved per fresh terminal.
17
+
18
+ *5 Jul 2026 · 10 min read*
19
+
20
+ - :material-source-branch:{ .lg .middle } **[Renaming `master` to `main`](2026-07-05-master-to-main-rename-runbook.md)**
21
+
22
+ ---
23
+
24
+ A zero-downtime runbook for a repository at the heart of an open-source supply chain. 96 in-repo edits, a 12-month mirror workflow, zero broken install URLs.
25
+
26
+ *5 Jul 2026 · 12 min read*
27
+
28
+ - :material-palette:{ .lg .middle } **[Custom Documentation Sites in 2026](2026-07-05-custom-mkdocs-material-dark-theme.md)**
29
+
30
+ ---
31
+
32
+ Building a distinctive dark-themed developer reference on MkDocs Material — three files, no theme forking, WCAG AAA contrast, hash-locked build.
33
+
34
+ *5 Jul 2026 · 11 min read*
35
+
36
+ </div>
@@ -14,7 +14,7 @@ Set up on macOS, Linux, or WSL in 3 to 5 minutes.
14
14
 
15
15
  ```bash
16
16
  bash -c "$(
17
- curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh
17
+ curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh
18
18
  )"
19
19
  ```
20
20
 
@@ -99,7 +99,7 @@ Use this mode for CI or scripts that run without user input:
99
99
  ```bash
100
100
  DOTFILES_SILENT=1 DOTFILES_NONINTERACTIVE=1 \
101
101
  bash -c "$(
102
- curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh
102
+ curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh
103
103
  )"
104
104
  ```
105
105
 
@@ -136,7 +136,7 @@ rm -rf ~/.local/share/chezmoi ~/.local/share/dotfiles.log
136
136
 
137
137
  ### Signed contributions
138
138
 
139
- All commits must be signed. See [Contributing](../../CONTRIBUTING.md) for details.
139
+ All commits must be signed. See [Contributing](https://github.com/sebastienrousseau/dotfiles/blob/main/CONTRIBUTING.md) for details.
140
140
 
141
141
  ---
142
142
 
package/docs/index.md CHANGED
@@ -1,43 +1,132 @@
1
1
  ---
2
+ title: .dotfiles — dark, signed, cross-platform
3
+ description: Cross-platform, signed, local-first dotfiles for macOS, Linux, and WSL.
4
+ hide:
5
+ - navigation
6
+ - toc
2
7
  render_with_liquid: false
3
8
  ---
4
9
 
10
+ <section class="dot-hero" markdown>
11
+
5
12
  # .dotfiles
6
13
 
7
- Cross-platform, signed, local-first dotfiles for macOS, Linux, and WSL.
14
+ <p class="tagline">Cross-platform, signed, local-first dotfiles for macOS, Linux, and WSL — multi-shell parity (bash/zsh/fish/nushell), a fast <code>dot</code> CLI, wallpaper-driven themes, SLSA-signed releases, and AI/MCP-aware tooling.</p>
15
+
16
+ <div class="buttons">
17
+ <a class="primary" href="guides/INSTALL/">Install →</a>
18
+ <a href="https://github.com/sebastienrousseau/dotfiles">GitHub</a>
19
+ <a href="reference/UTILS/">Utilities</a>
20
+ <a href="architecture/ARCHITECTURE/">Architecture</a>
21
+ </div>
22
+
23
+ </section>
24
+
25
+ ## What's inside
26
+
27
+ <div class="grid cards" markdown>
28
+
29
+ - :material-console:{ .lg .middle } **Multi-shell parity**
30
+
31
+ ---
32
+
33
+ Bash, Zsh, Fish, Nushell — same aliases, functions, prompt, and completions. Cross-shell env parity from `.chezmoidata.toml`.
34
+
35
+ [→ Shell hub](reference/UTILS.md)
36
+
37
+ - :material-lock-check:{ .lg .middle } **Signed & attested**
38
+
39
+ ---
40
+
41
+ Every commit SSH-signed, DCO enforced, SLSA-signed releases, SBOM + CVE gate, secret encryption via age.
42
+
43
+ [→ Security](operations/ATTESTATION.md)
44
+
45
+ - :material-palette:{ .lg .middle } **190 wallpaper-driven themes**
46
+
47
+ ---
48
+
49
+ K-Means CIELAB color extraction. Terminal, editor, DE — all follow the wallpaper. `dot theme rebuild --force` regenerates from `~/Pictures/Wallpapers/`.
50
+
51
+ [→ Theme system](reference/UTILS.md)
52
+
53
+ - :material-rocket-launch:{ .lg .middle } **Fast `dot` CLI**
54
+
55
+ ---
56
+
57
+ 142+ subcommands: apply, health, doctor, heal, ai, agent, fleet, secrets, teleport, uninstall — with fzf pickers and a Bubble Tea cockpit.
58
+
59
+ [→ CLI reference](reference/UTILS.md)
60
+
61
+ - :material-check-decagram:{ .lg .middle } **CI you can trust**
62
+
63
+ ---
64
+
65
+ 35+ checks — shellcheck, shfmt, luacheck, stylua, CodeQL, Snyk, grype/SBOM, deps.dev, doc-drift gate, examples contract at 100%.
66
+
67
+ [→ Operations](operations/OPERATIONS.md)
68
+
69
+ - :material-earth:{ .lg .middle } **Cross-platform**
70
+
71
+ ---
72
+
73
+ macOS (Intel & Apple Silicon), Linux (Ubuntu, Fedora, Arch, Alpine, openSUSE), WSL, PowerShell 7.5+, real BSDs.
74
+
75
+ [→ Support matrix](reference/SUPPORT_MATRIX.md)
76
+
77
+ - :material-brain:{ .lg .middle } **AI & MCP aware**
78
+
79
+ ---
80
+
81
+ 18-agent fleet cockpit (`dot ai`), local Claude gateway, MCP registry, context patterns, provider secrets — first-class support, not bolted on.
82
+
83
+ [→ AI operations](AI.md)
84
+
85
+ - :material-account-cog:{ .lg .middle } **Chezmoi under the hood**
86
+
87
+ ---
88
+
89
+ Deterministic templates, feature flags, profiles, `run_onchange_` hooks. Everything lives in `defaults/` and applies to `$HOME` on-demand.
90
+
91
+ [→ Architecture](architecture/ARCHITECTURE.md)
92
+
93
+ </div>
94
+
95
+ ## Quick start
96
+
97
+ Install onto a fresh machine:
8
98
 
9
- [![Build](https://img.shields.io/github/actions/workflow/status/sebastienrousseau/dotfiles/ci.yml?style=for-the-badge&logo=github)](https://github.com/sebastienrousseau/dotfiles/actions)
10
- [![Version](https://img.shields.io/badge/Version-v0.2.508-blue?style=for-the-badge)](https://github.com/sebastienrousseau/dotfiles/releases/tag/v0.2.508)
11
- [![Downloads](https://img.shields.io/github/downloads/sebastienrousseau/dotfiles/total?style=for-the-badge)](https://github.com/sebastienrousseau/dotfiles/releases)
99
+ === "macOS / Linux / WSL"
12
100
 
13
- This site is published from the `docs/` directory on `master` and tracks the current workstation baseline, operational guidance, and security material for the repository.
101
+ ```bash
102
+ bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
103
+ ```
14
104
 
15
- ## Start Here
105
+ === "Windows (PowerShell 7+)"
16
106
 
17
- - [Repository README](https://github.com/sebastienrousseau/dotfiles#readme)
18
- - [Install guide](guides/INSTALL.md)
19
- - [Troubleshooting](guides/TROUBLESHOOTING.md)
20
- - [Support matrix](reference/SUPPORT_MATRIX.md)
107
+ ```powershell
108
+ iwr -useb https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.ps1 | iex
109
+ ```
21
110
 
22
- ## Workstation Operations
111
+ Once installed:
23
112
 
24
- - [Utilities and `dot` CLI](reference/UTILS.md)
25
- - [Trusted agent workstation](operations/TRUSTED_AGENT_WORKSTATION.md)
26
- - [Workstation attestation](operations/ATTESTATION.md)
27
- - [Operations runbooks](operations/OPERATIONS.md)
28
- - [Architecture overview](architecture/ARCHITECTURE.md)
29
- - [Repository layout](architecture/REPO_LAYOUT.md)
113
+ dot doctor # verify state
114
+ dot health # dashboard with actionable warnings
115
+ dot ai # launch the AI cockpit (Bubble Tea TUI)
116
+ dot theme # pick a wallpaper-driven theme
117
+ dot help all # full CLI reference
30
118
 
31
- ## Security and Governance
119
+ ## Where to next
32
120
 
33
- - [Security overview](security/SECURITY.md)
34
- - [Security checklist](security/SECURITY_CHECKLIST.md)
35
- - [Compliance](security/COMPLIANCE.md)
36
- - [Policy bundle releases](security/POLICY_RELEASES.md)
37
- - [Threat model](security/THREAT_MODEL.md)
121
+ - [**Install guide**](guides/INSTALL.md) — full bootstrap walkthrough, per-platform.
122
+ - [**Utilities & `dot` CLI**](reference/UTILS.md) — every subcommand with examples.
123
+ - [**Architecture**](architecture/ARCHITECTURE.md) — how the layers fit together.
124
+ - [**Trusted agent workstation**](operations/TRUSTED_AGENT_WORKSTATION.md) — hardening + attestation runbook.
125
+ - [**Troubleshooting**](guides/TROUBLESHOOTING.md) — the common gotchas.
126
+ - [**Support matrix**](reference/SUPPORT_MATRIX.md) — OS × shell × package-manager grid.
127
+ - [**Security overview**](security/SECURITY.md) — signing, attestation, secret handling, threat model.
38
128
 
39
- ## Current Release
129
+ ## Current release
40
130
 
41
- - Current tagged release: [`v0.2.508`](https://github.com/sebastienrousseau/dotfiles/releases/tag/v0.2.508)
42
- - Latest release feed: [GitHub releases](https://github.com/sebastienrousseau/dotfiles/releases/latest)
43
- - Source repository: [sebastienrousseau/dotfiles](https://github.com/sebastienrousseau/dotfiles)
131
+ - Release feed: [GitHub releases](https://github.com/sebastienrousseau/dotfiles/releases/latest)
132
+ - Source: [sebastienrousseau/dotfiles](https://github.com/sebastienrousseau/dotfiles)
@@ -8,8 +8,8 @@ The repository now ships an agent card and an A2A-ready discovery document.
8
8
 
9
9
  Artifacts:
10
10
 
11
- - [agent-card.json](../../defaults/dot_config/dotfiles/agent-card.json)
12
- - [agent.json](../../.well-known/agent.json)
11
+ - [agent-card.json](https://github.com/sebastienrousseau/dotfiles/blob/main/defaults/dot_config/dotfiles/agent-card.json)
12
+ - [agent.json](https://github.com/sebastienrousseau/dotfiles/blob/main/.well-known/agent.json)
13
13
 
14
14
  Core properties:
15
15
 
@@ -13,9 +13,9 @@ and what specifically is verified. Closes the docs slice of
13
13
 
14
14
  | File | Role |
15
15
  |---|---|
16
- | [`dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl`](../../defaults/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl) | The dotfiles PowerShell profile. Deployed to `$PROFILE` (resolves to `~/.config/powershell/Microsoft.PowerShell_profile.ps1` on Linux/macOS; `Documents\PowerShell\Microsoft.PowerShell_profile.ps1` on Windows). |
17
- | [`scripts/qa/powershell-contract.ps1`](../../scripts/qa/powershell-contract.ps1) | The runtime contract. Renders the template, dot-sources it, asserts required function shims exist, runs PSScriptAnalyzer. |
18
- | [`tests/unit/install/test_powershell_profile_syntax.sh`](../../tests/unit/install/test_powershell_profile_syntax.sh) | Static-syntax test runnable on Linux/macOS via `pwsh` when present; falls back to brace-balance + textual invariants when not. |
16
+ | [`dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl`](https://github.com/sebastienrousseau/dotfiles/blob/main/defaults/dot_config/powershell/Microsoft.PowerShell_profile.ps1.tmpl) | The dotfiles PowerShell profile. Deployed to `$PROFILE` (resolves to `~/.config/powershell/Microsoft.PowerShell_profile.ps1` on Linux/macOS; `Documents\PowerShell\Microsoft.PowerShell_profile.ps1` on Windows). |
17
+ | [`scripts/qa/powershell-contract.ps1`](https://github.com/sebastienrousseau/dotfiles/blob/main/scripts/qa/powershell-contract.ps1) | The runtime contract. Renders the template, dot-sources it, asserts required function shims exist, runs PSScriptAnalyzer. |
18
+ | [`tests/unit/install/test_powershell_profile_syntax.sh`](https://github.com/sebastienrousseau/dotfiles/blob/main/tests/unit/install/test_powershell_profile_syntax.sh) | Static-syntax test runnable on Linux/macOS via `pwsh` when present; falls back to brace-balance + textual invariants when not. |
19
19
 
20
20
  ## What's verified
21
21
 
@@ -96,7 +96,7 @@ pwsh ./scripts/qa/powershell-contract.ps1
96
96
  ## References
97
97
 
98
98
  - [PowerShell 7 docs](https://learn.microsoft.com/en-us/powershell/scripting/overview)
99
- - [PSScriptAnalyzer rule reference](https://github.com/PowerShell/PSScriptAnalyzer/blob/master/docs/Rules/README.md)
99
+ - [PSScriptAnalyzer rule reference](https://github.com/PowerShell/PSScriptAnalyzer/blob/main/docs/Rules/README.md)
100
100
  - `.github/workflows/reliability-gate.yml` — Windows job definition.
101
101
  - Issue [#860](https://github.com/sebastienrousseau/dotfiles/issues/860).
102
102
  {% endraw %}
@@ -4,7 +4,7 @@ render_with_liquid: false
4
4
 
5
5
  # Introduction
6
6
 
7
- This manual describes `.dotfiles` v0.2.508 — a trusted agent workstation baseline for macOS, Linux, and WSL.
7
+ This manual describes `.dotfiles` v0.2.511 — a trusted agent workstation baseline for macOS, Linux, and WSL.
8
8
 
9
9
  The repository is more than a personal dotfiles collection. It ships as workstation infrastructure: signed, attested, multi-platform, AI-aware, and self-healing. Chezmoi handles templating and platform differences. The `dot` CLI sits on top and coordinates lifecycle operations.
10
10
 
@@ -52,7 +52,7 @@ dot manual text # pipe plain text to pager
52
52
  ## Quick Install
53
53
 
54
54
  ```sh
55
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh)"
55
+ bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
56
56
  dot doctor
57
57
  ```
58
58
 
@@ -86,4 +86,4 @@ Individual tools packaged, referenced, or templated by this repository retain th
86
86
 
87
87
  - **Bugs and feature requests** — <https://github.com/sebastienrousseau/dotfiles/issues>
88
88
  - **Security vulnerabilities** — see [Security Policy](../security/SECURITY.md); do not open public issues for unpatched vulnerabilities
89
- - **Documentation corrections** — open a pull request against `docs/manual/` on the `master` branch
89
+ - **Documentation corrections** — open a pull request against `docs/manual/` on the `main` branch
@@ -21,7 +21,7 @@ The trust model combines cryptographic signing, local-first secrets, policy-gate
21
21
 
22
22
  ### SSH ED25519 for Git
23
23
 
24
- Every commit on `master` is signed with SSH ED25519:
24
+ Every commit on `main` is signed with SSH ED25519:
25
25
 
26
26
  ```sh
27
27
  git verify-commit HEAD
@@ -62,7 +62,7 @@ CI runs three independent scanners:
62
62
 
63
63
  | Scanner | Purpose | Threshold |
64
64
  |:---|:---|:---|
65
- | `gitleaks` | Pattern-based secret detection | Zero leaks on `master` |
65
+ | `gitleaks` | Pattern-based secret detection | Zero leaks on `main` |
66
66
  | `detect-secrets` | Baseline-comparing scanner | Zero new secrets vs `.secrets.baseline` |
67
67
  | `trufflehog` | Verified-secret scanner (API-tested) | Zero verified secrets |
68
68
 
@@ -119,7 +119,7 @@ Violations are logged to `~/.local/state/dotfiles/mcp-violations.log` and report
119
119
  },
120
120
  "git": {
121
121
  "head": "abc123...",
122
- "branch": "master",
122
+ "branch": "main",
123
123
  "signed": true,
124
124
  "verified": true
125
125
  }
@@ -91,7 +91,7 @@ Recommended rollout procedure for fleet-wide changes:
91
91
 
92
92
  1. **Develop on one host** — make the change, test locally with `dot apply --dry-run` then `dot apply`
93
93
  2. **Open a PR** — CI validates shellcheck, tests, security scanners
94
- 3. **Merge to master** — signed commit required
94
+ 3. **Merge to main** — signed commit required
95
95
  4. **Per-host pull** — on each fleet host: `dot update` (git pull + apply)
96
96
  5. **Verify alignment** — run `dot fleet attest` from any host
97
97
 
@@ -16,7 +16,7 @@ End-to-end installation and verification, from zero to a fully-working environme
16
16
  ## Step 1: Run the Installer
17
17
 
18
18
  ```sh
19
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh)"
19
+ bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
20
20
  ```
21
21
 
22
22
  The installer:
@@ -21,7 +21,7 @@ Goal: all three running identical `.dotfiles` with per-host customization, with
21
21
  On each new host:
22
22
 
23
23
  ```sh
24
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh)"
24
+ bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
25
25
  ```
26
26
 
27
27
  During `chezmoi init`, answer with the host's preset:
@@ -164,7 +164,7 @@ Both hosts render from the same templates, producing correct platform-appropriat
164
164
 
165
165
  ## Step 6: Fleet-Wide Updates
166
166
 
167
- When you push a commit to master, each host pulls independently:
167
+ When you push a commit to main, each host pulls independently:
168
168
 
169
169
  ```sh
170
170
  # On each host
@@ -247,7 +247,7 @@ Agent Card (MCP A2A spec):
247
247
 
248
248
  ## Verified Files
249
249
 
250
- Every commit on `master` modifies tracked files only. Untracked files in the source directory (e.g. editor swap files) are ignored via `.chezmoiignore`:
250
+ Every commit on `main` modifies tracked files only. Untracked files in the source directory (e.g. editor swap files) are ignored via `.chezmoiignore`:
251
251
 
252
252
  ```
253
253
  .DS_Store
@@ -174,7 +174,7 @@ chezmoi execute-template '{{- $t := index .themes .theme -}}{{ $t.term.bg }}'
174
174
 
175
175
  ## Validation in CI
176
176
 
177
- Every push to master runs:
177
+ Every push to main runs:
178
178
 
179
179
  ```sh
180
180
  chezmoi apply --dry-run
@@ -11,7 +11,7 @@ Thirty short recipes for common tasks.
11
11
  ### 1. Install on a fresh machine
12
12
 
13
13
  ```sh
14
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh)"
14
+ bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
15
15
  ```
16
16
 
17
17
  ### 2. Update everything
@@ -17,7 +17,7 @@ Symptom → cause → fix.
17
17
 
18
18
  ```sh
19
19
  export PATH="$HOME/.local/bin:$PATH"
20
- bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/master/install.sh)"
20
+ bash -c "$(curl -fsSL https://raw.githubusercontent.com/sebastienrousseau/dotfiles/main/install.sh)"
21
21
  ```
22
22
 
23
23
  ### Symptom: "could not create directory ~/.local/share/chezmoi"
@@ -63,7 +63,7 @@ If a host is compromised:
63
63
 
64
64
  ## Gates Enforced by CI
65
65
 
66
- Every PR to master must pass:
66
+ Every PR to main must pass:
67
67
 
68
68
  - [x] SSH-signed commits
69
69
  - [x] Shellcheck zero warnings (severity=error)