diff --git a/agent/managed-skills/docs-dedupe-verify-campaign/SKILL.md b/agent/managed-skills/docs-dedupe-verify-campaign/SKILL.md new file mode 100644 index 0000000..efda438 --- /dev/null +++ b/agent/managed-skills/docs-dedupe-verify-campaign/SKILL.md @@ -0,0 +1,36 @@ +--- +name: docs-dedupe-verify-campaign +description: "Run an exhaustive docs dedupe + fact-verification campaign in dank/command-center: scout cluster ledgers, evidence-overridden merges, live fleet probes, log compaction law, and landing via Gitea PR." +--- + +Campaign procedure for deduping + fact-checking `omp-docs/` in dank/command-center (proven on Refs #29, 2026-10-19: 8 commits, -2,229 lines, 0 lint/coverage/bats failures). + +## 1. Recon +- Fresh branch off `origin/main` in a new worktree (`git worktree add ~/.omp/wt/ -b docs/- origin/main`); the session worktree's `git checkout -b` is policy-blocked. +- Run `scripts/kb-lint.sh omp-docs` baseline; write a throwaway index-coverage checker (each dir's `index.md` must link every subdir/file) — mechanical, no scout needed. +- Open the Gitea issue first (multi-moving-parts law). + +## 2. Scout fan-out (overlap detection) +- One `task` batch, `agent: scout`, one task per doc cluster + one cross-cutting sweep (cap 2 concurrent; rest queue). +- Each scout writes a ledger to `local://dedupe/.md`: inventory table (file, lines, purpose, verdict KEEP/MERGE/DELETE/UPDATE), overlaps, facts-to-keep ledger, inbound links, staleness, claims-needing-verification. +- Scouts are LEADS, not truth. Observed failures: fabricated ledger entries (claims about text that does not exist in any file), a DELETE verdict on a generated artifact that is under test (`tools/niri/keybindings.md` is generated by `scripts/gen-keybinds.sh` and tested by `tests/gen-keybinds.bats` — keep), and a KEEP based on misreading a changelog leftover. Re-derive every consequential verdict from the files/repo yourself. + +## 3. Verify fleet facts live (never trust doc dates) +- Read-only BatchMode probes: `ssh -o BatchMode=yes dankclaw '...'` (podman ps/inspect, systemctl status, curl localhost, os-release, cpuinfo). `sudo -n` only has systemctl verbs — use `podman exec grep/cat` for in-container files. +- Update docs with dated drift banners ("probed 2026-10-19") for policy divergence; NEVER silently re-apply a policy — flag as operator decision (e.g. SearXNG engine policy). + +## 4. Verify external claims via direct web research (no subagents) +- Version/protocol/benchmark claims: primary source only (upstream README, raw.githubusercontent, /api/v1/version, arxiv). If a number cannot be re-attributed to a published benchmark, drop it with an explicit note in the doc. +- Fabrication hunt: invented distros/projects/model names (found: "FreeToken" distro, ornith-llama-cpp-setup tree, Intel CPU on an AMD box) — delete the artifact, not just the line. + +## 5. Log compaction law +- Changelog entry = date + what changed + durable lesson + concept-page pointer, few lines. Full narratives live in git (`git log --follow`). Record the law at the top of `log.md`. Never re-expand an entry in place. Keep pi-era entries tagged "(pi era)". + +## 6. Gates + landing +- Gate every commit: `bash scripts/kb-lint.sh omp-docs` + index-coverage + `bats tests/` (67 tests). Pre-commit hook prints `error: command not found: caddy` on Caddyfile-touching commits — warning only, commit still lands. +- Gitea API auth: `~/.config/secrets/gitea` is **URL-form** (`http://dank:@host`), not a raw token. Extract: `T=$(sed -n 's|.*://[^:]*:\([^@]*\)@.*|\1|p' ~/.config/secrets/gitea | head -1)`; raw `cat` as bearer token → 401. +- PR body ends with `---` + `cwd: · session: ` footer; then `xdg-open ` immediately; comment the campaign ledger summary on the issue. NEVER merge without Frank's explicit OK. + +## Edit-tool field notes (recurring traps) +- `PUT N+=:` is invalid syntax — it inserts the literal text. One insert-op per edit call; recompute line numbers per call. +- File hash tag changes after every edit — re-`read` before each subsequent edit call to the same file; reusing a stale tag is rejected. diff --git a/agent/memories/sharpshooter/wt-20261019-011132-7c8a99d-y69mcckuzbqu/state.json b/agent/memories/sharpshooter/wt-20261019-011132-7c8a99d-y69mcckuzbqu/state.json index ff207de..d9cc3aa 100644 --- a/agent/memories/sharpshooter/wt-20261019-011132-7c8a99d-y69mcckuzbqu/state.json +++ b/agent/memories/sharpshooter/wt-20261019-011132-7c8a99d-y69mcckuzbqu/state.json @@ -1,6 +1,6 @@ { "v": 1, - "lastConsolidatedAt": 1792407752477, + "lastConsolidatedAt": 1792411412495, "lastResult": { "at": 1792401456699, "sessions": 1, diff --git a/agent/memories/sharpshooter/wt-20261019-020309-6d1fc1f-8knxmfcrfa1k/state.json b/agent/memories/sharpshooter/wt-20261019-020309-6d1fc1f-8knxmfcrfa1k/state.json index 1a01c81..d47eb0f 100644 --- a/agent/memories/sharpshooter/wt-20261019-020309-6d1fc1f-8knxmfcrfa1k/state.json +++ b/agent/memories/sharpshooter/wt-20261019-020309-6d1fc1f-8knxmfcrfa1k/state.json @@ -1,6 +1,6 @@ { "v": 1, - "lastConsolidatedAt": 1792407849871, + "lastConsolidatedAt": 1792411509877, "lastResult": { "at": 1792402864677, "sessions": 1, diff --git a/agent/memories/sharpshooter/wt-20261019-021028-6d1fc1f-3p69q8c3d94kw/state.json b/agent/memories/sharpshooter/wt-20261019-021028-6d1fc1f-3p69q8c3d94kw/state.json index df18373..2d18ae0 100644 --- a/agent/memories/sharpshooter/wt-20261019-021028-6d1fc1f-3p69q8c3d94kw/state.json +++ b/agent/memories/sharpshooter/wt-20261019-021028-6d1fc1f-3p69q8c3d94kw/state.json @@ -1,6 +1,6 @@ { "v": 1, - "lastConsolidatedAt": 1792407928559, + "lastConsolidatedAt": 1792411648565, "lastResult": { "at": 1792401394555, "sessions": 1, diff --git a/dotfiles/noctalia/.local/state/noctalia/settings.toml b/dotfiles/noctalia/.local/state/noctalia/settings.toml index d194018..d563e09 100644 --- a/dotfiles/noctalia/.local/state/noctalia/settings.toml +++ b/dotfiles/noctalia/.local/state/noctalia/settings.toml @@ -275,10 +275,10 @@ transition = [ "fade" ] interval_seconds = 1200 [wallpaper.default] - path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_831k3y.jpg" + path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_odl3r9.jpg" [wallpaper.last] - path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_831k3y.jpg" + path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_odl3r9.jpg" [wallpaper.monitors.DP-1] path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_y8ewzk.jpg" @@ -290,7 +290,7 @@ transition = [ "fade" ] path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_v9e2w3.jpg" [wallpaper.monitors.eDP-1] - path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_831k3y.jpg" + path = "/home/blank/.local/share/noctalia/wallpapers/wallhaven_odl3r9.jpg" [weather] unit = "imperial"