release: v4.3.0 — PR-time compat test on the self-hosted runner#303
Merged
Conversation
Adds .github/workflows/compat-test-self-hosted.yml — runs `node test/compat.mjs` against `dario proxy --passthrough` on the same [self-hosted, dario-drift] runner v4.2.2's drift watcher uses. Catches wire-shape regressions BEFORE merge instead of after (the watcher's post-release lane). Path-filtered to PRs that touch proxy.ts / cc-template.ts / cc-template -data.json / streaming + sse / shim runtime / the test itself / the workflow itself. Other PRs (docs, unrelated tests, CI) skip the job. Fork-PR guard — self-hosted with credentials must never execute fork code. Concurrency cancellation saves runner time on rapid pushes. Single de-duped PR comment with status emoji + compat output tail + run URL. Github-hosted can't host this: no Pro/Max session, no OAuth credential, no way to authenticate against api.anthropic.com. Until now the compat suite existed in-tree but never ran in CI. ~11 small subscription requests per qualifying run, ~10–20s wall time. 74/74 default suite green. No src/ changes.
Contributor
Compat test: ✅ PASSEDRan Output |
- unused loop variable: for i in 1 2 → for _ in 1 2
- exit code interpolation: pass via env COMPAT_EXIT_CODE instead of
inline `${{ steps.compat.outputs.exit_code }}` which shellcheck
reads as a non-numeric exit argument
shellcheck flagged `cat file | tail` as wasteful in the PR-comment step; just use `tail file` directly.
5 tasks
askalf
added a commit
that referenced
this pull request
May 17, 2026
Both compat-test-self-hosted.yml and cc-billing-classifier-canary.yml were silently piggybacking on the platform's existing dario instance (askalf-dario docker container at :3456), not the freshly-built dist they were supposed to test. Mechanism: dario proxy's EADDRINUSE handler probes /health when its target port is occupied, sees an existing dario, prints "dario — already running" and exits 0 (intentional: makes `dario login` / `dario proxy` idempotent for users). On the production runner the docker askalf-dario already binds :3456, so the workflow's `dario proxy` short-circuits and the workflow's curls hit the platform's dario using PLATFORM credentials. For the canary: produced 401 + claim='' because the platform's account is in a different state right now. For compat-test: every PR check on PRs #303, #304, #306, #308, #310, #311 was validating the platform dario, not the PR's freshly-built dist. The PR-time gate was measuring the wrong thing. Fix: both workflows now bind --port 3457 and the harnesses read DARIO_TEST_URL=http://127.0.0.1:3457. Eliminates the port collision. Validated locally on the production runner: HOME=/root/.claude- runner dario proxy --port 3457 starts clean, /health responds, single tiny haiku request returns 200 with a subscription representative-claim. The runner workflow will produce the same result once landed. 75/75 default suite green. No src/ changes.
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.
What does this PR do?
Catches wire-shape regressions before merge, on the same [self-hosted, dario-drift] runner v4.2.2 introduced for the post-release drift watcher.
.github/workflows/compat-test-self-hosted.ymlrunsnode test/compat.mjsagainst a livedario proxy --passthroughinstance and verifies — across ~11 small subscription requests:anthropic-betaheaders preserved/v1/chat/completions)Github-hosted runners cannot run this — no Pro/Max session, no OAuth credential. The suite has existed in the repo since v3.x but never ran in CI. v4.3.0 is the first release where every PR touching the wire-shape surface gets it as a gate.
Trigger paths (other PRs skip the job):
Safety:
Cost: ~11 small subscription requests per qualifying run, ~10–20s wall time.
How to test
Checklist