docs: VISION for v1.0 + clarify docs/ vs agent/ vs .claude
All checks were successful
Check / eval (push) Successful in 3m7s

Add docs/VISION.md (product themes, v1.0 bar, agent slice hints) and
README maps under docs/ and agent/. Point ROADMAP, BACKLOG, LOOP,
CLAUDE, HARDWARE, and the root README at the split: VISION = intent,
BACKLOG = executable queue, ROADMAP = design history, .claude = harness
only. Mark v1.0 track in BACKLOG PROPOSED for human triage.
This commit is contained in:
Bernardo Magri
2026-07-09 09:33:51 +01:00
parent caaac88da9
commit 02d7baeb7c
10 changed files with 340 additions and 52 deletions

View File

@@ -4,29 +4,38 @@ Nomarchy is a NixOS-based distro: rock-stable, fully reproducible, themed
from one JSON, configured through a menu that writes into the user's own from one JSON, configured through a menu that writes into the user's own
flake checkout. Read the README for the architecture. flake checkout. Read the README for the architecture.
## Where things live (read this first)
| Path | Role |
|------|------|
| **`agent/`** | Loop state — **only executable queue is `BACKLOG.md`** |
| **`docs/VISION.md`** | Product themes toward **v1.0** (not a queue) |
| **`docs/ROADMAP.md`** | Design history + shipped log |
| **`docs/README.md`** | Full documentation map |
| **`agent/README.md`** | Map of loop files |
| **`.claude/`** | Claude Code only (permissions + subagents) — not the backlog |
## If you're here to work autonomously (the loop) ## If you're here to work autonomously (the loop)
Follow **`agent/LOOP.md`** — it defines one iteration: orient Follow **`agent/LOOP.md`** — one iteration: orient → pick one BACKLOG
(GOALS/BACKLOG/JOURNAL/MEMORY), take the top actionable BACKLOG item, item → work → verify → commit+push on `main` → record. All loop state is
verify up the V0V3 ladder, commit+push on `main`, record. All loop state git-tracked in `agent/`.
is git-tracked in `agent/`.
## Rules that apply to every session, loop or not ## Rules that apply to every session, loop or not
- **Honesty rule** (docs/TESTING.md): for visual/interactive changes, - **Honesty rule** (`docs/TESTING.md`): for visual/interactive changes,
evaluation is not rendering — state exactly what you verified and at evaluation is not rendering — state the tier you reached. Cheap first:
which tier. Cheap check first, always: `nix flake check --no-build`. `nix flake check --no-build`.
- **Conventions** (`agent/CONVENTIONS.md`): in-flake state, menu - **Conventions** (`agent/CONVENTIONS.md`): in-flake state, menu
placement, Waybar parity with the summer whole-swaps, toggle-vs-package placement, Waybar parity with whole-swaps, toggle-vs-package discipline,
discipline, commented template examples for opt-ins. template as SoT for opt-in comments (`templates/downstream`).
- **Git:** direct commits on `main`, pushed; `v1` is the human-only - **Git:** direct commits on `main`, pushed; **`v1` is human-only** —
release pointer — never touch it. Never run `nix flake update` unless never touch it. Never `nix flake update` unless the task is a lock bump.
the task is a lock bump. No formatter — match the aligned No formatter — match aligned hand-formatting.
hand-formatting. - Layout: `hosts/` machine · `modules/` distro · `themes/` data ·
- Machine-specifics live in `hosts/`, the distro in `modules/`, data in `pkgs/` code · `tools/` maintainer · `agent/` loop · `docs/` human docs.
`themes/`, code in `pkgs/`, maintainer tools in `tools/`.
## Delegation ## Delegation
The higher your tier, the more you delegate. Push the work down, keep your own context for judgment. Brief every child: the context, the why, what done looks like. It starts blank and inherits nothing. Push mechanical work down; keep judgment. Brief every child cold.
| Model | Best for | Delegate? | Effort | | Model | Best for | Delegate? | Effort |
|---|---|---|---| |---|---|---|---|
@@ -39,4 +48,5 @@ Fable goes xhigh only for the hardest calls. Skip high.
## Escalation ## Escalation
The parent doesn't have to be the top model. An Opus parent spawns a Fable child for the one hard call. The child answers and returns. Work above your tier? Return it, don't burn tokens on it. An Opus parent can spawn a Fable child for one hard call. Work above your
tier? Return it — don't burn tokens.

