Skip to content

docs(changelog): add Denim summary and mark Cobalt live - #235

Merged
rayyan224 merged 1 commit into
mainfrom
docs/changelog-denim
Oct 2, 2026
Merged

rayyan224 merged 1 commit into
mainfrom
docs/changelog-denim

Conversation

@rayyan224

Copy link
Copy Markdown
Collaborator

Summary

  • Add a Denim section to CHANGELOG.md summarizing the three changelog/03_Denim_* entries: token-receiver rejection, transfer executor enforcement, and NOT / invert policies.
  • Call out that Denim is not additive-only: the two B20 changes alter outcomes of existing calls. Under the AGENTS.md breaking change test, the Denim release should be a MAJOR bump (v2.0.0).
  • Mark Cobalt as live in CHANGELOG.md and in the hardfork table and index in changelog/README.md.

Test plan

  • Read the Denim section in CHANGELOG.md and confirm each row matches its changelog/03_Denim_* entry.
  • Follow the three Details links.
  • Confirm the Cobalt status now reads as live in both files.

Generated with Claude Code

Add a Denim section to the root CHANGELOG.md covering the three
changelog/03_Denim_* entries, ahead of cutting the Denim release.
Denim is not additive-only: the token-receiver check and the transfer
executor enforcement change outcomes of existing B20 calls, so the
compatibility section calls both out explicitly.

Cobalt has activated, so update its status in CHANGELOG.md and the
hardfork ordinal table / index in changelog/README.md.

Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown

Interface Coverage

✅ All interface functions have test coverage.

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown

📊 Forge Coverage (src/lib/)

🟡 ≥95% across all metrics — some metrics below 99%.

File Lines Stmts Branches Funcs
🟡 B20FactoryLib.sol 97.70% 98.00% 100.00% 95.00%
🔴 test/lib/ForceFeeder.sol 0.00% 0.00% 100.00% 0.00%
🔴 test/lib/PrecompileProbe.sol 0.00% 0.00% 0.00% 0.00%
🟢 MockActivationRegistry.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockActivationRegistryStorage.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockB20.sol 100.00% 99.68% 100.00% 100.00%
🟢 MockB20Asset.sol 100.00% 100.00% 100.00% 100.00%
🟡 MockB20Factory.sol 98.96% 99.10% 100.00% 100.00%
🟢 MockB20Stablecoin.sol 100.00% 100.00% 100.00% 100.00%
🟢 MockB20Storage.sol 100.00% 100.00% 100.00% 100.00%
🟡 MockPolicyRegistry.sol 100.00% 99.58% 97.78% 100.00%
🟢 MockPolicyRegistryStorage.sol 100.00% 100.00% 100.00% 100.00%
Total 97.12% 97.50% 98.21% 97.03%

Full report: download artifact. To browse locally: make coverage (runs forge coverage + genhtml + opens the HTML report).

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown

⚠️ Fork tests: 80 failed, 744 passed

These failures indicate divergences where base/base needs to catch up to the base-std spec. This check is advisory and does not block merging.

