Skip to content

chore(git): ignore generated scratch by family, not by instance - #41

Merged
github-actions[bot] merged 2 commits into
masterfrom
chore/ignore-generated-scratch
Aug 26, 2026
Merged

chore(git): ignore generated scratch by family, not by instance#41
github-actions[bot] merged 2 commits into
masterfrom
chore/ignore-generated-scratch

Conversation

@catomean

Copy link
Copy Markdown
Collaborator

Follow-up to #40 — auto-merge squashed that PR the moment CI went green, before these two commits landed on the branch.

Both are the same shape: a generated-scratch path was ignored one instance at a time, so the next instance went unignored and left a tree permanently dirty. A permanently dirty tree is where genuinely stranded work hides, which is the whole premise of #40.

1. Agent worktrees — 2 repos were missed

.claude/worktrees/ was added to 21 repos' .gitignore individually, plus 2 .git/info/exclude entries (machine-local, so invisible to review and to every other checkout). Two repos never got it: solon and ai-ration. Solon then sat in the stranded-work report for five days over an empty directory.

That is exactly the case .config/git/ignore's own header describes, and exactly the failure it predicts — "18 diffs, 18 reviews, and a 19th repo that gets missed." One line covers both stragglers and every repo that doesn't exist yet.

The 21 existing .gitignore lines are left alone: redundant now, harmless, and 21 PRs to delete one line each is the churn this avoids.

2. FleetCrown hooks — the family, not the member

FleetCrown rewrites its hooks into .claude/hooks/ on startup (the files say so themselves). fleetcrown-capture.sh was ignored; fleetcrown-session-end.sh appeared later and was not — dirty for ten days. Now matched as fleetcrown-*.sh.

Verified

  • solon and ai-ration both resolve the ignore to .config/git/ignore:23
  • git status clean in solon and in dotfiles
  • test-stranded-work.sh: 24 passed, 0 failed

🤖 Generated with Claude Code

catomean and others added 2 commits August 26, 2026 02:29
`.claude/worktrees/` was added to 21 repos' .gitignore one at a time, plus 2
.git/info/exclude entries that no other checkout and no reviewer can see. Two
repos never got it: solon and ai-ration. Solon then sat in the stranded-work
report for five days over an empty directory.

That is precisely the case this file's own header describes — scratch that my
tooling creates in every repo I touch — and precisely the failure it predicts:
"18 diffs, 18 reviews, and a 19th repo that gets missed." One line here covers
both stragglers and every repo that does not exist yet.

The 21 existing .gitignore lines are left alone; they are redundant now but
harmless, and 21 PRs to delete a line each is the churn this avoids.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
FleetCrown rewrites its hooks into .claude/hooks/ on every startup — the files
say so themselves. `fleetcrown-capture.sh` was ignored; `fleetcrown-session-end.sh`
appeared later and was not, leaving this tree dirty for ten days.

A permanently dirty tree is exactly where genuinely stranded work hides, which
is the whole premise of the guard two commits up. Match `fleetcrown-*.sh` so the
next generated hook is covered before it exists.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions
github-actions Bot merged commit 373bdce into master Aug 26, 2026
1 check passed
@github-actions
github-actions Bot deleted the chore/ignore-generated-scratch branch August 26, 2026 00:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant