Skip to content

fix(kona/derive): make syscfg update failure non-fatal in StatefulAttributesBuilder#19503

Merged
ajsutton merged 1 commit intodevelopfrom
aj/fix/aq-10-syscfg-update-nonfatal
Mar 14, 2026
Merged

fix(kona/derive): make syscfg update failure non-fatal in StatefulAttributesBuilder#19503
ajsutton merged 1 commit intodevelopfrom
aj/fix/aq-10-syscfg-update-nonfatal

Conversation

@ajsutton
Copy link
Copy Markdown
Contributor

@ajsutton ajsutton commented Mar 12, 2026

Summary

  • In StatefulAttributesBuilder::prepare_payload_attributes, the update_with_receipts call propagated system config update errors as .crit(), halting the derivation pipeline
  • The op-node reference at attributes.go:97-99 intentionally ignores these errors (_ = UpdateSystemConfigWithL1Receipts(...))
  • Changed to log a warning and continue, matching op-node behavior and the same fix already applied to PollingTraversal/IndexedTraversal in fix(kona/derive): make syscfg update failure non-fatal in L1Traversal #19358

Fixes AQ-10: update_with_receipts error handling mismatch between kona's StatefulAttributesBuilder and op-node's PreparePayloadAttributes.

Prior art

This follows the exact same pattern established in #19358 (LT-03) for the L1 traversal stages.

Op-node reference

// attributes.go:97-99
_ = UpdateSystemConfigWithL1Receipts(&sysConfig, receipts, cfg.L1SystemConfigAddress, cfg.IsEcotone(l1Info.Time()))

Test plan

  • Added test_syscfg_update_error_is_nonfatal — constructs a malformed system config receipt and verifies prepare_payload_attributes succeeds instead of returning a critical error
  • cargo check -p kona-derive passes
  • cargo test -p kona-derive -- test_syscfg_update_error_is_nonfatal passes

🤖 Generated with Claude Code

Closes #19512

…ributesBuilder

System config update errors in `prepare_payload_attributes` were propagated
as critical pipeline errors, halting derivation. One or more receipts may
contain malformed or invalid config update logs, which should not be fatal.

Change the error handling to log a warning and continue derivation instead.

Closes: AQ-10

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@ajsutton ajsutton force-pushed the aj/fix/aq-10-syscfg-update-nonfatal branch from 487eb66 to 8637200 Compare March 12, 2026 18:03
@codecov
Copy link
Copy Markdown

codecov bot commented Mar 12, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 75.8%. Comparing base (f67fd6c) to head (8637200).
⚠️ Report is 25 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #19503      +/-   ##
===========================================
+ Coverage     75.3%    75.8%    +0.5%     
===========================================
  Files          194      477     +283     
  Lines        11285    60033   +48748     
===========================================
+ Hits          8502    45553   +37051     
- Misses        2639    14480   +11841     
+ Partials       144        0     -144     
Flag Coverage Δ
cannon-go-tests-64 ?
contracts-bedrock-tests ?
unit 75.8% <100.0%> (?)

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
.../crates/protocol/derive/src/attributes/stateful.rs 98.6% <100.0%> (ø)

... and 670 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@ajsutton ajsutton marked this pull request as ready for review March 12, 2026 21:47
@ajsutton ajsutton requested a review from a team as a code owner March 12, 2026 21:47
@ajsutton ajsutton requested a review from theochap March 12, 2026 21:47
@sebastianst sebastianst self-assigned this Mar 13, 2026
Copy link
Copy Markdown
Member

@sebastianst sebastianst left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix LGTM.
It's odd that we don't maintain a single view of the SystemConfig across all stages. That the attributes builder refetches the SystemConfig again after the L1Traversal already maintains its own view is something we should fix... We will fix this when migrating to a non-IO derivation pipeline.

@ajsutton ajsutton added this pull request to the merge queue Mar 14, 2026
Merged via the queue into develop with commit 1e2b976 Mar 14, 2026
280 checks passed
@ajsutton ajsutton deleted the aj/fix/aq-10-syscfg-update-nonfatal branch March 14, 2026 01:59
ClaytonNorthey92 pushed a commit to hemilabs/optimism that referenced this pull request Mar 19, 2026
…ributesBuilder (ethereum-optimism#19503)

System config update errors in `prepare_payload_attributes` were propagated
as critical pipeline errors, halting derivation. One or more receipts may
contain malformed or invalid config update logs, which should not be fatal.

Change the error handling to log a warning and continue derivation instead.

Closes: AQ-10

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
ClaytonNorthey92 pushed a commit to hemilabs/optimism that referenced this pull request Mar 23, 2026
…ributesBuilder (ethereum-optimism#19503)

System config update errors in `prepare_payload_attributes` were propagated
as critical pipeline errors, halting derivation. One or more receipts may
contain malformed or invalid config update logs, which should not be fatal.

Change the error handling to log a warning and continue derivation instead.

Closes: AQ-10

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
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.

kona/derive: system config update errors in StatefulAttributesBuilder return Critical instead of being ignored

2 participants