chore(rsr): replace 16 stale vendored .claude/CLAUDE.md duplicates with pointer to canonical#169
Merged
Merged
Conversation
…th pointer to canonical The RSR satellites carried 16 .claude/CLAUDE.md files snapshotted at 2025-11-22, still listing: * ReScript as the primary language (banned in new code 2026-04-30) * GitLab as the source-of-truth host (estate is on GitHub) * Python-only-for-SaltStack (Python is fully banned since 2026-01-03) * RVC (Robot Vacuum Cleaner) Python automation as approved tooling Anyone reading these duplicates got contradictory guidance vs the canonical .claude/CLAUDE.md in the standards-repo root. This commit replaces each duplicate's body with a thin pointer to <https://github.com/hyperpolymath/standards/blob/main/.claude/CLAUDE.md> plus a note explaining the drift mechanism (vendored snapshot stales). Net diff: 16 files changed, 176 insertions(+), 1097 deletions(-). The three top-level CLAUDE.md files (rhodium-standard-repositories/CLAUDE.md 35KB RSR/CCCP architecture doc; satellites/consent-aware-http/CLAUDE.md IETF spec doc; satellites/palimpsest-license/CLAUDE.md Palimpsest project doc) are NOT touched — they carry unique repo-specific content that's not just a duplicate of the canonical policy. The top-level RSR doc has its own stale references that warrant a separate dedicated PR. Pattern: foundational fix to template-propagation drift. See #168 for the same pattern applied to workflow templates (governance-reusable.yml subsumes the legacy language-policy.yml).
🔍 Hypatia Security ScanFindings: 192 issues detected
View findings[
{
"reason": "Action hyperpolymath/standards/.github/workflows/deno-ci-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "deno-ci-reusable.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/governance-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "governance-reusable.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Action hyperpolymath/standards/.github/workflows/governance-reusable.yml@main needs attention",
"type": "unpinned_action",
"file": "governance.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "high"
},
{
"reason": "Python file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/standards/standards/a2ml-templates/state-scm-to-v2.py",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/standards/standards/a2ml/bindings/deno/mod.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/standards/standards/lol/test/vitest.config.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/standards/standards/k9-svc/bindings/deno/mod.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "Agda postulate assumes without proof -- potential soundness hole (4 occurrences, CWE-704)",
"type": "agda_postulate",
"file": "/home/runner/work/standards/standards/lol/proofs/theories/information_theory.agda",
"action": "flag",
"rule_module": "code_safety",
"severity": "critical"
},
{
"reason": "believe_me undermines formal verification (1 occurrences, CWE-704)",
"type": "believe_me",
"file": "/home/runner/work/standards/standards/lol/src/abi/Locale.idr",
"action": "flag",
"rule_module": "code_safety",
"severity": "critical"
},
{
"reason": "Wildcard CORS -- restrict to specific origins or use env var (1 occurrences, CWE-942)",
"type": "js_wildcard_cors",
"file": "/home/runner/work/standards/standards/consent-aware-http/examples/reference-implementations/deno/aibdp_middleware.js",
"action": "flag",
"rule_module": "code_safety",
"severity": "high"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
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.
Why
The RSR satellites carry 16 `.claude/CLAUDE.md` files snapshotted at 2025-11-22 — a copy of the canonical `.claude/CLAUDE.md` from a date when the policy was different. They still list:
Anyone reading these duplicates gets contradictory guidance vs the canonical `.claude/CLAUDE.md` in the standards-repo root.
What changes
Each of the 16 duplicate `.claude/CLAUDE.md` files (13 identical sha256, 2 near-duplicate variants, 1 unique-stale at the RSR root) has its body replaced with a thin pointer:
Net diff: 16 files changed, 176 insertions(+), 1097 deletions(-).
What is NOT touched (kept intentionally)
Three top-level `CLAUDE.md` files carry unique repo-specific content beyond the language policy and are LEFT IN PLACE for a separate review:
Related
Same foundational pattern as #168 (subsuming legacy workflow templates into a single source-of-truth reusable workflow). The bug class is the same: vendoring policy content across N locations guarantees drift. The fix is the same: delete the copies, point to one canonical location.
Test plan