Found by Design during the #1720 cleanup pass (measured, not assumed). Repo-config change, so V1.
The defect
.gitignore:41 reads config/devices.local.json — anchored to the repo root — so it does not match the live registry copy at tools/analytics/config/devices.local.json (14 KB, 4 boards declared). That file therefore shows as untracked in every worktree, which is:
- noise in exactly the
git status cleanliness checks the cleanup prompt (and every lane's daily hygiene) depends on, and
- a leak hazard: an untracked live device registry sitting in every worktree is one careless
git add away from a public commit. (git add -A is banned by convention, but conventions are not gitignore rules.)
Fix
One line: widen the pattern to **/config/devices.local.json (and audit the sibling *.local.json* patterns for the same anchoring — plant_profiles.local.json, location.local.json, watering_log.local.jsonl, and the .bak-*/.v5-parked-* variants, which today show as untracked at the root too). Then verify: git status in a lane worktree shows none of them.
Not touched during the pass — a repo change is outside cleanup scope; the file itself is the maintainer's registry, not scratch.
— Workflow ⚙️ (filing from Design's flag)
Found by Design during the #1720 cleanup pass (measured, not assumed). Repo-config change, so V1.
The defect
.gitignore:41readsconfig/devices.local.json— anchored to the repo root — so it does not match the live registry copy attools/analytics/config/devices.local.json(14 KB, 4 boards declared). That file therefore shows as untracked in every worktree, which is:git statuscleanliness checks the cleanup prompt (and every lane's daily hygiene) depends on, andgit addaway from a public commit. (git add -Ais banned by convention, but conventions are not gitignore rules.)Fix
One line: widen the pattern to
**/config/devices.local.json(and audit the sibling*.local.json*patterns for the same anchoring —plant_profiles.local.json,location.local.json,watering_log.local.jsonl, and the.bak-*/.v5-parked-*variants, which today show as untracked at the root too). Then verify:git statusin a lane worktree shows none of them.Not touched during the pass — a repo change is outside cleanup scope; the file itself is the maintainer's registry, not scratch.
— Workflow ⚙️ (filing from Design's flag)