Talos actions fix - #2950
Merged
Merged
Conversation
#2848 moved the action runtime off hardhat to `tsx tasks/run.ts` and rewrote all 46 schedule commands, but tsx was never declared — it is not in package.json or the lockfile, so `pnpm exec tsx` fails in the runner image and every scheduled action errors with "Command tsx not found". The same change added tasks/lib/{network,signer}.ts importing the old `@talos/client` name. The package is published as `@oplabs/talos-client` and the image installs that, so those modules fail to resolve. Both defects were masked by the catalog dump's `|| echo "{}"` fallback, which shipped an empty catalog and let the build pass.
sparrowDom
requested review from
clement-ux,
naddison36 and
shahthepro
as code owners
July 27, 2026 20:52
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.
Problem
Every
origin-dollarscheduled action in Talos prod has been failing with:#2848 moved the action runtime off hardhat to
tsx tasks/run.tsand rewrote all 46 schedule commands inmigrations/seed_schedules.sqlaccordingly — buttsxwas never declared. It is absent fromcontracts/package.jsonand frompnpm-lock.yaml, and the image installs withpnpm install --frozen-lockfile, sopnpm exec tsxfails in the runner container.The same change added
tasks/lib/network.tsandtasks/lib/signer.tsimporting@talos/client. The package is published as@oplabs/talos-client(renamed in #2946, which landed the day before), anddockerfile-actionsinstalls that name — so both modules fail to resolve in the image. Notsconfigpath alias covers the old name.Why CI stayed green
dockerfile-actionswraps the catalog dump in a swallow-all fallback:tsxwas already missing at build time, the dump failed, and the||branch shipped{}and let the build succeed. The runner loggedloaded actions catalog: 0 taskson boot. The build had the exact signal needed to catch this and discarded it.Changes
tsx@^4.23.1independencies— it is a genuine runtime dependency of the container now, not tooling, so it belongs there rather thandevDependencies(survives any future--prodinstall).tasks/lib/{network,signer}.tsat@oplabs/talos-client.Lockfile movement is
tsx+ its esbuild platform binaries only; no version changes to existing packages.Verification
Reproduced the exact prod failure locally, then confirmed the fix:
tsxadded, stale importCannot find module '@talos/client')Cross-checked the catalog against the schedule table: all 46 scheduled rows reference 38 distinct actions, and every one resolves in the catalog.
pnpm run typecheckfails identically onmasterwith and without this change (@types/nodeis undeclared) — pre-existing, left alone.Follow-up (not in this PR)
The
|| echo "{}"fallback should fail the build, or at minimum fail when the dump yields{}. A fallback that turns a fundamentally broken image into a green build is why this reached production rather than CI.