fix(fees): add exact quote and decision parity - #214
Merged
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Aug 30, 2026
Use Studio's lifecycle and appeal-charge RPCs to bind appeal, combined top-up/appeal, and finalization to the active decision. Keep Studio ABI exports aligned with the v0.6 consensus surface and cover quoting and guarded selectors.
MuncleUscles
force-pushed
the
fix/v06-fee-appeal-parity
branch
from
August 31, 2026 22:40
c878429 to
b9a7bb2
Compare
MuncleUscles
changed the base branch from
fix/consensus-train-surface
to
v2-dev
August 31, 2026 22:40
Verify that canAppeal reads the active decision from the separately configured Appeals contract at the lifecycle snapshot. This catches local-chain interface drift before cross-stack E2E.
Route the public appeal action through topUpAndSubmitAppeal, whose consensus-derived schedule extension is valid for both pre-funded and unfunded rounds. Keep the direct submitAppeal selector out of the high-level path so a full bond-plus-funding quote cannot still fail AppealRoundNotPermitted.\n\nCover quoted and caller-provided values on deployed Consensus and Studio, and refresh generated API docs.
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Delivery context
Depends-On: genlayerlabs/genlayer-consensus#1526
Base #212 is merged; this PR is restacked directly on
v2-devatd7d32627e036cf57600558a099bb589ccc5c8d2a.Cross-stack qualification is carried by genlayerlabs/genlayer-e2e#756 against genlayerlabs/genlayer-studio#1748.
Problem and outcome
Build the exact fee-quote and Studio decision-binding layer on the already-landed resolution-kernel SDK surface.
This layer mirrors Consensus deposit quoting, binds Studio lifecycle actions to the active decision, encodes the complete internal-message fee tuple, and treats Studio writes/lifecycle calls as mined EVM envelopes. It now waits for the receipt on every backend and surfaces Studio's additive revert reason instead of returning rejected writes or top-ups as successful submissions. Ordinary top-ups use the schedule-free Consensus delta shape (
appealRounds: 0,rotations: []), while an explicit complete schedule remains available only for first-time fee initialization. Studio receipt lookup also receives a bounded 60-second indexing window beyond viem's insufficient default retry budget. Triggered-child discovery now follows the parent decision receipt and acceptsInternalMessageProcessedfrom the actualMessagePaymentsemitter instead of incorrectly requiringConsensusMain.The public
appealTransactionpath now usestopUpAndSubmitAppealwith the active decision and normalized compatibility tuple. That entry point is valid for both pre-funded and unfunded appeal rounds; directsubmitAppealremains an explicit low-level conformance surface. This closes theAppealRoundNotPermittedfailure exposed by diagnostic E2E run 33631876345 when the authoritative quote contained bond plus induced-work funding but the next appeal round was not pre-funded.Implementation and validation
v2-dev: exact deposit quoting, decision-bound Studio lifecycle actions, the complete eight-field Consensus internal-message fee tuple including all price caps, mined-envelope failure handling, schedule-free ordinary top-ups, cross-contract child-message event discovery, configured contract routing, and safe public appeal admission.2f8122e81862bd5f6cf0daabcfa34b99a1bb0600(synthetic mergedf9e835665e3553d20fc870cd6e3ed9f31760c99).Risk and rollback
This layer belongs to the fee/Studio parity train with Consensus #1526. The receipt wait is intentionally stricter: a mined status-0 envelope is an error on Studio just as it is on deployed Consensus. Older Studio versions without additive
revertReasonremain compatible and produce a generic revert error. The public appeal action intentionally uses the schedule-extending entry point even for pre-funded rounds because Consensus treats it as a no-op extension in that case. Rollback is this fee layer; #212 is already landed.