Repository navigation
feat(fees): emulate descendant grants of balance-funded messages - #1785
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 configuration
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 |
c618981 to
685e305
Compare
|
/run-e2e |
|
E2E status was updated. Follow the current E2E and merge checks on this PR. Detailed diagnostics are available internally. |
Studio also read the emission budget from `declaredBudget`, a key the manager never sends (`message_fee`), so every balance-funded child was declared with budget 0.
685e305 to
b6f5295
Compare
b6f5295 to
1a8fe64
Compare
MuncleUscles
left a comment
There was a problem hiding this comment.
I found two fee-accounting issues and one integration-test race in the descendant-grant path. The refund finding is the known consensus REP-4 case, but Studio's separate accounting still needs the corresponding fix. The focused fee/grant unit suites passed locally (507 tests); I could not run the Docker integration suite locally.
Inherit the parent fee depositor and admitted grant rules when materializing descendants. Preserve metering for zero-budget grant descendants and wait through all triggered transaction levels in the integration test. Validation: 1669 unit tests passed, 7 skipped; Black and diff checks passed. Live integration was not rerun.
Remove the legacy grant flag and its permissive fee validation and rotation rules. Omitted grants now use the same validation and accounting as explicit Closed grants, with surplus retained in primary escrow. Validation: 1674 unit tests passed, 7 skipped; Black and diff checks passed. Independent review found no actionable issues.
|
Removed Validation: 1674 unit tests passed, 7 skipped; live integration was not rerun |
It imports the integration module, which needs gltest; the unit job does not install it Claude-Session: https://claude.ai/code/session_01N97Hvs14ckrioBoYJTD4Te
buildx bake refuses to read /dev/null without --allow=fs.read=/dev/null, which compose cannot pass, so builds with buildx 0.38 failed Claude-Session: https://claude.ai/code/session_01N97Hvs14ckrioBoYJTD4Te
|
@MuncleUscles please re-review |
Delivery context
Depends-On: genlayerlabs/genvm-manager#59
Hub: genlayerlabs/genlayer-node#2189 (stack-wide E2E runs from there)
What
v0.6.0-rc9(release of genvm-manager#59 at7c3fcb32) and refresh thepy-genlayer/py-genlayer-multirunner hashes in examples and testsP + Dfrom the emitting contract, installDas the child's descendant bucket with the grant's policy, keep any surplus as primary custodymessage_fee; Studio readdeclaredBudget, a key the manager never sends, so every balance-funded child was declared with budget 0Why
genvm-manager#59 lets a balance-funded message fund its descendants (
gl.contract.UseBalanceParams(fee_params, descendants=...)); Studio mirrors the consensus semantics of genlayer-consensus#1811Testing done
v0.6.0-rc9)tests/integration/icontracts/tests/test_descendant_grants.pyadded (Closed / Open / Pinned)Decisions made
v0.6.0-rc9, sotest_release_backend_builds_use_an_immutable_genvm_releasepasses once that release is publishedUNMATCHED_EXTERNAL_GUARD_ALLOC, now in GenVM'sorigin) to pinned trees and sends it alone for closed trees, so an unmatched external fails in GenVM instead of being refused by consensusnix_netrcbuild secret defaults to the emptydocker/empty.netrcinstead of/dev/null: buildx 0.38 bake refuses to read a file outside the project without--allow=fs.read, which compose cannot pass, and E2E runners now ship buildx 0.38Checks