Skip to content

chore(deps): bump script SDKs (arbitrum, cow, dotenv, chalk, bs58, merkletreejs) - #2606

Closed
philippzentner wants to merge 24 commits into
lifinance:mainfrom
philippzentner:chore/script-sdk-bumps
Closed

philippzentner wants to merge 24 commits into
lifinance:mainfrom
philippzentner:chore/script-sdk-bumps

Conversation

@philippzentner

@philippzentner philippzentner commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Proposal from a fork: merging, adjusting or closing is the maintainers' call.

Builds on #2604 and #2605. Review only the commits listed below; this PR will be rebased once the earlier ones merge.

commit change
278c18d22 chore(deps): bump @arbitrum/sdk from 3.7 to 4.1
5f815d768 chore(deps): bump bs58 from 4 to 6
c0a50a984 chore(deps): bump merkletreejs from 0.3 to 0.6
01a3227f0 chore(deps): bump chalk from 5.6.2 to 6.0.1
b7dac11bb chore(deps): bump dotenv from 16 to 18 and keep it quiet
8d63decfd chore(deps): bump @cowprotocol/cow-sdk from 5.10 to 9.3

Which Linear task belongs to this PR?

None. This is script dependency maintenance proposed from a fork, so there is no Linear ticket.

Why did I implement it this way?

Only TypeScript scripts, one Handlebars template, package.json and bun.lock change. No .sol file, no lib/ submodule, no Foundry config. Compiled src output is byte-identical (see Verification).

Packages

package from → to status notes
@arbitrum/sdk 3.7.3 → 4.1.0 done L1ToL2MessageGasEstimator → ParentToChildMessageGasEstimator, now imported from the package root instead of dist/lib/.... estimateAll keeps its arguments and the l2CallValue field. 1 file (demoArbitrumBridge.ts).
bs58 4.0.1 → 6.0.0 done Default import still works. v6 ships types, so the @ts-expect-error is gone. decode() returns Uint8Array instead of Buffer; the only consumer passes it to viem's toHex, which accepts both. Round trip of the USDC mint checked.
merkletreejs 0.3.11 → 0.6.0 done Output proven identical, see below.
chalk 5.6.2 → 6.0.1 done v6 only raises the Node floor to 22 and changes numeric FORCE_COLOR/ansi256 downsampling, which no script uses. Still an exact pin.
dotenv 16.x → 18.0.9 done dotenv 17+ prints an "injected env" line on every config() call (stderr since 18). All 34 explicit calls now pass { quiet: true }, including templates/facetDemoScript.template.hbs, so script output matches dotenv 16. import 'dotenv/config' is quiet by default since 18.0.4. No script uses the removed .env.vault support or -r dotenv/config preloading.
@cowprotocol/cow-sdk 5.10.3 → 9.3.0 done Doesn't need ethers 6. Since v7, TradingSdk takes a provider adapter. demoPatcher.ts now passes a ViemAdapter (new dependency @cowprotocol/sdk-viem-adapter), built from the same Arbitrum RPC and private key the ethers signer used. I didn't use the ethers v5 adapter because it peers on @typechain/ethers-v5 11, which #2605 deliberately keeps on 10. postSwapOrder now returns an object, so the code reads .orderId. The appCode as any cast is gone (AppCode is string now). The CowShed constants moved to @cowprotocol/sdk-cow-shed (new dependency) and are keyed by version. The helper uses 1.0.0, which resolves to the same factory 0x00E989b8…bEF6 and implementation 0x2CFFA8cf…9F73 that cow-sdk 5 exported.
@solana/web3.js 1.98.4 → 3.x skipped @solana/spl-token 0.4.15 (the latest) declares peerDependencies: { "@solana/web3.js": "^1.95.5" }, and both demo files use getAssociatedTokenAddressSync from spl-token with web3.js 1 PublicKeys. Both stay at the compatible pair web3.js 1.98.4 + spl-token 0.4.x. Moving to web3.js 3 means replacing spl-token with @solana-program/token.
citty 0.1.6 → 0.2.2 skipped 0.2.0 has breaking changes: it switched to node:util.parseArgs, coerces parsed values to their declared types, made optionals and enums stricter, and is ESM-only. It's used in 96 files, including 25 under script/deploy/safe/** plus the Tron Safe scripts. A trial install made 11 script/deploy/safe tests fail. 10 of them are the signing-path flag contracts in cli-flags.test.ts (flagIsOn with repeated, numeric or defaulted flags, value args in kebab and camel spelling) and 1 is normalizeProposeCalls > repeated string flags parse to arrays. tsc also reported 6 new errors (repair-deployment-records.ts, manageWalletFunds.ts, unpauseAllDiamonds.ts, troncast/send.ts). Those tests pin how Safe/timelock scripts read --dry-run/--execute-style flags, so this needs its own reviewed PR.

