test(state): #133 — pin the #107 legacy-name shim (and its fail-closed gate)
All checks were successful
Check / eval (push) Successful in 4m9s
All checks were successful
Check / eval (push) Successful in 4m9s
mkFlake prefers state.json and still accepts the legacy theme-state.json, because a machine only migrates on its next menu write. Nothing evaluated a checkout carrying ONLY the legacy name, so the shim could rot with every check green — breaking rebuilds for precisely the users who have not opened the menu since #107, i.e. the ones least likely to see it coming. checks.state-legacy-name evaluates two fixtures: legacy-only must resolve, and no-state-at-all must still throw. The gate is half the shim's contract (it turns "no state file" into one readable error instead of a readFile stack from inside the module system) and was equally unpinned. Cheap by construction: mkFlake wraps its return in `builtins.seq _themeState`, so forcing the attrset forces the state read and nothing else — no module system, no home.nix. Hence a one-file fixture and no measurable cost (flake check still ~35s). That file is a SYMLINK to the shipped template's state.json: a copy would drift and the check would quietly start testing a fossil. The fixture also asserts it has no state.json, or it would pass while testing nothing. Both assertions proven by breaking lib.nix — deleting the fallback, then defeating the gate — and watching each fail by name. Delete this check together with the shim and the nomarchy-theme-sync alias. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -153,18 +153,6 @@ whether Nomarchy holds itself higher — darker label, or a darker accent mix
|
||||
for light palettes — and note `tools/check-theme-contrast.py` covers palette
|
||||
pairings only, never GTK widget surfaces. `[human]` for the aesthetic call.
|
||||
|
||||
### 133. No check pins the #107 legacy-name compat shim
|
||||
|
||||
`lib.mkFlake`, doctor and lifecycle all still accept `theme-state.json`, and
|
||||
`nomarchy-state-sync` migrates it on write — but nothing in `checks.*`
|
||||
evaluates a checkout that has *only* the legacy name, so the shim can rot
|
||||
silently while every check stays green. It is load-bearing until every
|
||||
existing machine has taken one menu write. Add a cheap eval check: a fixture
|
||||
dir with `theme-state.json` only → `mkFlake` resolves it; plus the write-side
|
||||
migration (state.json created + git-staged, legacy `git rm`'d). Proven by
|
||||
hand 2026-07-15 (drvPaths identical across the rename) — this just keeps it
|
||||
proven. Delete together with the shim + the `nomarchy-theme-sync` alias.
|
||||
|
||||
### 143. Rofi keeps the selected *row number* when the search changes, so the highlight lands on an unrelated entry
|
||||
|
||||
Bernardo 2026-07-16, and his repro is exact: open the app menu, type `ca`, move
|
||||
|
||||
Reference in New Issue
Block a user