Failing tests
  • test_batchMint_revert_tokenRecipient(address,uint256,uint256): next call did not revert as expected; counterexample: calldata=0x0e04a6a60000000000000000000000000000000000000000000000000000000000001c060000000000000000000000000000000000000000000000000000000000093a8000000000000000000000000000000000000000000000000000000000000021aa args=[0x0000000000000000000000000000000000001C06, 604800 [6.048e5], 8618]
  • test_invertedPolicyId_success_negatesAuthorization(address): custom error 0x6b468933; counterexample: calldata=0x4268079e000000000000000000000000c7dfbce9bd952509984051a5538750ff7763a116 args=[0xc7DFBcE9bd952509984051A5538750Ff7763a116]
  • test_invertedPolicyId_success_togglesAndRoundTrips(uint64): custom error 0x6b468933; counterexample: calldata=0x123f60c0000000000000000000000000000000000000000000000000000000000002a300 args=[172800 [1.728e5]]
  • test_isAuthorized_success_intersectAllowAndNotX(address): PolicyNotFound(); counterexample: calldata=0x55848b8e00000000000000000000000000000000000000000000000000000000000009bb args=[0x00000000000000000000000000000000000009Bb]
  • test_isAuthorized_success_invertAllowlistNonMemberAuthorized(address): assertion failed; counterexample: calldata=0xb07c21cd00000000000000000000000014b24b9cf9c99c5beaf2e23bd1e55c552be732d2 args=[0x14B24b9CF9c99C5BEAf2E23bD1E55c552BE732d2]
  • test_isAuthorized_success_invertAlwaysBlockAuthorizes(address): assertion failed; counterexample: calldata=0xca9d7161000000000000000000000000000000000000000000000000000000000000088a args=[0x000000000000000000000000000000000000088A]
  • test_isAuthorized_success_invertBlocklistMemberAuthorized(address): assertion failed; counterexample: calldata=0x07261779000000000000000000000000b20f000000000000000000000000000000000000 args=[0xB20f000000000000000000000000000000000000]
  • test_mintWithMemo_revert_tokenRecipient(uint256,bytes32): next call did not revert as expected; counterexample: calldata=0x4ca8134a000000000000000000000000000000000000000000000000047edf8d7497aad32f3a42f589f52f7d5cd7cd0eee5c6ccbe8646b1e86507770883883ddc557ad1b args=[323942021856733907 [3.239e17], 0x2f3a42f589f52f7d5cd7cd0eee5c6ccbe8646b1e86507770883883ddc557ad1b]
  • test_mint_revertOrder_tokenRecipient_beats_cap(uint256): Error != expected error: SupplyCapExceeded(0, 340282366920938463463374607431768211452 [3.402e38]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0xc475cac1fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc args=[115792089237316195423570985008687907853269984665640564039457584007913129639932 [1.157e77]]
  • test_mint_revertOrder_tokenRecipient_beats_policy(uint256): Error != expected error: PolicyForbids(0xa0d5ae037e66a09119acf080a1d807abb9b6d03b6b9130eb19f7c1e6bdb8ffc8, 72057594037927937 [7.205e16]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x6ea98031000000000000000000000006a7c7ab5be2ad12f00f4189d515442532f8ce1e24 args=[9726864058475400203088557267510119085787298274852 [9.726e48]]
  • test_mint_revert_tokenRecipient(uint256): Error != expected error: SupplyCapExceeded(340282366920938463463374607431768211455 [3.402e38], 719200027040499137839770207728253598288721198527742896600267479 [7.192e62]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x03224e1a000000000001bf8f2cafbb32ee3adf48a17f159501d2905a63876a1614903ad7 args=[719200027040499137839770207728253598288721198527742896600267479 [7.192e62]]
  • test_policyAdmin_success_invertResolvesBaseAdmin(address): assertion failed: 0x0000000000000000000000000000000000000000 != 0x0000000000000000000000000000000000000f92; counterexample: calldata=0xee7ff5a60000000000000000000000000000000000000000000000000000000000000f92 args=[0x0000000000000000000000000000000000000f92]
  • test_policyExists_success_invertMirrorsBase(uint56): assertion failed; counterexample: calldata=0xf4aec5dc0000000000000000000000000000000000000000000000000000000000010c21 args=[68641 [6.864e4]]
  • test_seizeWithMemo_revertOrder_tokenRecipient_beats_blocked(address): Error != expected error: AccountNotSeizable(0xD409ef5F2E49CfBcCa3D1531bC43304B8DE63847) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x4ce156d2000000000000000000000000d409ef5f2e49cfbcca3d1531bc43304b8de63847 args=[0xD409ef5F2E49CfBcCa3D1531bC43304B8DE63847]
  • test_seizeWithMemo_revert_tokenRecipient(address,uint256): Error != expected error: InsufficientBalance(0x0C05E6356F9461c75d3C106563fE4057f6D1a5d9, 0, 33913214415860503257162752368754862873992687967680906 [3.391e52]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x220d05f30000000000000000000000000c05e6356f9461c75d3c106563fe4057f6d1a5d9000000000000000000005aa45ce9001c761a6853f02ac84e898bc3a6dc92398a args=[0x0C05E6356F9461c75d3C106563fE4057f6D1a5d9, 33913214415860503257162752368754862873992687967680906 [3.391e52]]
  • test_transferFromWithMemo_revert_tokenRecipient(address,address,uint256,bytes32): Error != expected error: InsufficientAllowance(0x53E16bdA5282AE0057c3EC3adDBd9B5F218C062e, 0, 435894814040 [4.358e11]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0xac063dd000000000000000000000000053e16bda5282ae0057c3ec3addbd9b5f218c062e00000000000000000000000098fd2c699188c8d5206e434aff42d6a68b31b0ad000000000000000000000000000000000000000000000000000000657d5b0558257b561fb406316be39b6e1332775d3fa59d3e907fc829fc08432ad5e88da66d args=[0x53E16bdA5282AE0057c3EC3adDBd9B5F218C062e, 0x98Fd2C699188C8d5206E434AfF42d6A68b31b0ad, 435894814040 [4.358e11], 0x257b561fb406316be39b6e1332775d3fa59d3e907fc829fc08432ad5e88da66d]
  • test_transferFrom_revertOrder_tokenRecipient_beats_allowance(address,address,uint256): Error != expected error: InsufficientAllowance(0x2f2034B39b7a86401921A29FE78F48d6E002423E, 0, 194371365539377 [1.943e14]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x98d9a95e0000000000000000000000002f2034b39b7a86401921a29fe78f48d6e002423e000000000000000000000000ec54711439407754ebfa3e336531d001ecd0b6e00000000000000000000000000000000000000000000000000000b0c79c328e31 args=[0x2f2034B39b7a86401921A29FE78F48d6E002423E, 0xEc54711439407754EBFA3E336531D001ecd0b6E0, 194371365539377 [1.943e14]]
  • test_transferFrom_revertOrder_tokenRecipient_beats_executorPolicy(address,address,uint256): Error != expected error: InsufficientAllowance(0x3BF5683e181b7E266F7Ca339f3bFb48D456548F4, 0, 488562554948544127469 [4.885e20]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x0fbad0310000000000000000000000003bf5683e181b7e266f7ca339f3bfb48d456548f40000000000000000000000007804bcd21c25d664a344a8a99b5bda405e5769b800000000000000000000000000000000000000000000001a7c2adf35d93c61ed args=[0x3BF5683e181b7E266F7Ca339f3bFb48D456548F4, 0x7804bCD21C25D664a344a8A99B5bDa405e5769b8, 488562554948544127469 [4.885e20]]
  • test_transferFrom_revert_selfCaller_executorPolicyForbids(address,address,uint256): next call did not revert as expected; counterexample: calldata=0x641b204b000000000000000000000000f746e6163e57974a86fd759c644b32b55675394b000000000000000000000000ac9913d98fcbd54b4c28983d6256468ef3dfcb8b0e64ddaebb0d468dca76fda01d551c6104fcd35e3cb63807433ee622ca998e31 args=[0xf746E6163e57974A86FD759C644B32B55675394B, 0xAc9913d98FCbD54B4C28983d6256468Ef3DfCb8B, 6510594583315788476523568632070256750494669688031211036322926561253966581297 [6.51e75]]
  • test_transferFrom_revert_tokenRecipient(address,address,uint256): Error != expected error: InsufficientAllowance(0xEd859Ea4e3bA1917B88fAB966497c4216aC8f2D4, 0, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0xb9f54792000000000000000000000000ed859ea4e3ba1917b88fab966497c4216ac8f2d4000000000000000000000000bd05c8dd22b6418fd0577d3beccb6e796fb44316ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff args=[0xEd859Ea4e3bA1917B88fAB966497c4216aC8f2D4, 0xbd05C8DD22b6418FD0577d3BeCcB6e796fb44316, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]]
  • test_transferWithMemo_revertOrder(address,address,uint256,bytes32): Error != expected error: PolicyForbids(0xb81736c875ab819dd97f59f2a6542cfb731ad52b4ae15a6f24df2fb02b0327f5, 72057594037927937 [7.205e16]) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0xf5e31125000000000000000000000000938ffda8c36517b1f4768638d1ffd2fde87ff6d000000000000000000000000016d65731e8b977e28fc59caff8f7e5e6b16d3f43000000000000000000000013ea5d18fd646990662bf06b3f79774fd101c9a3561c8534a9e16ff1fde839f3f818e82686eb3b49e9e8b076240f06480599d92df8 args=[0x938FFdA8C36517B1f4768638d1ffD2fDe87FF6D0, 0x16D65731e8b977E28fc59cAFF8F7e5E6b16d3F43, 29106511095883169355246572836590841195659293991766 [2.91e49], 0x1c8534a9e16ff1fde839f3f818e82686eb3b49e9e8b076240f06480599d92df8]
  • test_transferWithMemo_revert_executorPolicyForbids(address,address,uint256,bytes32): Error != expected error: InsufficientBalance(0x3B7EeA4b359F2C33b12A1dF6D9C2Dc54075b5D6f, 0, 7677140850745576 [7.677e15]) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0xa3802c170000000000000000000000003b7eea4b359f2c33b12a1df6d9c2dc54075b5d6f0000000000000000000000008d2fee706d1536031dc5a547deb2f75207e2ec62000000000000000000000000000000000000000000000000001b4651a54ca0e82f59ad1152f37cd59fad0cf4ab8a2006844485a977817e1b7a89316621b6f764 args=[0x3B7EeA4b359F2C33b12A1dF6D9C2Dc54075b5D6f, 0x8d2FeE706D1536031dc5A547DeB2F75207e2eC62, 7677140850745576 [7.677e15], 0x2f59ad1152f37cd59fad0cf4ab8a2006844485a977817e1b7a89316621b6f764]
  • test_transferWithMemo_revert_tokenRecipient(address,uint256,bytes32): Error != expected error: InsufficientBalance(0x13e42d995A4675f491b822E758929da376613464, 0, 115917793834462 [1.159e14]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0xe48d515500000000000000000000000013e42d995a4675f491b822e758929da3766134640000000000000000000000000000000000000000000000000000696d36ecb5dece5390c17b63332f26173bb1327b61f04ed02494793c006832d4ee328a672edf args=[0x13e42d995A4675f491b822E758929da376613464, 115917793834462 [1.159e14], 0xce5390c17b63332f26173bb1327b61f04ed02494793c006832d4ee328a672edf]
  • test_transfer_revertOrder_executorPolicy_beats_balance(address,address,uint256): Error != expected error: InsufficientBalance(0xCB00000000000000000000000000000000000000, 0, 64) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0x76b31f6e000000000000000000000000cb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b990000000000000000000000000000000000000000000000000000000000000040 args=[0xCB00000000000000000000000000000000000000, 0x0000000000000000000000000000000000000b99, 64]
  • test_transfer_revertOrder_executorPolicy_beats_receiverPolicy(address,address,uint256): Error != expected error: PolicyForbids(0x8a4b3fa2d8b921852bc0089c6ef0958aa6961897be36fd731330fe2cd23f8363, 72057594037927937 [7.205e16]) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0x67f822c50000000000000000000000003e126f2d3bffab1c137d25a7b10333cb93215fe3000000000000000000000000c32e23b122cdb17ebcb20fbe5772dd83d26ae20600000000000000000000000000000000000004871ea866dc3a2dab24e3b56b36 args=[0x3e126F2d3bFFAb1C137D25A7B10333cB93215fe3, 0xc32E23b122cdb17ebCb20fbE5772dd83D26Ae206, 91834928489608560024603524950838 [9.183e31]]
  • test_transfer_revertOrder_executorPolicy_beats_senderPolicy(address,address,uint256): Error != expected error: PolicyForbids(0xb81736c875ab819dd97f59f2a6542cfb731ad52b4ae15a6f24df2fb02b0327f5, 72057594037927937 [7.205e16]) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0xe9945cbb00000000000000000000000099759907a3967283a085731337d6f6df608ab2b6000000000000000000000000e84a386de87b8b809d1f36379a4f2974230283e1000000000000000000000000000000000002df6b17ac8e9064257235ab31090d args=[0x99759907a3967283a085731337D6F6dF608Ab2B6, 0xe84A386de87B8b809d1F36379a4F2974230283E1, 14916055798836710498390194175150349 [1.491e34]]
  • test_transfer_revertOrder_tokenRecipient_beats_balance(address,uint256): Error != expected error: InsufficientBalance(0x97f1aEB10c085F64579C177B0674F722Ba3479A9, 0, 4288357109486712045620667 [4.288e24]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x71022c5e00000000000000000000000097f1aeb10c085f64579c177b0674f722ba3479a9000000000000000000000000000000000000000000038c184e02746f098ecdbb args=[0x97f1aEB10c085F64579C177B0674F722Ba3479A9, 4288357109486712045620667 [4.288e24]]
  • test_transfer_revertOrder_tokenRecipient_beats_executorPolicy(address,uint256): next call did not revert as expected; counterexample: calldata=0x5de2a22f000000000000000000000000d7cfc4138bb30b2bd1dfe642fdb85c6f80ce077a0000000000000000000000000000000000000000000000000000000000000000 args=[0xD7cFc4138bB30b2Bd1Dfe642FdB85c6f80CE077a, 0]
  • test_transfer_revertOrder_tokenRecipient_beats_receiverPolicy(address,uint256): Error != expected error: PolicyForbids(0x8a4b3fa2d8b921852bc0089c6ef0958aa6961897be36fd731330fe2cd23f8363, 72057594037927937 [7.205e16]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x85d001e40000000000000000000000000816df4883d3b123def7661f6cc9d77c177e76f400000000018b3534ab357861101761bd1e345e23e969ae9030fbd275a5c30cd1 args=[0x0816Df4883d3B123DEF7661F6Cc9D77C177E76F4, 162579073359134293730819733694461338773001052050116025058597211345 [1.625e65]]
  • test_transfer_revertOrder_tokenRecipient_beats_senderPolicy(address,uint256): Error != expected error: PolicyForbids(0xb81736c875ab819dd97f59f2a6542cfb731ad52b4ae15a6f24df2fb02b0327f5, 72057594037927937 [7.205e16]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x82b0eb1a000000000000000000000000000000000000000000000000000000000000390235827975a06ca0e9367ea3129b19441d45d0ca58e30b7693f09e73d0943d6200 args=[0x0000000000000000000000000000000000003902, 24203109375850684125479958527447627702129936018301371311106264921787101700608 [2.42e76]]
  • test_transfer_revertOrder_tokenRecipient_beats_zeroSender(uint256): Error != expected error: InvalidSender(0x0000000000000000000000000000000000000000) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x842ce61400000000000000000000000000000000000000000000000b3cdc3f5c086b4a6f args=[207299634612467878511 [2.072e20]]
  • test_transfer_revert_executorPolicyForbids(address,address,uint256): Error != expected error: InsufficientBalance(0xCB00000000000000000000000000000000000000, 0, 959) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0xe8de369d000000000000000000000000cb0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000029cd00000000000000000000000000000000000000000000000000000000000003bf args=[0xCB00000000000000000000000000000000000000, 0x00000000000000000000000000000000000029cd, 959]
  • test_transfer_revert_externalExecutorPolicyDenies(address,address,uint256): Error != expected error: InsufficientBalance(0x7e695d09AF4bd0F0041344d82656cB07e7B48c14, 0, 171864619609975786353761563248317432559822411643686971793488603201261 [1.718e68]) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927938 [7.205e16]); counterexample: calldata=0x66ef86710000000000000000000000007e695d09af4bd0f0041344d82656cb07e7b48c140000000000000000000000007a449ae60d23db5d8be513acb28f655e24d2f858000000065ff3bf5b0d02ef5fdd719c79e042cc374baccfdd1af045b458133eed args=[0x7e695d09AF4bd0F0041344d82656cB07e7B48c14, 0x7A449aE60d23Db5D8BE513AcB28F655E24d2F858, 171864619609975786353761563248317432559822411643686971793488603201261 [1.718e68]]
  • test_transfer_revert_tokenRecipient(address,uint256): Error != expected error: InsufficientBalance(0x0000000000000000000000000000000000000170, 0, 563) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x0221ddf600000000000000000000000000000000000000000000000000000000000001700000000000000000000000000000000000000000000000000000000000000233 args=[0x0000000000000000000000000000000000000170, 563]
    [FAIL: Error != expected error: InvalidSender(0x0000000000000000000000000000000000000000) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf)] test_seizeWithMemo_revertOrder_tokenRecipient_beats_zeroSender() (gas: 47044)
    [FAIL: Error != expected error: PolicyNotFound() != InvalidChildPolicy(9367487224930631684 [9.367e18])] test_createCompositePolicy_revert_invertedCompositeChild() (gas: 234691)
    [FAIL: PolicyNotFound()] test_compositePolicyChildIds_success_invertedCompositeIdReturnsSameSet() (gas: 130091)
    [FAIL: PolicyNotFound()] test_compositePolicyChildIds_success_returnsChildrenVerbatim() (gas: 130113)
    [FAIL: PolicyNotFound()] test_compositePolicyChildIds_success_returnsInvertedChildVerbatimAfterUpdate() (gas: 234463)
    [FAIL: PolicyNotFound()] test_createCompositePolicy_success_invertedSimpleChild() (gas: 130101)

@rayyan224
rayyan224 merged commit a2954a8 into main Oct 2, 2026
10 checks passed
@rayyan224
rayyan224 deleted the docs/changelog-denim branch October 2, 2026 15:02
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