Skip to content

feat(defaults): giga executor enabled by default, matching seid#42

Open
bdchatham wants to merge 1 commit into
mainfrom
feat/giga-executor-default-on
Open

feat(defaults): giga executor enabled by default, matching seid#42
bdchatham wants to merge 1 commit into
mainfrom
feat/giga-executor-default-on

Conversation

@bdchatham

Copy link
Copy Markdown
Collaborator

Why

baseDefaults() never sets GigaExecutor, so the Go zero value renders [giga_executor] enabled = false / occ_enabled = false into every app.toml sei-config produces — for every mode, on every render. seid's own default is the opposite (DefaultConfig = {Enabled: true, OCCEnabled: true}, giga/executor/config/config.go), and seid only applies its code default when the key is absent — so the fleet has been pinned to the v2 executor by an accident of zero values, not a decision. (Found while verifying why the EIP-7623 receipt-parity specs pass against every nightly node: no platform-managed node executes EVM txs through the giga path at all. Adversarial review confirmed the render chain: legacyGigaExecutor has no omitempty, so the section is always present-with-false, and neither seid launch args nor env carry any giga_executor override on live harbor nodes.)

What

Set GigaExecutor{Enabled: true, OccEnabled: true} in baseDefaults(), matching seid. Explicit-false overrides still render (which is why this is a value change, not the omit-when-unset pattern used for write_mode/evm-ss-splitomitempty on a bool would silently drop an operator's explicit false).

⚠️ Blast radius — review before merging

  • Every node without an explicit giga_executor.enabled override flips to the giga executor on its next config render + seid restart. Only two prod files pin the key today (arctic-1/archive-0-1a, pacific-1/shadow-giga); everything else rides the default. If prod should stay v2, land explicit false pins before this merges, or gate this by mode.
  • Older pinned binaries (e.g. the nightly upgrade-from image) will read enabled = true into whatever giga maturity they shipped — TestNightlyChainUpgrade exercises exactly this.
  • Enabling giga also flips tmtypes.SkipLastResultsHashValidation — consensus-adjacent; deserves deliberate sei-chain sign-off.
  • Downstream: nightly release-test suites then run against giga-executor nodes — the desired end-state for guarding sei-chain#3768, but only once #3768 merges; sequencing matters or the parity specs go red.

Testing

go build ./... + go test ./... green. No existing test pinned the old false default (registry/intent tests assert key presence, not value).

🤖 Generated with Claude Code

baseDefaults never set GigaExecutor, so the Go zero value rendered
[giga_executor] enabled=false / occ_enabled=false into every node's
app.toml — silently overriding seid's own DefaultConfig (enabled=true,
occ_enabled=true, giga/executor/config/config.go). Because seid only
falls back to its code default when the key is absent, the platform
fleet has been force-pinned to the v2 executor by accident of zero
values rather than by decision.

Nodes that must stay on v2 pin giga_executor.enabled=false explicitly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cursor

cursor Bot commented Jul 16, 2026

Copy link
Copy Markdown

PR Summary

High Risk
Flips the default execution path for most fleet nodes on the next config render and seid restart, with consensus-adjacent behavior when giga is enabled; only a few prod configs currently pin false.

Overview
baseDefaults() now sets GigaExecutor to enabled=true and occ_enabled=true, aligned with seid’s DefaultConfig.

Previously, leaving GigaExecutor unset meant Go zero values were always written into generated app.toml, so every sei-config render effectively forced the v2 executor off and overrode seid’s in-binary default when the key was absent. Operators who need v2 must set giga_executor.enabled=false explicitly on the next render/restart.

Reviewed by Cursor Bugbot for commit ed463f5. Bugbot is set up for automated code reviews on this repo. Configure here.

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.

1 participant