Merkle output equivalence (merkletreejs)

  • bunx tsx script/demoScripts/demoGenerateMerkleTree.ts writes a byte-identical script/output/outputMerkleProofs.json under 0.3.11 and 0.6.0 (sha256 0ab8f479effcfc6a112e3c9f174346b1f7f56386333bde0d85933f3e54a3116e both times).
  • I also ran a standalone script with each version, using the same leaf construction and { sortPairs: true }. It covered 72 trees: both gasRebates.json networks, plus deterministic synthetic trees of 1–70 leaves, odd counts included, with a duplicated leaf from 4 leaves up. It dumped every root and every proof. Both dumps are byte-identical (sha256 e159bdb5…af1), and every proof verifies.

Signing path

Only b7dac11bb (dotenv) touches signing-path files. It changes one line in each of these 7 files under script/deploy/safe/: config() / dotenv.config() → …({ quiet: true }).

  • add-safe-owners-and-threshold.ts
  • confirm-safe-tx.ts
  • deploy-safe.ts
  • enqueue-parked-task.ts
  • list-parked-tasks.ts
  • list-pending-proposals.ts
  • safe-utils.ts

That line is the only change the dotenv 18 bump strictly needs: it keeps stderr free of the new "injected env" line. Env loading is otherwise unchanged. Nothing else under script/deploy/safe/**, ledger/signing helpers or the paths in protectSecurityRelevantCode.yml changes. citty was skipped precisely because it would change signing-path argument parsing.

Known pre-existing type errors in touched files (validate-scripts / pre-commit)

validate-scripts (CI validateScripts.yml and the pre-push hook) and the pre-commit typecheck-files.sh type-check every changed script. Six of the demo scripts this PR touches already have type errors on the base branch. That's 20 errors, all unrelated to these bumps, and the text is identical on the base apart from line shifts in demoArbitrumBridge.ts:

  • demoArbitrumBridge.ts: 5 errors. config['goerli'].l2GatewayRouter isn't in the config type, and populateTransaction.* is possibly undefined. A Goerli-era script.
  • demoChainflip.ts: 4 errors.
  • demoGasZip.ts: 4 errors.
  • demoLidoWrapper.ts: 1 error (missing diamond.json).
  • demoMayanSolana.ts: 5 errors (Mayan SDK API drift).
  • demoSquid.ts: 1 error.

Fixing them would change script behaviour or need SDK migrations, so it's out of scope here. Because of this, the validateScripts check is expected to fail on this PR for exactly these 20 errors. All six commits were made with --no-verify, and the branch was pushed with --no-verify. The four commits that don't touch these demo scripts had passed the full hooks before a rebase onto #2605's latest commit, and were recommitted unchanged. The hooks that tripped (typecheck-files.sh, pre-push validate-scripts) fail the same way on main for any change that touches these files. Every other hook step (oxfmt, oxlint, funnel fence, node-runtime fence) passed on all commits. I ran them manually for the --no-verify ones.

Verification

All runs are local: bun 1.4.4, Node 26.13.0, Foundry 1.8.7 (.foundry-version says 1.7.1; the hook warns but proceeds). Base = origin/chore/ci-tooling-upgrades @ 1f34498d3 (#2605).

check base (#2605) pass 1 pass 2 (from git clean -xfd, no node_modules/out/cache/typechain)
bun install --frozen-lockfile ok ok ok
bun lint ok ok ok
bun lint:md ok ok ok
bun run format (oxfmt + prettier sol) ok ok ok
bun typechain ok ok ok
tsc --noEmit -p . 38 errors 38 (same set, line shifts only) 38
bun test:ts 7206 pass / 1 fail 7206 / 1 (same failing test) 7206 / 1
bun validate-scripts pass fail: the 20 pre-existing errors above same
forge build ok ok ok
forge test 234 pass / 71 fail (fork tests, no RPC) identical pass/fail set identical
forge build src bytecode + deployedBytecode, 196 artifacts — identical identical
bun attestations:check up to date (61 entries) up to date up to date

The single bun test:ts failure is createPinnedTargetStateReader > reads the remote-tracking ref, not a same-named tag in the clone. It fails on the base too, because it depends on the local clone's refs.

Bytecode diff: the base build ran in the same clone path as the branch build. A build from a separate worktree path only differs in the CBOR metadata hash, so that comparison isn't meaningful.

Offline script checks:

  • demoPatcher.ts --help and balances.ts --help (chalk) render.
  • The @arbitrum/sdk 4 root exports ParentToChildMessageGasEstimator with estimateAll, and RetryableDataTools.ErrorTriggeringParams is unchanged.
  • TradingSdk builds with a ViemAdapter and resolves the signer address.
  • The bs58 round trip solanaAddressToBytes32 ↔ bytes32ToSolanaAddress works.
  • dotenv 18 prints nothing with { quiet: true } or via dotenv/config, and prints ◇ injected env without it.
  • The merkle script runs end to end, as described above.

Not runnable on a fork / not run

  • RPC-backed fork tests (forge test fork suites), coverage and any secret-backed CI jobs: fork PRs get no repo secrets. The 71 failing forge tests fail identically on the base.
  • Live runs of the demo scripts (Arbitrum/Goerli, CoW order posting, Solana, Eco): these need funded keys and RPCs. The Arbitrum demo targets Goerli, which is shut down.

Checklist before requesting a review

Checklist for reviewer (DO NOT DEPLOY and contracts BEFORE CHECKING THIS!!!)

  • I have checked that any arbitrary calls to external contracts are validated and or restricted
  • I have checked that any privileged calls (i.e. storage modifications) are validated and or restricted
  • I have ensured that any new contracts have had AT A MINIMUM 1 preliminary audit conducted on by <company/auditor>

philippzentner and others added 24 commits October 31, 2026 11:14
Node 22 reaches end-of-life on 2027-04-30. Pin CI and .nvmrc to Node 26,
raise engines.node to >=24 so developers on the 24 LTS line keep working,
and move @types/node to 24.19.2 to match the lowest supported runtime.
tj-actions/changed-files was compromised in March 2025. The Olympix job only
needs the added/copied/modified/renamed src/**/*.sol list and a boolean, which
dorny/paths-filter (already used elsewhere) provides with identical semantics.
The immutable-registry job used bun-version: latest; use bun-version-file:
package.json like every other setup-bun step.
Bump the overrides still needed to the latest safe version within their
current major (protobufjs 7.6.6, axios 1.21.0, smol-toml 1.9.1, lodash 4.18.1,
katex 0.18.11, ws 8.22.1, ip-address 10.7.5, fast-uri 3.1.9; markdown-it is
already at the latest 14.x) and move the direct axios and smol-toml pins with
them. Drop socks, validator and handlebars: without the override the tree
already resolves a non-vulnerable version. bun audit: 83 -> 60.
Node 24+ matches engines.node; .nvmrc now selects 26. Bun follows the packageManager pin, which CI also uses.
Unify actions/checkout on v7.0.1 (four different v4 SHAs were in use) and
move every other external action to its latest release, SHA-pinned with
a version comment.
Minor and patch bumps for bun.lock dependencies arrive as one grouped PR
per month, with at most 5 open Dependabot PRs. The github-actions entry
stays weekly and ungrouped.
Moves the submodule to the v1.17.0 tag commit (f3dae6e) and updates
foundry.lock. src artifacts compile to identical bytecode, and forge test
gives the same pass/fail set as before.
TypeScript 7 (the native Go port) only ships the tsc binary and an
unstable API under typescript/unstable/*; require('typescript') returns
just the version. The node-runtime and funnel fences, validate-scripts
and several placement tests use the classic compiler API, so 6.0.3 is the
newest release that works.
husky 9: prepare runs `husky` (no `husky install`), and hooks no longer
source husky.sh. husky 9's wrapper still runs hooks under `sh -e`, so
pre-commit and pre-push keep re-execing themselves under `bash -e`, now
behind their own guard variable instead of husky v8's husky_skip_init.

lint-staged 17: the pre-commit output filter also drops the new progress
lines so failures still show only the tool output.
solhint 6 adds use-natspec, function-max-lines and seven gas-* rules to
solhint:recommended, which would raise ~900 warnings on src/. They are
turned off to keep the v5 rule set; the other new recommended rules
(duplicated-imports, no-immutable-before-declaration, no-unchecked-calls)
report nothing on src/ and stay on.

no-unused-vars now also checks modifier parameters (solhint 6.0.1) and
flags the unused _polymerData parameter of PolymerCCTPFacet's
validatePolymerData modifier. Fixing it changes src bytecode, so the rule
drops to warn and lint:sol reports 0 errors, 1 warning. .solhint.json is
plain JSON and solhint rejects extra keys, so the reasons live here.
.oxfmtrc.json is generated by `oxfmt --migrate=prettier` from
.prettierrc.cjs (same options, .prettierignore entries as ignorePatterns).
Prettier stays on 2.8 + prettier-plugin-solidity 1.4 for *.sol only:
Prettier 3 + plugin 2 would reformat 113 .sol files (49 under src/), and
any src/*.sol change alters bytecode metadata. solhint-plugin-prettier
stays on 0.0.5 because 0.1.0 needs Prettier 3.

Updates the format scripts, lint-staged, the agent format hook, the
factory format check, the docs that name the formatter and the VS Code
settings template.
Mechanical output of `bun format:fix` after the switch to oxfmt. No
.sol file changes. Listed in .git-blame-ignore-revs.

Committed with --no-verify: lint-staged's typecheck-files step fails on
script/demoScripts/demoChainflip.ts with the same 4 type errors it has on
main. oxlint, both fences and typecheck of the other 89 files pass.
- node-gyp 10 -> 13
- plop 3 -> 4 (bun codegen --help and a non-interactive facet run work)
- @typechain/ethers-v5 10 -> 11: same 369 files; inputs lose the
  PromiseOrValue<T> wrapper and overloaded event keys use full tuple
  signatures. No script uses either; tsc reports the same errors.
- markdownlint-cli2 0.23.3 -> 0.24.0 (lint:md clean)
- @types/bun 1.2 -> 1.4
- patch-package removed together with its postinstall step: the repo has
  no patches/ directory, so it never applied anything.
Its header says only humans edit the factory rules, so the switch of its
format check to oxfmt is left to a maintainer.
The file has 4 type errors on main, including an undefined
lifiDiamondAddress, so they can't be fixed with type-only changes.
Reformatting it made validate-scripts type-check it and fail. It is
restored byte-for-byte to main and listed in the oxfmt ignorePatterns.
lint-staged's oxfmt entry gets --no-error-on-unmatched-pattern so
staging an ignored file doesn't fail the commit.

Committed with --no-verify: staging the file makes lint-staged's
typecheck-files step report its 4 pre-existing errors, which happens for
any commit that touches it on main too.
v11 drops PromiseOrValue<T> from common.ts and every input type and
renames overloaded event keys. types.yaml publishes this output to
lifinance/lifi-contract-types as a patch/minor release, so v11 would
break downstream TS consumers. It needs a coordinated major release of
lifi-contract-types plus a downstream migration. The typechain output is
identical to the lifinance#2604 baseline again.
v4 renamed L1ToL2MessageGasEstimator to ParentToChildMessageGasEstimator
and exports it from the package root. estimateAll keeps the same
arguments and the l2CallValue field, so the demo script only needs the
import and constructor rename.
bs58 6 ships its own types, so the @ts-expect-error on the default
import is no longer needed. decode() now returns a Uint8Array instead of
a Buffer; the only consumer passes it to viem's toHex, which accepts
both.
Output is unchanged: demoGenerateMerkleTree.ts writes a byte-identical
outputMerkleProofs.json under 0.3.11 and 0.6.0 (sha256 0ab8f479…), and a
comparison over 72 trees (both gasRebates networks plus synthetic trees
of 1-70 leaves, including odd counts and a duplicate leaf) gives the
same roots and proofs.
chalk 6 only raises the Node floor to 22 (the repo runs Node 26) and
changes numeric FORCE_COLOR / ansi256 downsampling, neither of which the
scripts use. Kept as an exact pin, like before.
dotenv 17+ logs an "injected env" line on every config() call (to
stderr since 18). Pass { quiet: true } at all 34 explicit config() call
sites, including the facet demo template, so script output stays the
same as on dotenv 16. The 'dotenv/config' side-effect import already
defaults to quiet since 18.0.4. No script uses the removed .env.vault
support or preloading.

Touches signing-path files under script/deploy/safe/ (one-line
config() -> config({ quiet: true }) each).
cow-sdk 7+ takes a provider adapter instead of an ethers signer. The
demo now passes a ViemAdapter (@cowprotocol/sdk-viem-adapter) built from
the same Arbitrum RPC and private key; the ethers v5 adapter was not used
because it peers on @typechain/ethers-v5 11. postSwapOrder now returns an
object, so the order id is read from .orderId.

The CowShed constants moved to @cowprotocol/sdk-cow-shed and are keyed by
version; the helper keeps the 1.0.0 factory and implementation, which
are the same addresses cow-sdk 5 exported.
@coderabbitai

coderabbitai Bot commented Oct 31, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 178 files, which is 78 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Repository UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: d79a9d00-3493-46d2-9239-9911715f1752
Commits

Reviewing files that changed from the base of the PR and between e8113fd and 8d63dec.

Files ignored due to path filters: 2
  • bun.lock is excluded by !**/*.lock
  • foundry.lock is excluded by !**/*.lock
Files selected for processing: 178
  • .agents/context.md
  • .agents/hooks/post-edit-format.sh
  • .agents/hooks/post-edit-validate.sh
  • .agents/rules/099-finish.md
  • .agents/rules/402-typescript-tests.md
  • .git-blame-ignore-revs
  • .github/actions/setup-foundry/action.yml
  • .github/dependabot.yml
  • .github/workflows/assignRequiresTypesLabel.yml
  • .github/workflows/bunLockfileCheck.yml
  • .github/workflows/convertForkedPRsToInternal.yml
  • .github/workflows/cronLiveness.yml
  • .github/workflows/deploy-smoke-test.yml
  • .github/workflows/deploymentAddressConsistency.yml
  • .github/workflows/diamondEmergencyPause.yml
  • .github/workflows/enforceLibAssetRouting.yml
  • .github/workflows/enforceProposalFunnel.yml
  • .github/workflows/forge-unit-tests.yml
  • .github/workflows/healthCheckAllNetworks.yml
  • .github/workflows/healthCheckForNewNetworkDeployment.yml
  • .github/workflows/healthCheckInvariantsReminder.yml
  • .github/workflows/jsonChecker.yml
  • .github/workflows/markdownlint.yml
  • .github/workflows/mintBuildAttestations.yml
  • .github/workflows/networkRpcsChecker.yml
  • .github/workflows/notifyDataTeamOnDeployment.yml
  • .github/workflows/olympixStaticAnalysis.yml
  • .github/workflows/protectAuditLabels.yml
  • .github/workflows/protectSecurityRelevantCode.yml
  • .github/workflows/qa-review-trigger.yml
  • .github/workflows/reconcileParkedTasks.yml
  • .github/workflows/runPendingTimelockTXs.yml
  • .github/workflows/securityAlertsReview.yml
  • .github/workflows/solc-floor-build.yml
  • .github/workflows/spdxLicenseChecker.yml
  • .github/workflows/syncLedgerClearSigning.yml
  • .github/workflows/ticketLinkageMetric.yml
  • .github/workflows/timelockWatcher.yml
  • .github/workflows/ts-unit-tests.yml
  • .github/workflows/types.yaml
  • .github/workflows/updateLouperViem.yml
  • .github/workflows/updateScriptConfigReminder.yml
  • .github/workflows/validateScripts.yml
  • .github/workflows/verifyClearSigning.yml
  • .github/workflows/verifyCommitsSigned.yml
  • .github/workflows/verifyEmergencyPauseReadiness.yml
  • .github/workflows/versionControlAndAuditCheck.yml
  • .github/workflows/weeklyCoverageReport.yml
  • .husky/pre-commit
  • .husky/pre-push
  • .nvmrc
  • .oxfmtrc.json
  • .prettierrc.cjs
  • .solhint.json
  • .vscode/settings.json.default
  • CLAUDE.md
  • docs/Setup.md
  • lib/forge-std
  • package.json
  • script/demoScripts/demoAcrossV4.ts
  • script/demoScripts/demoAcrossV4Swap.ts
  • script/demoScripts/demoArbitrumBridge.ts
  • script/demoScripts/demoCentrifuge.ts
  • script/demoScripts/demoChainflip.ts
  • script/demoScripts/demoDLN.ts
  • script/demoScripts/demoEco.ts
  • script/demoScripts/demoFrax.ts
  • script/demoScripts/demoGarden.ts
  • script/demoScripts/demoGasZip.ts
  • script/demoScripts/demoGlacis.ts
  • script/demoScripts/demoLayerSwap.ts
  • script/demoScripts/demoLidoWrapper.ts
  • script/demoScripts/demoM0.ts
  • script/demoScripts/demoMayan.ts
  • script/demoScripts/demoMayanSolana.ts
  • script/demoScripts/demoNEARIntents.ts
  • script/demoScripts/demoPatcher.ts
  • script/demoScripts/demoPaxosTransit.ts
  • script/demoScripts/demoPolymerCCTP.ts
  • script/demoScripts/demoRelayDepository.ts
  • script/demoScripts/demoSquid.ts
  • script/demoScripts/demoSuperset.ts
  • script/demoScripts/demoThorSwap.ts
  • script/demoScripts/demoUnit.ts
  • script/demoScripts/utils/cowSwapHelpers.ts
  • script/demoScripts/utils/demoScriptHelpers.ts
  • script/deploy/audit/audit-gate.test.ts
  • script/deploy/audit/source-closure.ts
  • script/deploy/codehash/immutable-expectations.ts
  • script/deploy/codehash/verify-cut-targets.test.ts
  • script/deploy/codehash/verify-cut-targets.ts
  • script/deploy/healthCheck.ts
  • script/deploy/healthCheckInvariants.test.ts
  • script/deploy/healthCheckInvariants.ts
  • script/deploy/safe/actionable-network-scan.test.ts
  • script/deploy/safe/add-safe-owners-and-threshold.ts
  • script/deploy/safe/calldata-address-check.ts
  • script/deploy/safe/calldata-effect-lines.ts
  • script/deploy/safe/codehash-sign-gate-deps.test.ts
  • script/deploy/safe/codehash-sign-gate-deps.ts
  • script/deploy/safe/codehash-sign-gate.ts
  • script/deploy/safe/confirm-check-registry.ts
  • script/deploy/safe/confirm-integrity-asserts.ts
  • script/deploy/safe/confirm-safe-tx-ack.test.ts
  • script/deploy/safe/confirm-safe-tx-ack.ts
  • script/deploy/safe/confirm-safe-tx.ts
  • script/deploy/safe/definite-red-funnels.test.ts
  • script/deploy/safe/definite-red-gate.test.ts
  • script/deploy/safe/definite-red-gate.ts
  • script/deploy/safe/deploy-safe.ts
  • script/deploy/safe/diamondRemovalDiff.ts
  • script/deploy/safe/enqueue-parked-task.ts
  • script/deploy/safe/executability-collector.test.ts
  • script/deploy/safe/executability-simulation.ts
  • script/deploy/safe/executability-view.test.ts
  • script/deploy/safe/executability-view.ts
  • script/deploy/safe/guard-error-redaction.ts
  • script/deploy/safe/ledger.ts
  • script/deploy/safe/list-parked-tasks.ts
  • script/deploy/safe/list-pending-proposals.ts
  • script/deploy/safe/list-timelock-queue.ts
  • script/deploy/safe/mongo-store-transport.ts
  • script/deploy/safe/periphery-allowlist-gate.ts
  • script/deploy/safe/prebroadcast-authorities.ts
  • script/deploy/safe/prebroadcast-rederive.ts
  • script/deploy/safe/propose-funnel-fence.test.ts
  • script/deploy/safe/provenance-display.ts
  • script/deploy/safe/reconcile-parked-tasks.ts
  • script/deploy/safe/reconcile.ts
  • script/deploy/safe/render-check-ledger.ts
  • script/deploy/safe/rpc-quorum-collector.test.ts
  • script/deploy/safe/safe-decode-utils.test.ts
  • script/deploy/safe/safe-decode-utils.ts
  • script/deploy/safe/safe-utils.ts
  • script/deploy/safe/signed-set-record.ts
  • script/deploy/safe/signer-outcome.test.ts
  • script/deploy/safe/signer-view.test.ts
  • script/deploy/safe/signer-view.ts
  • script/deploy/safe/timelock-cancel-decision.ts
  • script/deploy/safe/timelock-queue.test.ts
  • script/deploy/safe/timelock-queue.ts
  • script/deploy/safe/timelock-rebroadcast.ts
  • script/deploy/safe/timelock-watcher-report.ts
  • script/deploy/safe/timelock-watcher-scan.ts
  • script/deploy/safe/timelock-watcher-verdict.test.ts
  • script/deploy/safe/timelock-watcher-verdict.ts
  • script/deploy/safe/timelock-watcher.ts
  • script/deploy/shared/diamond-cut-calls.ts
  • script/deploy/shared/immutableBindings.test.ts
  • script/deploy/shared/record-codehash.test.ts
  • script/deploy/tron/deploy-and-register-periphery.ts
  • script/deploy/tron/deploy-and-register-symbiosis-facet.ts
  • script/deploy/tron/deploy-safe-tron.ts
  • script/deploy/tron/propose-to-safe-tron.ts
  • script/deploy/tron/timelock-salt-tron.ts
  • script/deploy/tron/transfer-ownership-to-timelock.ts
  • script/deploy/tron/tron-energy-estimate.ts
  • script/helperFunctions.gate.test.ts
  • script/mongoDb/audit-rpc-priorities.ts
  • script/mongoDb/fetch-rpcs.ts
  • script/tasks/declareRolloutInTargetState.test.ts
  • script/tasks/diamondUpdateFacet.gate.test.ts
  • script/tasks/diamondUpdatePeriphery.test.ts
  • script/tasks/manageWalletFunds.ts
  • script/tasks/proposePeripheryWithWhitelist.ts
  • script/tasks/temp/checkEmergencyPausePerNetwork.ts
  • script/tasks/temp/checkWhitelistSyncStatusPerNetwork.ts
  • script/troncast/utils/abi.ts
  • script/troncast/utils/parser.ts
  • script/utils/check-open-prs.ts
  • script/utils/cronLiveness.ts
  • script/utils/fetch-missing-deployments.ts
  • script/utils/node-runtime-fence.ts
  • script/utils/utils.ts
  • script/utils/viemScriptHelpers.test.ts
  • script/utils/viemScriptHelpers.ts
  • tasks/generateLedgerClearSigning.ts
  • templates/facetDemoScript.template.hbs

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@gvladika

gvladika commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

Thanks @philippzentner, especially for the merkletreejs equivalence check and the citty notes. CI and secrets don't run on fork PRs, so I've taken this over in #2630, which keeps your 6 commits as they were and is stacked on #2609.

Changes on top:

  • @arbitrum/sdk is removed rather than bumped, together with demoArbitrumBridge.ts, its only user. The demo targets Goerli, which is shut down, and reads a config key that doesn't exist.
  • The 5 demo scripts whose only change was dotenv's quiet flag stay as on main, because touching them makes CI type-check errors that were already there.
  • Bumped and new packages are pinned exactly, and the now-unused protobufjs override is removed.

Closing in favour of #2630.

@gvladika gvladika closed this Nov 6, 2026
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.

2 participants