Repository navigation
test(site-monitor): fail when a site has no copy-paths.conf entry - #210
Merged
Merged
Conversation
added 2 commits
October 19, 2026 17:30
copy-paths.conf is opt-in per repo, so a new production site stays ungated until someone adds it (copy gate spec, failure mode 2). dev-env owns sites.json, so the check runs here: a PR that adds a site without a conf entry fails on that same PR. - check-copy-paths.sh: exits 1 and names each sites.json repo with no owner/name include line. public=*, exclude-only and commented lines do not count. A conf with no include lines (empty or truncated download) exits 2, so the check fails closed. - test-check-copy-paths.sh: fixture confs for covered, missing and each fail-closed input, repeated under /bin/bash 3.2 when present. - tests.yml: fetch copy-paths.conf from claude-config main with curl -f and run the checker. - test-run-monitor.sh: unset an exported gh function, which beat the stub on PATH and failed the issue-write checks on a dev machine. Closes smartwatermelon/claude-config#725
Hooks merged today, the github-workflows self auto-merge, the CodeQL sweep, and the fleet-wide removal of "require branches to be up to date".
This was referenced Oct 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes smartwatermelon/claude-config#725. Copy gate failure mode 2 in
docs/superpowers/specs/2026-10-15-copy-gate-design.md: a production site with nocopy-paths.confentry is ungated. The check runs in dev-env (decided 2026-10-19) because dev-env ownssites.json, so a PR that adds a site without an entry fails on that PR.scripts/site-monitor/check-copy-paths.sh <conf> [sites.json]: exit 1 names each repo insites.jsonwith noowner/name includeline.public=*lines, exclude-only repos and commented lines do not count. Exit 2 on bad input, including a conf with no include lines at all, so an empty or truncated download fails closed.scripts/site-monitor/tests/test-check-copy-paths.sh+ fixtures: covered, missing, and each fail-closed input. Repeats under/bin/bash3.2 when the host has it..github/workflows/tests.yml: new step fetchescopy-paths.conffrom claude-configmainwithcurl -fsSL(public raw URL, no token, no new action) and runs the checker.test-run-monitor.sh:unset -f gh. An exportedghshell function (the dotfiles wrapper) beat the PATH stub, so the issue-write checks failed on a dev machine. CI was not affected.Test plan
bash scripts/site-monitor/tests/run-tests.sh: all pass (it failed intest-run-monitor.shbefore theunset -f ghline, on a clean main checkout too).shellcheck -S infoclean on the new and changed scripts;actionlintandzizmorclean ontests.yml.maincopy-paths.confand the currentsites.json.crazy-larrylines removed exits 1 and namessmartwatermelon/crazy-larry. A 404 URL makescurl -fexit non-zero.testsjob green on this PR.Limits
sites.json(the default path). It expects exit 1 against a fixture conf, so it depends onsites.jsonnaming at least one repo.