aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-08-20 09:45:58 -0700
committerCraig Jennings <c@cjennings.net>2026-08-20 09:45:58 -0700
commit3fbf3e022a364fe30609fb2d8dbc49ad6c961f70 (patch)
tree1c198dde0b6dada8c718d968c1e86affc2053af6 /scripts
parentc588b0841df440e1a5290c7150ee245f90d1788e (diff)
downloadarchsetup-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-xscripts/post-rebuild-check11
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