This PR makes presets.NewSingleChainWithFlashblocks(...) run through a real constructor DAG instead of the legacy orchestrator/system wiring path.
It is the first concrete preset migration where:
- the preset no longer calls
DefaultSingleChainSystemWithFlashblocks(), - construction happens via direct hierarchical constructor calls in
sysgo, and - acceptance tests still consume the same preset API surface.
Added:
op-devstack/sysgo/flashblocks_runtime.go
This runtime now constructs and boots the flashblocks test target directly:
- build L1/L2 intent world,
- start L1 (EL + fake beacon CL),
- start sequencer EL,
- start builder EL (
op-rbuilder), - wire EL P2P peering,
- start rollup-boost,
- start sequencer CL (
op-node), - start faucet service for L1 and L2.
The runtime exports topology + endpoint data needed by presets (L1/L2 configs, deployment, node RPCs, flashblocks WS URLs, faucet endpoints).
Updated:
op-devstack/presets/flashblocks.go
Changes:
NewSingleChainWithFlashblocksnow instantiatessysgo.NewFlashblocksRuntime(...).- It assembles DSL/shim frontends directly from runtime references.
- It no longer routes through orchestrator/system constructor chains.
- It rejects orchestrator options for this preset (
optsmust be empty).
Updated:
op-devstack/presets/sysgo_runtime.go
Removed:
singleChainWithFlashblocksRuntimetypesingleChainWithFlashblocksRuntimeFromOrchestrator(...)
This deletes the now-unused preset-specific flashblocks orchestrator hydration path.
The runtime now starts an in-process test-sequencer service directly (no orchestrator path), configures L1 + L2 sequencing backends, and exports:
- admin RPC endpoint,
- JWT secret,
- per-chain control RPC endpoints.
The preset wires this into dsl.TestSequencer via the existing frontend constructor.
Updated:
op-acceptance-tests/tests/flashblocks/flashblocks_stream_test.go
driveViaTestSequencer(...) now requires the test-sequencer to exist again (fallback removed), so the test behavior matches the prior deterministic sequencing model.
Executed:
go test ./op-devstack/sysgo -run '^$'go test ./op-devstack/presets -run '^$'go test ./op-acceptance-tests/tests/flashblocks -count=1
All passed.
- Move shared constructor primitives into a dedicated package (e.g. runtime builders for L1/L2/faucet/sequencer services).
- Migrate next preset(s) to runtime assembly (
minimal, thenbase/conductorpath). - Start deleting flashblocks legacy sysgo constructor plumbing in
system.goonce no call-sites remain.