This repository was archived by the owner on Jan 16, 2026. It is now read-only.
Merged
Conversation
Wiz Scan Summary
To detect these findings earlier in the dev lifecycle, try using Wiz Code VS Code Extension. |
theochap
reviewed
Nov 17, 2025
theochap
reviewed
Nov 17, 2025
theochap
reviewed
Nov 17, 2025
theochap
reviewed
Nov 17, 2025
theochap
reviewed
Nov 17, 2025
d76717a to
fb89f13
Compare
Also - Creates a facade for SequencerAdminAPIClient, moving away from explicit dependence on channels - Starts to inject dependencies into SequencerActor. We have to change NodeActor in unfavorable ways to do so, though.
fb89f13 to
6cf140e
Compare
- Removed RollupNodeService trait. There was only one implementation, and building out the start function to support actor creation requires access to its state. - Made SequencerActor generic - Consolidated SequencerActor (removing SequencerActorState) - Simplified SequencerActor methods - Pulled SequencerActor admin_api_impl into its own file - Pulled sequencer errors and metrics out to their own files - Pulling reset_engine_forkchoice into BlockEngineClient - Changed EngineAPIClient to use task errors, giving the sequencer much more granular control over its error handling
6cf140e to
8f9d1ee
Compare
einar-oplabs
approved these changes
Nov 20, 2025
Collaborator
einar-oplabs
left a comment
There was a problem hiding this comment.
Awesome work!
This looks in line with what we discussed.
Remember using conventional commit in title.
theochap
reviewed
Nov 20, 2025
theochap
reviewed
Nov 20, 2025
theochap
reviewed
Nov 20, 2025
theochap
reviewed
Nov 20, 2025
theochap
reviewed
Nov 20, 2025
theochap
reviewed
Nov 20, 2025
theochap
reviewed
Nov 20, 2025
theochap
reviewed
Nov 20, 2025
theochap
reviewed
Nov 20, 2025
theochap
reviewed
Nov 20, 2025
theochap
reviewed
Nov 20, 2025
theochap
reviewed
Nov 21, 2025
theochap
reviewed
Nov 21, 2025
theochap
reviewed
Nov 21, 2025
theochap
reviewed
Nov 21, 2025
theochap
approved these changes
Nov 21, 2025
Member
theochap
left a comment
There was a problem hiding this comment.
Looks good overall. A few last nits to fix. Should be good to merge once those are fixed
That is now handled within the sequencer's update_metrics fn. Also: - Simplifies access modifiers in sequencer/metrics.rs - Fixes typo in sequencer/admin_api_client.rs - Moves metrics update inside of conductor presence check in admin_api_impl.rs `override_leader` since if there is no conductor, nothing will change.
This was referenced Nov 21, 2025
op-will
added a commit
that referenced
this pull request
Dec 3, 2025
This is a remnant from #3045 that should have been removed at that time, as all of its logic was pulled into service/node.rs.
github-merge-queue bot
pushed a commit
that referenced
this pull request
Dec 3, 2025
This is a remnant from #3045 that should have been removed at that time, as all of its logic was pulled into service/node.rs. Thanks to @einar-oplabs for pointing this out!
theochap
pushed a commit
to ethereum-optimism/optimism
that referenced
this pull request
Dec 10, 2025
# Summary This PR makes a number of actor-framework-level changes to allow dependency injection and ultimately unit tests within all of the actors. The actor that is used to demonstrate the updates is `SequencerActor`. If this approach looks good, issues can be created to update other actors and add test coverage. This also starts to create client traits for different actor functionality in an effort to remove channel dependencies at the interface level. This will help streamline unit tests and allow the interfaces to evolve more seamlessly. ## Key Changes * Loosen `NodeActor` trait requirements (remove `build()` fn and `builder` type) * Remove `RollupNodeService` trait since it had one implementation and logic split between trait and impl * Create traits for _most_ `SequencerActor` dependencies * This includes making facade client traits for actor-actor communication, loosening the interface-level dependence on channels and increasing unit testing ergonomics * The remaining dependencies will be wrapped in traits as a follow-up PR to this one to avoid further bulking this PR * Make `SequencerActor` generic over dependency traits * Inject concrete instances of dependencies into `SequencerActor` * Separate logic in `SequencerActor` into helper functions for better readability and self-documentation * Pull metrics, admin api server, error, and builder utilities into separate files to self-document and reduce size of main `SequencerActor` file --- Ref: op-rs/kona#3025, op-rs/kona#3021, op-rs/kona#2623
theochap
pushed a commit
to ethereum-optimism/optimism
that referenced
this pull request
Dec 10, 2025
…kona#3129) This is a remnant from op-rs/kona#3045 that should have been removed at that time, as all of its logic was pulled into service/node.rs. Thanks to @einar-oplabs for pointing this out!
theochap
pushed a commit
to ethereum-optimism/optimism
that referenced
this pull request
Jan 14, 2026
# Summary This PR makes a number of actor-framework-level changes to allow dependency injection and ultimately unit tests within all of the actors. The actor that is used to demonstrate the updates is `SequencerActor`. If this approach looks good, issues can be created to update other actors and add test coverage. This also starts to create client traits for different actor functionality in an effort to remove channel dependencies at the interface level. This will help streamline unit tests and allow the interfaces to evolve more seamlessly. ## Key Changes * Loosen `NodeActor` trait requirements (remove `build()` fn and `builder` type) * Remove `RollupNodeService` trait since it had one implementation and logic split between trait and impl * Create traits for _most_ `SequencerActor` dependencies * This includes making facade client traits for actor-actor communication, loosening the interface-level dependence on channels and increasing unit testing ergonomics * The remaining dependencies will be wrapped in traits as a follow-up PR to this one to avoid further bulking this PR * Make `SequencerActor` generic over dependency traits * Inject concrete instances of dependencies into `SequencerActor` * Separate logic in `SequencerActor` into helper functions for better readability and self-documentation * Pull metrics, admin api server, error, and builder utilities into separate files to self-document and reduce size of main `SequencerActor` file --- Ref: #3025, #3021, #2623
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Summary
This PR makes a number of actor-framework-level changes to allow dependency injection and ultimately unit tests within all of the actors. The actor that is used to demonstrate the updates is
SequencerActor. If this approach looks good, issues can be created to update other actors and add test coverage.This also starts to create client traits for different actor functionality in an effort to remove channel dependencies at the interface level. This will help streamline unit tests and allow the interfaces to evolve more seamlessly.
Key Changes
NodeActortrait requirements (removebuild()fn andbuildertype)RollupNodeServicetrait since it had one implementation and logic split between trait and implSequencerActordependenciesSequencerActorgeneric over dependency traitsSequencerActorSequencerActorinto helper functions for better readability and self-documentationSequencerActorfileRef: #3025, #3021, #2623