View File

@@ -74,13 +74,15 @@ Flat on purpose. Two module trees, one options file each, no hidden layers.
│ ├── nomarchy-theme-sync/ # state writer + rebuild dispatcher (Python) │ ├── nomarchy-theme-sync/ # state writer + rebuild dispatcher (Python)
│ └── nomarchy-install/ # live-ISO installer (gum + disko + mkFlake) │ └── nomarchy-install/ # live-ISO installer (gum + disko + mkFlake)
├── templates/downstream/ # machine flake SoT (`flake init` + installer copy/patch) ├── templates/downstream/ # machine flake SoT (`flake init` + installer copy/patch)
├── docs/TESTING.md # how to verify changes (incl. AI-agent rules) ├── docs/ # human docs — map: docs/README.md
├── docs/HARDWARE.md # firmware, drivers, profiles, unsupported machines │ ├── VISION.md # product themes toward v1.0 (not a queue)
├── docs/OVERRIDES.md # how downstream users override defaults │ ├── ROADMAP.md # design/decision records + shipped log
├── docs/RECOVERY.md # runbook: broken theme/desktop/boot → undo it │ ├── HARDWARE.md # firmware, profiles, drivers
├── docs/ROADMAP.md # design/decision records + shipped-fixes log │ ├── TESTING.md · RECOVERY.md · OVERRIDES.md · MIGRATION.md
├── agent/ # autonomous-agent loop: protocol (LOOP.md), ├── agent/ # agent loop state — map: agent/README.md
│ # prioritized BACKLOG, journal, memory │ # BACKLOG (executable queue), LOOP, GOALS, …
├── CLAUDE.md # agent harness entry (points at agent/ + docs/)
├── .claude/ # Claude Code only: permissions + subagents
└── tools/ # maintainer-only └── tools/ # maintainer-only
├── import-palettes.py # converts old-distro themes → JSON + assets ├── import-palettes.py # converts old-distro themes → JSON + assets
├── test-live-iso.sh # build the ISO + boot it in QEMU ├── test-live-iso.sh # build the ISO + boot it in QEMU
@@ -442,9 +444,12 @@ reload # exec zsh (reload the shell)
## Roadmap & known issues ## Roadmap & known issues
The prioritized queue of what's next lives in | Doc | Role |
**[agent/BACKLOG.md](agent/BACKLOG.md)**; the detailed design/decision |-----|------|
records and the log of shipped fixes stay in | **[agent/BACKLOG.md](agent/BACKLOG.md)** | What to do next (agent queue) |
**[docs/ROADMAP.md](docs/ROADMAP.md)**. Development runs on an | **[docs/VISION.md](docs/VISION.md)** | Product themes toward **v1.0** |
agent-driven loop — see **[agent/LOOP.md](agent/LOOP.md)**. Kept out of | **[docs/ROADMAP.md](docs/ROADMAP.md)** | Design history + shipped log |
the README so this stays a focused entry point. | **[docs/README.md](docs/README.md)** · **[agent/README.md](agent/README.md)** | Maps |
| **[agent/LOOP.md](agent/LOOP.md)** | Autonomous iteration protocol |
Kept out of the README body so this stays a focused entry point.

View File

