Skip to content

docs(policy): document malformed isAuthorized results - #234

Merged
rayyan224 merged 3 commits into
mainfrom
docs/isauthorized-malformed-id
Oct 1, 2026
Merged

rayyan224 merged 3 commits into
mainfrom
docs/isauthorized-malformed-id

Conversation

@rayyan224

Copy link
Copy Markdown
Collaborator

Summary

  • Document that isAuthorized returns false for a malformed policy ID, after clearing the invert flag.
  • Separate that from empty-set semantics for a well-formed unknown ID, and state that an inverted ID is negated only when the base exists.

Test plan

  • Confirm the NatSpec matches MockPolicyRegistry._isAuthorized for malformed, unknown, and inverted IDs.
  • forge test -vv --match-test test_isAuthorized_success_invertUnknown

Made with Cursor

A malformed policy ID returns false. That is separate from the empty-set result of an unknown well-formed ID, and an inverted missing base stays fail-closed.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown

Interface Coverage

✅ All interface functions have test coverage.

@github-actions

github-actions Bot commented Oct 1, 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).

Unknown UNION and INTERSECT ids follow empty-set semantics, a malformed id denies after the invert flag is cleared, and an inverted id is negated only when its base exists.

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions

github-actions Bot commented Oct 1, 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): Error != expected error: SupplyCapExceeded(340282366920938463463374607431768211455 [3.402e38], 457705329123111971474894470702776269023 [4.577e38]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x0e04a6a6000000000000000000000000d7d765c6e1f4800acec66d65bbd2a21fb9e3d7ca000000002f22dd18c5f9cac279539cf87bac7e24258d4f71f2704f79b3196877000000000000000000000000340cd276dcaa58dff53b9667929ac77da0e7d068 args=[0xd7D765c6E1F4800acEC66d65BbD2a21fb9E3D7CA, 4964019785971992180352344538808370889985134355316135714009474754679 [4.964e66], 297153463051901641194810029020636156085517406312 [2.971e47]]
  • test_invertedPolicyId_success_negatesAuthorization(address): custom error 0x6b468933; counterexample: calldata=0x4268079e0000000000000000000000008c09a4f1699b36273b58862eb4638effca5266cd args=[0x8c09a4F1699B36273b58862Eb4638effCa5266CD]
  • test_invertedPolicyId_success_togglesAndRoundTrips(uint64): custom error 0x6b468933; counterexample: calldata=0x123f60c00000000000000000000000000000000000000000000000000000000013bbf83e args=[331085886 [3.31e8]]
  • test_isAuthorized_success_intersectAllowAndNotX(address): PolicyNotFound(); counterexample: calldata=0x55848b8e0000000000000000000000000000000000000000000000000000000000003b28 args=[0x0000000000000000000000000000000000003b28]
  • test_isAuthorized_success_invertAllowlistNonMemberAuthorized(address): assertion failed; counterexample: calldata=0xb07c21cd000000000000000000000000cb00000000000000000000000000000000000000 args=[0xCB00000000000000000000000000000000000000]
  • test_isAuthorized_success_invertAlwaysBlockAuthorizes(address): assertion failed; counterexample: calldata=0xca9d7161000000000000000000000000fde81cf643480fc926bba36452ed4507984ba141 args=[0xfDe81Cf643480fC926BBA36452ed4507984Ba141]
  • test_isAuthorized_success_invertBlocklistMemberAuthorized(address): assertion failed; counterexample: calldata=0x072617790000000000000000000000000000000000000000000000000000000000001f86 args=[0x0000000000000000000000000000000000001f86]
  • test_mintWithMemo_revert_tokenRecipient(uint256,bytes32): next call did not revert as expected; counterexample: calldata=0x4ca8134a000000000000000000000000000000000000000000000002bee41728225ca3cb35f383023f4c0b9d51cac737ba36965d64ac4493d6f8989ebd757695e7342a1d args=[50648632770458067915 [5.064e19], 0x35f383023f4c0b9d51cac737ba36965d64ac4493d6f8989ebd757695e7342a1d]
  • test_mint_revertOrder_tokenRecipient_beats_cap(uint256): Error != expected error: SupplyCapExceeded(0, 6) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0xc475cac10000000000000000000000000000000000000000000000000000000000000006 args=[6]
  • test_mint_revertOrder_tokenRecipient_beats_policy(uint256): Error != expected error: PolicyForbids(0xa0d5ae037e66a09119acf080a1d807abb9b6d03b6b9130eb19f7c1e6bdb8ffc8, 72057594037927937 [7.205e16]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x6ea9803100000000000000000000000000000000e64e9f37bd0e5b3e78a45e5a585539d3 args=[306130667504682308928487051264020265427 [3.061e38]]
  • test_mint_revert_tokenRecipient(uint256): Error != expected error: SupplyCapExceeded(340282366920938463463374607431768211455 [3.402e38], 8975757643115902421529690881740867460684949 [8.975e42]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x03224e1a000000000000000000000000000067096189d80d38238e0c41f3684bde185c95 args=[8975757643115902421529690881740867460684949 [8.975e42]]
  • test_policyAdmin_success_invertResolvesBaseAdmin(address): assertion failed: 0x0000000000000000000000000000000000000000 != 0x499AE0c19b7Fb36345D74D3f10D34496689B55D4; counterexample: calldata=0xee7ff5a6000000000000000000000000499ae0c19b7fb36345d74d3f10d34496689b55d4 args=[0x499AE0c19b7Fb36345D74D3f10D34496689B55D4]
  • test_policyExists_success_invertMirrorsBase(uint56): assertion failed; counterexample: calldata=0xf4aec5dc00000000000000000000000000000000000000000000000000001d22fcbb9b67 args=[32036106247015 [3.203e13]]
  • test_seizeWithMemo_revertOrder_tokenRecipient_beats_blocked(address): Error != expected error: AccountNotSeizable(0x8551ce38993e4A96DC6ABeb731cdd185f482Dc66) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x4ce156d20000000000000000000000008551ce38993e4a96dc6abeb731cdd185f482dc66 args=[0x8551ce38993e4A96DC6ABeb731cdd185f482Dc66]
  • test_seizeWithMemo_revert_tokenRecipient(address,uint256): Error != expected error: InsufficientBalance(0x000000000000000000000000000000000000335A, 0, 17040 [1.704e4]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x220d05f3000000000000000000000000000000000000000000000000000000000000335a0000000000000000000000000000000000000000000000000000000000004290 args=[0x000000000000000000000000000000000000335A, 17040 [1.704e4]]
  • test_transferFromWithMemo_revert_tokenRecipient(address,address,uint256,bytes32): Error != expected error: InsufficientAllowance(0x209E4a53fdb656768078E80E12751563688a3777, 0, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0xac063dd0000000000000000000000000209e4a53fdb656768078e80e12751563688a37770000000000000000000000008f3dc099ff71ed64c3d3a117b5eb565bb1f2b87cffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc4f96298bd5e3e522472435864b35f147028c63aee5c7ebba770767d69e9496e args=[0x209E4a53fdb656768078E80E12751563688a3777, 0x8F3DC099fF71ED64C3d3a117b5eB565BB1f2b87c, 115792089237316195423570985008687907853269984665640564039457584007913129639935 [1.157e77], 0xc4f96298bd5e3e522472435864b35f147028c63aee5c7ebba770767d69e9496e]
  • test_transferFrom_revertOrder_tokenRecipient_beats_allowance(address,address,uint256): Error != expected error: InsufficientAllowance(0x55aA69c84B24892AAEF76Eeac52e0E2b3a0B8602, 0, 8156) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x98d9a95e00000000000000000000000055aa69c84b24892aaef76eeac52e0e2b3a0b8602000000000000000000000000cb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001fdc args=[0x55aA69c84B24892AAEF76Eeac52e0E2b3a0B8602, 0xCB00000000000000000000000000000000000000, 8156]
  • test_transferFrom_revertOrder_tokenRecipient_beats_executorPolicy(address,address,uint256): Error != expected error: InsufficientAllowance(0x883d077af1bdF42102DAd8d35da92D2f110fe697, 0, 208213088038444684045288263859641151978 [2.082e38]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x0fbad031000000000000000000000000883d077af1bdf42102dad8d35da92d2f110fe697000000000000000000000000851004825f74a6ba69fc0df10da9603eb3d17fc60007e0a8e9d06a4ed9056aae58d795c49c9c8128d41dbceb6479580e8ebadc26 args=[0x883d077af1bdF42102DAd8d35da92D2f110fe697, 0x851004825F74A6BA69fC0DF10da9603Eb3D17fC6, 13918474529670884025451336673952085703066637274931708241160087158711311398 [1.391e73]]
  • test_transferFrom_revert_selfCaller_executorPolicyForbids(address,address,uint256): next call did not revert as expected; counterexample: calldata=0x641b204b0000000000000000000000002118684251c0e4dbf76b570ea371632c5d380b54000000000000000000000000c6f7d73d926c165ce1871afadc706c1ea3ff0a700000000000000000000000000000000000000000000000294cce53a8d807f4d7 args=[0x2118684251C0E4dbf76b570ea371632c5d380b54, 0xC6F7D73D926c165ce1871afAdC706C1eA3ff0A70, 761850959998820545751 [7.618e20]]
  • test_transferFrom_revert_tokenRecipient(address,address,uint256): Error != expected error: InsufficientAllowance(0x740a6FC968cD6DB9C33cf06f798c02e48d6b5152, 0, 11595277602007477750151156844553575575459 [1.159e40]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0xb9f54792000000000000000000000000740a6fc968cd6db9c33cf06f798c02e48d6b51520000000000000000000000005776ee54af302c70d048352fa89531c76a6946c70000000000000000000000000000002213513c1689634921dfe7d3c0268fafa3 args=[0x740a6FC968cD6DB9C33cf06f798c02e48d6b5152, 0x5776EE54aF302c70D048352fa89531C76a6946C7, 11595277602007477750151156844553575575459 [1.159e40]]
  • test_transferWithMemo_revertOrder(address,address,uint256,bytes32): Error != expected error: PolicyForbids(0xb81736c875ab819dd97f59f2a6542cfb731ad52b4ae15a6f24df2fb02b0327f5, 72057594037927937 [7.205e16]) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0xf5e311250000000000000000000000004dd019b781357abcb550789dbac9a3b9b160473f0000000000000000000000009088dc098f6c14842f031a3ef806f391718d13630000000000000000000000000000000000000000000000000000000000000a0a372b589e48c8e04dab115e9076a06e9b997d47af54a147400628bab7ba4f7fae args=[0x4dD019b781357ABCB550789dBaC9a3B9b160473F, 0x9088Dc098f6C14842f031a3eF806F391718D1363, 2570, 0x372b589e48c8e04dab115e9076a06e9b997d47af54a147400628bab7ba4f7fae]
  • test_transferWithMemo_revert_executorPolicyForbids(address,address,uint256,bytes32): Error != expected error: InsufficientBalance(0x00E46aE0799d9Ae473D3FaDBDCdDc599A1766692, 0, 11359243100599016854995068492399646070925713906676400 [1.135e52]) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0xa3802c1700000000000000000000000000e46ae0799d9ae473d3fadbdcddc599a176669200000000000000000000000078f359fa6e88c0b9f42d6a93055e6b109eba11a3000000000000000000001e5c4f3d3557f95d033c60ebba3e50a2737fcc9132b08df169595c0949e3881389c96929abf1c71a5b32b609f5d81b05a9f8d7982945 args=[0x00E46aE0799d9Ae473D3FaDBDCdDc599A1766692, 0x78F359fa6e88C0b9f42d6a93055E6B109ebA11a3, 11359243100599016854995068492399646070925713906676400 [1.135e52], 0x8df169595c0949e3881389c96929abf1c71a5b32b609f5d81b05a9f8d7982945]
  • test_transferWithMemo_revert_tokenRecipient(address,uint256,bytes32): Error != expected error: InsufficientBalance(0x000000000000000000000000000000000000148d, 0, 4168) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0xe48d5155000000000000000000000000000000000000000000000000000000000000148d00000000000000000000000000000000000000000000000000000000000010484b9d4917cdb6957159bf35bf76b7554071a26cd41bf9f30bf776631d102bcc08 args=[0x000000000000000000000000000000000000148d, 4168, 0x4b9d4917cdb6957159bf35bf76b7554071a26cd41bf9f30bf776631d102bcc08]
  • test_transfer_revertOrder_executorPolicy_beats_balance(address,address,uint256): Error != expected error: InsufficientBalance(0x22c7388a590d7703736dEbf576930F289A2Ea97c, 0, 129652832837614407918992205820838968406 [1.296e38]) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0x76b31f6e00000000000000000000000022c7388a590d7703736debf576930f289a2ea97c000000000000000000000000e761071850d67ab8aab43ab10ea83e97800744a2000000007fca96557a2991b366a8430c618a3a30ba929999f354e8f65f7e394a args=[0x22c7388a590d7703736dEbf576930F289A2Ea97c, 0xe761071850d67Ab8aab43ab10EA83E97800744A2, 13458000599307182800902935801517809432483791114871996765283509221706 [1.345e67]]
  • test_transfer_revertOrder_executorPolicy_beats_receiverPolicy(address,address,uint256): Error != expected error: PolicyForbids(0x8a4b3fa2d8b921852bc0089c6ef0958aa6961897be36fd731330fe2cd23f8363, 72057594037927937 [7.205e16]) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0x67f822c5000000000000000000000000a4642675d3a057a2abd959b7f95704c8a94124c100000000000000000000000003113069de5ffd92d1ebce08f2ebbbdf438ee572fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe args=[0xa4642675d3A057a2aBd959B7F95704c8A94124c1, 0x03113069De5fFd92D1ebce08F2EBBbdF438EE572, 115792089237316195423570985008687907853269984665640564039457584007913129639934 [1.157e77]]
  • test_transfer_revertOrder_executorPolicy_beats_senderPolicy(address,address,uint256): Error != expected error: PolicyForbids(0xb81736c875ab819dd97f59f2a6542cfb731ad52b4ae15a6f24df2fb02b0327f5, 72057594037927937 [7.205e16]) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0xe9945cbb000000000000000000000000649448b38bc734ee56f6f05fb54484178cda075300000000000000000000000017ddb596f72023132db8ee285872394a1caf7a3a000000000000000000000000000000000000000000000278bd831595b680f550 args=[0x649448b38BC734EE56F6f05Fb54484178cda0753, 0x17DDB596f72023132Db8Ee285872394A1CaF7A3a, 11671998036812310312272 [1.167e22]]
  • test_transfer_revertOrder_tokenRecipient_beats_balance(address,uint256): Error != expected error: InsufficientBalance(0x000000000000000000000000000000000000060d, 0, 1468354499 [1.468e9]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x71022c5e000000000000000000000000000000000000000000000000000000000000060d0000000000000000000000000000000000000000000000000000000057854fc3 args=[0x000000000000000000000000000000000000060d, 1468354499 [1.468e9]]
  • test_transfer_revertOrder_tokenRecipient_beats_executorPolicy(address,uint256): Error != expected error: InsufficientBalance(0x24CC9F6D8EafF8a873495330AB5359E0cc247DFf, 0, 11781187884761564 [1.178e16]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x5de2a22f00000000000000000000000024cc9f6d8eaff8a873495330ab5359e0cc247dff0000000000000000000000000000000000000000000000000029daed8ee741dc args=[0x24CC9F6D8EafF8a873495330AB5359E0cc247DFf, 11781187884761564 [1.178e16]]
  • test_transfer_revertOrder_tokenRecipient_beats_receiverPolicy(address,uint256): Error != expected error: PolicyForbids(0x8a4b3fa2d8b921852bc0089c6ef0958aa6961897be36fd731330fe2cd23f8363, 72057594037927937 [7.205e16]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x85d001e40000000000000000000000002b75a6329368c9021ee74ffadb6005cdce51460200000000000000000000000000000000001a7ff426cd9f05e8bc4636ce887b15 args=[0x2b75A6329368C9021EE74ffaDb6005cdCE514602, 137594928022233892490971578318224149 [1.375e35]]
  • test_transfer_revertOrder_tokenRecipient_beats_senderPolicy(address,uint256): Error != expected error: PolicyForbids(0xb81736c875ab819dd97f59f2a6542cfb731ad52b4ae15a6f24df2fb02b0327f5, 72057594037927937 [7.205e16]) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x82b0eb1a000000000000000000000000ed9f901426465e96760b2bad6ac1c2f5823d5dedfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe args=[0xeD9f901426465E96760b2BAD6ac1c2F5823D5Ded, 115792089237316195423570985008687907853269984665640564039457584007913129639934 [1.157e77]]
  • test_transfer_revertOrder_tokenRecipient_beats_zeroSender(uint256): Error != expected error: InvalidSender(0x0000000000000000000000000000000000000000) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x842ce614000003fdba90d42c6f5282da9f6442134eaea7c655ba4568d43e973215056590 args=[27545753212525005904839821673358007125256937052270789381969285159937424 [2.754e70]]
  • test_transfer_revert_executorPolicyForbids(address,address,uint256): Error != expected error: InsufficientBalance(0xAd0Cf44f9A8cd030685e2D4B2C7d86a7d978b6E8, 0, 158125207667502886935140659150392854464404438343402722385612407997 [1.581e65]) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927937 [7.205e16]); counterexample: calldata=0xe8de369d000000000000000000000000ad0cf44f9a8cd030685e2d4b2c7d86a7d978b6e8000000000000000000000000f66192b02c5cdad4b9d68acee784f6f8a8fe62bc000000000180618eed998595f171607b0ecd369598bd847d1c95b428824284bd args=[0xAd0Cf44f9A8cd030685e2D4B2C7d86a7d978b6E8, 0xf66192B02C5cdad4B9D68AcEE784F6F8A8fe62bc, 158125207667502886935140659150392854464404438343402722385612407997 [1.581e65]]
  • test_transfer_revert_externalExecutorPolicyDenies(address,address,uint256): Error != expected error: InsufficientBalance(0x0000000000000000000000000000000000005688, 0, 2) != PolicyForbids(0x10be5173aff2a44e748bd9acd8b19fe34689581398a9db7ba2fb671e786ff7d8, 72057594037927938 [7.205e16]); counterexample: calldata=0x66ef86710000000000000000000000000000000000000000000000000000000000005688000000000000000000000000cb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002 args=[0x0000000000000000000000000000000000005688, 0xCB00000000000000000000000000000000000000, 2]
  • test_transfer_revert_tokenRecipient(address,uint256): Error != expected error: InsufficientBalance(0x0000000000000000000000000000000000003b06, 0, 5191) != InvalidReceiver(0xB2000000000000000000009E871a2184B5aFaCCf); counterexample: calldata=0x0221ddf60000000000000000000000000000000000000000000000000000000000003b060000000000000000000000000000000000000000000000000000000000001447 args=[0x0000000000000000000000000000000000003b06, 5191]
    [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)

Each uncreated policy type records its empty-set result, then asserts the inverted id returns false. Drop the separate default-only and existing-composite cases.

Co-authored-by: Cursor <cursoragent@cursor.com>
@rayyan224
rayyan224 merged commit 3820cf0 into main Oct 1, 2026
10 checks passed
@rayyan224
rayyan224 deleted the docs/isauthorized-malformed-id branch October 1, 2026 16:56
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