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
101 lines
3.2 KiB
Plaintext
101 lines
3.2 KiB
Plaintext
# ============================================================================
|
|
# Command-center repo: config in, state out.
|
|
# Everything ignored here is runtime state a running agent mutates constantly.
|
|
# Git history must mean "the configuration changed", not "the agent breathed".
|
|
# ============================================================================
|
|
|
|
# --- databases + sqlite sidecars (hot, binary, unbounded growth) -----------
|
|
*.db
|
|
*.db-shm
|
|
*.db-wal
|
|
*.sqlite
|
|
*.sqlite3
|
|
|
|
# --- runtime state dirs -----------------------------------------------------
|
|
cache/
|
|
agent/cache/
|
|
logs/
|
|
run/
|
|
sessions/
|
|
terminal-sessions/
|
|
ssh-control/
|
|
remote-host/
|
|
|
|
# --- quarantined secrets: never tracked, ever ------------------------------
|
|
auth.json
|
|
**/auth.json
|
|
.env
|
|
**/.env
|
|
*.env
|
|
# `*.env` is the rule that matters: `.env` alone does not match `postgres.env`
|
|
# or `frank-job-hunt.env`, and those are the files that actually carry
|
|
# POSTGRES_PASSWORD / API keys on this fleet (issue #40).
|
|
trust.json
|
|
**/trust.json
|
|
*.pem
|
|
*.key
|
|
identity*
|
|
|
|
# --- dependency installs (regenerable from manifests) ----------------------
|
|
node_modules/
|
|
bun.lock
|
|
package-lock.json
|
|
|
|
# --- misc ephemera ----------------------------------------------------------
|
|
gpu_cache.json
|
|
last-changelog-version
|
|
.DS_Store
|
|
*.swp
|
|
*.tmp
|
|
|
|
# --- per-host runtime identity + caches (never config) ---------------------
|
|
agent/blobs/
|
|
install-id
|
|
puppeteer/
|
|
webcache/
|
|
|
|
# --- local backups + staging artifacts: kept on disk, never in history -----
|
|
.AGENTTRASH/
|
|
*.save
|
|
*.bak-*
|
|
|
|
# deploy quarantine — never tracked
|
|
.quarantine/
|
|
|
|
# harness runtime transcripts: local-only, may contain raw session secrets
|
|
agent/sessions/
|
|
|
|
# harness diagnostic report bundles (tarballs of logs + session state)
|
|
reports/
|
|
|
|
# --- agent runtime scratch: research runs, decode predictions, worktrees ----
|
|
autoresearch/
|
|
agent/predict/
|
|
local/
|
|
wt/
|
|
|
|
# --- per-worktree memory buckets: keyed on ephemeral worktree paths ---------
|
|
# A session run inside a git worktree mints a bucket named after the worktree
|
|
# path; the worktree is deleted, the bucket is orphan state, not config.
|
|
agent/memories/--home-blank-.omp-wt-*
|
|
|
|
# --- theme media: content the pipeline consumes, not configuration ---------
|
|
# 23 wallpapers, 80 MiB. Tracked until 2026-10-20: every clone of a config repo was
|
|
# carrying a library no diff can review. The live library at
|
|
# ~/.local/share/noctalia/wallpapers is a real directory of real files (measured
|
|
# 2026-10-20), so this path in the repo was a duplicate of it, not its source — and
|
|
# note that untracking deletes the copy in every other checkout regardless of
|
|
# `git rm --cached` on the branch. A fresh box starts with an empty library; every
|
|
# filename carries its wallhaven ID, so `curl -L -o <name> https://wallhaven.cc/w/<id>`
|
|
# puts it back. Law: omp-docs/tools/dotfiles-deploy.md
|
|
dotfiles/noctalia/.local/share/noctalia/wallpapers/
|
|
|
|
# --- generated theme output: machine-written, never reviewable, never deployed ---
|
|
# noctalia/matugen rewrite these in place; a tracked copy is a stale snapshot that
|
|
# deploy.sh would push back over a live palette. Patterns match the exclusion list in
|
|
# scripts/deploy.sh. Law: omp-docs/inventory/home-config-census.md, Refs #42
|
|
dotfiles/**/themes/noctalia*
|
|
dotfiles/**/colors/noctalia*
|
|
dotfiles/**/noctalia.*
|
|
dotfiles/**/noctalia-*
|