@@ -1,22 +1,24 @@
# Backlog — the prioritized task queue # Backlog — the prioritized task queue
The forward-looking half of the old docs/ROADMAP.md, reworked as a queue **This is the only executable work list for agents.** Product themes and
agents can execute. Detailed design notes and decision records stay in v1.0 intent live in [`docs/VISION.md`](../docs/VISION.md); design history
`docs/ROADMAP.md` (referenced as "ROADMAP § <item>"); this file is *what's in [`docs/ROADMAP.md`](../docs/ROADMAP.md); map in
next, in what order*. [`docs/README.md`](../docs/README.md) and [`agent/README.md`](README.md).
**Rules:** **Rules:**
- Agents take the topmost actionable item (see LOOP.md). Finished items - Agents take the topmost actionable item (see LOOP.md). Finished items
are **deleted** here — the journal + git log are the record; durable are **deleted** here — the journal + git log are the record; durable
design notes get a ✓-entry in docs/ROADMAP.md if worth keeping. design notes get a ✓-entry in docs/ROADMAP.md (and/or a note in VISION)
if worth keeping.
- Item numbers are **stable IDs** — never renumbered or reused. A gap in - Item numbers are **stable IDs** — never renumbered or reused. A gap in
the sequence means shipped (or dropped) work; new items take the next the sequence means shipped (or dropped) work; new items take the next
free number regardless of tier. free number regardless of tier.
- Tags: `[blocked:hw]` needs real hardware (see HARDWARE-QUEUE.md) · - Tags: `[blocked:hw]` needs real hardware (see HARDWARE-QUEUE.md) ·
`[human]` needs Bernardo · `[stuck]` two failed attempts, needs help · `[human]` needs Bernardo · `[stuck]` two failed attempts, needs help ·
`[big]` must be split before starting. `[big]` must be split before starting.
- Agents may append to **PROPOSED** and **Decisions** freely; only - Agents may append to **PROPOSED** and **Decisions** freely (include
Bernardo moves items *out* of PROPOSED into the tiers. `VISION § …` or `ROADMAP § …` when relevant); only Bernardo moves items
*out* of PROPOSED into the tiers.
--- ---
@@ -101,9 +103,19 @@ actually float once seen (regex tolerance for the `.…-wrapped` form).
*Agents: append here with a one-paragraph pitch (what/why/cost). Do not *Agents: append here with a one-paragraph pitch (what/why/cost). Do not
implement. Bernardo moves accepted items into a tier.* implement. Bernardo moves accepted items into a tier.*
### v1.0 track — see `docs/VISION.md`
Product themes and the release bar live in **VISION**. Many slices
already have pitches below (Hardware product, Installer bugs, Default
theme → boreal). When adding new product work, reference
`VISION § <theme>` and prefer the north-star laptop user. Suggested
next promotions (human picks order): install P0 contracts · boreal
default · System Firmware · doctor hardware · fingerprint menu ·
first-boot tips · human rebuild errors · neon-glass quarantine.
### Pre-existing ### Pre-existing
- **Default theme → boreal** - **Default theme → boreal** (`VISION § B` / v1.0 bar)
Ship Boreal as the distro default instead of Tokyo Night: root Ship Boreal as the distro default instead of Tokyo Night: root
`theme-state.json`, `templates/downstream/theme-state.json` (and any `theme-state.json`, `templates/downstream/theme-state.json` (and any
greeter/plymouth fallbacks that hardcode Tokyo Night when state is greeter/plymouth fallbacks that hardcode Tokyo Night when state is

View File

@@ -1,7 +1,9 @@
# Goals — what "done" looks like for Nomarchy # Goals — what "done" looks like for Nomarchy
The north star every loop iteration serves. When two options conflict, The north star every loop iteration serves. When two options conflict,
the earlier pillar wins. the earlier pillar wins. Product *themes* toward a **v1.0** ship (day-2
confidence, default identity, release bar) live in
[`docs/VISION.md`](../docs/VISION.md) — still subordinate to these pillars.
## The four pillars (in priority order) ## The four pillars (in priority order)

View File

@@ -57,7 +57,11 @@ Spend expensive tokens on judgment, not mechanics.
### 0. Orient ### 0. Orient
1. Read `GOALS.md`, `CONVENTIONS.md`, `MEMORY.md`, the **last 35 entries** 1. Read `GOALS.md`, `CONVENTIONS.md`, `MEMORY.md`, the **last 35 entries**
of `JOURNAL.md`, and `BACKLOG.md`. of `JOURNAL.md`, and `BACKLOG.md`. If the top task is product-shaped
(UX, release bar, day-2 confidence), also read the matching section of
**`docs/VISION.md`** — do not invent work from VISION; only execute
BACKLOG items. Map of docs vs agent state: `docs/README.md`,
`agent/README.md`.
2. `git pull --ff-only` (skip silently if offline). Confirm you are on 2. `git pull --ff-only` (skip silently if offline). Confirm you are on
`main` with a clean tree. **A dirty tree you didn't create → stop and `main` with a clean tree. **A dirty tree you didn't create → stop and
report; never stash or discard someone else's work.** report; never stash or discard someone else's work.**

42
agent/README.md Normal file
View File

@@ -0,0 +1,42 @@
# Agent loop state
Git-tracked state for autonomous and assisted work on Nomarchy.
Protocol: **[LOOP.md](LOOP.md)**. Entry for most harnesses: repo-root
**[CLAUDE.md](../CLAUDE.md)**.
## Files
| File | Who writes | Role |
|------|------------|------|
| [LOOP.md](LOOP.md) | Human | One-iteration protocol (orient → pick → work → verify → commit → record) |
| [GOALS.md](GOALS.md) | Human (agents propose) | Pillars, quality bars, non-goals |
| [CONVENTIONS.md](CONVENTIONS.md) | Human (agents propose) | How to write code/menu/state while shipping |
| [BACKLOG.md](BACKLOG.md) | Both | **Prioritized queue** — only executable work list |
| [JOURNAL.md](JOURNAL.md) | Agents | Append-only iteration log (read last 35 entries) |
| [MEMORY.md](MEMORY.md) | Agents | Curated durable gotchas |
| [HARDWARE-QUEUE.md](HARDWARE-QUEUE.md) | Agents append, human checks | On-hardware V3 tests only Bernardo can run |
## Product / design docs (not a queue)
| File | Role |
|------|------|
| [../docs/VISION.md](../docs/VISION.md) | v1.0 product themes — agents slice into BACKLOG PROPOSED |
| [../docs/ROADMAP.md](../docs/ROADMAP.md) | Design history + shipped log |
| [../docs/README.md](../docs/README.md) | Full docs map |
## Claude Code only
| Path | Role |
|------|------|
| [../.claude/settings.json](../.claude/settings.json) | Tool permissions |
| [../.claude/agents/](../.claude/agents/) | `nomarchy-scout` / `nomarchy-runner` subagent defs |
Do **not** put backlog items or vision text under `.claude/` — it is not
shared with other agent runners.
## Rules of thumb
1. **Execute** from BACKLOG only (NOW → NEXT; never PROPOSED without human triage).
2. **Orient** with GOALS + CONVENTIONS + MEMORY + last journal + BACKLOG; when the task is product-shaped, also read the relevant **VISION §**.
3. **Record** lasting design in ROADMAP ✓ when something ships that future humans should know; delete the BACKLOG line.
4. **v1 branch** is human-only — never advance from an agent session.

View File

@@ -3,9 +3,10 @@
How Nomarchy enables CPUs, GPUs, laptops, firmware, and peripherals — and How Nomarchy enables CPUs, GPUs, laptops, firmware, and peripherals — and
what to do when your machine is not in the happy path. what to do when your machine is not in the happy path.
> **Queue:** product follow-ups live in [`agent/BACKLOG.md`](../agent/BACKLOG.md) > **Queue:** [`agent/BACKLOG.md`](../agent/BACKLOG.md) (PROPOSED Hardware
> (PROPOSED Hardware product). Design history: [`ROADMAP.md`](ROADMAP.md). > product). Product framing: [`VISION.md`](VISION.md) § A. Design history:
> Migration without reinstall: [`MIGRATION.md`](MIGRATION.md). > [`ROADMAP.md`](ROADMAP.md). Docs map: [`README.md`](README.md).
> Migration: [`MIGRATION.md`](MIGRATION.md).
## 1. Architecture (three layers) ## 1. Architecture (three layers)

40
docs/README.md Normal file
View File

@@ -0,0 +1,40 @@
# Docs map
Where human and agent documentation lives. **Do not** invent a third
tree for the same facts.
| Path | Audience | Role |
|------|----------|------|
| [../README.md](../README.md) | Everyone | What Nomarchy is, install, options tables |
| [VISION.md](VISION.md) | Maintainers + agents | Product north star toward **v1.0** and beyond — themes, not a task queue |
| [ROADMAP.md](ROADMAP.md) | Maintainers + agents | Design/decision records + shipped log (historical ✓) |
| [HARDWARE.md](HARDWARE.md) | Users + agents | Firmware, profiles, drivers, unsupported machines |
| [TESTING.md](TESTING.md) | Maintainers + agents | Verification ladder, honesty rule, ISO/VM recipes |
| [RECOVERY.md](RECOVERY.md) | Users | Broken theme/desktop/boot → undo |
| [OVERRIDES.md](OVERRIDES.md) | Users | Downstream Nix overrides |
| [MIGRATION.md](MIGRATION.md) | Users | Existing NixOS → Nomarchy without reinstall |
## Related (not under `docs/`)
| Path | Role |
|------|------|
| [../agent/README.md](../agent/README.md) | **Executable** agent loop state: BACKLOG, LOOP, MEMORY, … |
| [../CLAUDE.md](../CLAUDE.md) | Agent entry point (any harness that reads it) |
| [../.claude/](../.claude/) | Claude Code only: permissions + subagent defs |
## How work flows
```
VISION (what we want the product to feel like)
▼ human triages slices into…
BACKLOG (what's next, ordered — agents execute only this)
▼ lasting design notes after ship →
ROADMAP ✓ entries
```
Agents **do not** implement directly from VISION or ROADMAP. They take
the top actionable item in `agent/BACKLOG.md` (see `agent/LOOP.md`).
They **may** append PROPOSED pitches that reference `VISION § …` or
`ROADMAP § …`.

View File

@@ -1,15 +1,20 @@
# Roadmap & changelog # Roadmap & changelog
Forward-looking plans, plus a running log of shipped fixes (the Design/decision records and a running log of shipped work (items marked
"Known issues & follow-ups" section). Split out of the README so that ). Split out of the README so that stays a focused entry point.
stays a focused entry point — what Nomarchy is, how to install it, and
how to override it. Items marked ✓ are shipped.
> **The live, prioritized queue now lives in [`agent/BACKLOG.md`](../agent/BACKLOG.md)** > **Where to look**
> (part of the autonomous-agent loop, `agent/LOOP.md`). This file remains >
> the detailed design/decision record and the shipped log — backlog items > | Need | File |
> reference it as "ROADMAP § <item>". When a backlog item ships, its > |------|------|
> lasting design notes get a ✓ entry here. > | Product themes toward **v1.0** (not a queue) | [`docs/VISION.md`](VISION.md) |
> | **What agents execute next** | [`agent/BACKLOG.md`](../agent/BACKLOG.md) |
> | Docs map | [`docs/README.md`](README.md) |
> | Agent loop protocol | [`agent/LOOP.md`](../agent/LOOP.md) |
>
> Backlog items may reference this file as **ROADMAP § \<item\>**. When
> something ships, lasting design notes get a ✓ entry here; the BACKLOG
> line is deleted.
## Roadmap ## Roadmap
- **Menu system** (apps launcher + theme switching + system actions), built - **Menu system** (apps launcher + theme switching + system actions), built

167
docs/VISION.md Normal file
View File

@@ -0,0 +1,167 @@
# Product vision — toward Nomarchy v1.0
North star for **what the product should feel like**, not a task queue.
Pillars stay in [`agent/GOALS.md`](../agent/GOALS.md). Executable work
lives only in [`agent/BACKLOG.md`](../agent/BACKLOG.md).
**How agents use this file**
1. Read the relevant section when orienting on product work.
2. Slice concrete work into **PROPOSED** (or wait for human triage into
NOW/NEXT) with a one-paragraph pitch and `VISION § <heading>`.
3. Do **not** implement multi-week themes in one iteration — split.
4. When a slice ships, leave a ✓ note here or in ROADMAP if the design
decision should outlive the backlog line.
**Philosophy reminder:** opinionated and stable over option sprawl. Prefer
safer defaults, one golden path, and menu/doctor surfaces over install-time
questionnaires and `nomarchy.apps.*` toggles for bare packages.
---
## North-star user (v1 window)
> **Framework / modern AMD-or-Intel laptop, little or no Nix, wants a
> beautiful desktop that never bricks, configured from the menu.**
Work that does not serve this user for the v1.0 window should stay LATER
or PROPOSED unless it unblocks stability.
---
## v1.0 release bar
Ship the **v1** branch pointer only when these are honestly true (human
judgment; agents prepare, do not advance `v1`):
| Bar | Done looks like |
|-----|-----------------|
| **Install golden path** | Offline (or documented online) install → first boot themed desktop; swap=0 and unattended LUKS contracts correct |
| **Default identity** | Boreal (or chosen default) is the seed theme; picker has preview |
| **Day-2 confidence** | Doctor covers real failure modes; firmware and fingerprint are discoverable without reading the README |
| **Hardware story** | `docs/HARDWARE.md` matches code; option-docs green; i2c/ddcci documented |
| **Honesty** | No “done” claims past verified tier; HARDWARE-QUEUE cleared or consciously deferred |
| **Docs map** | README + `docs/README.md` + agent README agree on where things live |
Not required for v1.0: dual-boot, Secure Boot, multi-disk RAID, aarch64,
Steam Deck, docs website, binary cache.
---
## Theme A — Day-2 confidence (highest product ROI)
The install is already strong. The gap is **after** first boot.
| Idea | Intent | Likely home |
|------|--------|-------------|
| **System Firmware** | fwupd is on but CLI-only; menu: refresh → list → confirm → update (never auto-flash) | BACKLOG Hardware product |
| **Fingerprint menu** | Enroll/list when fprintd present; optional PAM + rebuild note | BACKLOG Hardware product |
| **Doctor hardware section** | NM, sink, optional GPU smoke, fprintd, fwupd pending, charge threshold | BACKLOG Hardware product |
| **Machine health entry** | One System row → doctor (not five submenus) | Menu / doctor |
| **Human rebuild errors** | On failed switch, point at last log lines + `nomarchy-doctor` | pkgs / menu |
| **HM pre-activate fail flag** | Durable recovery one-liner on target if bake failed | Installer |
Reference: [HARDWARE.md](HARDWARE.md) §4§5, §10.
---
## Theme B — First week experience
| Idea | Intent | Notes |
|------|--------|-------|
| **Silent first-week card** | One dismissible “youre set” (menu, theme, wallpaper, network) — not a wizard | Prefer notify or doctor “first boot” section |
| **Boreal as default** | Identity on first boot | BACKLOG PROPOSED already |
| **Generation readability** | “What changed last rebuild” in plain language | Rollback exists; story is incomplete |
| **Post-install hints** | One-shot MOTD/notify for fwupd / fprintd when relevant | Avoid permanent nag |
---
## Theme C — Laptop daily driver
| Idea | Intent | Notes |
|------|--------|-------|
| **Dock life** | Lid closed + external only, wake, default audio sink on undock | Display profiles exist — polish edge cases |
| **Hibernate/sleep confidence** | Doctor: resume device, swap size, clean suspend journal | Trust > new power UI |
| **Battery health readout** | Cycles / charge limit where sysfs allows | Report-only |
| **Charge-limit instant apply** | Already PROPOSED `[blocked:hw]` | Keep privilege tradeoff explicit |
---
## Theme D — Beauty without theme sprawl
| Idea | Intent | Notes |
|------|--------|-------|
| **Fewer themes, sharper** | Finish or quarantine neon-glass; invest in whole-swap quality | Contrast stays gated |
| **Time-of-day pair** | Auto light/dark (e.g. summer-day ↔ summer-night) from schedule | Still one theme engine |
| **Theme switch speed** | Wallpapers artifact split (LATER) if switches still feel slow | GOALS: no second pipeline |
---
## Theme E — Menu as the product
| Idea | Intent | Notes |
|------|--------|-------|
| Root stays six entries | New features go Tools / System | CONVENTIONS |
| Secrets module | Only if a vault story is adopted (rofi-rbw deferred) | Dont tease |
| Look & Feel group | Night-light, wallpaper, blur — when enough toggles exist | ROADMAP optional |
---
## Theme F — Narrative & community
| Idea | Intent | Notes |
|------|--------|-------|
| **Omarchy migrant one-pager** | Bindings/theme/install map | `docs/` short guide |
| **Hardware hall of fame** | Install-tested models; invite DMI PRs | Ties to HARDWARE.md §9 |
| **60s demo** | Live → install → theme → menu | Outside repo OK |
---
## Theme G — Deliberate non-sprawl
| Idea | Intent |
|------|--------|
| Starter apps: curate yearly, dont grow `nomarchy.apps.*` | Template SoT already |
| Gaming/creator: comment blocks in template, not new modules | Steam/OBS already services |
| Installer stays golden-path | No dual-boot/partition wizard for v1 |
---
## Theme H — Quality bar when ideas run dry
1. Burn down [HARDWARE-QUEUE.md](../agent/HARDWARE-QUEUE.md) (V3 only you can close).
2. Fix install contracts (swap=0, unattended LUKS fail-closed).
3. Visual ritual: default-theme screenshots before each `v1` fast-forward.
4. option-docs + theme-contrast always green on `main`.
---
## Out of scope (reaffirm)
From GOALS non-goals and installer audits — do not “fill the roadmap” with:
- Binary cache as a product
- Multi-DE / GTK4 launcher / second theming pipeline
- Repo-wide formatter without a Decision
- nixpkgs major bump on `main` (thats a deliberate `v2`)
- Option sprawl for bare package installs
---
## Suggested agent slices (promote via PROPOSED → NEXT)
Small enough for one iteration each; reference this file:
1. `VISION § v1.0` — default theme → boreal (seed state + fallbacks)
2. `VISION § A` — System Firmware (fwupd wrapper)
3. `VISION § A` — doctor hardware section (read-only checks)
4. `VISION § A` — fingerprint enroll menu (self-gated)
5. `VISION § B` — first-boot dismissible tips (one surface)
6. `VISION § A` — human-facing rebuild failure hint
7. `VISION § v1.0` — install P0 contracts (swap / unattended LUKS)
8. `VISION § D` — neon-glass quarantine or finish
9. `VISION § F` — Omarchy migrant doc (short)
10. `VISION § H` — HARDWARE-QUEUE session notes only Bernardo runs
Larger themes (dock life, time-of-day theme, wallpapers split) stay
`[big]` until split.