You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rainix CI → rainix-sol-artifacts has failed on every push to main since the merge of #279 (commit 1086e28, 2026-07-24T11:59:59Z), and continues to fail on every commit since (06fa7b6, 8583c77, ...). Each run retries the deploy 10 times over ~40s before giving up with:
Error: Internal transport error: Connection refused (os error 111) with /home/runner/work/rainix/rainix/test/fixture/
That path looks like a missing local fixture/mock-RPC service, but it isn't one — see root cause below.
and rainix-sol-artifacts (in flake.nix) invokes forge script ... --rpc-url "${ETH_RPC_URL}".
ETH_RPC_URL is resolving to an empty string. Confirmed directly from the job's own env dump, printed before any retry logic runs, identically in all three failing runs:
With --rpc-url '', forge can't parse it as a URL and falls back to treating it as a local path — the job's cwd (test/fixture/, set via defaults.run.working-directory) — then fails to connect to that "endpoint." Hence the misleading "connection refused ... test/fixture/" text: there is no fixture server involved, and nothing under test/fixture/ changed or broke.
Why this isn't a code regression
.github/workflows/test.yml is byte-identical between the last known-good run and every failing run since (git diff 409759f..8583c77 -- .github/workflows/test.yml is empty).
The last successful rainix-sol-artifacts run was 2026-07-16 (run 29506458832, job 87648364549): the job log shows --rpc-url *** (masked, i.e. non-empty) and SIMULATION COMPLETE.
No commit between the last good run and the first bad run touches the rainix-sol-artifacts task definition, test.yml, or test/fixture/.
So the value behind secrets.CI_DEPLOY_SEPOLIA_RPC_URL / vars.CI_DEPLOY_SEPOLIA_RPC_URL flipped from present to empty for this repo, with no corresponding code change.
Where the secret/var actually lives
Checked what's configured directly on rainlanguage/rainix:
Repo-level Actions secrets: gh api repos/rainlanguage/rainix/actions/secrets → {"total_count":0,"secrets":[]}
Repo-level Actions variables: gh variable list → empty
Repo environments: gh api repos/rainlanguage/rainix/environments → {"total_count":0,"environments":[]}
So CI_DEPLOY_SEPOLIA_RPC_URL isn't (and can't be, right now) a repo-level secret/var or environment secret on rainix itself — it must be (or have been) an org-level secret or variable on rainlanguage, shared down to this repo, that stopped resolving here around 2026-07-24T11:59:59Z: deleted, renamed, or its "selected repositories" visibility list changed to drop rainix.
I don't have admin:org on the token available to me, so I can't list/inspect rainlanguage's org-level secrets or variables to tell which of those happened, or restore it myself. Per the task guidance I'm working under, that's a "needs a secret I can't see" situation — filing this instead of guess-pushing a fix.
Ask
Someone with org-admin access on rainlanguage should check the CI_DEPLOY_SEPOLIA_RPC_URL org secret and/or org variable: does it still exist, under that exact name, with rainix in its repository-visibility list? Restoring that should turn rainix-sol-artifacts green again with no code change.
Optional follow-up (not filed as a fix here)
Independent of the above, rainix-sol-artifacts's retry loop doesn't distinguish "empty/misconfigured RPC URL" from a transient network blip — it burns all 10 retries and produces the misleading test/fixture/-path error either way. A cheap hardening would be to fail fast with an explicit message when ETH_RPC_URL is unset/empty, rather than retrying. Happy to open that as a separate small PR if wanted — flagging here rather than doing it unprompted since it doesn't address the actual outage.
Symptom
Rainix CI→rainix-sol-artifactshas failed on every push tomainsince the merge of #279 (commit1086e28, 2026-07-24T11:59:59Z), and continues to fail on every commit since (06fa7b6,8583c77, ...). Each run retries the deploy 10 times over ~40s before giving up with:That path looks like a missing local fixture/mock-RPC service, but it isn't one — see root cause below.
Root cause
.github/workflows/test.ymlruns the job with:and
rainix-sol-artifacts(inflake.nix) invokesforge script ... --rpc-url "${ETH_RPC_URL}".ETH_RPC_URLis resolving to an empty string. Confirmed directly from the job's own env dump, printed before any retry logic runs, identically in all three failing runs:89475572223(run 30091492683, commit1086e28):ETH_RPC_URL:(blank)89482744436(run 30093743505, commit06fa7b6):ETH_RPC_URL:(blank)89492033946(run 30096584996, commit8583c77):ETH_RPC_URL:(blank)With
--rpc-url '', forge can't parse it as a URL and falls back to treating it as a local path — the job's cwd (test/fixture/, set viadefaults.run.working-directory) — then fails to connect to that "endpoint." Hence the misleading "connection refused ... test/fixture/" text: there is no fixture server involved, and nothing undertest/fixture/changed or broke.Why this isn't a code regression
.github/workflows/test.ymlis byte-identical between the last known-good run and every failing run since (git diff 409759f..8583c77 -- .github/workflows/test.ymlis empty).rainix-sol-artifactsrun was 2026-07-16 (run29506458832, job87648364549): the job log shows--rpc-url ***(masked, i.e. non-empty) andSIMULATION COMPLETE..github/workflows/rainix-manual-sol-artifacts.yaml(a separate, manually-dispatched workflow) — it does not touchtest.yml,flake.nix, or anything undertest/fixture/.rainix-sol-artifactstask definition,test.yml, ortest/fixture/.So the value behind
secrets.CI_DEPLOY_SEPOLIA_RPC_URL/vars.CI_DEPLOY_SEPOLIA_RPC_URLflipped from present to empty for this repo, with no corresponding code change.Where the secret/var actually lives
Checked what's configured directly on
rainlanguage/rainix:gh api repos/rainlanguage/rainix/actions/secrets→{"total_count":0,"secrets":[]}gh variable list→ emptygh api repos/rainlanguage/rainix/environments→{"total_count":0,"environments":[]}So
CI_DEPLOY_SEPOLIA_RPC_URLisn't (and can't be, right now) a repo-level secret/var or environment secret onrainixitself — it must be (or have been) an org-level secret or variable onrainlanguage, shared down to this repo, that stopped resolving here around 2026-07-24T11:59:59Z: deleted, renamed, or its "selected repositories" visibility list changed to droprainix.I don't have
admin:orgon the token available to me, so I can't list/inspectrainlanguage's org-level secrets or variables to tell which of those happened, or restore it myself. Per the task guidance I'm working under, that's a "needs a secret I can't see" situation — filing this instead of guess-pushing a fix.Ask
Someone with org-admin access on
rainlanguageshould check theCI_DEPLOY_SEPOLIA_RPC_URLorg secret and/or org variable: does it still exist, under that exact name, withrainixin its repository-visibility list? Restoring that should turnrainix-sol-artifactsgreen again with no code change.Optional follow-up (not filed as a fix here)
Independent of the above,
rainix-sol-artifacts's retry loop doesn't distinguish "empty/misconfigured RPC URL" from a transient network blip — it burns all 10 retries and produces the misleadingtest/fixture/-path error either way. A cheap hardening would be to fail fast with an explicit message whenETH_RPC_URLis unset/empty, rather than retrying. Happy to open that as a separate small PR if wanted — flagging here rather than doing it unprompted since it doesn't address the actual outage.