fix(ci): repin setup-racket to actual v1.15 SHA (was orphan)#43
Merged
Conversation
`.github/workflows/test.yml` pinned `Bogdanp/setup-racket@67838a16…` — a SHA that no longer exists in the upstream repo (`HTTP 422 No commit found`). Every Racket Test (8.11, 8.12, current) failed with `Unable to resolve action ... unable to find version 67838a16f2122684177c86729eb9cf0438ec677b` before any test could run. The actual SHA for the `v1.15` tag is `2466913449df77df2bad149d1f2fc4e1ea4795dd` (verified via `gh api repos/Bogdanp/setup-racket/git/ref/tags/v1.15`). The `# v1.15` comment is preserved as the human-readable tag pointer. This is the second orphan-SHA pin found in this repo today; the first was the hypatia-scan-reusable pin fixed in #42. Sibling pattern to the estate-wide audit in standards#220. After this lands, the Racket tests will actually run (and may or may not pass — but they will at least execute, instead of failing in setup).
🔍 Hypatia Security ScanFindings: 55 issues detected
View findings[
{
"reason": "Merge artifact in root",
"type": "stale",
"file": "SPEC.core.scm.orig",
"action": "delete",
"rule_module": "root_hygiene",
"severity": "medium"
},
{
"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": "No permissions declaration -- add permissions: read-all",
"type": "missing_permissions",
"file": "comprehensive-quality.yml",
"action": "add_permissions",
"rule_module": "workflow_audit",
"severity": "medium"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/betlang/betlang/playground/src/ternary.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/betlang/betlang/playground/src/probability.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/betlang/betlang/playground/src/main.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/betlang/betlang/playground/examples/uncertainty.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/betlang/betlang/playground/test/probability_test.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "TypeScript file detected -- banned language",
"type": "banned_language_file",
"file": "/home/runner/work/betlang/betlang/playground/test/ternary_test.ts",
"action": "flag",
"rule_module": "cicd_rules",
"severity": "critical"
},
{
"reason": "Atom creation from untrusted input may exhaust atom table (1 occurrences, CWE-400)",
"type": "erlang_atom_from_untrusted",
"file": "/home/runner/work/betlang/betlang/lsp/bet-lsp/build/packages/gleeunit/src/gleeunit.erl",
"action": "flag",
"rule_module": "code_safety",
"severity": "high"
}
]Powered by Hypatia Neurosymbolic CI/CD Intelligence |
3 tasks
hyperpolymath
added a commit
that referenced
this pull request
May 27, 2026
## Summary The \`governance / Language / package anti-pattern policy\` check flags **6 TypeScript files** in \`playground/\` as undocumented exemptions to the estate-wide "no new TypeScript" rule: - \`playground/src/probability.ts\` - \`playground/src/ternary.ts\` - \`playground/src/main.ts\` - \`playground/test/ternary_test.ts\` - \`playground/test/probability_test.ts\` - \`playground/examples/uncertainty.ts\` Per [\`playground/README.adoc\`](../tree/main/playground/README.adoc), the directory is an **intentional experimental sandbox** "decoupled from the main compiler to allow rapid experimentation". TypeScript was one of several languages explored alongside Deno/Nickel/Idris2/Zig in the sandbox. The primary Betlang implementation in \`core/\`, \`lib/\`, and \`tests/\` remains Racket-only. ## Fix Adds the exemption to \`.claude/CLAUDE.md\` using the canonical "TypeScript Exemptions" table format from [standards](https://github.com/hyperpolymath/standards/blob/main/.claude/CLAUDE.md). Unblock condition is owner decision to either: (a) migrate the playground sample to AffineScript, or (b) delete the TypeScript files once the experimental questions they answer are settled. ## Why this approach This is a **documentation-only exemption record** — it does not change estate policy. It just makes the existing carve-out auditable, which is what the governance check requires. The alternative (rewriting all 6 files into AffineScript) is real engineering — out of scope for a CI unblock. The other alternative (deleting them) loses experimental work that may still be referenced. ## After this lands \`governance / Language / package anti-pattern policy\` will pass on betlang PRs. Combined with [#43](#43) (setup-racket SHA fix), this clears two of the three baseline-rot blockers on every betlang PR. The remaining one is \`governance / Workflow security linter\` — a separate investigation. ## Test plan - [x] Single addition to \`.claude/CLAUDE.md\` - [x] GPG-signed commit (key 4A03639C…2867091E, noreply email) - [x] Auto-merge SQUASH enabled 🤖 Generated with [Claude Code](https://claude.com/claude-code)
3 tasks
hyperpolymath
added a commit
that referenced
this pull request
May 27, 2026
) ## Summary \`governance / Workflow security linter\` fails on every betlang PR with: \`\`\` ERROR: .github/workflows/comprehensive-quality.yml missing SPDX header ERROR: .github/workflows/comprehensive-quality.yml missing top-level 'permissions:' declaration \`\`\` ## Fix Two-line SPDX header at the top of the file + a top-level \`permissions: read-all\` declaration. Matches the shape used by the other workflow files in this repo (see \`test.yml\` lines 1-3). \`read-all\` is the safe minimum — individual jobs can override with more restrictive permissions if they need write access. No job in this file currently writes to the repo, so \`read-all\` is sufficient. ## Why this matters Combined with the three sibling baseline-rot fixes filed today: - [#42](#42) — hypatia-scan orphan SHA pin - [#43](#43) — setup-racket orphan SHA pin - [#44](#44) — TypeScript playground exemption - **this PR** — comprehensive-quality security hardening …this clears the **last of the baseline-rot blockers** on every betlang PR. After all four land, every existing MERGEABLE betlang PR should be able to auto-merge through normal CI channels. ## Test plan - [x] Three-line addition to a workflow file (SPDX × 2 + permissions × 1) - [x] GPG-signed commit (key 4A03639C…2867091E, noreply email) - [x] Auto-merge SQUASH enabled 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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
`.github/workflows/test.yml` pinned `Bogdanp/setup-racket@67838a16…` — a SHA that no longer exists in the upstream repo (`HTTP 422 No commit found`). Every Racket Test job (8.11, 8.12, current) failed with:
```
Unable to resolve action 'Bogdanp/setup-racket@67838a16f2122684177c86729eb9cf0438ec677b',
unable to find version '67838a16f2122684177c86729eb9cf0438ec677b'
```
before any test could run. This is the root cause of the Racket Test failures blocking every betlang PR.
Fix
Repin to `2466913449df77df2bad149d1f2fc4e1ea4795dd` — the actual SHA for the `v1.15` tag, verified via `gh api repos/Bogdanp/setup-racket/git/ref/tags/v1.15`. The `# v1.15` comment is preserved as the human-readable tag pointer.
Estate context
This is the second orphan-SHA pin found in this repo today. The first was the hypatia-scan-reusable pin fixed in #42. Sibling pattern to the estate-wide audit in standards#220 — the orphan-SHA campaign should sweep external action pins too, not just internal reusable workflow pins.
After this lands
Racket tests will actually run. They may or may not pass — but at least they will execute rather than failing at setup. If tests pass, this clears one of the three blockers on the other betlang PRs (the others are TypeScript allowlist coverage and governance/Workflow-security-linter).
Test plan
🤖 Generated with Claude Code