Skip to content

fix(ci): rsr-antipattern duplicate heredoc + setup-beam ubuntu24#82

Merged
hyperpolymath merged 2 commits into
mainfrom
fix/ci-rsr-and-setup-beam-2026-05-14
May 14, 2026
Merged

fix(ci): rsr-antipattern duplicate heredoc + setup-beam ubuntu24#82
hyperpolymath merged 2 commits into
mainfrom
fix/ci-rsr-and-setup-beam-2026-05-14

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

rsr-antipattern.yml: deletes the orphan duplicate Python script (lines 274-428) that escapes the heredoc and exits 127. Mirrors hyperpolymath/rsr-template-repo#39.

hypatia-scan.yml: bumps erlef/setup-beam SHA from 2f0cc07b… to fc68ffb9… so ImageOS=ubuntu24 resolves to ubuntu-24.04 (matches the pin in hyperpolymath/hypatia upstream).

🤖 Generated with Claude Code

**rsr-antipattern.yml**: deletes the orphan duplicate Python script (lines 274-428) that escapes the heredoc and exits 127. Mirrors hyperpolymath/rsr-template-repo#39.

**hypatia-scan.yml**: bumps `erlef/setup-beam` SHA from `2f0cc07b…` to `fc68ffb9…` so `ImageOS=ubuntu24` resolves to `ubuntu-24.04` (matches the pin in hyperpolymath/hypatia upstream).

🤖 Generated with [Claude Code](https://claude.com/claude-code)
Repairs the corrupted `rsr-antipattern.yml` from the prior commit on this branch. See hyperpolymath/stapeln#34 for the full root-cause writeup — the original sweep built its canonical via `gh api --jq '.content'` piped through PowerShell, but `gh` line-wraps base64 in the terminal pipe, so each chunk was decoded separately and the rejoined file has mid-word line breaks (`# SPDX-License-Id\nentifier:`, `name: RSR A\nnti-Pattern`, etc.). GitHub Actions can't parse the resulting YAML — the workflow completes in 0 seconds with no jobs.

This commit overwrites the file with the correct content, built via raw byte download (`Accept: application/vnd.github.raw`) and `[System.IO.File]::WriteAllBytes` so no pipe ever touches the bytes. Round-trip byte-verified against canonical.
@hyperpolymath hyperpolymath merged commit 0b7fea9 into main May 14, 2026
23 of 29 checks passed
@hyperpolymath hyperpolymath deleted the fix/ci-rsr-and-setup-beam-2026-05-14 branch May 14, 2026 15:51
hyperpolymath added a commit that referenced this pull request May 17, 2026
Triage of the three workflows in #77.

## Tests — fixed (988/988)

Root cause of the red was a single **uncaught** exception
(`PhoenixSocket.nextRef is not a function`) that aborted the run
mid-suite. The runner only `console.log`'d failures and never exited
nonzero, so that crash was the *only* thing failing CI — and it **masked
18 pre-existing real failures**.

- `PhoenixSocket`: `allocRef` → `nextRef` (API drift; both test suites
expect `nextRef`).
- `applyFriction`: float-safe assertion (`100.0*0.55 !== 55.0` in
IEEE-754).
- **Gated the runner** (`Deno.exit(1)` on failure) — this un-masks the
18; all fixed, choosing the canonical side per the source's *documented
intent*:
- Multiplayer ×3 — `Hacker`→`Q` was a deliberate rename across 5 source
files; tests were stale.
- LevelConfig ×10 + Functional F06/F15 + Regression R09 — a dated,
commented gameplay rebalance ("Counts updated 2026-03-16", "Win rate was
0%"); tests encoded the old numbers.
- CompanionMole `getCarryCapacity` — mock used the old multi-slot
equipment model; source refactored to single `equipped`.
- DLC bundle round-trip — wire form is lowercase `"expert"`; test
wrongly expected `"Expert"`.

The gating is the important durable fix: silent test rot is no longer
possible.

## Dogfood Gate — A2ML fixed at source; K9 tracked

Both sub-jobs were pinned to stale (2026-04-11) action SHAs.

- **A2ML**: 15 errors. 10 were already-fixed false positives (stale
pin); the remaining 5 were the canonical `.machine_readable/` tree — an
over-strict identity check that **rsr-template-repo itself fails**.
Fixed at source in **hyperpolymath/a2ml-validate-action#12** (merged);
this PR adopts the new pin `59145c7`. idaptik A2ML: **0 errors**.
- **K9**: pin un-drifted to `2d96f43`. The 6 remaining errors are real
but rooted in the **`k9iser` generator** emitting contracts without the
`K9!` magic line + pedigree block — tracked as
**hyperpolymath/k9iser#8**. The K9 sub-job stays red until that lands
(not masked).

## RSR Anti-Pattern Check

Already returned to green via #82 — no action needed.

## Status vs #77

- Tests: ✅ green + gated
- Dogfood Gate: ✅ A2ML half green at source; ⏳ K9 half blocked on
k9iser#8
- RSR Anti-Pattern: ✅ already green

Not using `Closes #77` — Dogfood Gate is only fully green once k9iser#8
lands.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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