Stop the deploy tier from reverting live theme state
Found by doing the obvious thing #41 should have included: running deploy.sh --check
against the live box after the merge. Three findings, one commit — they share the deploy
tier, its docs, and the first test file that tier ever had. Refs #42.
1. Generated palette output was tracked, and a sync would have restored it over your live theme
dotfiles/zz-blankpad/niri/.config/niri/noctalia.kdl (b3d3df4, 2026-10-18) is noctalia's
palette output — machine-written, #ff8c00 / #f43841. It sat byte-identical to the
live file, so it looked inert, and --check was already proposing ADOPT .config/niri/noctalia.kdl (identical, will symlink). The first time you changed
theme, the next deploy.sh would have quarantined your live palette and reinstated the
colours of 2026-10-18 — a user-visible revert with a .quarantine/ receipt as its only
trace.
deploy.sh now refuses the class: SKIP … (generated theme output), patterns mirrored in .gitignore so it cannot be re-added, file untracked.
2. A zz override older than the file it overrides
dotfiles/zz-blankpad/niri/…/layout.kdl: focus ring width 2, active-color "#e01b24"
(7b7dbf5, 2026-10-17) — while base absorbed b3d3df4 (2026-10-18): width 4, "#ff8c00".
Stow order makes zz-$HOST win, and a cross-package owner change is a silent relink
(the script's own comment: "nothing to quarantine"). Live was linked to base, the newer
intent, so every --check printed RELINK .config/niri/cfg/layout.kdl and one unattended deploy.sh would have quietly reverted the amber focus ring. Duplicate deleted; base owns
the file. The law recorded with it: a zz file exists only to differ, and RELINK lines
are never cosmetic noise.
3. Two topologies I asserted in #41 and never measured
The media law and the .gitignore comment both claimed ~/.local/share/noctalia/wallpapers symlinks into the repo, so deleting the tracked copies would have blanked the desktop.
Measured: it is a real directory of real files that Noctalia owns; the repo copy was a
duplicate, and the #41 merge deleted it without the desktop flickering. Nothing was ever at
risk. What replaces the false claim is the law that actually bites: untracking a path
deletes the file in every other checkout, git rm --cached on the branch notwithstanding
— the copy that survives here survived because the application, not the repo, owned it.
Guard
tests/deploy.bats — new; there was no deploy test at all. Black box: exit status, stdout,
the symlink shape under $HOME, the quarantine directory. Red before the change (test 2
fails precisely because the live palette is quarantined and reverted), 4/4 after, with a
control proving an ordinary identical config is still adopted — an exclusion nobody can turn
off is just a broken tool.
Verification
bats tests/66/66, kb-lint.sh omp-docs 0 violations, kb-coverage.py 0 issues.
Live deploy.sh --check on blankpad, with DEPLOY_REPO pointed at this tree: actions=0,
and SKIP … (generated theme output) where it used to say ADOPT … noctalia.kdl.
Deliberately not done: the real deploy.sh run that clears the remaining RELINK lines.
Running it from a worktree would repoint live symlinks into a checkout the heartbeat reaps
after seven days (the law in omp-docs/tools/dotfiles-deploy.md). It runs on blankpad from ~/.omp once this is merged, and the acceptance check is two consecutive --check runs
printing zero actions.
# Stop the deploy tier from reverting live theme state
Found by doing the obvious thing #41 should have included: running `deploy.sh --check`
against the live box after the merge. Three findings, one commit — they share the deploy
tier, its docs, and the first test file that tier ever had. Refs #42.
## 1. Generated palette output was tracked, and a sync would have restored it over your live theme
`dotfiles/zz-blankpad/niri/.config/niri/noctalia.kdl` (`b3d3df4`, 2026-10-18) is noctalia's
palette **output** — machine-written, `#ff8c00` / `#f43841`. It sat byte-identical to the
live file, so it looked inert, and `--check` was already proposing
`ADOPT .config/niri/noctalia.kdl (identical, will symlink)`. The first time you changed
theme, the next `deploy.sh` would have **quarantined your live palette and reinstated the
colours of 2026-10-18** — a user-visible revert with a `.quarantine/` receipt as its only
trace.
`deploy.sh` now refuses the class: `SKIP … (generated theme output)`, patterns mirrored in
`.gitignore` so it cannot be re-added, file untracked.
## 2. A `zz` override older than the file it overrides
`dotfiles/zz-blankpad/niri/…/layout.kdl`: focus ring `width 2`, `active-color "#e01b24"`
(`7b7dbf5`, 2026-10-17) — while base absorbed `b3d3df4` (2026-10-18): `width 4`, `"#ff8c00"`.
Stow order makes `zz-$HOST` win, and a cross-package owner change is a **silent relink**
(the script's own comment: *"nothing to quarantine"*). Live was linked to base, the newer
intent, so every `--check` printed `RELINK .config/niri/cfg/layout.kdl` and one unattended
`deploy.sh` would have quietly reverted the amber focus ring. Duplicate deleted; base owns
the file. The law recorded with it: a `zz` file exists only to differ, and `RELINK` lines
are never cosmetic noise.
## 3. Two topologies I asserted in #41 and never measured
The media law and the `.gitignore` comment both claimed `~/.local/share/noctalia/wallpapers`
*symlinks into* the repo, so deleting the tracked copies would have blanked the desktop.
Measured: it is a **real directory of real files** that Noctalia owns; the repo copy was a
duplicate, and the #41 merge deleted it without the desktop flickering. Nothing was ever at
risk. What replaces the false claim is the law that actually bites: **untracking a path
deletes the file in every other checkout**, `git rm --cached` on the branch notwithstanding
— the copy that survives here survived because the application, not the repo, owned it.
## Guard
`tests/deploy.bats` — new; there was no deploy test at all. Black box: exit status, stdout,
the symlink shape under `$HOME`, the quarantine directory. Red before the change (test 2
fails precisely because the live palette *is* quarantined and reverted), 4/4 after, with a
control proving an ordinary identical config is still adopted — an exclusion nobody can turn
off is just a broken tool.
## Verification
`bats tests/` **66/66**, `kb-lint.sh omp-docs` 0 violations, `kb-coverage.py` 0 issues.
Live `deploy.sh --check` on blankpad, with `DEPLOY_REPO` pointed at this tree: `actions=0`,
and `SKIP … (generated theme output)` where it used to say `ADOPT … noctalia.kdl`.
**Deliberately not done:** the real `deploy.sh` run that clears the remaining `RELINK` lines.
Running it from a worktree would repoint live symlinks into a checkout the heartbeat reaps
after seven days (the law in `omp-docs/tools/dotfiles-deploy.md`). It runs on blankpad from
`~/.omp` once this is merged, and the acceptance check is two consecutive `--check` runs
printing zero actions.
---
cwd: /home/blank/.omp/wt/wt-20261019-125509-7c8a99d · session: 01a155bb-6474-7366-be9d-629f74af0e05
Build worktree: `~/.omp/wt/wt-deploy-generated` off `origin/main`. Refs #42
Three findings from verifying the #41 merge against the live box with
`deploy.sh --check`. One commit because they share the deploy tier, its
documentation, and the first test file that tier ever had.
**1. Generated palette output was tracked, and sync would have restored it over a
live theme.** `dotfiles/zz-blankpad/niri/.config/niri/noctalia.kdl` (`b3d3df4`,
2026-10-18) sat byte-identical to the live file — harmless while the palette held, and
`--check` was already proposing `ADOPT … noctalia.kdl`. The moment the theme changed, the
next sync would have quarantined the live file and reinstated 2026-10-18's colours.
`deploy.sh` now refuses the class outright (`SKIP … (generated theme output)`), `.gitignore`
carries the matching patterns so it cannot be re-added, and the file is untracked.
**2. A `zz` override older than the file it overrides.** `dotfiles/zz-blankpad/niri/…/
layout.kdl` held focus ring `width 2` / `#e01b24` (`7b7dbf5`, 2026-10-17) while base
absorbed `b3d3df4` (2026-10-18): `width 4`, `#ff8c00`. Stow order makes `zz-*` win, and a
cross-package owner change relinks *silently* — no quarantine, no warning. Live was linked
to base, the newer intent, so `--check` printed `RELINK … layout.kdl` every run and one
unattended `deploy.sh` would have reverted the amber focus ring. The duplicate is deleted;
base owns the file.
**3. Two topologies I had asserted and not measured.** The media law and the `.gitignore`
comment both said `~/.local/share/noctalia/wallpapers` symlinks into the repo, so deleting
the tracked copies would blank the desktop. Measured: it is a real directory of real files
that Noctalia owns; the repo held a duplicate, and the #41 merge deleted that duplicate
without the desktop flickering. The correct general law replaces the false one — untracking
a path deletes the file in every other checkout, `git rm --cached` on the branch
notwithstanding — and the restore procedure now points at the app's directory, which
`deploy.sh` does not manage.
The guard is `tests/deploy.bats`, black-box over exit status, stdout, the symlink shape
under `$HOME`, and the quarantine directory. Before the change: test 1 and test 2 fail,
test 2 because the live palette really is quarantined and reverted. After: 4/4, including
the control that an ordinary identical config is still adopted — an exclusion nobody can
turn off is just a broken tool.
Verification: `bats tests/` 66/66, `kb-lint.sh omp-docs` 0 violations, `kb-coverage.py` 0
issues, and live `deploy.sh --check` on blankpad reports `SKIP … (generated theme output)`
with `actions=0` instead of `ADOPT … noctalia.kdl`. The real `deploy.sh` run that clears the
remaining `RELINK` lines is deliberately left until this is in main — running it from a
worktree would repoint live symlinks into a checkout the heartbeat reaps.
Refs #42
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Stop the deploy tier from reverting live theme state
Found by doing the obvious thing #41 should have included: running
deploy.sh --checkagainst the live box after the merge. Three findings, one commit — they share the deploy
tier, its docs, and the first test file that tier ever had. Refs #42.
1. Generated palette output was tracked, and a sync would have restored it over your live theme
dotfiles/zz-blankpad/niri/.config/niri/noctalia.kdl(b3d3df4, 2026-10-18) is noctalia'spalette output — machine-written,
#ff8c00/#f43841. It sat byte-identical to thelive file, so it looked inert, and
--checkwas already proposingADOPT .config/niri/noctalia.kdl (identical, will symlink). The first time you changedtheme, the next
deploy.shwould have quarantined your live palette and reinstated thecolours of 2026-10-18 — a user-visible revert with a
.quarantine/receipt as its onlytrace.
deploy.shnow refuses the class:SKIP … (generated theme output), patterns mirrored in.gitignoreso it cannot be re-added, file untracked.2. A
zzoverride older than the file it overridesdotfiles/zz-blankpad/niri/…/layout.kdl: focus ringwidth 2,active-color "#e01b24"(
7b7dbf5, 2026-10-17) — while base absorbedb3d3df4(2026-10-18):width 4,"#ff8c00".Stow order makes
zz-$HOSTwin, and a cross-package owner change is a silent relink(the script's own comment: "nothing to quarantine"). Live was linked to base, the newer
intent, so every
--checkprintedRELINK .config/niri/cfg/layout.kdland one unattendeddeploy.shwould have quietly reverted the amber focus ring. Duplicate deleted; base ownsthe file. The law recorded with it: a
zzfile exists only to differ, andRELINKlinesare never cosmetic noise.
3. Two topologies I asserted in #41 and never measured
The media law and the
.gitignorecomment both claimed~/.local/share/noctalia/wallpaperssymlinks into the repo, so deleting the tracked copies would have blanked the desktop.
Measured: it is a real directory of real files that Noctalia owns; the repo copy was a
duplicate, and the #41 merge deleted it without the desktop flickering. Nothing was ever at
risk. What replaces the false claim is the law that actually bites: untracking a path
deletes the file in every other checkout,
git rm --cachedon the branch notwithstanding— the copy that survives here survived because the application, not the repo, owned it.
Guard
tests/deploy.bats— new; there was no deploy test at all. Black box: exit status, stdout,the symlink shape under
$HOME, the quarantine directory. Red before the change (test 2fails precisely because the live palette is quarantined and reverted), 4/4 after, with a
control proving an ordinary identical config is still adopted — an exclusion nobody can turn
off is just a broken tool.
Verification
bats tests/66/66,kb-lint.sh omp-docs0 violations,kb-coverage.py0 issues.Live
deploy.sh --checkon blankpad, withDEPLOY_REPOpointed at this tree:actions=0,and
SKIP … (generated theme output)where it used to sayADOPT … noctalia.kdl.Deliberately not done: the real
deploy.shrun that clears the remainingRELINKlines.Running it from a worktree would repoint live symlinks into a checkout the heartbeat reaps
after seven days (the law in
omp-docs/tools/dotfiles-deploy.md). It runs on blankpad from~/.omponce this is merged, and the acceptance check is two consecutive--checkrunsprinting zero actions.
cwd: /home/blank/.omp/wt/wt-20261019-125509-7c8a99d · session: 01a155bb-6474-7366-be9d-629f74af0e05
Build worktree:
~/.omp/wt/wt-deploy-generatedofforigin/main. Refs #42dank referenced this pull request2026-10-20 17:11:11 -07:00