@sebastienrousseau/dotfiles
Version:
The Trusted Shell Platform — Universal dotfiles managed by Chezmoi. Features Bash & Zsh for macOS, Linux & WSL. Rust modern tooling & enterprise-grade security.
135 lines (106 loc) • 8.87 kB
Markdown
---
title: "v0.2.503 Roadmap — Enterprise-Ready, Cross-Platform"
date: 2026-05-17
---
# v0.2.503 — Enterprise-Ready Cross-Platform Polish
## Why this release
The R4 audit (`HARD_AUDIT_2026.md` Part 8) ranked the framework
9.0/10 on internal quality but only 7.5/10 on adoption readiness.
The gap is **distribution + cross-platform polish + visible
organisation** — not feature surface. v0.2.503 closes that gap
without breaking existing user installs.
Reference target: <https://github.com/Debian/aws-cli> — the Debian
packaging of AWS CLI, often cited as a model of simple, focused
top-level structure. We will not blindly copy its layout (it ships
a Python project, we ship a chezmoi-managed shell framework), but
we will adopt its discipline: every top-level path has a clear
purpose, contributors orient in under 30 seconds.
## Scope (non-breaking; v0.2.503)
### A — Visible structure (no file moves)
| | |
|---|---|
| `STRUCTURE.md` at root | Single-page map of every top-level path, why it exists, and what it deploys to. Answers "what is `dot_config/`?", "why are there 25 root files?", "where is the CLI?" — in under 30 seconds. |
| `scripts/README.md` | Map of `scripts/{ci,diagnostics,dot,lib,maintenance,ops,security,tools,tuning}` subtrees. |
| Root `dot_*` files explained | The 20+ `dot_*` / `executable_*` / `private_*` prefixed files at root are not clutter — they are required by chezmoi to render at the corresponding `~/.X` path. STRUCTURE.md makes this contract visible. |
### B — UX polish
| | |
|---|---|
| Sweep remaining tabular `dot` commands through `ui_table_begin/add/end` | Already done: `dot env`, `dot agents list`, `dot registry list/search`, `dot aliases list/search`. Identify any other listing commands not yet on the helper and convert. |
| `dot doctor` rendering | Today emits 100+ lines of `ui_ok / ui_warn / ui_err`. Group into bordered sections with totals at the foot. |
| `dot help` two-column table | The grouped help index could become a gum-table by section. |
| `dot fleet status` widening | Use the table helper for the per-node status block. |
### C — Performance
| | |
|---|---|
| `_cached_eval` coverage audit | Find every `eval "$(<tool> init <shell>)"` in `rc.d/` not already wrapped; add to cache layer. |
| Shell startup p50/p95 in CI | New `dot-cli-bench` workflow exists for the CLI cold-start gate; add an equivalent zsh/bash/fish startup-time gate (sub-150ms cold). |
| Cross-shell `_cached_eval` parity | bash + fish + nu implementations exist; confirm they all do the realpath sidecar pin + suspicious-output check that zsh added. |
### D — Cross-platform CI parity
| | |
|---|---|
| Windows-native smoke test expansion | `tools/ci/windows-smoke-test.ps1` exists but only covers a few commands. Add `dot version / dot help / dot agents check / dot doctor` Windows-native runs. |
| Real `ubuntu-latest` + `macos-latest` + `windows-latest` matrix for the test runner | Currently `ubuntu` + `macos` only; add `windows-latest` to the regular test workflow. |
| `chezmoi apply --dry-run` on all three OSes | Verify our templates render on every platform on every PR. |
### E — Code dedup + refactor (in-place)
| | |
|---|---|
| Audit `scripts/dot/lib/*` for cross-file duplication | Many small helpers may exist in 2+ places. Consolidate. |
| Consistent error-exit codes | Document the canonical exit-code map (1 = bad usage, 2 = no provider, 3 = empty, etc. — `dot secrets` already follows this). Audit other commands for drift. |
| `set -euo pipefail` header lint | Make sure every script under `scripts/` has the canonical header. |
### F — Distribution + discoverability (R4 Top-5 work)
| | |
|---|---|
| Homebrew tap stub | Create `install/homebrew/dot.rb` formula scaffold. Real publication still needs the v0.3 reorganization. |
| Scoop manifest stub | Same for `install/scoop/dot.json`. |
| `awesome-dotfiles` PR draft | One-line entry + screenshot. Land it after v0.2.503 ships. |
### G — OpenSSF Scorecard 10/10 across every check
Target the [public Scorecard report](https://scorecard.dev/viewer/?uri=github.com/sebastienrousseau/dotfiles) and drive every check to 10/10:
| Check | Today (baseline) | Path to 10 |
|---|---|---|
| **Binary-Artifacts** | 10 (no binaries committed) | Maintain — pre-commit guard rejecting any committed binary. |
| **Branch-Protection** | needs token | Already configured on `master` (required reviews, signed commits, status-check gating, linear history). Verify in `gh api repos/.../branches/master/protection` and document in `docs/security/`. |
| **CI-Tests** | 10 (CI passes on every PR) | Maintain — current 75-check matrix is comprehensive. |
| **CII-Best-Practices** / OpenSSF Best Practices badge | not present | Apply for the badge at [bestpractices.coreinfrastructure.org](https://www.bestpractices.dev/) and embed the badge in README. |
| **Code-Review** | needs verification | Already enforced via branch protection; document in CONTRIBUTING.md. |
| **Contributors** | low (solo) | Acknowledge — solo-maintained framework. Add `MAINTAINERS.md` + `GOVERNANCE.md` documenting the single-maintainer model and contribution path. |
| **Dangerous-Workflow** | 10 (no `pull_request_target` with checkout-then-build) | Maintain — `.github/workflows/` is already audited. |
| **Dependency-Update-Tool** | 10 (Dependabot + Renovate configured) | Maintain. |
| **Fuzzing** | partial (1 fuzz harness for `install.sh`) | Add OSS-Fuzz integration **OR** expand `tests/fuzz/` coverage (URL parsers, manifest validators, secret-bucket loaders). |
| **License** | 10 (MIT, top-level `LICENSE`) | Maintain. |
| **Maintained** | high (active commits weekly) | Maintain. |
| **Packaging** | low (no distro package) | Address via the Homebrew tap / Scoop manifest / AUR PKGBUILD in §F. SLSA-attested release artefacts now exist (v0.2.502 backfill confirmed). |
| **Pinned-Dependencies** | 9 (one tag-pinned reusable workflow — SLSA, documented exception) | Already documented; verify Scorecard accepts the SLSA exception. |
| **SAST** | 10 (CodeQL + Semgrep + Codacy in CI) | Maintain. |
| **Security-Policy** | 10 (`.github/SECURITY.md` + WKD-published GPG key + disclosure-key-expiry monitor) | Maintain. |
| **Signed-Releases** | 8–10 (Cosign-signed SBOM + SLSA provenance now landing per v0.2.502 backfill) | Verify Scorecard re-scrapes the v0.2.502 release post-backfill; should bump to 10. |
| **Token-Permissions** | 10 (top-level `permissions: contents: read`; per-job overrides) | Maintain — set during R3 hardening. |
| **Vulnerabilities** | 10 (osv-scanner + Dependabot keep open count at 0) | Maintain. |
| **Webhooks** | n/a | No org-level webhooks; check not applicable. |
**Action items:**
1. Run `scorecard` locally with the official Docker image, snapshot current scores into `docs/security/SCORECARD.md`.
2. Apply for OpenSSF Best Practices badge (≤30-min form).
3. Add `MAINTAINERS.md` + `GOVERNANCE.md`.
4. Re-trigger Scorecard workflow after v0.2.502 backfill so the dashboard reflects the fixed Signed-Releases score.
5. Track every sub-10 score with a follow-up issue tagged `scorecard`.
## Reorganisation now in-scope (was deferred — see RFC)
Pulled forward from v0.3.0 into this PR per maintainer request.
The R4 audit identified the framework / user-config intermingling
as the highest-leverage structural gap. Implementation is phased
per `RFC_v0_2_503_reorganization.md`; each phase is independently
atomic.
| Move | Why it's breaking |
|------|-------------------|
| `dot_config/` → `defaults/` (with chezmoi `.chezmoiroot`) | Every existing user's chezmoi source-state would need to re-bootstrap. |
| `bin/dot` → `bin/dot` | Same; `~/.local/bin/dot` would be removed before the new path is installed. |
| Split `framework/` (CLI + lib) from user-facing defaults | Major restructuring; needs RFC + migration tool + 2-version deprecation window. |
These will land in v0.2.503 as a coordinated single PR with a
`migrate-v0_2-to-v0_3.sh` script.
## Success criteria (v0.2.503)
- [ ] New contributor can answer "where is the CLI?" / "what is `dot_config/`?" / "how do I add a new command?" in under 30 seconds using only the root `STRUCTURE.md` + `scripts/README.md`.
- [ ] `dot lint` reports 328+ files clean.
- [ ] Shell startup p50 ≤ 100ms in CI on all three OSes.
- [ ] `dot env list` / `dot agents list` / `dot registry list` render with gorgeous gum tables (already done — bake into screenshot for README).
- [ ] `windows-latest` is in the regular test matrix.
- [ ] Pre-existing CI infrastructure failures (SLSA, etc.) stay green after the v0.2.502 fix series.
- [ ] **OpenSSF Scorecard reports 10/10 on every applicable check** at <https://scorecard.dev/viewer/?uri=github.com/sebastienrousseau/dotfiles>.
- [ ] OpenSSF Best Practices badge displayed in README.