Skip to content

fix(ci): repin setup-racket to actual v1.15 SHA (was orphan)#43

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/setup-racket-sha-pin
May 27, 2026
Merged

fix(ci): repin setup-racket to actual v1.15 SHA (was orphan)#43
hyperpolymath merged 1 commit into
mainfrom
fix/setup-racket-sha-pin

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

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

`.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).
@hyperpolymath hyperpolymath enabled auto-merge (squash) May 27, 2026 10:49
@github-actions
Copy link
Copy Markdown

🔍 Hypatia Security Scan

Findings: 55 issues detected

Severity Count
🔴 Critical 9
🟠 High 18
🟡 Medium 28

⚠️ Action Required: Critical security issues found!

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

@hyperpolymath hyperpolymath merged commit e59272b into main May 27, 2026
16 of 30 checks passed
@hyperpolymath hyperpolymath deleted the fix/setup-racket-sha-pin branch May 27, 2026 10:50
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)
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant