feat(rules): :nodejs_detected — add /bindings/rescript/ carve-out (post #275 closeout cleanup)#412
Merged
Conversation
…rallel to /bindings/{javascript,typescript}/)
Surfaced during standards#275 STEP 7 closeout estate-wide hypatia scan:
proven-servers/bindings/rescript/package-lock.json was the single
uncarved hit across 20 estate-wide package-lock.json files. The
rescript variant is host-required for the rescript-to-js compile chain
(same pattern as JS/TS consumer exports, just produced from .res
sources) and is symmetric to the existing /bindings/javascript/ and
/bindings/typescript/ carve-out class (5c).
## Carve-out class 5c updated
Old:
- `/bindings/javascript/`
- `/bindings/typescript/`
New:
- `/bindings/javascript/`
- `/bindings/typescript/`
- `/bindings/rescript/`
Comment block updated to reflect the rescript variant + reference
the standards#275 STEP 7 surfacing context.
## Test coverage
Adds 1 new test case `"exempts */bindings/{javascript,typescript,rescript}/ consumer exports"` to `cicd_rules_rescript_npm_js_test.exs` `nodejs_detected rule` describe block. Asserts that lockfiles under any of the three sibling consumer-export bindings paths are exempt.
After this lands, the standards#253 closeout (PR #325 merged 2026-05-31) declaration "zero `:nodejs_detected` flags outside carve-outs" becomes exactly true estate-wide (was 19/20 prior).
Refs standards#253 (umbrella npm → Deno campaign, closed 2026-05-31)
Refs standards#275 (STEP 7 workspace finalisation, closed 2026-05-31)
Refs hypatia#405 (predecessor — first batch of class-5c carve-outs)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
3 tasks
hyperpolymath
added a commit
to hyperpolymath/standards
that referenced
this pull request
May 31, 2026
…t (post #275 closeout cleanup) (#328) ## Summary Surfaced during the standards#275 STEP 7 closeout **estate-wide hypatia scan**: `proven-servers/bindings/rescript/package-lock.json` was the single uncarved hit across 20 estate-wide `package-lock.json` files. [hypatia#412](hyperpolymath/hypatia#412) extends the `:nodejs_detected` rule's class 5c (`/bindings/{javascript,typescript}/`) to also cover `/bindings/rescript/`. This PR **mirrors that to the LANGUAGE-POLICY.adoc Node.js narrative row**, matching the docs-vs-rule parity pattern from hypatia#405 + standards#320. ## Change `rhodium-standard-repositories/spec/LANGUAGE-POLICY.adoc` Node.js banned-language row: | Before | After | |---|---| | "nine carve-out classes (six original + three added during the migration via hypatia#405)" | "nine carve-out classes (six original + three added during the migration via hypatia#405 + one added post-closeout via hypatia#412 for `/bindings/rescript/` symmetry)" | | Class (5): `**/bindings/{javascript,typescript}/**` | Class (5): `**/bindings/{javascript,typescript,rescript}/**` with rationale "the `rescript` variant is host-required for the rescript-to-js compile chain" | ## Why post-closeout The standards#253 closeout PR (#325) merged 2026-05-31T07:11Z. The campaign is officially complete. This PR makes the closeout declaration "zero `:nodejs_detected` flags outside carve-outs" **exactly true** (was 19/20 prior) without re-opening #253 or #275. Pairs with hyperpolymath/hypatia#412 (rule update + test). Both should land together to maintain docs↔rule parity. ## Test plan - [ ] CI green (text-only change) - [ ] Cross-link to hypatia#412 PR description visible in this PR comments - [ ] Hypatia self-scan unchanged (rule is in hypatia repo, not standards) Refs #253 (umbrella, CLOSED 2026-05-31) Refs #275 (STEP 7, CLOSED 2026-05-31) Refs #320 (predecessor mirror PR pattern for hypatia#405) Refs hyperpolymath/hypatia#412 (the rule update this mirrors) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
🔍 Hypatia Security ScanFindings: 103 issues detected
View findings[
{
"reason": "Action urin 21 JRE\n uses: actions/setup-java@be666c2fcd27 needs attention",
"type": "unpinned_action",
"file": "verify-proofs.yml",
"action": "pin_sha",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "missing_timeout_minutes",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "missing_timeout_minutes",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "missing_timeout_minutes",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "missing_timeout_minutes",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "missing_timeout_minutes",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "missing_timeout_minutes",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "missing_timeout_minutes",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in ci.yml",
"type": "missing_timeout_minutes",
"file": "ci.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "Issue in clusterfuzzlite.yml",
"type": "missing_timeout_minutes",
"file": "clusterfuzzlite.yml",
"action": "flag",
"rule_module": "workflow_audit",
"severity": "medium"
}
]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.
Summary
Surfaced during the hyperpolymath/standards#275 STEP 7 closeout estate-wide hypatia scan:
proven-servers/bindings/rescript/package-lock.jsonwas the single uncarved hit across 20 estate-widepackage-lock.jsonfiles.The
rescriptvariant is host-required for the rescript-to-js compile chain (same pattern as JS/TS consumer exports, just produced from.ressources) and is symmetric to the existing/bindings/javascript/and/bindings/typescript/carve-out class (5c).Changes
lib/rules/cicd_rules.ex— carve-out class 5c extended:/bindings/javascript//bindings/javascript//bindings/typescript//bindings/typescript//bindings/rescript/Comment block updated to reflect the rescript variant + reference the standards#275 STEP 7 surfacing context.
test/rules/cicd_rules_rescript_npm_js_test.exs— 1 new test case in thenodejs_detected ruledescribe block asserting that lockfiles under any of the three sibling consumer-export bindings paths are exempt.Why this closes the loop
The standards#253 closeout PR (hyperpolymath/standards#325) merged 2026-05-31T07:11Z, declaring the npm → Deno migration "substantially complete" with "zero
:nodejs_detectedflags outside carve-outs". The estate-wide scan during that closeout's STEP 7 audit (hyperpolymath/standards#275) surfaced one uncarved hit. This PR makes the closeout declaration exactly true (was 19/20 prior).Test plan
exempts */bindings/{javascript,typescript,rescript}/ consumer exportspasses (already syntactically validated viaCode.string_to_quoted!)proven-servers/bindings/rescript/Refs hyperpolymath/standards#253 (umbrella, CLOSED 2026-05-31)
Refs hyperpolymath/standards#275 (STEP 7, CLOSED 2026-05-31)
Refs #405 (predecessor — first batch of class-5c carve-outs added vscode-, tree-sitter-, Lake, Office, javascript/typescript bindings)
🤖 Generated with Claude Code