Conversation
Clear Signing TestsTested
✅ pass · ❌ fail · Details❌ flare/calldata-AssetManager-FXRP-Flare · Redeem 10 FXRP by amount - chain 14 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "redeem FXRP",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRP Address",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Executor",
"value": "0x0000000000000000000000000000000000000000"
},
{
"label": "Executor Fee",
"value": "0 FLR"
}
]
}Got: {
"intent": "redeem FXRP",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRP Address",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Executor",
"value": "0x0000000000000000000000000000000000000000"
},
{
"label": "Executor Fee",
"value": "0 ETH"
}
]
}❌ flare/calldata-AssetManager-FXRP-Flare · Redeem 10 FXRP with destination tag - chain 14 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "redeem FXRP",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRP Address",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Executor",
"value": "Executor"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "1 FLR"
}
]
}Got: {
"intent": "redeem FXRP",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRP Address",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Executor",
"value": "Executor"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "1 ETH"
}
]
}❌ flare/calldata-AssetManager-FXRP-Flare · Redemption payment default - chain 14 · `@ethereum-sourcify/clear-signing@0.2.2`
Expected: {
"intent": "claim redemption default",
"owner": "Flare Foundation",
"fields": [
{
"label": "Request ID",
"value": "777"
},
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "Deadline",
"value": "2025-06-15 16:06:40Z"
}
]
}Got: {
"intent": "",
"fields": []
}❌ flare/calldata-AssetManager-FXRP-Flare · Execute direct minting - chain 14 · `@ethereum-sourcify/clear-signing@0.2.2`
Expected: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 FLR"
}
]
}Got: {
"intent": "",
"fields": []
}❌ flare/calldata-AssetManager-FXRP-Flare · Execute direct minting - chain 14 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 FLR"
}
]
}Got: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 ETH"
}
]
}❌ flare/calldata-AssetManager-FXRP-Flare · Execute direct minting with data - chain 14 · `@ethereum-sourcify/clear-signing@0.2.2`
Expected: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 FLR"
},
{
"label": "User Op",
"value": "0xdeadbeef"
}
]
}Got: {
"intent": "",
"fields": []
}❌ flare/calldata-AssetManager-FXRP-Flare · Execute direct minting with data - chain 14 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 FLR"
},
{
"label": "User Op",
"value": "0xdeadbeef"
}
]
}Got: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 ETH"
},
{
"label": "User Op",
"value": "0xdeadbeef"
}
]
}❌ flare/calldata-AssetManager-FXRP-Songbird · Redeem 10 FXRP by amount - chain 19 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "redeem FXRP",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRP Address",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Executor",
"value": "0x0000000000000000000000000000000000000000"
},
{
"label": "Executor Fee",
"value": "0 SGB"
}
]
}Got: {
"intent": "redeem FXRP",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRP Address",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Executor",
"value": "0x0000000000000000000000000000000000000000"
},
{
"label": "Executor Fee",
"value": "0 ETH"
}
]
}❌ flare/calldata-AssetManager-FXRP-Songbird · Redeem 10 FXRP with destination tag - chain 19 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "redeem FXRP",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRP Address",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Executor",
"value": "Executor"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "1 SGB"
}
]
}Got: {
"intent": "redeem FXRP",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRP Address",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Executor",
"value": "Executor"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "1 ETH"
}
]
}❌ flare/calldata-AssetManager-FXRP-Songbird · Redemption payment default - chain 19 · `@ethereum-sourcify/clear-signing@0.2.2`
Expected: {
"intent": "claim redemption default",
"owner": "Flare Foundation",
"fields": [
{
"label": "Request ID",
"value": "777"
},
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "Deadline",
"value": "2025-06-15 16:06:40Z"
}
]
}Got: {
"intent": "",
"fields": []
}❌ flare/calldata-AssetManager-FXRP-Songbird · Execute direct minting - chain 19 · `@ethereum-sourcify/clear-signing@0.2.2`
Expected: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 SGB"
}
]
}Got: {
"intent": "",
"fields": []
}❌ flare/calldata-AssetManager-FXRP-Songbird · Execute direct minting - chain 19 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 SGB"
}
]
}Got: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 ETH"
}
]
}❌ flare/calldata-AssetManager-FXRP-Songbird · Execute direct minting with data - chain 19 · `@ethereum-sourcify/clear-signing@0.2.2`
Expected: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 SGB"
},
{
"label": "User Op",
"value": "0xdeadbeef"
}
]
}Got: {
"intent": "",
"fields": []
}❌ flare/calldata-AssetManager-FXRP-Songbird · Execute direct minting with data - chain 19 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 SGB"
},
{
"label": "User Op",
"value": "0xdeadbeef"
}
]
}Got: {
"intent": "execute minting",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "10 FXRP"
},
{
"label": "XRPL Source",
"value": "rPT1Sjq2YGrBMTttX4GZHjKu9dyfzbpAYe"
},
{
"label": "Dest Tag",
"value": "42"
},
{
"label": "Executor Fee",
"value": "0.5 ETH"
},
{
"label": "User Op",
"value": "0xdeadbeef"
}
]
}❌ flare/calldata-MintingTagManager-FXRP-Flare · Reserve minting tag - chain 14 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "reserve minting tag",
"owner": "Flare Foundation",
"fields": [
{
"label": "Reservation Fee",
"value": "1 FLR"
}
]
}Got: {
"intent": "reserve minting tag",
"owner": "Flare Foundation",
"fields": [
{
"label": "Reservation Fee",
"value": "1 ETH"
}
]
}❌ flare/calldata-MintingTagManager-FXRP-Songbird · Reserve minting tag - chain 19 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "reserve minting tag",
"owner": "Flare Foundation",
"fields": [
{
"label": "Reservation Fee",
"value": "1 SGB"
}
]
}Got: {
"intent": "reserve minting tag",
"owner": "Flare Foundation",
"fields": [
{
"label": "Reservation Fee",
"value": "1 ETH"
}
]
}❌ flare/calldata-PollingFoundation-Flare · Create proposal with execution - chain 14 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "create proposal",
"owner": "Flare Foundation",
"fields": [
{
"label": "Targets",
"value": "Proposal Target"
},
{
"label": "Values",
"value": "1 FLR"
},
{
"label": "Calldatas",
"value": "0x12345678"
},
{
"label": "Description",
"value": "Fund the grants program"
},
{
"label": "Accept",
"value": "true"
},
{
"label": "Voting Start",
"value": "2025-06-15 15:06:40Z"
},
{
"label": "Voting Period",
"value": "168:00:00"
},
{
"label": "Vp Block Period",
"value": "24:00:00"
},
{
"label": "Threshold (bps)",
"value": "7500bps"
},
{
"label": "Majority (bps)",
"value": "5000bps"
},
{
"label": "Execution Delay",
"value": "01:00:00"
},
{
"label": "Execution Period",
"value": "72:00:00"
}
]
}Got: {
"intent": "create proposal",
"owner": "Flare Foundation",
"fields": [
{
"label": "Targets",
"value": "Proposal Target"
},
{
"label": "Values",
"value": "1 ETH"
},
{
"label": "Calldatas",
"value": "0x12345678"
},
{
"label": "Description",
"value": "Fund the grants program"
},
{
"label": "Accept",
"value": "true"
},
{
"label": "Voting Start",
"value": "2025-06-15 15:06:40Z"
},
{
"label": "Voting Period",
"value": "168:00:00"
},
{
"label": "Vp Block Period",
"value": "24:00:00"
},
{
"label": "Threshold (bps)",
"value": "7500bps"
},
{
"label": "Majority (bps)",
"value": "5000bps"
},
{
"label": "Execution Delay",
"value": "01:00:00"
},
{
"label": "Execution Period",
"value": "72:00:00"
}
]
}❌ flare/calldata-PollingFoundation-Songbird · Create proposal with execution - chain 19 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "create proposal",
"owner": "Flare Foundation",
"fields": [
{
"label": "Targets",
"value": "Proposal Target"
},
{
"label": "Values",
"value": "1 SGB"
},
{
"label": "Calldatas",
"value": "0x12345678"
},
{
"label": "Description",
"value": "Fund the grants program"
},
{
"label": "Accept",
"value": "true"
},
{
"label": "Voting Start Ts",
"value": "2025-06-15 15:06:40Z"
},
{
"label": "Voting Period",
"value": "168:00:00"
},
{
"label": "Vp Block Period",
"value": "24:00:00"
},
{
"label": "Threshold",
"value": "7500bps"
},
{
"label": "Majority",
"value": "5000bps"
},
{
"label": "Execution Delay",
"value": "01:00:00"
},
{
"label": "Execution Period",
"value": "72:00:00"
}
]
}Got: {
"intent": "create proposal",
"owner": "Flare Foundation",
"fields": [
{
"label": "Targets",
"value": "Proposal Target"
},
{
"label": "Values",
"value": "1 ETH"
},
{
"label": "Calldatas",
"value": "0x12345678"
},
{
"label": "Description",
"value": "Fund the grants program"
},
{
"label": "Accept",
"value": "true"
},
{
"label": "Voting Start Ts",
"value": "2025-06-15 15:06:40Z"
},
{
"label": "Voting Period",
"value": "168:00:00"
},
{
"label": "Vp Block Period",
"value": "24:00:00"
},
{
"label": "Threshold",
"value": "7500bps"
},
{
"label": "Majority",
"value": "5000bps"
},
{
"label": "Execution Delay",
"value": "01:00:00"
},
{
"label": "Execution Period",
"value": "72:00:00"
}
]
}❌ flare/calldata-ValidatorRewardManager-Flare · Claim 1 FLR wrapped - chain 14 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "Claim/Wrap Reward",
"owner": "Flare Labs",
"fields": [
{
"label": "Reward Owner",
"value": "Reward Owner"
},
{
"label": "Recipient",
"value": "Recipient"
},
{
"label": "Reward Amount",
"value": "1 FLR"
},
{
"label": "Wrap",
"value": "true"
}
]
}Got: {
"intent": "Claim/Wrap Reward",
"owner": "Flare Labs",
"fields": [
{
"label": "Reward Owner",
"value": "Reward Owner"
},
{
"label": "Recipient",
"value": "Recipient"
},
{
"label": "Reward Amount",
"value": "1 ETH"
},
{
"label": "Wrap",
"value": "true"
}
]
}❌ flare/calldata-WNat-Flare · Wrap 1 FLR - chain 14 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "Wrap FLR",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "1 FLR"
}
]
}Got: {
"intent": "Wrap FLR",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "1 ETH"
}
]
}❌ flare/calldata-WNat-Flare · Wrap 1 FLR to recipient - chain 14 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "Wrap FLR",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "1 FLR"
},
{
"label": "To",
"value": "Recipient"
}
]
}Got: {
"intent": "Wrap FLR",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "1 ETH"
},
{
"label": "To",
"value": "Recipient"
}
]
}❌ flare/calldata-WNat-Songbird · Wrap 1 SGB - chain 19 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "Wrap SGB",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "1 SGB"
}
]
}Got: {
"intent": "Wrap SGB",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "1 ETH"
}
]
}❌ flare/calldata-WNat-Songbird · Wrap 1 SGB to recipient - chain 19 · `llbartekll/clear-signing@0.1.0`
Expected: {
"intent": "Wrap SGB",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "1 SGB"
},
{
"label": "To",
"value": "Recipient"
}
]
}Got: {
"intent": "Wrap SGB",
"owner": "Flare Foundation",
"fields": [
{
"label": "Amount",
"value": "1 ETH"
},
{
"label": "To",
"value": "Recipient"
}
]
} |
Clear signing recommendationsThese are suggestions. They do not block this pull request. 49 format(s) have no
|
The two PollingFoundation descriptors carry no auditor attestation, so the owner string can still be corrected in place. The four attested descriptors keep "Flare Labs" until they are re-attested.
…Flare and Songbird - Introduced calldata descriptors for AssetManager, FAsset, MintingTagManager, and RewardManager for both Flare and Songbird networks. - Updated ownership metadata to reflect "Flare Foundation" across relevant descriptors. - Added test cases for each new descriptor to ensure functionality and correctness in transaction intents and expected outputs.
- Introduced calldata descriptors for WNat-Flare and WNat-Songbird, including contract metadata and transaction formats for wrapping, unwrapping, and transferring tokens. - Added test cases for each descriptor to validate transaction intents and expected outputs, ensuring functionality across both networks. - Updated ownership metadata to reflect "Flare Foundation" for both WNat contracts.
DistributionToDelegators-Flare, RewardManager-Flare/Songbird, and ValidatorRewardManager-Flare already carry auditor attestations, so CI rejects any in-place edits to them. Restore their original content; the owner-rename and formatting changes were unintentional carryover from the FXRP commit and aren't needed for this PR. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
7fd8a5e to
f1e7f9a
Compare
The rebase brought in the new selector-coverage check, which requires a test for every function of a changed descriptor. Adds the missing cases: both propose() overloads on PollingFoundation, setAllowedExecutor and transfer on MintingTagManager, and redeemWithTag, redemptionPaymentDefault, executeDirectMinting and executeDirectMintingWithData on AssetManager — the last three carrying hand-encoded FDC Merkle proofs. DistributionToDelegators and ValidatorRewardManager keep "Flare Labs" in their expectations, because the attestation on those descriptors blocks the owner rename until an auditor re-signs them. The Executor Fee expectations read FLR/SGB rather than the ETH the Rust runner prints today; llbartekll/clear-signing#15 adds the missing chain entries that make it so. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@ethereum-sourcify/clear-signing renders nothing for these two descriptors — UNSUPPORTED_NESTED_FIELD_GROUP — so the tests cannot pass against them. Flattening the paths would fix it, but an auditor has attested both files and the index allows only one descriptor per (chainId, address), so a versioned second file is not an option either. Removing the tests keeps this pull request to descriptors that render. The underlying gap needs a maintainer decision on how an attested but unrenderable descriptor gets replaced. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Two issues here are outside this PR, and I'd appreciate guidance on both. 1. The Rust runner has no native currency for Flare
The Sourcify runner resolves against Fix: llbartekll/clear-signing#15. I've kept the expectations in this PR at FLR/SGB, verified against a local build of that branch (57/57 green). 2. An attested descriptor that no implementation can render
Flattening the paths fixes it, but that runs into a dead end:
So the versioned-file route doesn't apply when the address is unchanged. I've dropped the RewardManager tests from this PR to keep it to descriptors that render — but the descriptors themselves are still unrenderable on master. What's the intended path for replacing an attested descriptor at the same address? Happy to prepare it either way. 🤖 Generated with Claude Code |
|
Splitting this into two smaller PRs for focused review: #2983 (WNat, clean — no attested files touched) and #2984 (FXRP + PollingFoundation owner rename + the RewardManager question). Closing this one in favor of those. 🤖 Generated with Claude Code |
Summary
Test plan