docs(roadmap): add Pillar 8 QA audit + clean stale Pillar 4 rows
Pillar 3 audited script existence; Pillar 8 audits feature behavior.
Adds a per-component sweep methodology (10 components, one PR each on
wave/qa-<component>) and lists it on the Now board so the next session
can pick it up without re-deriving scope.
Cleanup pass on Pillar 4: removes two "(Now)" entries (software-profile
multi-select, form-factor → laptop preset) already in the Shipped log,
and promotes the two remaining open items ("What's installed?" summary,
non-LUKS branch) to the Now board.
This commit is contained in:
@@ -19,7 +19,9 @@ Guardrails (apply when adding anything):
|
|||||||
|
|
||||||
### Now (ready to pick up)
|
### Now (ready to pick up)
|
||||||
|
|
||||||
- (Empty for now)
|
- **Full QA audit of shipped features.** Walk every feature/component end-to-end on a real install, fix what's small, log what's not. Runs as per-component PR sweeps — methodology in [Pillar 8](#8-pillar-qa-audit--features--components).
|
||||||
|
- **Installer: "What's installed?" summary on first boot.** Surface what the installer actually wrote (theme, font, profiles, drives, form factor) from `state.json` + `nomarchy-system-scripts` introspection so the user can verify before they start customising. Detail in [Pillar 4](#4-pillar-installer).
|
||||||
|
- **Installer: optional non-LUKS branch.** Let users explicitly opt out of FDE during install. Detail in [Pillar 4](#4-pillar-installer).
|
||||||
|
|
||||||
### Next (bigger lifts that build on Now)
|
### Next (bigger lifts that build on Now)
|
||||||
|
|
||||||
@@ -73,13 +75,13 @@ Each PR description should reference the row(s) in `docs/SCRIPTS.md` it closes,
|
|||||||
|
|
||||||
## 4. Pillar: Installer
|
## 4. Pillar: Installer
|
||||||
|
|
||||||
- Software-profile multi-select (Now).
|
- "What's installed?" summary screen on boot of a freshly-installed system, sourced from `state.json` + `nomarchy-system-scripts` introspection (Now).
|
||||||
|
- Optional non-LUKS branch in the installer for users who explicitly opt out of FDE (Now).
|
||||||
- Richer disk metadata (Shipped).
|
- Richer disk metadata (Shipped).
|
||||||
- Form-factor → laptop preset (Now, depends on Pillar 5).
|
|
||||||
- `disko-golden.nix` variants for software-RAID and BTRFS-pool-as-root (Shipped).
|
- `disko-golden.nix` variants for software-RAID and BTRFS-pool-as-root (Shipped).
|
||||||
- Pre-flight resume polish (Shipped).
|
- Pre-flight resume polish (Shipped).
|
||||||
- "What's installed?" summary screen on boot of a freshly-installed system, sourced from `state.json` + `nomarchy-system-scripts` introspection.
|
- Software-profile multi-select (Shipped).
|
||||||
- Optional non-LUKS branch in the installer for users who explicitly opt out of FDE.
|
- Form-factor → laptop preset (Shipped).
|
||||||
|
|
||||||
## 5. Pillar: Power, hardware, presets
|
## 5. Pillar: Power, hardware, presets
|
||||||
|
|
||||||
@@ -109,6 +111,33 @@ Each PR description should reference the row(s) in `docs/SCRIPTS.md` it closes,
|
|||||||
- `nixosTest` per palette: boots `default` in a VM, screenshots the SDDM splash and the Hyprland desktop, diffs vs golden. Failure surfaces as CI red.
|
- `nixosTest` per palette: boots `default` in a VM, screenshots the SDDM splash and the Hyprland desktop, diffs vs golden. Failure surfaces as CI red.
|
||||||
- A small `bin/utils/nomarchy-bench-iso-build` that records ISO build time + size into a per-commit JSON so we notice regressions.
|
- A small `bin/utils/nomarchy-bench-iso-build` that records ISO build time + size into a per-commit JSON so we notice regressions.
|
||||||
|
|
||||||
|
## 8. Pillar: QA audit — features & components
|
||||||
|
|
||||||
|
Nomarchy now spans an installer, ~159 `nomarchy-*` scripts, a Hyprland desktop stack (Hyprland + waybar + walker + nightlight + idle), curated apps, a 22-palette theme engine, and two ISO hosts. Pillar 3 audited script *existence*; this pillar audits feature *behavior*. The goal: walk every shipped feature end-to-end on a real install, fix every bug or surprise inline when small, and capture the rest as new roadmap rows.
|
||||||
|
|
||||||
|
Runs as **per-component sweeps**. One PR per component, branch `wave/qa-<component>`. Don't grow scope mid-PR — bugs that need a new option, refactor, or missing module become a new **Now**/**Next** row.
|
||||||
|
|
||||||
|
Components (each is one sweep):
|
||||||
|
|
||||||
|
1. **Installer** — `installer/install.sh`, `installer/hardware-db.sh`, disko configs. Fresh install + `--resume` + `--dry-run`, on laptop and desktop, with FDE (non-LUKS branch is Later). Verify every generated file (`flake.nix`, `system.nix`, `home.nix`, `hardware-selection.nix`, `state.json`) is correct and idempotent.
|
||||||
|
2. **First-boot UX** — `nomarchy-welcome`, generated `home.nix`, SDDM and Plymouth metadata, default theme/font/panel position. Re-run on a clean VM; note every prompt that confuses and every default that's wrong.
|
||||||
|
3. **Core system modules** — `core/system/*` (laptop, desktop, accessibility, gaming, hybridGPU, impermanence, network, hardware, branding). For each: enable → rebuild → observe the claimed effect → disable → rebuild → observe it's gone. Cross-check against `docs/OPTIONS.md`.
|
||||||
|
4. **Core home modules** — `core/home/*` (options, state, behavior, overrides, deployed config). Verify every home-side `nomarchy.*` option does what its description claims; confirm `~/.config/nomarchy/overrides/` actually overrides.
|
||||||
|
5. **Desktop stack** — Hyprland (keybindings, window rules, monitors, input), waybar (every module × both panel positions × both form factors), walker (every launcher mode), idle, nightlight, notifications (mako). Reconcile `docs/KEYBINDINGS.md` against runtime.
|
||||||
|
6. **Apps** — `features/apps/*`. Each app: launches, themed via Stylix, configured as expected. Catches the "we package it but nobody configured it" class.
|
||||||
|
7. **Theme engine + palettes** — `nomarchy-theme-set` across all 22 palettes, font and wallpaper switchers, light-mode toggle. Verify per-palette Stylix targets render correctly across SDDM, Plymouth, GTK, Qt, terminals, browsers, waybar, walker.
|
||||||
|
8. **Scripts (runtime behavior)** — Pillar 3 confirmed existence; this sweep runs every user-visible script (especially every `nomarchy-menu` entry) on current NixOS and confirms it actually does the thing.
|
||||||
|
9. **ISOs** — boot `nomarchy-installer` and `nomarchy-live`; verify the `nomarchy-test-live-iso` flow; check the installer ISO ships every tool `install.sh` calls (regression class: `hardware-db.sh` missing, already shipped).
|
||||||
|
10. **Lib + state schema** — `lib/state-schema.nix`, color resolution, path helpers. Cross every codepath that produces `state.json` (installer, welcome wizard, hand-edit) against the schema; confirm bad inputs are rejected with a useful message.
|
||||||
|
|
||||||
|
Per-PR deliverable:
|
||||||
|
|
||||||
|
- PR body lists what was tested, what was broken, what was fixed inline, what was deferred (with the new roadmap row linked).
|
||||||
|
- Doc updates ride with the change per `docs/AGENT.md` §5.4.
|
||||||
|
- Don't bundle fixes across components — keep one component per branch so reviewers can spot-check end-to-end without context-switching.
|
||||||
|
|
||||||
|
Pillar is **done** when every component has a closed `wave/qa-<component>` PR and the roadmap captures every deferred finding.
|
||||||
|
|
||||||
## 9. Process notes
|
## 9. Process notes
|
||||||
|
|
||||||
- **Branch naming:** `wave/<pillar>-<short-slug>`. Examples: `wave/audit-pkg-scripts`, `wave/installer-disk-metadata`, `wave/laptop-preset`.
|
- **Branch naming:** `wave/<pillar>-<short-slug>`. Examples: `wave/audit-pkg-scripts`, `wave/installer-disk-metadata`, `wave/laptop-preset`.
|
||||||
|
|||||||
Reference in New Issue
Block a user