@sebastienrousseau/dotfiles 0.2.513 β 0.2.516
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.
- package/README.md +2 -2
- package/docs/COPYRIGHT +1 -1
- package/docs/manual/00-introduction.md +1 -1
- package/docs/operations/HARD_AUDIT_2026.md +2 -2
- package/docs/operations/RELEASE_PIPELINE.md +29 -31
- package/docs/security/CI_PINNING.md +8 -0
- package/install.sh +5 -5
- package/package.json +1 -1
- package/scripts/git-hooks/pre-commit-audit.sh +1 -1
- package/scripts/version-sync.sh +1 -0
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
|
|
11
11
|
<p align="center">
|
|
12
12
|
<a href="https://github.com/sebastienrousseau/dotfiles/actions"><img src="https://img.shields.io/github/actions/workflow/status/sebastienrousseau/dotfiles/ci.yml?style=for-the-badge&logo=githubactions&logoColor=white" alt="Build" /></a>
|
|
13
|
-
<a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.
|
|
13
|
+
<a href="https://github.com/sebastienrousseau/dotfiles/releases/latest"><img src="https://img.shields.io/badge/Version-v0.2.516-blue?style=for-the-badge&logo=semanticrelease&logoColor=white" alt="Version" /></a>
|
|
14
14
|
<a href="https://github.com/sebastienrousseau/dotfiles/releases"><img src="https://img.shields.io/github/downloads/sebastienrousseau/dotfiles/total?style=for-the-badge&logo=github&logoColor=white" alt="Downloads" /></a>
|
|
15
15
|
<a href="https://codespaces.new/sebastienrousseau/dotfiles"><img src="https://img.shields.io/badge/Open%20in-Codespaces-blue?style=for-the-badge&logo=github&logoColor=white" alt="Open in GitHub Codespaces" /></a>
|
|
16
16
|
<a href="https://scorecard.dev/viewer/?uri=github.com/sebastienrousseau/dotfiles"><img src="https://img.shields.io/ossf-scorecard/github.com/sebastienrousseau/dotfiles?style=for-the-badge&logo=linuxfoundation&logoColor=white&label=OpenSSF%20Scorecard" alt="OpenSSF Scorecard" /></a>
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
|
|
53
53
|
```bash
|
|
54
54
|
curl -fsSL -o /tmp/dotfiles-install.sh \
|
|
55
|
-
https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.
|
|
55
|
+
https://raw.githubusercontent.com/sebastienrousseau/dotfiles/v0.2.516/install.sh
|
|
56
56
|
echo "d5a04c5e2813a93a63c8ecce9655cf3d107f6068862c6eba84a92cf22f801c7e /tmp/dotfiles-install.sh" \
|
|
57
57
|
| shasum -a 256 -c
|
|
58
58
|
bash /tmp/dotfiles-install.sh
|
package/docs/COPYRIGHT
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* π
³π
Ύππ
΅π
Έπ
»π
΄π (v0.2.
|
|
2
|
+
* π
³π
Ύππ
΅π
Έπ
»π
΄π (v0.2.516) - <https://github.com/sebastienrousseau/dotfiles>
|
|
3
3
|
* Made With β€οΈ in London, United Kingdom
|
|
4
4
|
* Designed by
|
|
5
5
|
* Copyright (c) 2015-2026. All rights reserved.
|
|
@@ -4,7 +4,7 @@ render_with_liquid: false
|
|
|
4
4
|
|
|
5
5
|
# Introduction
|
|
6
6
|
|
|
7
|
-
This manual describes `.dotfiles` v0.2.
|
|
7
|
+
This manual describes `.dotfiles` v0.2.516 β 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,8 +52,8 @@ The goal stated by the maintainer: become the de facto workstation provisioning
|
|
|
52
52
|
|
|
53
53
|
### 1.5 What's already excellent (keep)
|
|
54
54
|
|
|
55
|
-
- **Release supply chain.** `security-release.yml` runs Cosign keyless signing + SBOM generation + SLSA provenance
|
|
56
|
-
- **GitHub Actions hygiene.** Every `uses:` is SHA-pinned
|
|
55
|
+
- **Release supply chain.** `security-release.yml` runs Cosign keyless signing + SBOM generation + SLSA provenance. Actions are SHA-pinned except the SLSA generator's required, documented `v2.1.0` tag reference.
|
|
56
|
+
- **GitHub Actions hygiene.** Every non-exempt `uses:` is SHA-pinned; reusable workflows are blocked by `lint-reusable-pins.sh`. Strong.
|
|
57
57
|
- **Secrets handling.** `scripts/lib/secrets_provider.sh` correctly isolates macOS keychain / `pass` / `age` providers with no plaintext leakage.
|
|
58
58
|
- **Test suite.** 4035 unit tests, 47.57% measured line coverage with documented structural ceiling.
|
|
59
59
|
|
|
@@ -8,9 +8,10 @@ date: 2026-05-24
|
|
|
8
8
|
End-to-end flow from `git tag v0.2.503 && git push --tags` to a fully
|
|
9
9
|
signed, distributed release on GitHub + Homebrew + Scoop + AUR.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
Release workflows are triggered by either `release.created` or
|
|
12
|
+
`release.published`. Packaging starts at creation; distribution and the
|
|
13
|
+
single security chain start at publication and run in parallel where
|
|
14
|
+
dependencies allow.
|
|
14
15
|
|
|
15
16
|
```
|
|
16
17
|
git push --tags (you)
|
|
@@ -19,26 +20,20 @@ where dependencies allow.
|
|
|
19
20
|
ββββββββββββββββββββββββββββββ
|
|
20
21
|
β GitHub creates Release β (auto, from tag)
|
|
21
22
|
βββ¬βββββββββββββββββββββββββββ
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
β uploaded to release β
|
|
30
|
-
β β
|
|
31
|
-
β on: release.published β on: release.published
|
|
32
|
-
β (after human "publish" click, β (same trigger)
|
|
33
|
-
β or auto if Release was created β
|
|
34
|
-
β with assets+published in one) β
|
|
23
|
+
βββ on: release.created
|
|
24
|
+
β βββ release-package-dot.yml
|
|
25
|
+
β β dot-VERSION.tar.gz + .zip
|
|
26
|
+
β
|
|
27
|
+
βββ on: release.published
|
|
28
|
+
β
|
|
29
|
+
ββββββββββββββββββββββββββββββββββββ
|
|
35
30
|
βΌ βΌ
|
|
36
31
|
βββββββββββββββββββββββββββββββ βββββββββββββββββββββββββββββββ
|
|
37
32
|
β release-distribute-*.yml β β security-release.yml β
|
|
38
|
-
β βββββββββββββββββββββββ β β
|
|
33
|
+
β βββββββββββββββββββββββ β β β SBOM + provenance β
|
|
39
34
|
β β homebrew β tap PR β β β β ALL_SHA256SUMS β
|
|
40
35
|
β β scoop β bucket PRβ β β β cosign sig + cert β
|
|
41
|
-
β β aur β AUR push β β β
|
|
36
|
+
β β aur β AUR push β β β β verify full bundle β
|
|
42
37
|
β βββββββββββββββββββββββ β βββββββββββββββββββββββββββββββ
|
|
43
38
|
βββββββββββββββββββββββββββββββ
|
|
44
39
|
β
|
|
@@ -54,30 +49,33 @@ where dependencies allow.
|
|
|
54
49
|
| Workflow | Trigger | Owns | Outputs |
|
|
55
50
|
|---|---|---|---|
|
|
56
51
|
| `release-package-dot.yml` | `release.created`, dispatch | Build deterministic `dot-VERSION.{tar.gz,zip}` from `bin/`, `lib/`, `share/`, completions. | Two release assets. |
|
|
57
|
-
| `security-release.yml` (sbom job) | `release.
|
|
52
|
+
| `security-release.yml` (sbom job) | `release.published`, dispatch | Generate SPDX SBOM via anchore/sbom-action. Cosign keyless sign the SBOM. | `dotfiles-sbom.spdx.json` + `.sig` + `.pem`. |
|
|
58
53
|
| `security-release.yml` (provenance job) | needs sbom | SLSA L3 provenance via slsa-framework/slsa-github-generator. | `dotfiles-sbom.spdx.json.intoto.jsonl`. |
|
|
59
|
-
| `security-release.yml` (manifest job) |
|
|
54
|
+
| `security-release.yml` (manifest job) | needs provenance + complete asset set | Build `ALL_SHA256SUMS` over every release asset, Cosign-sign it, and verify its signature and digests. | `ALL_SHA256SUMS` + `.sig` + `.pem`. |
|
|
60
55
|
| `release-distribute-homebrew.yml` | `release.published`, dispatch | Hash `dot-VERSION.tar.gz`, regenerate `install/homebrew/dot.rb`, push branch + PR to `sebastienrousseau/homebrew-tap`. | One PR on the tap repo. |
|
|
61
56
|
| `release-distribute-scoop.yml` | `release.published`, dispatch | Hash `dot-VERSION.zip`, rewrite `install/scoop/dot.json` via jq (both 64bit + arm64 point at same zip), PR to `sebastienrousseau/scoop-bucket`. | One PR on the bucket repo. |
|
|
62
57
|
| `release-distribute-aur.yml` | `release.published`, dispatch | Hash `dot-VERSION.tar.gz`, rewrite `pkgver` + `sha256sums` in `install/aur/PKGBUILD`, regenerate `.SRCINFO` via dockerised `makepkg`, push to `ssh://aur@aur.archlinux.org/dot-cli-git.git`. | One commit on AUR. |
|
|
63
58
|
| `release-attestation-check.yml` | weekly cron + dispatch | Verify the latest release carries the full attestation bundle (SBOM + sig + cert + intoto + manifest + sig + cert). | Opens or comments on a tracking issue. |
|
|
64
59
|
|
|
65
|
-
##
|
|
60
|
+
## Event ownership and readiness
|
|
66
61
|
|
|
67
62
|
GitHub fires `release.created` the moment a Release record exists.
|
|
68
|
-
That
|
|
69
|
-
|
|
63
|
+
That starts the packaging step, which depends only on source bytes at
|
|
64
|
+
the tag and does not need other assets to be present.
|
|
70
65
|
|
|
71
66
|
`release.published` fires later, when a human flips the Release from
|
|
72
67
|
draft to public (or when a Release is created already-public, the
|
|
73
|
-
events fire together).
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
68
|
+
events fire together). Distribution and the security chain start from
|
|
69
|
+
this event. Publication does not mean independently triggered asset
|
|
70
|
+
publishers have finished, so the manifest job waits for all 13 required
|
|
71
|
+
package, documentation, SBOM, signature, and provenance assets before
|
|
72
|
+
it downloads or signs the bundle. The final integrity job then verifies
|
|
73
|
+
the manifest's Cosign identity and every recorded digest.
|
|
74
|
+
|
|
75
|
+
Both release and dispatch paths of `security-release.yml` are
|
|
76
|
+
idempotent: re-running the manifest job after late asset uploads picks
|
|
77
|
+
up the new state and the `--clobber` flag overwrites the previous
|
|
78
|
+
manifest sig + cert.
|
|
81
79
|
|
|
82
80
|
## Secrets used
|
|
83
81
|
|
|
@@ -12,6 +12,14 @@ Every external dependency the CI pipeline consumes must be pinned by
|
|
|
12
12
|
3. **Container base images** β `FROM image:tag@sha256:<digest>` (closed by [#886](https://github.com/sebastienrousseau/dotfiles/pull/886)).
|
|
13
13
|
4. **Release binaries downloaded at build time** β `curl β¦ && echo "<sha256> ..." | sha256sum -c` (closed by [#888](https://github.com/sebastienrousseau/dotfiles/pull/888)).
|
|
14
14
|
|
|
15
|
+
The sole exception is the SLSA generic reusable workflow. Its bootstrap
|
|
16
|
+
validates that the caller reference has the form `refs/tags/vX.Y.Z` and
|
|
17
|
+
fails when invoked through a bare commit SHA. Therefore
|
|
18
|
+
`generator_generic_slsa3.yml` is pinned to the exact release tag
|
|
19
|
+
`v2.1.0`; the corresponding commit SHA is recorded beside the call site
|
|
20
|
+
and must be verified before any tag bump. OpenSSF Scorecard explicitly
|
|
21
|
+
exempts the SLSA generator from its SHA-pinning check for this constraint.
|
|
22
|
+
|
|
15
23
|
## Why SHA-pin reusable workflows
|
|
16
24
|
|
|
17
25
|
When `ci.yml` calls a reusable via `./.github/workflows/reusable-X.yml`,
|
package/install.sh
CHANGED
|
@@ -71,7 +71,7 @@ show_help() {
|
|
|
71
71
|
Usage: install.sh [version] [options]
|
|
72
72
|
|
|
73
73
|
Arguments:
|
|
74
|
-
version The version (tag or branch) to install (default: v0.2.
|
|
74
|
+
version The version (tag or branch) to install (default: v0.2.516)
|
|
75
75
|
|
|
76
76
|
Options:
|
|
77
77
|
--help Show this help message
|
|
@@ -87,7 +87,7 @@ EOF
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
main() {
|
|
90
|
-
local version="v0.2.
|
|
90
|
+
local version="v0.2.516"
|
|
91
91
|
local version_set=0
|
|
92
92
|
local minimal=0
|
|
93
93
|
local provision="${DOTFILES_PROVISION:-0}"
|
|
@@ -117,7 +117,7 @@ main() {
|
|
|
117
117
|
# like `foobar` doesn't trigger a 30s+ network download attempt.
|
|
118
118
|
# Caught by the install.sh fuzz harness (#881).
|
|
119
119
|
if [[ ! "$arg" =~ ^v?[0-9]+\.[0-9]+\.[0-9]+([-+][a-zA-Z0-9.-]+)?$ ]]; then
|
|
120
|
-
error "Unrecognized positional argument '$arg' β expected a semver version (e.g. v0.2.
|
|
120
|
+
error "Unrecognized positional argument '$arg' β expected a semver version (e.g. v0.2.516)."
|
|
121
121
|
fi
|
|
122
122
|
version="$arg"
|
|
123
123
|
version_set=1
|
|
@@ -369,7 +369,7 @@ main() {
|
|
|
369
369
|
# 6. Initialize & Apply
|
|
370
370
|
step "Applying Configuration..."
|
|
371
371
|
|
|
372
|
-
# ββ Auto-migration for v0.2.
|
|
372
|
+
# ββ Auto-migration for v0.2.516 reorg βββββββββββββββββββββββββββββββββ
|
|
373
373
|
# If the user is upgrading from a pre-0.2.503 install, run the
|
|
374
374
|
# migration script BEFORE `chezmoi apply` so the reorg's source-
|
|
375
375
|
# path moves don't cause chezmoi to delete deployed files.
|
|
@@ -378,7 +378,7 @@ main() {
|
|
|
378
378
|
for migrate_src in "$SOURCE_DIR" "$LEGACY_SOURCE_DIR"; do
|
|
379
379
|
migrate_script="$migrate_src/install/migrate/migrate-v0_2-to-v0_2_503.sh"
|
|
380
380
|
if [[ -x "$migrate_script" ]]; then
|
|
381
|
-
echo " Running v0.2.
|
|
381
|
+
echo " Running v0.2.516 migration (idempotent; safe on fresh installs)..."
|
|
382
382
|
"$migrate_script" || echo " migration exited non-zero β continuing apply"
|
|
383
383
|
break
|
|
384
384
|
fi
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sebastienrousseau/dotfiles",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.516",
|
|
4
4
|
"description": "The Trusted Shell Platform β Universal dotfiles managed by Chezmoi. Features Bash & Zsh for macOS, Linux & WSL. Rust modern tooling & enterprise-grade security.",
|
|
5
5
|
"main": "install.sh",
|
|
6
6
|
"bin": {
|
|
@@ -141,6 +141,6 @@ if [[ $FAILED -eq 1 ]]; then
|
|
|
141
141
|
printf '%b\\n' " (Use --no-verify to bypass if absolutely necessary)"
|
|
142
142
|
exit 1
|
|
143
143
|
else
|
|
144
|
-
printf '%b\n' "${GREEN}${BOLD}β
Audit passed.${NC} v0.2.
|
|
144
|
+
printf '%b\n' "${GREEN}${BOLD}β
Audit passed.${NC} v0.2.516 standards maintained."
|
|
145
145
|
exit 0
|
|
146
146
|
fi
|
package/scripts/version-sync.sh
CHANGED
|
@@ -32,6 +32,7 @@ EXCLUDE_FILES=(
|
|
|
32
32
|
"docs/operations/VERSION_SYNC.md"
|
|
33
33
|
"docs/operations/RFC_v0_2_503_reorganization.md"
|
|
34
34
|
"docs/operations/HARD_AUDIT_2026.md"
|
|
35
|
+
"docs/operations/COVERAGE.md"
|
|
35
36
|
"docs/reference/ALIASES_DEPRECATIONS.md"
|
|
36
37
|
|
|
37
38
|
# Security docs β INSTALL_VERIFICATION + CI_PINNING + SCORECARD
|