The actual documents the agents read and work from, shown exactly as they are on disk — not a summary. See the progress view instead · All projects
# FILES CLEANUP — the area 1 fixes from the system review, one card, one file
Owner: Nick. Purpose: plan — a punch list of steps, each with its proof, in the shape RULE 51 names for a build like this ("a list of steps to complete and test that live in one doc and card"). Born 2026-09-18 on Nick's word: "triad to confirm then we act on all recs".
Source: `projects/ops/system-review/PLAN.md` — RANKED 1, ATTACK 1 and TRIAD 1 (the corrected list). Card: `nt-20260918-221246-445d` on the AI Builds board, bound to this file 2026-09-18. Rule of the lane: nothing is deleted except the one empty scratch file; every untrack keeps the file on disk and in history; every untracked path gets an ignore entry in the same commit or the autopush stages it back; every path a live process reads goes on the pull-time rescue list first.
## Steps
1. Rescue list first: add `projects/personal/skippy-app/node_modules`, `projects/personal/skippy-app/cart/.cart-profile`, `projects/ops/agents/larry/candidates` and the three binaries' folders to `projects/ops/skippy-jobs/lib/preserve-live-state.sh`, and make the machine setup script reinstall when `node_modules` is hollow, not only when it is absent. PROOF: `sh projects/ops/skippy-jobs/lib/preserve-live-state.sh save` then `ls` the rescue folder shows the new paths. FAILS IF: a path is missing from the rescue folder.
2. Untrack the ignored-but-tracked state (row 1, corrected): every tracked path under `projects/personal/skippy-app/node_modules/`, `projects/personal/skippy-app/ala-state/` and `projects/ops/skippy-jobs/state/` that `.gitignore` already matches, EXCEPT the three append-only journals and the agent-signal records, which stay tracked and are named in the commit. PROOF: `git ls-files -i -c --exclude-standard | wc -l` drops from 12,268 to under 400 (the archive's 272 plus the kept records). FAILS IF: the journals or agent-signal files leave the record, or any file leaves the disk.
3. The two browser profiles (row 2): untrack both, add `**/.chrome-profile/` and `**/.cart-profile/` to `.gitignore`. PROOF: `git ls-files | command grep -c "\.chrome-profile/\|\.cart-profile/"` → 0, and both folders still exist on disk. FAILS IF: either count is wrong.
4. The 76 MB monthly output (row 3, corrected): untrack only `projects/ops/agents/larry/candidates/*-full.json`, ignore that pattern, keep the nightly files tracked. PROOF: `git ls-files projects/ops/agents/larry/candidates | wc -l` → 11 and the nightly files are all present. FAILS IF: a nightly file left the record.
5. The four typo-named files (row 4, corrected): rename `1`, `2.png` and `-.png` to names that say what they are (read each first), remove the empty `=1` as scratch. PROOF: `git ls-files | command grep -c "^1$\|^2\.png$\|^=1$\|^-\.png$"` → 0. FAILS IF: any remains.
6. The three binaries (row 5, corrected): untrack cloudflared, ngrok and yt-dlp, ignore them, add the fetch step for ngrok and yt-dlp to the machine setup script (cloudflared is already fetched by the mobile command), add a missing-file guard to the ngrok launcher; do the untrack while ngrok is not running or after the guard lands. PROOF: `git ls-files | command grep -c "skippy-app/cloudflared\|skippy-app/ngrok\|bin/yt-dlp"` → 0 and all three still on disk. FAILS IF: a binary left the disk or the setup script lacks the fetch.
7. The registry (row 6, corrected): repoint or retire the ten rows whose folder or plan is gone, each with a dated `retiredBecause`. PROOF: `python3 projects/ops/artifacts/project-status/build.py` prints zero "will NOT be published" warnings. FAILS IF: any remain.
8. The website folders (row 7, corrected): register `website`, `website-cms`, `website-meadow`, `website-rehost-work`, `website-reskin` as five different things; archive `website-v2`, `website-v3`, `website-v4-concept` by git mv under a dated archive folder; never touch `website-reskin/site`. PROOF: `ls projects/business | command grep -c "^website-v"` → 0 and the registry has five website rows. FAILS IF: the nested repository under the reskin moved.
9. The staging folder (row 9, Nick: archive): reconcile the 93 files against the 8 review rows; archive by git mv every file not on the list and every landed draft; leave the list's own files. PROOF: `git ls-files _staging | wc -l` → 8 or fewer plus the list itself. FAILS IF: a file was deleted rather than archived.
10. The large tracked files (row 10, Nick: untrack only): untrack and ignore every tracked file over 5 MiB outside the archive that is a dump, cache, export or recovered database, named in the commit; no history rewrite. PROOF: `git ls-tree -r -l HEAD | awk '$4>5242880' | command grep -vc "^.*projects/_archive"` falls from 124 to the count of genuine assets named in the commit. FAILS IF: a genuine asset (a video, a design file) was untracked.
11. Held: the ops-root documents (row 8) until a real list is measured; the cited-files rule question (row 11) until Nick reopens it.
## Verification
Each step is proven by its own PROOF, re-run once by a Sonnet verifier who did not do it, and its VERIFIED line goes into STEPS.json through the one update action.
## SUMMARY
**2026-09-18** — The code repository named deck-brain-2 holds the programs of Skippy, the assistant program Nick Deck runs. It carried 113 files larger than 5 MiB outside its archive folder. Nick ruled on 2026-09-18 that such files may stop being tracked but that history is never rewritten. Commit ed18e33f86 stopped tracking 53 of them, 587 MB in total, each named in the commit: nine database dump files extracted from the business database, one recovered copy of the database Skippy stores its messages in, one calendar cache, one raw calendar export, one output file that nothing reads, three rotated log files, and 37 test-output files written on 2026-08-30 that no plan cites. Each class is now listed in the ignore file so nothing of the kind can be committed again. The 60 large files that stay tracked are 54 design renders and lookbooks, the voice model the speech job loads, and four live data files other programs read. Every untracked file is still on the disk of the computer that made it and in the repository's history. A separate checking agent that did not do the work confirmed the counts, the sizes, the classes and the on-disk copies.
**2026-09-18** — The code repository named deck-brain-2 holds the programs of Skippy, the assistant program Nick Deck runs. At its top level is a folder named _staging where drafts wait for review. Its own review list, the file _staging/REVIEW-LIST.md, names eight draft files that have waited for Nick since 2026-08-26; those eight and the list stay. The other 84 tracked files in that folder were compared against the list: 72 of them, all last changed before 2026-09-16, were moved with their history kept into a dated archive folder, and twelve work-order files dated 2026-09-16 and 2026-09-18 belong to a piece of work that is still writing them today, so they were left in place for whoever owns that work. Nothing was deleted, and the generated list of retired projects was rebuilt to include the new archive folder. A separate checking agent that did not do the work confirmed the counts, the dates and the archive contents by path.
**2026-09-18** — The code repository named deck-brain-2 holds the programs of Skippy, the assistant program Nick Deck runs, and also his business website work, in nine folders under projects/business. Three of them, website-v2, website-v3 and website-v4-concept, were August versions nobody had touched since 2026-08-26; they were moved, with their history kept, into a dated archive folder that the tools are locked out of reading. The five live ones (website, website-cms, website-meadow, website-rehost-work and website-reskin) each got a row in the project registry file projects/ops/artifacts/project-status/registry.json, so each is a named project with an owner row. Two of the five have no written plan and their rows say so with a reason, and the script that builds the project status pages was taught to treat such a row as a registered folder with no page rather than as a warning. A ninth folder, heroes-sidekicks-website, is an empty pointer to a separate repository with no recorded address and was left alone for Nick to rule on. A separate checking agent that did not do the work confirmed every move, every row and the script's behaviour.
**2026-09-18** — The code repository named deck-brain-2 holds the programs of Skippy, the assistant program Nick Deck runs on his Mac computers. It carried three programs written by other companies, each about 30 MB, in every copy on every machine: ngrok, which opens the internet tunnel that lets Nick's phone reach Skippy's web server on the Mac; cloudflared, the fallback tunnel for the same purpose; and yt-dlp, which downloads audio from the web for the tool that turns recordings into text. Commit b1b49aec19 stopped tracking the three and listed them in the ignore file. The machine setup script projects/ops/machine-bootstrap.sh gained a section that downloads ngrok and yt-dlp from their makers only when the file is missing on that machine, and the launcher that starts Skippy's web server and tunnel, projects/personal/skippy-app/mobile-autostart.mjs, now stops with a message naming that setup script when ngrok is missing instead of crashing with no explanation. All three programs are still on disk and the live tunnel kept running throughout. A separate checking agent that did not do the work confirmed every part and ran the download function offline to prove a failed download leaves no half-written file behind.
**2026-09-18** — The code repository named deck-brain-2 holds the programs of Skippy, the assistant program Nick Deck runs on his Mac computers. It carried 11,795 files that its own ignore rules said should never be tracked: 7,426 files of downloaded third-party code that Skippy's web server depends on, 3,072 small receipt files that Skippy writes at run time (one per chat event, thread and reply), and 1,297 state files that Skippy's scheduled background jobs rewrite as they run. Commit 6d9de83ea8 stopped tracking all 11,795 and changed nothing else. Three append-only record files among the job state (the approvals journal, the ticket requests journal and the ask ledger) and 177 signal record files that agents leave for each other stay tracked on purpose, because people read those back as records. Every one of the 11,795 files is still on the disk of the computer that made it and still in the repository's history. A separate checking agent that did not do the work re-measured every number in three fresh copies and each matched.
**2026-09-18** — The code repository named deck-brain-2 is pulled automatically onto each of Nick Deck's three Mac computers every few minutes. A script inside it, projects/ops/skippy-jobs/lib/preserve-live-state.sh, runs around every such pull and copies a fixed list of folders aside and back, so that a pull which stops tracking a file can never remove that file from a disk. Before any file in this cleanup was untracked, that fixed list was extended with the eight folders and files the later cleanup steps would untrack, and a separate checking agent confirmed for each later step that its folder was already on the list before the untracking happened.
**2026-09-18** — In the deck-brain-2 code repository (the Claude 2.0 workspace on Nick's Macs) one 76 MB file, projects/ops/agents/larry/candidates/2026-08-31-full.json, the monthly output of Larry, the agent that scans the repository for broken and stale things, had been committed into the shared version history and copied to every machine. That file is now removed from the version history going forward, the pattern projects/ops/agents/larry/candidates/*-full.json is listed in the .gitignore file so no monthly output can be committed again, the nine dated nightly files in that folder that Larry reads each week stay tracked, and the file is still on the disk of the computer that made it, untouched, with its content recoverable from the previous commit 1dacc2c4b1. A second reviewing agent that did not do the work counted eleven tracked files, confirmed the file is still on disk, and created test files to prove the new ignore rule catches a monthly file and leaves a nightly one alone.
**2026-09-18** — In the deck-brain-2 code repository (the Claude 2.0 workspace on Nick's Macs) two folders of saved browser sign-in data had been committed into the shared version history and copied to every machine: 299 files under projects/personal/skippy-app/cart/.cart-profile (the shopping cart browser) and 410 files under projects/personal/family-app/redesign-mockups/concepts-2026-09-04-round10-screens/.chrome-profile (a screenshot browser for the family app redesign). Both folders are now removed from the version history going forward, the two folder patterns are listed in the .gitignore file so no browser profile folder anywhere in the repository can be committed again, and both folders are still on the disk of the Mac Studio untouched. A second reviewing agent that did not do the work counted the removals, confirmed the on-disk files are all still present, and created test files to prove the new ignore rule catches a profile folder.
**2026-09-18** — In the deck-brain-2 code repository (the Claude 2.0 workspace on Nick's Macs) the file projects/ops/artifacts/project-status/registry.json lists every project and the file it is tracked in, and a script beside it builds the project status pages from that list. Ten of its rows pointed at files that no longer existed, so the build script skipped those ten projects on every run. Five rows were repointed to the file that now holds each project, five rows for projects that ended in August and early September were marked retired with the dated archive folder each was moved to, one row for a project whose folder lives outside the repository was marked as an allowed external folder, and the build script now skips a retired or external row on purpose instead of warning. A second reviewing agent that did not do the work ran the build script on the new version and on the previous version side by side: the previous version skipped ten projects and the new version skips none, and every file the list now names exists on disk.
**2026-09-18** — In the deck-brain-2 code repository (the Claude 2.0 workspace on Nick's Macs), four files with accidental names sat at the top level and were carried in the shared version history. The file named 1 is now projects/business/marketing-sales/clients/captus/assets/stray-root-2026-09-08-catch-mistakes-aerial.png, the file named 2.png is now projects/business/marketing-sales/clients/captus/assets/stray-root-2026-09-08-catch-mistakes-tower.png, the file named -.png is now projects/business/brand/brand-guidelines-2026-slide-29-our-tone.png, and each of those three moves kept the file bytes identical. The file named =1 was an empty zero-byte file and was removed after its size was measured. A second reviewing agent that did not do the work confirmed on a clean copy of that repository that none of the four names remains, that each moved image is byte-for-byte the same file as before, and that the removed file was empty.
**2026-09-18** — On 18 September 2026 Nick approved eleven fixes to how files are stored and shared between his three Macs, each fix confirmed or corrected by a checker who had not proposed it. Step 1 is done. When one Mac pulls the others' changes, six named folders are now copied aside in full before the pull and put back after it, so no file that a running program reads can be removed by the pull. The script that sets up a new Mac now reinstalls the program libraries when their folder exists but is empty. Nine steps remain and none of them deletes a file.
## STEPS
```
1. Rescue list first — 100%
DEFINITION OF DONE: the new paths appear in the rescue folder after a save; the setup script reinstalls a hollow node_modules
PROOF: `sh projects/ops/skippy-jobs/lib/preserve-live-state.sh save`
VERIFIED: not yet — landed on main as cda5bf83f8 with a proof run by the builder (7426 of 7426 module files, 299 of 299 profile files, 12 of 12 candidate files, the three programs), and a Sonnet verifier is re-running it on a fresh checkout now
VERIFIED: Sonnet verifiers 2026-09-18 for steps 2, 3, 4 and 6 each grepped the rescue script on the landed commit and found the folders their step untracked inside FULL_PATHS; the step 2 verifier also found the bootstrap script's hollow-folder guard at line 326, PASS
2. Untrack the ignored-but-tracked state, keeping the journals — 100%
DEFINITION OF DONE: ignored-and-tracked count under 400; journals and agent signals still tracked; nothing left the disk
PROOF: `git ls-files -i -c --exclude-standard | wc -l`
VERIFIED: Sonnet verifier 2026-09-18 23:20Z in three fresh worktrees: 11795 deletions and nothing else, 0 outside the three folders, all 11795 ignored by the parent's own .gitignore, 473 after, the three journals and 178 agent-signal files still tracked, 7427 and 1441 and 21183 files still on disk, red proof that new files in the two folders are ignored, PASS
3. The two browser profiles untracked and ignored — 100%
DEFINITION OF DONE: zero tracked profile files; both folders still on disk
PROOF: `git ls-files | command grep -c "\.chrome-profile/\|\.cart-profile/"`
VERIFIED: Sonnet verifier 2026-09-18 22:50Z in a fresh detached worktree: 710 removals and 1 modified file in the commit, 0 removals outside the allowed patterns, 355 and 410 files still on disk, git check-ignore confirms both patterns, PASS
4. The monthly output untracked, nightly files kept — 100%
DEFINITION OF DONE: eleven candidate files tracked, the 76 MB one not
PROOF: `git ls-files projects/ops/agents/larry/candidates | wc -l`
VERIFIED: Sonnet verifier 2026-09-18 22:50Z: 11 candidate files tracked (.gitkeep, nine nightly files, one judged list), 0 named -full, the 79957862-byte file still on disk and still a blob in history, a fresh -full.json is ignored while a fresh nightly file is not, PASS
5. The four typo-named files renamed or removed — 100%
DEFINITION OF DONE: none of the four names remains tracked
PROOF: `git ls-files | command grep -c "^1$\|^2\.png$\|^=1$\|^-\.png$"`
VERIFIED: Sonnet verifier 2026-09-18 22:38Z in a fresh detached worktree of origin/main: 0 matches, three blob hashes identical old path to new path, the empty file was 0 bytes before removal, PASS
6. The three binaries untracked with fetch and guard — 100%
DEFINITION OF DONE: zero tracked binaries, all three on disk, fetch step present, launcher guarded
PROOF: `git ls-files | command grep -c "skippy-app/cloudflared\|skippy-app/ngrok\|bin/yt-dlp"`
VERIFIED: Sonnet verifier 2026-09-18 23:25Z: six-line diff exactly as claimed, 0 tracked, all three on disk and Mach-O, the tunnel process alive, fetch function proven offline (present path untouched, absent path fails cleanly leaving no partial file), guard at line 66 before the spawn at 69, launchd runs that file, rescue lines 72 to 74, red proof of the ignore lines, PASS
7. Ten registry rows repointed or retired — 100%
DEFINITION OF DONE: the status builder prints zero warnings
PROOF: `python3 projects/ops/artifacts/project-status/build.py`
VERIFIED: Sonnet verifier 2026-09-18 22:38Z: 0 SKIPPING lines on the new commit, 10 on the parent commit run side by side (red before, green after), every planFile on a non-retired row exists on disk, every archivedTo folder exists, PASS
8. Five website folders registered, three archived — 100%
DEFINITION OF DONE: no version-numbered website folder live; five registry rows
PROOF: `ls projects/business | command grep -c "^website-v"`
VERIFIED: Sonnet verifier 2026-09-18 23:45Z: 32 renames into the dated archive folder and 0 outside it, the nested repository under website-reskin/site unchanged before and after, five rows with the stated shape, the status builder printing 0 SKIPPING lines and its new bucket proven red by flipping one row, PASS
9. The staging folder reconciled and archived — 100%
DEFINITION OF DONE: only the review list's files remain tracked under staging
PROOF: `git ls-files _staging | wc -l`
VERIFIED: Sonnet verifier 2026-09-18 23:45Z: 72 renames from the staging folder into the dated archive folder, 0 deletions, the 21 remaining paths exactly the named set, all twelve kept orders dated 2026-09-16 or later, five sampled archived files dated before that, the retired index naming both new archive folders, PASS
10. Large tracked dumps and caches untracked and ignored — 100%
DEFINITION OF DONE: only genuine assets over 5 MiB remain tracked outside the archive
PROOF: `git ls-tree -r -l HEAD | awk '$4>5242880' | wc -l`
VERIFIED: Sonnet verifier 2026-09-18 23:45Z: 53 deletions and one ignore-file change, every deleted path over 5 MiB and matching the named classes, no image or model file untracked, 113 to 60, all 53 ignored, the recovered database and the 9 dumps and 120 evidence files still on disk, red proof with two fresh scratch files, PASS
11. Held items named — 100%
DEFINITION OF DONE: rows 8 and 11 of the review are recorded as held with the reason
PROOF: `command grep -c "^11. Held" projects/ops/files-cleanup/PROJECT.md`
```
## NICK, 2026-09-19
"triad and fix" — on the two open items from the closing report: the empty pointer folder `projects/business/heroes-sidekicks-website` (archive the pointer, recommended) and the two registered website folders without a plan file (write a one-page plan each, recommended). Both go through the area 2 triad with the git items and are then done as recommended.