Skip to content

feat(evm-wallet-experiment): Use object capability sheaves#947

Draft
grypez wants to merge 5 commits intogrypez/bringing-in-the-sheavesfrom
grypez/evm-wallet-use-sheaves
Draft

feat(evm-wallet-experiment): Use object capability sheaves#947
grypez wants to merge 5 commits intogrypez/bringing-in-the-sheavesfrom
grypez/evm-wallet-use-sheaves

Conversation

@grypez
Copy link
Copy Markdown
Contributor

@grypez grypez commented Apr 27, 2026

draft

Refs: #870

grypez and others added 5 commits April 27, 2026 12:52
The delegation twin's interface guard uses M.eq(lowercaseToken) to match the
token address, so dispatch through the sheaf must pass the token in canonical
lowercase form. Callers that supply a mixed-case address were being silently
filtered out of the twin stalk and falling through to the home section.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…emantics

Once a matched stalk section throws, the sheaf continues dispatch through the
remaining sections. The e2e scenario now asserts that an over-budget spend
falls through from the delegation twin to the call-home section and that
transfer still succeeds via the home coordinator (using a direct EOA tx, so
no UserOp polling). Also extend dockerExec with an optional timeoutMs so the
two-spend scenario fits within a longer window on bundler-hybrid.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
… subpath

The rebase onto grypez/bringing-in-the-sheaves introduced a semantic
conflict: d3b397d moved sheaf exports from the main kernel-utils index
to the ./sheaf subpath, but the evm-wallet commits still imported from
the old path.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tead of section.token

The old DelegationSection type exposed a .token property that reflected
the normalized address. PresheafSection does not — the lowercased token
is now embedded in the transferFungible method guard (M.eq(token)) rather
than carried on the return value.

Use getInterfaceGuardPayload/getMethodGuardPayload from @endo/patterns to
extract the first arg guard and verify it accepts the lowercase form but
rejects the original checksummed address.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

Coverage Report

Status Category Percentage Covered / Total
🔵 Lines 71.6%
⬆️ +0.65%
8362 / 11678
🔵 Statements 71.43%
⬆️ +0.64%
8502 / 11901
🔵 Functions 72.55%
⬆️ +0.65%
2033 / 2802
🔵 Branches 65.21%
⬆️ +0.63%
3378 / 5180
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
packages/evm-wallet-experiment/src/lib/delegation-twin.ts 92.68%
🟰 ±0%
84.61%
🟰 ±0%
100%
🟰 ±0%
92.68%
🟰 ±0%
66-68, 84-85
packages/evm-wallet-experiment/src/vats/away-coordinator.ts 0%
🟰 ±0%
0%
🟰 ±0%
0%
🟰 ±0%
0%
🟰 ±0%
57-2017
Generated in workflow #4392 for commit 637f95e by the Vitest Coverage Report Action

Sign up for free to 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