Skip to content

fix(fees): add exact quote and appeal parity - #110

Merged
MuncleUscles merged 6 commits into
v0.19-devfrom
fix/v06-fee-appeal-parity
Sep 2, 2026
Merged

fix(fees): add exact quote and appeal parity#110
MuncleUscles merged 6 commits into
v0.19-devfrom
fix/v06-fee-appeal-parity

Conversation

@MuncleUscles

@MuncleUsclesMuncleUscles commented Aug 31, 2026

Copy link
Copy Markdown
Member

Delivery context

Depends-On: genlayerlabs/genlayer-consensus#1526

Base #109 is merged; this PR is restacked directly on v0.19-dev at 85a47821c2771b5d931b754d4a43f1bd0f057246.
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 Python SDK surface.

This layer mirrors Consensus deposit quoting, binds Studio appeal actions to the active decision, encodes the complete internal-message fee tuple, and treats Studio lifecycle/write calls as mined EVM envelopes. It waits for fee-management receipts and surfaces Studio's additive revert reason instead of returning rejected top-ups as successful submissions. Ordinary top-ups now use Consensus' schedule-free delta shape (appealRounds: 0, rotations: []); normal transaction submission and appeal top-ups keep their strict complete-schedule validation.

The public appeal_transaction path now uses topUpAndSubmitAppeal with the active decision and normalized compatibility tuple. That entry point is valid for both pre-funded and unfunded appeal rounds; direct submitAppeal encoding remains only as a low-level conformance surface. This closes the same AppealRoundNotPermitted boundary exposed in the JS lane of diagnostic E2E run 33631876345.

Implementation and validation

  • Six commits on v0.19-dev: exact deposit quoting, decision-bound Studio appeal actions, the complete internal-message fee tuple with camelCase and snake_case price caps, mined-envelope failure handling, schedule-free ordinary top-ups, and safe public appeal admission.
  • Contract-action regression suite: 60 tests passed.
  • Complete release-relevant unit suite: 205 passed, with 17 network smoke tests deselected exactly as in native CI.
  • Regression coverage proves the schedule-extending selector, active decision, normalized tuple, authoritative quoted value, and caller-provided value on deployed Consensus and Studio.
  • Current head: 39c54bcc5bc9de3a635bbd5f6a2e3db0310f7ab1 (synthetic merge 1fd2822360c6d6912b310f5ac77a857633cab436).
  • Stack-relative diff, whitespace, and working-tree checks are clean.

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 revertReason remain 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; #109 is already landed.

@coderabbitai

coderabbitaiBot commented Aug 31, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Team

Run ID: 1bf96d18-e402-4187-894a-822da7a67927

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Use Studio's authoritative appeal quote for omitted payment and decision inputs, encode the v0.6 decision-bound selectors, and expose matching can-appeal behavior without attempting EVM contract reads.
@MuncleUscles
MuncleUsclesforce-pushed the fix/v06-fee-appeal-parity branch from d127609 to 54cdc85CompareAugust 31, 2026 22:40
@MuncleUscles
MuncleUscles changed the base branch from fix/train-consensus-reads to v0.19-devAugust 31, 2026 22:40
Route the public appeal action through topUpAndSubmitAppeal, whose consensus-derived schedule extension accepts both pre-funded and unfunded rounds. Preserve direct submitAppeal encoding only as a low-level conformance surface.\n\nCover the exact selector, decision binding, compatibility tuple, quoted value, and caller-provided value on deployed Consensus and Studio.
@MuncleUscles
MuncleUscles merged commit b88e492 into v0.19-devSep 2, 2026
11 checks passed
Sign up for freeto 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.

1 participant

@MuncleUscles