Skip to content

fix(networks): mark tronshasta inactive to stop timelock auto-execution failures - #2267

Merged
0xDEnYO merged 1 commit into
mainfrom
fix/exsc-timelock-tronshasta-inactive
Aug 25, 2026
Merged

fix(networks): mark tronshasta inactive to stop timelock auto-execution failures#2267
0xDEnYO merged 1 commit into
mainfrom
fix/exsc-timelock-tronshasta-inactive

Conversation

@0xDEnYO

@0xDEnYO 0xDEnYO commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Which Linear task belongs to this PR?

None — single-line config fix, labelled trivial per the carve-out in .agents/context.md.

Why did I implement it this way?

Timelock Auto Execution has failed on every scheduled run since 2026-08-24 16:21 UTC (23+ consecutive runs, one Slack alert each in #dev-sc-timelock-executions).

Root cause: PR #2252 (EXSC-818 deploy-log pruning) deleted deployments/tronshasta.json, but tronshasta was still status: "active" in config/networks.json. The auto-executor iterates active networks; fetchPendingForNetwork calls getDeployments, which throws when the deployments file is absent rather than reporting "no timelock here":

[error] [tronshasta] Prefetch failed: Deployments file not found for tronshasta (production)
[info] Checked 71 network(s) (MongoDB only); 0 have pending timelock tx(s)
[warn] Prefetch failed for 1 network(s): tronshasta
[error] No networks with pending timelock txs; some networks failed to fetch. Exiting with error…

The guard at execute-pending-timelock-tx.ts:240 exits 1 when zero networks have pending work and at least one failed to fetch. That is why the alerts started ~8h after #2252 merged: until 16:05 UTC there was genuine pending work (injective + plasma), so the tronshasta error stayed a warning. The moment the queue drained, every run began failing.

No timelock work was ever missed — this was pure false-alarm noise.

Fix: tronshasta has no deployed diamond, no deploy log, no Safe address, and no foundry.toml entry. It is a Tron testnet reached only through the contracts-tron fork's TronWeb scripts, which do not read status. Marking it inactive removes it from getAllActiveNetworks() and therefore from the executor's network set, so no prefetch is attempted and the guard no longer fires.

Verified:

  • Active network count 71 → 70; tronshasta excluded, tron (mainnet) still included.
  • tronshasta appears in no other config — only config/networks.json. No deploy log, no foundry.toml entry, no whitelist/clearSigning reference.
  • bun test script/1056 pass, 0 fail (48 files).
  • Prettier untouched on config/networks.json (insertion-only one-line diff, per repo convention that JSON is not formatter-managed).

Known follow-up (deliberately not in this PR): the underlying fragility remains — getDeployments cannot distinguish "no deployment log" from a real fetch error, so any future active network without a deploy log will break the cron the same way. Treating a missing deployments file as "no timelock deployed" in fetchPendingForNetwork is the durable fix.

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>

…on failures

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@0xDEnYO 0xDEnYO added the trivial Excluded from ticket-linkage metric (typo/doc-only/dep-bump) label Aug 24, 2026
@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ccdf91aa-b4b5-4b89-a066-bb7bf5681f9f

📥 Commits

Reviewing files that changed from the base of the PR and between 1f7f354 and 31bf9f5.

📒 Files selected for processing (1)
  • config/networks.json

Included review availability: Your plan provides up to 2 included reviews per hour; 0 remain after this review.


Walkthrough

The tronshasta network entry in config/networks.json changes its status from "active" to "inactive".

Changes

Network status configuration

Layer / File(s) Summary
Update Tron Shasta status
config/networks.json
The tronshasta network status changes from "active" to "inactive".

Estimated code review effort: 1 (Trivial) | ~2 minutes

Merge Risk: ⚪ Minimal · up to 31bf9

This localized configuration change excludes the inactive tronshasta testnet from scheduled timelock execution checks; no actionable merge-blocking risk remains after normal checks and review.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly identifies the configuration change and its purpose: marking tronshasta inactive to prevent Timelock Auto Execution failures.
Description check ✅ Passed The description is detailed and covers the task rationale, root cause, implementation, verification results, scope, and checklist sections. The unchecked test item is reasonable for a one-line configu…
Full details: Docstring Coverage

Explanation

No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0 files. (1 skipped: 1 unsupported.)

Full details: Description check

Explanation

The description is detailed and covers the task rationale, root cause, implementation, verification results, scope, and checklist sections. The unchecked test item is reasonable for a one-line configuration fix, and the reviewer checklist is appropriately left for the reviewer.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/exsc-timelock-tronshasta-inactive

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

Comment @coderabbitai help to get the list of available commands.

@0xDEnYO
0xDEnYO marked this pull request as ready for review August 24, 2026 23:11
@0xDEnYO
0xDEnYO requested a review from a team August 24, 2026 23:11
@0xDEnYO
0xDEnYO enabled auto-merge (squash) August 24, 2026 23:45
@0xDEnYO
0xDEnYO merged commit df986c9 into main Aug 25, 2026
74 of 75 checks passed
@0xDEnYO
0xDEnYO deleted the fix/exsc-timelock-tronshasta-inactive branch August 25, 2026 08:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

AuditNotRequired trivial Excluded from ticket-linkage metric (typo/doc-only/dep-bump)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants