chore(secrets): scrub hardcoded /Users/sem paths — green the no-secrets gate - #49
Conversation
… green the no-secrets gate The CI no-secrets gate (scripts/check-no-secrets.sh) has been red on main across the last several releases due to absolute /Users/sem paths in three tracked files. Parameterize them so the gate passes on a fresh clone. - .subctl/docs/hermes-compact-and-skills-findings.md, ORCHESTRATION.md: /Users/sem/... → ~/... (docs; cosmetic) - .claude/settings.json: Read(/Users/sem/code/subctl/components/evy/node_modules/**) → Read(/components/evy/node_modules/**). Per Claude Code's gitignore-style permission semantics a SINGLE leading slash is project-root-relative (not filesystem-absolute — that needs //), so the old rule resolved to <root>/Users/sem/code/subctl/... and never matched anything. The new project-root-anchored form both passes the gate AND restores the rule's intended function (allow reading evy's node_modules for pi-ai source inspection). Verified: CI-equivalent scan over git-tracked files is clean for all forbidden patterns (emails, API keys, home paths). .orchestration/ and .codegraph/ hits in a local working-tree scan are gitignored and absent from CI's clone. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThis pull request removes hardcoded user-specific directory paths from three files across configuration and documentation. A Claude IDE settings file, a documentation path attribution, and an orchestration reference are all updated to use portable path formats instead of absolute user-home directories. ChangesPath Normalization
Estimated code review effort🎯 1 (Trivial) | ⏱️ ~3 minutes Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
…ount wrappers + guard (#51) A1/guard launcher work (deployed live since 2026-05-29) + LM-Studio consolidation chore. Clean superset of main #49; code verified locally (shellcheck clean, no secrets). CI 'check' red is a pre-existing macos-runner shellcheck-OOM hang affecting main itself, not this PR.
Problem
The CI no-secrets gate (
scripts/check-no-secrets.sh) has been red onmainacross the last 8 releases (v3.3.4–v3.3.12) — it forbids absolute/Users/sempaths in committed files, and three tracked files carry them (introduced in #39 and #45).What changed (3 files, the complete tracked violation set)
.subctl/docs/hermes-compact-and-skills-findings.md/Users/sem/code/hermes-agent→~/code/hermes-agent(doc)ORCHESTRATION.md/Users/sem/.local/bin/subctl,/Users/sem/bin/subctl→~/...(doc).claude/settings.jsonRead(/Users/sem/code/subctl/components/evy/node_modules/**)→Read(/components/evy/node_modules/**)Note on the
.claude/settings.jsonrulePer Claude Code's gitignore-style permission semantics, a single leading slash is project-root-relative, not filesystem-absolute (that needs
//). So the old rule resolved to<project-root>/Users/sem/code/subctl/components/evy/node_modules/**and never matched anything — it was a dead rule. The new project-root-anchoredRead(/components/evy/node_modules/**)both passes the gate and restores the rule's intended function (allow reading evy'snode_modulesfor pi-ai source inspection).Verification
git ls-files): clean..orchestration/*and.codegraph/*hits in a local working-tree scan are gitignored (absent from CI's fresh clone), so they don't affect CI..claude/settings.jsonvalidated as well-formed JSON.Follow-up (not in this PR)
The gate script scans the whole working tree (
grep -r .) with a manual dir blocklist, so a local run still false-fails on gitignored.orchestration//.codegraph/. Hardening it to scangit ls-filesonly would eliminate that CI-vs-local divergence — happy to do that separately if wanted.🤖 Generated with Claude Code
Summary by CodeRabbit