Skip to content

feat(prover-ray): preflight helpers - #3743

Merged
ThomasPiellard merged 8 commits into
mainfrom
feat/preflight
Aug 11, 2026
Merged

feat(prover-ray): preflight helpers#3743
ThomasPiellard merged 8 commits into
mainfrom
feat/preflight

Conversation

@ThomasPiellard

@ThomasPiellard ThomasPiellard commented Aug 7, 2026

Copy link
Copy Markdown
Contributor

Add a preflight hook to derive the shared randomness in the message bus compiler. The expected caller's sequence is now:

  // 1. declare MessageBus entries as part of normal constraint setup
  sys.NewMessageBusSend(ctx, originShard, handle, tab)
  sys.NewMessageBusReceive(ctx, originShard, handle, tab)

  // 2. wire the shared randomness before compiling
  messagebus.RegisterPreflightSeed(sys, sets, hasher)

  // 3. compile as usual
  messagebus.Compile(sys)
  grandproduct.Compile(sys)

latestUnreducedParticipantRound mirrors the logic of the existing
latestParticipantRound but works directly on sys.MessageBuses without
needing the pre-built byHandle map, so it can run before Compile has
grouped entries.

For the MSHash, the old prover's MSHash is used, and implements the following additive hash interface:

type MSetHash [MSetHashSize]field.Element

// Insert adds msg to the accumulator. Panics on an empty msg.
func (m *MSetHash) Insert(msg ...field.Element)

// Remove removes msg from the accumulator. Panics on an empty msg.
func (m *MSetHash) Remove(msg ...field.Element)

// Add combines two accumulators in place: m += other.
func (m *MSetHash) Add(other MSetHash)

Comment thread prover-ray/preflight/preflight.go Outdated
Comment thread prover-ray/wiop/compilers/grandproduct/crossshard.go Outdated
Comment thread prover-ray/preflight/preflight.go
Comment thread prover-ray/wiop/compilers/grandproduct/crossshard.go Outdated
bogdanbear
bogdanbear previously approved these changes Aug 10, 2026
@ThomasPiellard ThomasPiellard changed the title Feat(prover-ray)/preflight feat(prover-ray)/preflight Aug 10, 2026
@ThomasPiellard
ThomasPiellard marked this pull request as ready for review August 10, 2026 14:43
@ThomasPiellard ThomasPiellard changed the title feat(prover-ray)/preflight feat(prover-ray): preflight helpers Aug 10, 2026
Comment thread prover-ray/wiop/compilers/messagebus/messagebus_preflight.go Outdated
Comment thread prover-ray/preflight/preflight.go
Comment thread prover-ray/wiop/compilers/messagebus/messagebus_preflight.go
@AlexandreBelling AlexandreBelling added the Prover-RAY All issues or PR relevant to the establishment of the framework in prover-ray label Aug 11, 2026
@codecov

codecov Bot commented Aug 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 30.12821% with 109 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...v/execution/ExecutionProofGeneratingCoordinator.kt 0.00% 92 Missing ⚠️
...ontract/l1/Web3JLinethRollupSmartContractClient.kt 34.78% 14 Missing and 1 partial ⚠️
...h/coordinator/config/v2/toml/ConfigLoaderHelper.kt 33.33% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

Signed-off-by: Thomas Piellard <thomas.piellard@gmail.com>

feat(prover-ray): fs hook for preflight

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
Signed-off-by: Thomas Piellard <thomas.piellard@gmail.com>
Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
Signed-off-by: Thomas Piellard <thomas.piellard@gmail.com>
Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
Signed-off-by: Thomas Piellard <thomas.piellard@gmail.com>
Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
Signed-off-by: Thomas Piellard <thomas.piellard@gmail.com>
Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
Signed-off-by: Thomas Piellard <thomas.piellard@gmail.com>

