diff options
| author | Craig Jennings <c@cjennings.net> | 2026-08-20 09:45:58 -0700 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-08-20 09:45:58 -0700 |
| commit | 3fbf3e022a364fe30609fb2d8dbc49ad6c961f70 (patch) | |
| tree | 1c198dde0b6dada8c718d968c1e86affc2053af6 /scripts | |
| parent | c588b0841df440e1a5290c7150ee245f90d1788e (diff) | |
| download | archsetup-3fbf3e022a364fe30609fb2d8dbc49ad6c961f70.tar.gz archsetup-3fbf3e022a364fe30609fb2d8dbc49ad6c961f70.zip | |
fix(post-rebuild-check): stop expecting a .claude directory every project names
Check 4 expects a tooling path wherever the project's own .gitignore names it, on the reasoning that the ignore file records what the project means to hold untracked. That holds for .ai and todo.org. It doesn't hold for .claude, because the bootstrap and the gitignore sweep write that line into every gitignore-mode project whether or not one ever exists there. The entry is aspirational, not a promise.
pearl, rsyncshot and yt-sync each name it and none has ever had one. Ratio is missing the identical directory in the identical three, and ratio was never rebuilt, so this is the steady state rather than drift. That is the same test CLAUDE.md is already excluded by, one comment above.
Dropping it costs no real signal. A project that genuinely carries a .claude, with rules and hooks from a language bundle, has it re-synced by sync-language-bundle.sh at every session start, so a true absence heals before this check would run.
velox now reports one finding instead of eight. Seven of the eight were this checker being wrong rather than the machine.
Diffstat (limited to 'scripts')
| -rwxr-xr-x | scripts/post-rebuild-check | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/scripts/post-rebuild-check b/scripts/post-rebuild-check index ee77a19..aa7ef83 100755 --- a/scripts/post-rebuild-check +++ b/scripts/post-rebuild-check @@ -428,6 +428,16 @@ printf '%s\n' "$projects" > "$WORK/projects" 2>/dev/null || { # steady state rather than reinstall drift, and flagging it would put nine # standing findings in front of every real one. # +# .claude/ is absent for the same reason and proven the same way. The +# bootstrap and the gitignore sweep write it into the ignore set of every +# gitignore-mode project whether or not one ever exists there, so the entry is +# aspirational rather than a promise -- pearl, rsyncshot and yt-sync each name +# it and none of the three has ever had one, on velox or on ratio. Dropping it +# loses no real signal either: a project that genuinely carries a .claude/ +# (rules and hooks from a language bundle) has it re-synced by +# sync-language-bundle.sh at every session start, so a true absence heals +# itself before this check would run. +# # The list is fed to the inner loop straight from a heredoc rather than # staged through a file. It is a constant, so a file bought nothing and cost # a fifth unguarded write: had it failed (a full tmpfs, say) the inner loop @@ -458,7 +468,6 @@ while IFS= read -r proj; do esac done <<'EOF' .ai \.ai -.claude \.claude todo.org todo\.org inbox inbox EOF |