fix(linea-besu): align Besu Kotlin runtime (#3734)

* fix(linea-besu): align Besu Kotlin runtime

Signed-off-by: nadeemb53 <nadeemb53@gmail.com>

* fix(linea-besu): support modular plugin API

Signed-off-by: nadeemb53 <nadeemb53@gmail.com>

* fix(tracer): adapt block budget check

Signed-off-by: nadeemb53 <nadeemb53@gmail.com>

* fix(ci): support custom Besu artifacts

Signed-off-by: nadeemb53 <nadeemb53@gmail.com>

---------

Signed-off-by: nadeemb53 <nadeemb53@gmail.com>

chore(misc): update CHANGELOG.md unreleased section of each updated component and milestone [skip ci]

fix(linea-besu): add the missing web3j crypto jar in dist and fix ci … (#3737)

* fix(linea-besu): add the missing web3j crypto jar in dist and fix ci to run e2e with locally built linea-besu-package

Signed-off-by: jonesho <jones.ho@consensys.net>

* fix(ci): add LINEA_BESU_PACKAGE_TAG to github env when the local image is downloadable

Signed-off-by: jonesho <jones.ho@consensys.net>

* chore(misc): update README

Signed-off-by: jonesho <jones.ho@consensys.net>

---------

Signed-off-by: jonesho <jones.ho@consensys.net>

chore(misc): update CHANGELOG.md unreleased section of each updated component and milestone [skip ci]

chore(linea-besu): update CHANGELOG.md for releases/linea-besu-package/v2.1.0 release [skip ci]

chore(coordinator): update to vertx 5.1.5 (#3744)

Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>

chore(misc): update CHANGELOG.md unreleased section of each updated component and milestone [skip ci]

chore(coordinator): package renaming to lineth (#3746)

* chore(coordinator): package renaming to lineth.* from (net.consensys.zkevm.*, net.consensys.linea.*, net.consensys.*, build.linea.*, linea.*)

Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>

chore(misc): update CHANGELOG.md unreleased section of each updated component and milestone [skip ci]

feat(prover-ray): add the public-input-layout for the recursion (#3679)

* feat(prover-ray): add the public-input-layout for the recursion

Signed-off-by: Soleimani193 <azam.soleimanian@ens.fr>

* fix(prover-ray): chaniging the messageBus to slice formate

Signed-off-by: Soleimani193 <azam.soleimanian@ens.fr>

* test(prover-ray): add tests for unpacking

Signed-off-by: Soleimani193 <azam.soleimanian@ens.fr>

* refactor(prover-ray): refactor registeration to the public inputs

Signed-off-by: Soleimani193 <azam.soleimanian@ens.fr>

* test(prover-ray): added test for message bus public inputs

Signed-off-by: Soleimani193 <azam.soleimanian@ens.fr>

* refactor(prover-ray): cleaning

Signed-off-by: Soleimani193 <azam.soleimanian@ens.fr>

* style(prover-ray): minor

Signed-off-by: Soleimani193 <azam.soleimanian@ens.fr>

* ci(prover-ray): fixed ci error

Signed-off-by: Soleimani193 <azam.soleimanian@ens.fr>

* fix: simplifies the public input structure and moves the R5 specifics into their own folder to respect the code structure

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

* make R5 a benchmark

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

* make Risc5Arithmetization a benchmark to preserve the CI

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

* remove double zkc compilation

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

* add the known failures

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

---------

Signed-off-by: Soleimani193 <azam.soleimanian@ens.fr>
Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
Co-authored-by: AlexandreBelling <alexandrebelling8@gmail.com>

feat(arithmetization): reduce max degree (#3753)

Signed-off-by: F Bojarski <ceciestunepoubelle@protonmail.ch>

feat(prover-ray): remove Visibility in wiop (#3476)

* feat(prover-ray): remove column visibility

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

* fixup: uncommitted merge changes

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

* uncomment the tests

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

* minor space fixes

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

* revert the message BUS tests

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

* fix the doc

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

---------

Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>

chore(linea-besu): package renaming to lineth.* (#3750)

* chore(linea-besu): package renaming to lineth.* from (net.consensys.zkevm.*, net.consensys.linea.*, net.consensys.*, build.linea.*, linea.*)

Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>

chore(misc): update CHANGELOG.md unreleased section of each updated component and milestone [skip ci]

feat(chore): add makefile for git-cliff commands (#3720)

* chore(ci): add Makefile commands for git cliff commands

Signed-off-by: jonesho <jones.ho@consensys.net>

* chore(ci): revise commit message when auto updating .besu-resolved file

Signed-off-by: jonesho <jones.ho@consensys.net>

* chore(ci): revise for review comment

Signed-off-by: jonesho <jones.ho@consensys.net>

---------

Signed-off-by: jonesho <jones.ho@consensys.net>

fix(coordinator): make runtime invariants explicit (#3716)

* fix(coordinator): make runtime invariants explicit

Replace unsafe proof and gas-cap dereferences with contextual invariant checks, and cover missing prover responses with regression tests.

Refs #3686

Signed-off-by: nadeemb53 <nadeemb53@gmail.com>

* test(coordinator): cover runtime invariants

Signed-off-by: nadeemb53 <nadeemb53@gmail.com>

* test(coordinator): prefer fakes and Kotlin assertions

Signed-off-by: nadeemb53 <nadeemb53@gmail.com>

* ci(coordinator): collect riscv client coverage

Signed-off-by: nadeemb53 <nadeemb53@gmail.com>

* test(coordinator): cover blob proof validation

Signed-off-by: nadeemb53 <nadeemb53@gmail.com>

---------

Signed-off-by: nadeemb53 <nadeemb53@gmail.com>

chore(misc): update CHANGELOG.md unreleased section of each updated component and milestone [skip ci]

chore(misc): update docker/login-action (#3756)

Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>

docs(maru): add config docs generation and doc.linea publishing workflow (#3735)

* docs(maru): add config docs generation and doc.linea publishing workflow

Wire Maru into the shared jvm-libs/linea/config-docs engine (built in #3713) so the Maru TOML config reference is auto-generated as Markdown/JSON snapshots and an ephemeral MDX partial, validated on every PR, and published to Consensys/doc.linea on releases/maru/* tags.

- Annotate every property in maru/config/.../Config.kt with @ConfigDoc/@ConfigSection (descriptions, defaults, examples) so the shared ConfigSchemaWalker can document all 103 keys.
- Add MaruConfigDocsSpec (mirrors CoordinatorConfigDocsSpec) and apply the linea.config-docs Gradle plugin in maru/config/build.gradle.
- Commit the generated maru-config-reference.md and maru-config-schema.json snapshots.
- Add maru-config-docs.yml: release-gated (validate on PR/main, publish on releases/maru/* tags or manual dispatch), reusing the validate-config-docs and publish-config-docs composite actions.

Co-authored-by: Othryades <Othryades@users.noreply.github.com>
Signed-off-by: Othryades <Othryades@users.noreply.github.com>

* docs(maru): reference PR #3735 in changelog entry

Co-authored-by: Othryades <Othryades@users.noreply.github.com>
Signed-off-by: Othryades <Othryades@users.noreply.github.com>

* fix(maru): document the TOML DTO schema, not the domain config

PR #3735 rooted the config-docs spec at the domain MaruConfig, but Maru loads TOML into MaruConfigDtoToml (MaruConfigLoader.loadAppConfigs) and converts via domainFriendly(). The generated reference therefore contradicted real *.toml files: it documented validator-el-node.* (real section is [payload-validator]), followers/followers (real key is [follower-engine-apis]), and *.request-retries (no DTO field), omitted [defaults] and the legacy linea.l1-eth-api, and carried use-vertx-timers (not a DTO field). Required/default flags were also wrong.

Re-root MaruConfigDocsSpec at MaruConfigDtoToml and move the @ConfigDoc/@ConfigSection annotations onto the DTO classes in HopliteTomlFriendly.kt (MaruConfigDtoToml, ApiEndpointDto, PayloadValidatorDto, LineaConfigDtoToml, QbftOptionsDtoToml, ForkTransitionDtoToml, DefaultsDtoToml). The shared classes (Persistence, P2PConfig, ObservabilityConfig, ApiConfig, SyncingConfig) keep their annotations. Dead annotations on the domain-only classes (MaruConfig, ApiEndpointConfig, FollowersConfig, ValidatorElNode, QbftConfig, LineaConfig, ForkTransition) are removed.

Also reword inaccurate descriptions: p2p.port (TCP only; UDP is p2p.discovery.port), syncing.desync-tolerance (sync target vs this node's head), p2p.max-unsynced-peers (reserved; no consumer), and four gossip keys (history, gossip-size, gossip-factor, consider-peers-as-direct) in terms of the libp2p parameters they map to. Document both sync-target-selection forms (bare 'Highest' and the MostFrequent inline table with _type/peer-chain-height-granularity).

Add MaruConfigDocsSpecGuardTest asserting the spec roots at MaruConfigDtoToml (the type MaruConfigLoader.loadAppConfigs returns); checkConfigDocs cannot catch a class mismatch. Wire the configDocs source set + engine onto the test classpath.

Regenerate the committed maru-config-reference.md and maru-config-schema.json snapshots (106 keys). Drop the hand-written maru/CHANGELOG.md entry (docs commits are filtered by cliff; the changelog is a generated artifact).

Co-authored-by: Othryades <Othryades@users.noreply.github.com>
Signed-off-by: Othryades <Othryades@users.noreply.github.com>

* fix(maru): surface deprecation and validator constraints in the config reference

The Markdown/MDX generators only print descriptions for top-level sections and
then flatten every leaf, so the notes stating that linea.l1-eth-api is a
deprecated alias and that l2-eth-api-endpoint falls back to
defaults.l2-eth-endpoint never reached the published page. Fold both into the
linea section description, which does render.

Also document that payload-validation-enabled must stay true when the qbft
section is set (MaruConfig's init block rejects a validator with payload
validation disabled), use the full linea.l1-eth-api-endpoint path as the
deprecation replacement so it matches the key column, and tighten the spec
guard test to containsExactly so a re-added domain root would fail it.

Regenerate the committed snapshots (106 keys, all documented).

Signed-off-by: Othryades <Othryades@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(maru): address Filter94 review on config docs

- Use acronym-aware kebab keys so fanoutTTL/seenTTL document as fanout-ttl/seen-ttl
- Cascade @ConfigSection(deprecated) to nested leaves for Status column accuracy
- Clarify allow-empty-blocks, consider-peers-as-direct, and random-download-peer descriptions
- Delete unused p2p.maxUnsyncedPeers
- Drop dead payload-validator eth-api-endpoint leftovers from examples and CliTest
- Regenerate Maru config reference/schema (105 keys)

Signed-off-by: Cursor Agent <cursoragent@cursor.com>

---------

Signed-off-by: Othryades <Othryades@users.noreply.github.com>
Signed-off-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Othryades <Othryades@users.noreply.github.com>

fix(e2e): update plugin reload package name to lineth (#3757)

Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>

chore(maru): package renaming to lineth.* from (net.consensys.zkevm.*, net.consensys.linea.*, net.consensys.*, build.linea.*, linea.*) (#3755)

Signed-off-by: Fluent Crafter <205769460+fluentcrafter@users.noreply.github.com>

chore(misc): update CHANGELOG.md unreleased section of each updated component and milestone [skip ci]

feat(coordinator): implement ExecutionProofGeneratingCoordinator for RISC-V l2-execution proofs (#3684)

Adds ExecutionProofGeneratingCoordinator, L2ExecutionRequestBuilder, and
L2ExecutionProofHandler to coordinator/core for the Type-1 RISC-V conflation flow.

The coordinator receives a BlocksConflation, builds an L2ExecutionProofRequestV1
via the injected L2ExecutionRequestBuilder, submits it idempotently through
L2ExecutionProverClientV1, tracks pending BlockIntervalProofIndex entries via a
ConcurrentLinkedDeque, and delivers L2ExecutionProofResponseV1 (including proof
bytes needed downstream for rollup proof assembly) to L2ExecutionProofHandler.
Mirrors the submit-then-poll lifecycle of ProofGeneratingConflationHandlerImpl.

Signed-off-by: Gaurav Ahuja <gauravahuja9@gmail.com>

chore(misc): update CHANGELOG.md unreleased section of each updated component and milestone [skip ci]

merge main

Signed-off-by: Thomas Piellard <thomas.piellard@gmail.com>

fixed linter

Signed-off-by: Thomas Piellard <thomas.piellard@gmail.com>
Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
Signed-off-by: Thomas Piellard <thomas.piellard@gmail.com>
Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
Signed-off-by: AlexandreBelling <alexandrebelling8@gmail.com>
@ThomasPiellard
ThomasPiellard merged commit f8f938e into main Aug 11, 2026
38 checks passed
@ThomasPiellard
ThomasPiellard deleted the feat/preflight branch August 11, 2026 11:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Prover-RAY All issues or PR relevant to the establishment of the framework in prover-ray

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants