{"assessments":[],"deployments":[],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"a44bc641-1a11-4d47-84ec-ca80ed789f69","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"6b9bbbd2395f952f5ed8af3512034c2e3235cac51267c6dbe961faf474964c79","dependsOn":["audit_imported_code"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"2d7d84a1a9972f1497e5bc68a704cbf42294d08c62d2868f102ffe3b909b9b51","skillId":"adapt-contract-project","tools":[]},"key":"adapt_contract_project","kind":"code","role":"implement","skillHash":"2d7d84a1a9972f1497e5bc68a704cbf42294d08c62d2868f102ffe3b909b9b51","skillId":"adapt-contract-project","state":"accepted"},{"acceptedSubmissionHash":null,"dependsOn":["adapt_contract_project","write_foundry_tests","gas_and_size_report","manifest"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_economics","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["adapt_contract_project","write_foundry_tests","gas_and_size_report","manifest"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_flow","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"waiting"},{"acceptedSubmissionHash":"78e412edcc1698eee3da61a73d94025e071fc1167a7a9840472e726d83cfbb43","dependsOn":[],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"9897597976b0e72440db7ca402d225aea20f3d37205ba53e7df2400ff80f29cc","skillId":"audit-imported-code","tools":[]},"key":"audit_imported_code","kind":"code","role":"review","skillHash":"9897597976b0e72440db7ca402d225aea20f3d37205ba53e7df2400ff80f29cc","skillId":"audit-imported-code","state":"accepted"},{"acceptedSubmissionHash":null,"dependsOn":["adapt_contract_project","write_foundry_tests","gas_and_size_report","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","tools":[]},"key":"audit_judge","kind":"code","role":"review","skillHash":"af3aa01159bbf354f621cafa5c0006f6169e0938a8b015be508b7377dbf165bc","skillId":"audit-judge","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["adapt_contract_project","write_foundry_tests","gas_and_size_report","manifest"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_math","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["adapt_contract_project","write_foundry_tests","gas_and_size_report","manifest"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","tools":[]},"key":"audit_permissions","kind":"code","role":"review","skillHash":"e5ac2cb1fd91a56aa40b16487fc230c48de0d317c8266140331dd3219bb40a85","skillId":"audit-specialist","state":"waiting"},{"acceptedSubmissionHash":null,"dependsOn":["write_foundry_tests"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"30969efdf166eb4a7d01a215c4655adeac1cd303dea3ef1c3ba1fc75789474d4","skillId":"gas-and-size-report","tools":[]},"key":"gas_and_size_report","kind":"code","role":"tests","skillHash":"30969efdf166eb4a7d01a215c4655adeac1cd303dea3ef1c3ba1fc75789474d4","skillId":"gas-and-size-report","state":"failed"},{"acceptedSubmissionHash":null,"dependsOn":["audit_imported_code","adapt_contract_project","write_foundry_tests","gas_and_size_report"],"execution":{"network":false,"profile":"foundry","requires":[],"tools":[]},"key":"manifest","kind":"code","role":"integrate","skillHash":null,"skillId":null,"state":"waiting"},{"acceptedSubmissionHash":"1d9faa06898500a5421e98bdda67bc833940783fd2988f28b7bd971845c0ea3d","dependsOn":["adapt_contract_project"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","tools":[]},"key":"write_foundry_tests","kind":"code","role":"tests","skillHash":"4c76766b00591dfe982fe85d3de589fdb2f810e5137c301155d1c5e36a1d3b23","skillId":"write-foundry-tests","state":"accepted"}],"objective":"Launch QUORUM (QRM) on Ethereum mainnet, paired with IMD, using the exact pinned source and VERIFIED_DEPLOYED immutable dependencies in PREREQUISITES.json. This is the production issuance. The supplied constitution and governance rules are fixed product requirements, not a request to redesign or endorse their philosophy. Perform IMD-required issuance compatibility checks, tests and audits, publish the resulting source, and deploy through the official factory. Stop and report any incompatible requirement instead of weakening it.\n\nUse the zero-argument QuorumToken and declared Hook permissions exactly: beforeInitialize, beforeAddLiquidity, beforeSwap, afterSwap (0x28c0). Preserve 1 billion supply, fixed stake 62,500 QRM, one staking address per seat, unlimited seats, 3% buy/sell tax in IMD, purchased/original/reward quotas, 50/50 treasury accounting, immutable voting/work/allowance/suspension rules and factory-only new liquidity. Recusal never lowers the fixed approval denominator. Approved operations have fixed budgets and task-required outcomes, with normal failure rollback and retry; there is no oracle repricing.\n\nThe Hook must create the governance core atomically during issuance, binding the actual token, revenue asset and Hook as reporter. No administrator, proxy, mutable core binding or substitute generic token. Preserve the exact constitution SHA-256 and core creation bytecode hash in PREREQUISITES.json. Any change affecting immutable creation bytes requires a newly verified dependency package; do not silently deploy mismatched core code.\n\nRun all 63 mandatory discovered cases in ACCEPTANCE.json without skips, omissions or weakened assertions. Keep the complete default test root. Verify the fixed constructor dependencies, exact 0x28c0 permissions/address/manifest alignment, official current opening policy, 90% pool/10% swarm and no founder allocation. Check actual transaction gas at or below 16,777,216, initcode at or below 49,152 bytes and runtime at or below 24,576 bytes. A multi-week test harness gas allowance is not a transaction-cap waiver.\n\nAfter deployment, supply Ethereum chainId=1 receipts, actual token/Hook/core/children/distributor/registry identities, recorded factory bindings and verified source. Identify the launch payer's fee-recipient rights and the exact payer-to-Hook handover needed so future project fee shares reach its treasury. Do not claim code publication or simulated addresses are deployed contracts. No frontend build, ENS purchase, recurring bot deployment or additional paid order is included in this request.","parentJobId":null,"planHash":"dc9495871b895330cfca9fb4e560ce5d6520edb805dd135509245ace76cbf5a2","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"a44bc641-1a11-4d47-84ec-ca80ed789f69","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2286-launch-quorum-qrm-ethereum"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"52094","feedbackHash":"5ec5549834be2b3c903262203f203297d538569bf76a1dbf983dcaf36c924a06","nodeKey":"adapt_contract_project","submissionHash":"6b9bbbd2395f952f5ed8af3512034c2e3235cac51267c6dbe961faf474964c79","tag1":"verification:checks","tag2":"acceptance-v2","value":1},{"agentId":"51140","feedbackHash":"f69e61cce47c5c366df35a8c1d257a883d812ff66a9902cdddcd664b7a83f883","nodeKey":"audit_imported_code","submissionHash":"78e412edcc1698eee3da61a73d94025e071fc1167a7a9840472e726d83cfbb43","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51226","feedbackHash":"8a5418db69878dc0a3b7bd88db15bf295496312472b9f93be33113f45c9348b8","nodeKey":"write_foundry_tests","submissionHash":"1d9faa06898500a5421e98bdda67bc833940783fd2988f28b7bd971845c0ea3d","tag1":"verification:checks","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"33dce18e8b0a5ad8987cb160729526753ef9349ab13227485266fdf7f887d5ee","state":"blocked","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"efcbfe9a9ddd3735534357d4c93d473f0587b2d91ab5ef396ddf5eaf23d41aed","device":"720122d0ca9f60ca","findings":[],"hash":"1d9faa06898500a5421e98bdda67bc833940783fd2988f28b7bd971845c0ea3d","nodeId":"0b7a1742-b3d2-4f05-ad6e-e467687cbb63","outcome":"completed","summary":"Added 27 compatibility cases under `test/compatibility`.\n\n- `forge build` and full `forge test` pass: **96/96**, including all **63 mandatory cases**, without skips.\n- **4,000 fuzz runs** and **15,360 invariant handler calls** pass.\n- Local atomic issuance used **14,298,659 gas**; bytecode limits pass.\n- Production files, configuration and pinned tests remain unchanged.\n\n[Evidence and reproduction instructions](/Users/hhyy/.lobster_wallets/identitymd/work/a44bc641-1a11-4d47-84ec-ca80ed789f69/0b7a1742-b3d2-4f05-ad6e-e467687cbb63/test/compatibility/README.md).\n\nValidated using installed Foundry 1.5.1. Receipts are local chain 31337; no mainnet deployment or source publication was performed.","treeHash":"7ac392932be63218f82e637f980ec6f4a9e5cc54","usage":{"cachedInputTokens":7798656,"inputTokens":167519,"model":"gpt-6-astra","outputTokens":51869,"runtime":"codex","turns":8,"wallClockMs":1671073}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"381cad4126e6ec64","findings":[],"hash":"55c64dd3db2dc5dd017c47b08cf502f02ddf17b9a05717c3168ca570385076d0","nodeId":"3eef4508-8d15-488e-aaf6-22f84e6e1e0b","outcome":"failed","summary":"needs input: The final approved production factory launch packet is missing, including the exact registry metadata, actual contributor agent IDs, and actual contributor allocation/Merkle root. The supplied evidence/official-factory-fork packets are explicitly localOnly, chainId 31337, and local-candidate-not-release. tools/mainnet_fork_positive.py supplies synthetic IDs 1 through 64, while tools/prepare_issuance.py supplies zero registry hashes and sourceRepoUrl local-positive-fixture. ADAPTATION.md confirms that the real contributor allocation/record remains to be constructed. LaunchRegistry.record stores the supplied metadata and every contributor ID, so rehearsal gas cannot certify the requested final composition against the 16777216 transaction limit. These production inputs cannot be inferred or replaced with stand-ins. — Please provide the final approved chainId=1 official-factory LaunchParams packet, including the actual launch number, complete registry provenance metadata, actual contributo","treeHash":null,"usage":{"cachedInputTokens":863872,"inputTokens":73335,"model":"gpt-6-astra","outputTokens":4928,"runtime":"codex","turns":5,"wallClockMs":332529}},{"artifacts":[],"attempt":1,"bundleHash":"510c701471be8ef9f7beacd330a56639900bd58579f32517436a817939e6f800","device":"cd33e6f138d75a0c","findings":[],"hash":"6b9bbbd2395f952f5ed8af3512034c2e3235cac51267c6dbe961faf474964c79","nodeId":"86e4fd6b-7b6c-4a86-be9f-d0655e75d86d","outcome":"completed","summary":"Implemented the factory integration safeguards and documented changes in [ADAPTATION.md](/Users/timhsia/.identitymd/work/a44bc641-1a11-4d47-84ec-ca80ed789f69/86e4fd6b-7b6c-4a86-be9f-d0655e75d86d/ADAPTATION.md).\n\n- `forge build` passes.\n- All 69 Solidity tests pass, including all 63 mandatory cases.\n- Eight tooling regressions pass.\n- Fork launches fit gas and size limits.\n- Contract source, immutable hashes and `0x28c0` permissions remain unchanged.\n\nProduction publication, deployment and the payer-to-Hook fee-right handover remain official IMD issuance steps.","treeHash":"45feaf7f46d0ad31bca61fbec35d23b553738b0a","usage":{"cachedInputTokens":4494336,"inputTokens":170822,"model":"gpt-6.1-sol","outputTokens":38777,"runtime":"codex","turns":7,"wallClockMs":875305}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"ddc5542bddcad225","findings":[{"citation":"resolved","description":"QuorumIssuanceHook.collectPlatformFees only works when LaunchFactory.positionOf(launchNumber).requester is the Hook itself, and the Hook has no other way to receive the requester share. The official factory (lib/imd-launch-verified/src/PoolFees.sol:147-152, _openPosition) records LaunchParams.requester, which the platform deployer sets to \"the wallet that paid for the launch, or zero\"; it is not a launch.json field and the Hook cannot influence it. The live reference launch confirms the practice: on mainnet, LaunchFactory 0x12C63b581d07093F6126bc02263c58f7EadaA96F.positionOf(2176) returns requester 0x92cEf4823119f3332A85A39023eEbA01a06890c4 (an EOA), not the launch's hook 0xB5dB78452658440674cADcc342050728eCA7fFff. PoolFees.claimFees is permissionless and pays REQUESTER_BPS (80%) of every collected LP fee to whatever address is recorded, so until the recorded requester calls PoolFees.setRequester(launchNumber, hookAddress) every claim routes the project's fee share to the payer wallet instead of the QUORUM treasury, and Hook.collectPlatformFees cannot be used by the governance operation that the mandatory case testNormalVotedFeeCollectionSplitsIncomeOnlyOnce relies on. If the deployer records requester = address(0) (\"a launch nobody paid for\"), PoolFees.setRequester reverts NotRequester forever (line 81: p.requester == address(0) check), so the 80% share is permanently paid to LaunchFees.feeRecipient with no recovery path. The local suites hide this because every positive test sets p.requester = factory.predictHook(hookCode, salt) (test/positive/ImdFactoryPositive.t.sol:81, test/compatibility/FixedTokenBindingPositive.t.sol:89). Required handover: the launch payer (the address the deployer records as requester) must submit, from that same address, LaunchFactory.setRequester(launchNumber, <deployed QuorumIssuanceHook address>) after the launch transaction, and acceptance must read positionOf(launchNumber).requester == hook before any fee is claimed. Amounts already paid or owed (PoolFees.owed[payer]) before the handover stay with the payer by design. Alternatively the deployer must set LaunchParams.requester = the predicted hook address (as the tests do); the payer must never be recorded as zero.","line":91,"path":"src/QuorumIssuanceHook.sol","reproduction":"State: launch QUORUM through LaunchFactory.launch with LaunchParams.requester = payer EOA (what the platform did for launch 2176). Then, after any swap through the Hook's router: (1) call QuorumIssuanceHook.collectPlatformFees(launchNumber) from any address -> reverts with \"fee destination not bound\" because positionOf(launchNumber).requester == payer != hook. (2) call LaunchFactory.claimFees(launchNumber) from any address -> IMD and QRM fees are transferred: 80% to the payer EOA, 20% to LaunchFees.feeRecipient; QuorumTreasury.accountedBalance() is unchanged. Expected per requirements: project fee share reaches the governance treasury 50/50. Mainnet-fork rehearsal (reviewer scratch test, launch number 777001, requester set to the hook) shows the intended path working: after one 1000 IMD buy and one sell, collectPlatformFees moved 10 IMD and 1,366,999 QRM of LP fees into the treasury; with requester = payer those exact amounts go to the payer instead. Variant: LaunchParams.requester = address(0) -> payer-to-hook handover impossible because PoolFees.setRequester reverts NotRequester (lib/imd-launch-verified/src/PoolFees.sol:81), so the 80% share is never recoverable.","severity":"medium","snippet":"        require(recipient==address(this),\"fee destination not bound\");","title":"Hook never holds the launch's requester fee right unless the payer hands it over; collectPlatformFees reverts and 80% of LP fees pay the payer wallet (or are lost forever if requester is zero)"},{"citation":"resolved","description":"The Hook creates its core by calling QuorumCoreCode(0x5f8c721d44d5815ae9e6d54ff20e717d56ec0d91).create(...), which uses plain CREATE from the catalog contract, so the core's address is keccak(rlp(catalog, catalogNonce)). Any account may call create(...) with arbitrary arguments (it costs roughly 9-10M gas and produces an unrelated core whose reporter is the caller), which increments the catalog nonce. The catalog's nonce on mainnet is currently 3 (two CoreCodePart deployments), and tools/prepare_issuance.py predicts core = create_child(coreCode, 3) and derives membership/treasury/work/operatingAccount from that. A single third-party create() before the launch shifts every one of those predicted addresses while the launch itself still succeeds (the Hook stores whatever address CREATE returns in its immutable core). This cannot lose funds, but any issuance packet, attestation or registry note that pins the predicted core/children addresses would be wrong, and the children must be read from Hook.core() and its getters after deployment rather than from predictions.","line":23,"path":"src/QuorumCoreCode.sol","reproduction":"Before the launch, any EOA calls QuorumCoreCode(0x5f8c721d44d5815ae9e6d54ff20e717d56ec0d91).create(anyERC20, 0xD34a99Bc0f67aE1bbd63C660e6d0b0dd03E263B7, 1, ConstitutionPrototype(0x48a78afb5397abeab5be23473973c5c62497cf55)). Catalog nonce becomes 4. Then the factory launch runs: Hook.core() == address derived from nonce 4, not the nonce-3 address that tools/prepare_issuance.py (create_child(c['coreCode'],3)) and any packet built from it list. Expected: predicted core/children addresses hold; actual: they do not, and only Hook.core(), core.membership(), core.treasury(), core.work(), treasury.operatingAccount(), hook.router(), hook.quota() are authoritative.","severity":"low","snippet":" function create(address token,address asset,uint256 stake,ConstitutionPrototype constitution) external returns(QuorumBoundCore core){","title":"QuorumCoreCode.create is permissionless, so the governance core address is not predictable before the launch transaction"},{"citation":"resolved","description":"Mainnet-fork rehearsal of LaunchFactory.launch using the real factory 0x12C63b581d07093F6126bc02263c58f7EadaA96F, the real PoolManager, the real IMD token and the deployed constitution/core package, with policy-34 seeding (sqrtPriceX96 125270724187523965593206900, ticks -128940..887220, liquidity 1427203723558688610055083, two agentIds like launch 2176): execution gas 14,865,927; calldata 24,324 bytes (3,227 zero) = 350,460 gas; with the 21,000 base the transaction is about 15,237,387 gas, i.e. 1,539,829 (9.2%) below the EIP-7825 cap of 16,777,216. The local harness measured 14,337,123 execution gas for the same launch against the locally built factory. Sizes: hook initcode with arguments 20,011 bytes, core initcode with arguments 43,171 bytes, token initcode 3,061 bytes (all <= 49,152); runtimes hook 9,356, router 4,030, core 924, membership 7,990, treasury 10,720, work 17,568, operating account 3,167, token 1,857 bytes (all <= 24,576). Policy 34 gasCeilingWei is 0.05 ETH, so at ~15.24M gas the launch is only affordable at an effective gas price up to about 3.28 gwei (launch 2176 paid 0.098 gwei; base fee at review time 0.046 gwei). The pool took 899,999,999.999999999999999392 QRM and left 608 wei of remainder for remainderTo, so the 90% pool / 10% distributor split holds with no founder allocation under the official opening policy. Any growth of the Hook or core composition (more deployed bytes or storage writes in the constructors) eats directly into the 1.5M headroom and should be re-measured before the deployer's simulation.","line":41,"path":"src/QuorumIssuanceHook.sol","reproduction":"Reviewer scratch test test/scratch/ForkLaunchGas.t.sol (not kept): vm.createSelectFork(mainnet); vm.prank(factory.deployer()); factory.launch(params) with the values above; gasleft() delta = 14,865,927; abi.encodeCall(factory.launch,(p)).length = 24,324 bytes. Expected: total below 16,777,216; actual: about 15,237,387, passes.","severity":"info","snippet":"    constructor(IPoolManager m,address token) {","title":"Actual factory launch fits the 16,777,216 transaction gas cap with about 1.5M gas of headroom; initcode and runtime sizes are within limits"},{"citation":"resolved","description":"Contracts read in full: src/QuorumIssuanceHook.sol (QuorumIssuanceHook, QuorumSwapRouter), QuorumToken.sol, QuorumLaunchToken.sol, QuorumCoreCode.sol, QuorumBoundCore.sol, QuorumMembership.sol, QuorumTreasury.sol, QuorumWork.sol, QuorumOperatingAccount.sol, QuotaPrototype.sol, ImdLaunchProof.sol, ConstitutionPrototype.sol, QuorumCreate.sol, QuorumCodeCatalog.sol, QuorumLocalSystem.sol, QuorumRevenueSink.sol, LocalFixtures.sol, RestrictedPoolPrototype.sol, WorkCyclePrototype.sol; lib/imd-launch-verified/src (LaunchFactory, PoolFees, LaunchFees, LaunchRegistry, MerkleDistributor, HookFlags); all nine test suites, ACCEPTANCE.json, PREREQUISITES.json, launch.json, evidence/*.json and fixtures/policy. Not reviewed line by line: the vendored Uniswap v4-core, solmate and OpenZeppelin libraries (used as compiled dependencies), and the IMD token implementation (0xD34a99Bc0f67aE1bbd63C660e6d0b0dd03E263B7, name Identity.md, 18 decimals, LayerZero-OFT style ERC20; its dispatcher has transfer/approve and no pause, paused, blacklist or mint selectors, and it returned true on transfer/approve in the fork rehearsal). Verification results: (a) sha256(constitution.en.md) = b765babd0713186d7796f8a5fb3eec64cae0be1a1d7229b69e9a570fb279ef6f equals PREREQUISITES.constitution.sha256, equals ConstitutionPrototype(0x48a78afb5397abeab5be23473973c5c62497cf55).constitutionHash() on mainnet, textLength 14292, and the code at its textAddress 0x6B21BB5742E373c75f13d41aDeD4e9e768b1950D is exactly 0x00 || constitution.en.md; receipt 0xace6ae77...4ef84b status 1, from 0x2f29e170...de7c1, contractAddress 0x48a7...cf55. (b) keccak256(compiled QuorumBoundCore creation code, solc 0.8.28 via-IR runs 200 cancun bytecode_hash none) = 0xd2bbf5e7909b60833f9722b4668dada7d1dd31873d981fda645ca8e5ffaf305b, 43,011 bytes, equals PREREQUISITES.coreCode.creationKeccak256, equals QuorumCoreCode(0x5f8c721d44d5815ae9e6d54ff20e717d56ec0d91).creationHash() on mainnet, and the concatenated runtime of parts 0x5C28F530cD3b01D4695655155d50CF9A220AF4e3 and 0xfca3358d9B0855f72181E8B6B11a126f2CB55B8A (minus their 0x00 prefixes) is byte-identical to the compiled creation code; receipt 0x0a83f230...6bd51 status 1, same deployer, contractAddress 0x5f8c...0d91. QuorumToken.sol binds exactly these two addresses and IMD, stake 62,500 QRM, name QUORUM, symbol QRM, supply 1e27 minted to msg.sender. (c) launch.json: constructorArgs [\"$poolManager\",\"$token\"] match constructor(IPoolManager,address) in declaration order; permissions beforeInitialize/beforeAddLiquidity/beforeSwap/afterSwap = 0x28c0 match getHookPermissions() and the constructor's validateHookPermissions; fee 12500 and tickSpacing 60 match the hook's hard-coded _check and policy-34 feeTiers [12500]; pairedCurrency is the policy-34 allowlisted IMD; initialPrice is a decimal sqrtPriceX96 string and the deployer derives the real opening price from the 2,500 IMD opening cap. (d) Vendored lib/imd-launch-verified/src/*.sol equals the Sourcify-verified LaunchFactory sources (solc 0.8.26, no via-IR, runs 200, cancun) apart from line endings; the mainnet factory runtime differs from a matching local build only in the 10 immutable address slots. Test fixtures compile the factory with via-IR (tools/build_external_fixtures.py), so local fixture bytecode is not the mainnet bytecode, but the source is the same and the fork rehearsal used the real contracts. (e) All 63 ACCEPTANCE.json cases pass (forge test, 63 passed, 0 failed, 0 skipped) with the pinned suite sha256 values intact; the test root is the default test directory. (f) No minting after launch, no pause/freeze/blacklist/seize, no DELEGATECALL/CALLCODE/SELFDESTRUCT, no proxy or initializer; the Hook's only mutable state is the v4 pool-initialization guard and the router's transient activeTrader. Core/children are created by the Hook constructor with the actual token, IMD and the Hook as reporter and are immutable. Static review of normal business paths (buy/sell tax, 50/50 split, weekly sett","line":2,"path":"PREREQUISITES.json","reproduction":"Commands used: forge build; forge test (63 passed); forge inspect QuorumBoundCore bytecode | cast keccak; cast call 0x5f8c...0d91 creationHash()/part0()/part1(); cast code of both parts; cast call 0x48a7...cf55 constitutionHash()/textLength()/textAddress(); cast code 0x6B21...950D compared with 0x00||constitution.en.md; cast receipt for both prerequisite transactions; Sourcify v2 contract/1/0x12C6...A96F sources diffed against lib/imd-launch-verified/src. Expected and actual agree for every item listed.","severity":"info","snippet":"  \"status\": \"VERIFIED_DEPLOYED\",","title":"Review coverage and prerequisite verification record: constitution and core creation package match mainnet byte for byte; vendored factory source equals the Sourcify-verified source; all 63 mandatory "}],"hash":"78e412edcc1698eee3da61a73d94025e071fc1167a7a9840472e726d83cfbb43","nodeId":"f744085c-5392-40df-b641-16ef0eebf5b3","outcome":"completed","summary":"The review is complete. The findings file is written and validated, scratch artifacts are removed, and the working tree is clean apart from the ignored build output.\n\n**Outcome.** The code as received is issuance-compatible. No critical or high defect was found. The findings file holds one medium, one low and two info entries.\n\n**What was verified on mainnet against the source**\n- Constitution text at the pinned address is byte-identical to the committed English text, and its SHA-256 matches the prerequisites file. Both prerequisite receipts succeeded from the proposed deployer.\n- The core creation package parts on chain concatenate to exactly the compiled QuorumBoundCore creation code, and the hash matches the pinned value.\n- The vendored launch factory sources equal the Sourcify-verified sources, and the mainnet runtime differs from a matching local build only in immutable slots.\n- A mainnet-fork launch through the real factory, PoolManager and IMD token succeeded, with one buy, one sell and fee collection reconciling in the treasury.\n\n**Findings**\n- **Medium, fee handover.** The Hook can only collect LP fees when the factory records it as the launch's requester. The platform records the payer wallet, as launch 2176 shows, so until the payer calls `setRequester` on the factory the Hook's fee collection reverts and 80% of every claimed LP fee pays the payer. If the deployer records a zero requester, the share is lost permanently. The exact handover is in the finding.\n- **Low, core address prediction.** Anyone can call the catalog's `create`, so the predicted core and child addresses can shift before launch. The launch still succeeds, but acceptance must read them from the deployed Hook.\n- **Info, gas and sizes.** The real launch needs about 15.24M gas total, under the 16,777,216 cap with 9% headroom. All initcode and runtime sizes are within limits. The 90/10 split holds with 608 wei of remainder.\n- **Info, coverage record.** Lists every contract read, what was not reviewed line by line, and the 63 passing mandatory cases.\n\n**Limits.** The vendored Uniswap v4, solmate and OpenZeppelin libraries and the IMD token implementation were used as compiled dependencies, not read line by line. No proof files were attached because no critical or high finding exists, and the repository has no forge-std dependency to compile one against.","treeHash":null,"usage":{"cachedInputTokens":4656282,"inputTokens":802,"model":"claude-fable-5-1","outputTokens":74720,"runtime":"claude","turns":65,"wallClockMs":1189687}}],"verification":[{"checks":[{"durationMs":104752,"exitCode":0,"name":"build","output":"Compiling 76 files with Solc 0.8.28\nSolc 0.8.28 finished in 104.64s\nCompiler run successful with warnings:\nWarning (8760): This declaration has the same name as another declaration.\n  --> test/compatibility/NormalPoolInvariant.t.sol:58:21:\n   |\n58 |     function _limit(bool buy) private view returns (uint160) {\n   |                     ^^^^^^^^\nNote: The other declaration is here:\n  --> test/compatibility/NormalPoolInvariant.t.sol:71:5:\n   |\n71 |     function buy(uint96 seed) external {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\nWarning (8760): This declaration has the same name as another declaration.\n  --> test/compatibility/NormalPoolInvariant.t.sol:62:21:\n   |\n62 |     function _trade(bool buy, uint128 input, uint256 maximum) private {\n   |                     ^^^^^^^^\nNote: The other declaration is here:\n  --> test/compatibility/NormalPoolInvariant.t.sol:71:5:\n   |\n71 |     function buy(uint96 seed) external {\n   |     ^ (Relevant source part starts here and spans across multiple lines).\n\n","passed":true},{"durationMs":49785,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 5 tests for test/positive/OrganizationQuotaPositive.t.sol:OrganizationQuotaPositiveTest\n[PASS] testNormalBuyAndProcurementKeepsOnlyReturnedCredit() (gas: 157905)\n[PASS] testNormalDonationRefundDoesNotCreateCredit() (gas: 118156)\n[PASS] testNormalRewardPayoutRetiresExistingCreditDownToZero() (gas: 140238)\n[PASS] testNormalSaleConsumesCreditOnlyOnce() (gas: 152861)\n[PASS] testNormalUnusedBudgetPreservesCredit() (gas: 132251)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 906.12µs (1.36ms CPU time)\n\nRan 3 tests for test/compatibility/FixedTokenBindingPositive.t.sol:FixedTokenBindingPositiveTest\n[PASS] testNormalAtomicFactorySeedRecordProofAndClaim() (gas: 584479)\nLogs:\n  factory_launch_execution_gas: 14337123\n  hook_initcode_with_arguments_bytes: 20011\n\n[PASS] testNormalBuySellAndFactoryFeeCollection() (gas: 1129731)\n[PASS] testNormalZeroArgumentCandidateBinding() (gas: 39671)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 74.06ms (1.80ms CPU time)\n\nRan 3 tests for test/compatibility/NormalQuotaLifecycle.t.sol:NormalQuotaLifecycleTest\n[PASS] testNormalOriginalQuotaRequiresTwoWeeksAndSaturatesAtEight() (gas: 111986409)\n[PASS] testNormalPurchasedThenOriginalThenPaidRewardConsumption() (gas: 26664149)\n[PASS] testNormalRotationPreservesOriginalWeekHistoryAndOneStake() (gas: 26231426)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 232.63ms (173.33ms CPU time)\n\nRan 6 tests for test/integration/OfficialFactoryIntegration.t.sol:OfficialFactoryIntegrationTest\n[PASS] testCatalogNonceMovementDoesNotChangeAtomicBindings() (gas: 30912330)\n[PASS] testExactPermissionsInitializationAndFactoryOnlyLiquidity() (gas: 22614418)\n[PASS] testOnlyRecordedPayerCanHandOverFeeRight() (gas: 22601025)\n[PASS] testPayerHandoverRoutesFutureFeesAndSplitsEachAssetOnce() (gas: 25205560)\n[PASS] testPolicyOpeningSupplyAndTransactionSizeLimits() (gas: 22653578)\nLogs:\n  factory_transaction_gas_upper_bound: 14711562\n\n[PASS] testZeroRequesterIsIrrecoverableAndCannotBeAccepted() (gas: 23569621)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 292.35ms (185.06ms CPU time)\n\nRan 6 tests for test/compatibility/NormalGovernance.t.sol:NormalGovernanceCompatibilityTest\n[PASS] testNormalAllowanceClaimAfterAgentRotationPaysOriginalOwnerOnce() (gas: 149132743)\n[PASS] testNormalExitCooldownRefundAndRepeatedWithdrawal() (gas: 837026)\n[PASS] testNormalMissedOperationWindowExpiresWithBudgetIntact() (gas: 148256947)\n[PASS] testNormalRequiredTaskReceiptRollsBackAndRetriesWithoutRepricing() (gas: 73038790)\n[PASS] testNormalServiceCostBeyondFixedBudgetThenLowerQuoteRetry() (gas: 73233053)\n[PASS] testNormalSuccessfulFirstCallRollsBackWhenSecondServiceUnavailable() (gas: 73160719)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 850.71ms (614.53ms CPU time)\n\nRan 7 tests for test/compatibility/NormalSettlement.t.sol:NormalSettlementToken1Test\n[PASS] testFuzzNormalActualDeltaTaxAndPurchasedQuota(uint96,uint16) (runs: 1000, μ: 826147, ~: 826137)\n[PASS] testFuzzNormalOddRevenueAndDonationRecognition(uint96,uint96) (runs: 1000, μ: 1230742, ~: 1231072)\n[PASS] testNormalBuyPaymentBoundIncludesTaxAndRetry() (gas: 1021994)\n[PASS] testNormalExpiredOrderCanBeResubmittedWithCurrentDeadline() (gas: 874351)\n[PASS] testNormalInsufficientApprovalRestoresTradeThenRetry() (gas: 1150320)\n[PASS] testNormalMinimumOutputFailureRestoresBuyAndSell() (gas: 1768234)\n[PASS] testNormalSwarmLockThenClaimAndDuplicateReceipt() (gas: 602662)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 1.19s (1.45s CPU time)\n\nRan 3 tests for test/positive/RecusalPositive.t.sol:RecusalPositiveTest\n[PASS] testNormalManyInterestedMembersLeaveThresholdFixedAndProposalExpires() (gas: 1004960931)\n[PASS] testNormalSeparateWorkerAndRecipientRemainInBudgetAndAcceptanceDenominator() (gas: 948998697)\n[PASS] testNormalTenQualifiedSeatsRequireSevenWithDeclaredRecipients() (gas: 780180547)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.34s (3.71s CPU time)\n\nRan 7 tests for test/compatibility/NormalSettlement.t.sol:NormalSettlementToken0Test\n[PASS] testFuzzNormalActualDeltaTaxAndPurchasedQuota(uint96,uint16) (runs: 1000, μ: 825704, ~: 825715)\n[PASS] testFuzzNormalOddRevenueAndDonationRecognition(uint96,uint96) (runs: 1000, μ: 1230687, ~: 1231017)\n[PASS] testNormalBuyPaymentBoundIncludesTaxAndRetry() (gas: 1021185)\n[PASS] testNormalExpiredOrderCanBeResubmittedWithCurrentDeadline() (gas: 873913)\n[PASS] testNormalInsufficientApprovalRestoresTradeThenRetry() (gas: 1149511)\n[PASS] testNormalMinimumOutputFailureRestoresBuyAndSell() (gas: 1767939)\n[PASS] testNormalSwarmLockThenClaimAndDuplicateReceipt() (gas: 602614)\nSuite result: ok. 7 passed; 0 failed; 0 skipped; finished in 1.37s (1.92s CPU time)\n\nRan 5 tests for test/positive/ImdFactoryPositive.t.sol:ImdFactoryPositiveTest\n[PASS] testNormalAtomicFactorySeedRecordProofAndClaim() (gas: 584494)\nLogs:\n  factory_launch_execution_gas: 14381648\n  hook_initcode_with_arguments_bytes: 20011\n\n[PASS] testNormalBuySellAndFactoryFeeCollection() (gas: 1164568)\n[PASS] testNormalLaunchTaxFundsQualifiedMembersAndAcceptedWork() (gas: 520992026)\n[PASS] testNormalPlatformFeesReachTwoAssetTreasury() (gas: 1576422)\n[PASS] testNormalTwoAssetAllowanceWorkRewardAndSale() (gas: 905908241)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.50s (2.16s CPU time)\n\nRan 5 tests for test/positive/NormalIntegrated.t.sol:NormalIntegratedTest\n[PASS] testNormalFixedStakeHasNoSnapshotOrSeatCap() (gas: 3078138)\n[PASS] testNormalJoinAuthorizationAndSeparateStake() (gas: 87290)\n[PASS] testNormalKeyRotationCarriesStakeAndPreservesPastEarnings() (gas: 438263143)\n[PASS] testNormalTwoQualifiedPeriodsAndAllowanceClaim() (gas: 437036802)\n[PASS] testNormalTwoWorkRoundsAndExit() (gas: 1073068425)\nLogs:\n  operating: 870000000000000000000\n  remaining_stake: 4500000000000000000000\n  treasury_accounted: 870000000000000000000\n\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.59s (2.70s CPU time)\n\nRan 4 tests for test/positive/AgendaResponsePositive.t.sol:AgendaResponsePositiveTest\n[PASS] testNormalInFlightResponseSurvivesWorkerProgressMessage() (gas: 850703)\n[PASS] testNormalResponseAtExistingAnchorAgeLimit() (gas: 821834)\n[PASS] testNormalResponseWithNoAgendaYet() (gas: 140378)\n[PASS] testNormalSameBlockMessagesUseFinalConfirmedRevision() (gas: 953874)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 1.72s (2.21ms CPU time)\n\nRan 14 tests for test/positive/GovernancePositive.t.sol:GovernancePositiveTest\n[PASS] testNormalDelayedResolutionDoesNotExtendRepairClock() (gas: 552627076)\n[PASS] testNormalFixedStakeHasNoSnapshotOrSeatCap() (gas: 3078714)\n[PASS] testNormalJoinAuthorizationAndSeparateStake() (gas: 87408)\n[PASS] testNormalKeyRotationCarriesStakeAndPreservesPastEarnings() (gas: 438510108)\n[PASS] testNormalMissedRepairReturnsBudget() (gas: 624533352)\n[PASS] testNormalOneRepairFreshVoteThenPayment() (gas: 747306445)\n[PASS] testNormalOperatingConversionNameAndLaterUpdate() (gas: 671796053)\n[PASS] testNormalSecondUnapprovedDeliveryReturnsBudget() (gas: 695287837)\n[PASS] testNormalSnapshotTimeoutAndRepairClock() (gas: 1051716884)\n[PASS] testNormalSuspendedMemberCanExitAndReceiveOriginalStake() (gas: 745029114)\n[PASS] testNormalSuspensionPreservesOldBallotAndRecoversAfterFourWeeks() (gas: 1459304883)\n[PASS] testNormalTwoQualifiedPeriodsAndAllowanceClaim() (gas: 437283761)\n[PASS] testNormalTwoWorkRoundsAndExit() (gas: 1073646605)\nLogs:\n  operating: 870000000000000000000\n  remaining_stake: 4500000000000000000000\n  treasury_accounted: 870000000000000000000\n\n[PASS] testNormalUnavailableServiceLeavesBudgetAndAllowsRetry() (gas: 552024881)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 1.72s (12.88s CPU time)\n\nRan 12 tests for test/compatibility/GovernancePoolPositive.t.sol:GovernancePoolPositiveTest\n[PASS] testNormalAcceptedWorkRetiresOrganizationQuotaAndPaysReward() (gas: 495988522)\n[PASS] testNormalApprovedTaskExceedsBudgetThenRetriesWithinBudget() (gas: 315583972)\n[PASS] testNormalAtomicFactorySeedRecordProofAndClaim() (gas: 584663)\nLogs:\n  factory_launch_execution_gas: 14381648\n  hook_initcode_with_arguments_bytes: 20011\n\n[PASS] testNormalBuySellAndFactoryFeeCollection() (gas: 1164655)\n[PASS] testNormalLaunchTaxFundsQualifiedMembersAndAcceptedWork() (gas: 520992151)\n[PASS] testNormalManifestPermissionsMatchConstructor() (gas: 8473)\n[PASS] testNormalPlatformFeesReachTwoAssetTreasury() (gas: 1576421)\n[PASS] testNormalProcurementRetiresOnlySpentOrganizationQuota() (gas: 405920513)\n[PASS] testNormalTwoAssetAllowanceWorkRewardAndSale() (gas: 905908465)\n[PASS] testNormalUnavailableServiceRollsBackTradeAndCanRetry() (gas: 316240425)\n[PASS] testNormalVotedBuyThenSellTaxAndRefunds() (gas: 406314168)\n[PASS] testNormalVotedFeeCollectionSplitsIncomeOnlyOnce() (gas: 406276652)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 1.72s (5.20s CPU time)\n\nRan 12 tests for test/positive/RevenueAndScalePositive.t.sol:RevenueAndScalePositiveTest\n[PASS] testNormalAnyoneMayRecognizeOperatingDonationsWithoutProposal() (gas: 394368)\n[PASS] testNormalDirectSupportedDonationsRecognizedExactlyOnce() (gas: 461914)\n[PASS] testNormalFixedStakeHasNoSnapshotOrSeatCap() (gas: 3078138)\n[PASS] testNormalHistoricalRegistrationsDoNotIncreaseEmptyWeekScan() (gas: 1225815714)\nLogs:\n  settlement gas with 1000 historical rotations and no responses: 197514\n\n[PASS] testNormalJoinAuthorizationAndSeparateStake() (gas: 87334)\n[PASS] testNormalKeyRotationCarriesStakeAndPreservesPastEarnings() (gas: 438615512)\n[PASS] testNormalLateDonationRecognitionDoesNotRewriteClosedBudget() (gas: 283838736)\n[PASS] testNormalOperatingDonationsAreIncomeBeforeBudgetAndRefund() (gas: 551594057)\n[PASS] testNormalRegistrationIndexMatchesRotationExpiryAndExit() (gas: 53712963)\n[PASS] testNormalResponderBatchesPreserveAllRegisteredDenominator() (gas: 135665285)\n[PASS] testNormalTwoQualifiedPeriodsAndAllowanceClaim() (gas: 437389237)\n[PASS] testNormalTwoWorkRoundsAndExit() (gas: 1082339402)\nLogs:\n  operating: 870000000000000000000\n  remaining_stake: 4500000000000000000000\n  treasury_accounted: 870000000000000000000\n\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 1.72s (5.79s CPU time)\n\nRan 2 tests for test/compatibility/NormalPoolInvariant.t.sol:NormalPoolInvariantTest\n[PASS] invariantNormalIncomeQuotaAndPrincipalConservation() (runs: 256, calls: 12288, reverts: 0)\n\n╭-------------------+---------------------+-------+---------+----------╮\n| Contract          | Selector            | Calls | Reverts | Discards |\n+======================================================================+\n| NormalPoolHandler | advanceWeek         | 1211  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| NormalPoolHandler | buy                 | 1236  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| NormalPoolHandler | collectFees         | 1168  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| NormalPoolHandler | donate              | 1250  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| NormalPoolHandler | failedBuyThenRetry  | 1269  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| NormalPoolHandler | joinOrRotate        | 1245  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| NormalPoolHandler | recognize           | 1242  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| NormalPoolHandler | requestExit         | 1215  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| NormalPoolHandler | sell                | 1271  | 0       | 0        |\n|-------------------+---------------------+-------+---------+----------|\n| NormalPoolHandler | withdrawMaturedExit | 1181  | 0       | 0        |\n╰-------------------+---------------------+-------+---------+----------╯\n\n[PASS] testNormalHandlerExercisesBuyRotationExitDonationFeesAndSale() (gas: 5017413)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 5.80s (5.71s CPU time)\n\nRan 2 tests for test/compatibility/NormalGovernanceInvariant.t.sol:NormalGovernanceInvariantTest\n[PASS] invariantNormalBudgetsRefundsRewardsAndTerminalStates() (runs: 256, calls: 3072, reverts: 0)\n\n╭-------------------------+-------------------+-------+---------+----------╮\n| Contract                | Selector          | Calls | Reverts | Discards |\n+==========================================================================+\n| NormalGovernanceHandler | advanceWeek       | 550   | 0       | 0        |\n|-------------------------+-------------------+-------+---------+----------|\n| NormalGovernanceHandler | approvedOperation | 505   | 0       | 0        |\n|-------------------------+-------------------+-------+---------+----------|\n| NormalGovernanceHandler | claimAllowance    | 506   | 0       | 0        |\n|-------------------------+-------------------+-------+---------+----------|\n| NormalGovernanceHandler | claimWork         | 516   | 0       | 0        |\n|-------------------------+-------------------+-------+---------+----------|\n| NormalGovernanceHandler | reviewWork        | 496   | 0       | 0        |\n|-------------------------+-------------------+-------+---------+----------|\n| NormalGovernanceHandler | startWork         | 499   | 0       | 0        |\n╰-------------------------+-------------------+-------+---------+----------╯\n\n[PASS] testNormalHandlerExercisesReservesAcceptancePaymentAndRepairExpiry() (gas: 61035695)\nSuite result: ok. 2 passed; 0 failed; 0 skipped; finished in 49.59s (49.73s CPU time)\n\nRan 16 test suites in 49.60s (70.71s CPU time): 96 tests passed, 0 failed, 0 skipped (96 total tests)\n","passed":true},{"durationMs":217,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"AuthenticatedRouterPrototype.swap((address,address,uint24,int24,address),bool,uint128,uint256,uint256,uint160,uint256)\",\"AuthenticatedRouterPrototype.unlockCallback(bytes)\",\"LocalSeats.mint(address,uint256)\",\"LocalSeats.transferFrom(address,address,uint256)\",\"LocalToken.approve(address,uint256)\",\"LocalToken.mint(address,uint256)\",\"LocalToken.transfer(address,uint256)\",\"LocalToken.transferFrom(address,address,uint256)\",\"QuorumCoreCode.create(address,address,uint256,address)\",\"QuorumIssuanceHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"QuorumIssuanceHook.beforeInitialize(address,(address,address,uint24,int24,address),uint160)\",\"QuorumIssuanceHook.closeOperatingQuota(uint256)\",\"QuorumIssuanceHook.collectPlatformFees(uint64)\",\"QuorumIssuanceHook.countQualifiedWeek(uint256,uint256)\",\"QuorumIssuanceHook.flushRevenue()\",\"QuorumIssuanceHook.openOperatingQuota(uint256)\",\"QuorumIssuanceHook.registerOriginal(uint64,uint256,bytes32[])\",\"QuorumIssuanceHook.rewardPaid(address,uint256)\",\"QuorumLaunchToken.approve(address,uint256)\",\"QuorumLaunchToken.transfer(address,uint256)\",\"QuorumLaunchToken.transferFrom(address,address,uint256)\",\"QuorumMembership.accept(address,uint256,bytes32)\",\"QuorumMembership.authorize(address,uint256)\",\"QuorumMembership.report(uint256,string)\",\"QuorumMembership.requestExit(uint256)\",\"QuorumMembership.respond(uint256,uint256,bytes32,uint256,string)\",\"QuorumMembership.revoke()\",\"QuorumMembership.withdraw(uint256)\",\"QuorumOperatingAccount.execute((uint256,uint256,uint256,(address,address,uint256)[],(address,uint256,bytes,bytes32)[]))\",\"QuorumOperatingAccount.receive()\",\"QuorumOperatingAccount.sweepBeforeOperation()\",\"QuorumRevenueSink.flush()\",\"QuorumSwapRouter.swap((address,address,uint24,int24,address),bool,uint128,uint256,uint256,uint160,uint256)\",\"QuorumSwapRouter.unlockCallback(bytes)\",\"QuorumToken.approve(address,uint256)\",\"QuorumToken.transfer(address,uint256)\",\"QuorumToken.transferFrom(address,address,uint256)\",\"QuorumTreasury.claimAllowance(uint256,uint256)\",\"QuorumTreasury.depositAssetRevenue(address,uint256)\",\"QuorumTreasury.depositRevenue(uint256)\",\"QuorumTreasury.executeOperating((uint256,uint256,uint256,(address,address,uint256)[],(address,uint256,bytes,bytes32)[]))\",\"QuorumTreasury.makePayable(address,uint256)\",\"QuorumTreasury.pay(address,address,uint256)\",\"QuorumTreasury.receive()\",\"QuorumTreasury.release(address,uint256)\",\"QuorumTreasury.reserve(address,uint256)\",\"QuorumTreasury.settleWeek(uint256,uint256)\",\"QuorumTreasury.syncAssetRevenue(address)\",\"QuorumTreasury.syncOperatingRevenue()\",\"QuorumWork.accept(uint256)\",\"QuorumWork.appendEntry(uint256)\",\"QuorumWork.claim(uint256)\",\"QuorumWork.defend(uint256,string)\",\"QuorumWork.executeOperation(uint256,(uint256,uint256,uint256,(address,address,uint256)[],(address,uint256,bytes,bytes32)[]))\",\"QuorumWork.executeSuspension(uint256)\",\"QuorumWork.expire(uint256)\",\"QuorumWork.explain(uint256,string)\",\"QuorumWork.fund(uint256)\",\"QuorumWork.prepareBallot(uint256,uint256)\",\"QuorumWork.propose(uint256,uint256,address,uint256,uint256,string)\",\"QuorumWork.proposeAsset(uint256,uint256,address,address,uint256,uint256,string)\",\"QuorumWork.proposeOperation(uint256,(uint256,uint256,uint256,(address,address,uint256)[],(address,uint256,bytes,bytes32)[]),address[],string)\",\"QuorumWork.proposeSuspension(uint256,address,string)\",\"QuorumWork.resolveAcceptance(uint256)\",\"QuorumWork.submit(uint256,string)\",\"QuorumWork.vote(uint256,uint256,bool)\",\"QuotaPrototype.closeOrganizationBudget(address,uint256)\",\"QuotaPrototype.consume(address,uint256)\",\"QuotaPrototype.openOrganizationBudget(address,uint256)\",\"QuotaPrototype.qualify(address,uint256)\",\"QuotaPrototype.recordBuy(address,uint256)\",\"QuotaPrototype.recordEarned(address,uint256)\",\"QuotaPrototype.register(address,bytes32,uint256)\",\"QuotaPrototype.retireOrganizationBought(address,uint256)\",\"RestrictedPoolPrototype.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"RestrictedPoolPrototype.beforeInitialize(address,(address,address,uint24,int24,address),uint160)\",\"WorkCyclePrototype.acceptWork(uint256)\",\"WorkCyclePrototype.claim(uint256)\",\"WorkCyclePrototype.depositRevenue(uint256)\",\"WorkCyclePrototype.expire(uint256)\",\"WorkCyclePrototype.propose(address,address,uint256,uint256,string)\",\"WorkCyclePrototype.reserveBudget(uint256)\",\"WorkCyclePrototype.submit(uint256,string)\",\"WorkCyclePrototype.vote(uint256,bool,bool)\"],\"files\":{\".gitattributes\":1,\".gitignore\":15,\"ACCEPTANCE.json\":159,\"ADAPTATION.md\":136,\"PREREQUISITES.json\":50,\"README.md\":15,\"constitution.en.md\":66,\"constitution.packed.hex\":1,\"constitution.zh.md\":77,\"evidence/acceptance-summary.json\":489,\"evidence/factory-source-verification.json\":68,\"evidence/forge-all.json\":1,\"evidence/forge-all.stderr.txt\":0,\"evidence/independent-static-review.json\":27,\"evidence/local-official-factory/build.txt\":1430,\"evidence/local-official-factory/config.json\":17,\"evidence/local-official-factory/packet.json\":290,\"evidence/local-official-factory/receipts.json\":1030,\"evidence/local-official-factory/summary.json\":409,\"evidence/local-preflight.json\":78,\"evidence/mainnet-prerequisite-verification.json\":24,\"evidence/official-factory-fork/summary.json\":773,\"evidence/official-factory-fork/token0-packet.json\":308,\"evidence/official-factory-fork/token1-packet.json\":308,\"evidence/submission-source-preflight.json\":82,\"fixtures/external-build/README.md\":19,\"fixtures/external-build/build-summary.json\":255,\"fixtures/external-build/out/LaunchFactory.sol/LaunchFactory.json\":1,\"fixtures/external-build/out/LaunchFees.sol/LaunchFees.json\":1,\"fixtures/external-build/out/LaunchRegistry.sol/LaunchRegistry.json\":1,\"fixtures/external-build/out/MerkleDistributor.sol/MerkleDistributor.json\":1,\"fixtures/external-build/out/PoolManager.sol/PoolManager.json\":1,\"fixtures/policy/imd-public-launch-parameters.json\":27,\"fixtures/policy/imd-public-policies.json\":1,\"foundry.toml\":16,\"launch.json\":29,\"requirements-local.txt\":3,\"src/ConstitutionPrototype.sol\":28,\"src/ImdLaunchProof.sol\":36,\"src/LocalFixtures.sol\":24,\"src/QuorumBoundCore.sol\":21,\"src/QuorumCodeCatalog.sol\":21,\"src/QuorumCoreCode.sol\":34,\"src/QuorumCreate.sol\":14,\"src/QuorumIssuanceHook.sol\":211,\"src/QuorumLaunchToken.sol\":18,\"src/QuorumLocalSystem.sol\":29,\"src/QuorumMembership.sol\":208,\"src/QuorumOperatingAccount.sol\":51,\"src/QuorumRevenueSink.sol\":22,\"src/QuorumToken.sol\":10,\"src/QuorumTreasury.sol\":181,\"src/QuorumWork.sol\":338,\"src/QuotaPrototype.sol\":132,\"src/RestrictedPoolPrototype.sol\":143,\"src/WorkCyclePrototype.sol\":201,\"test/compatibility/FixedTokenBindingPositive.t.sol\":150,\"test/compatibility/GovernancePoolPositive.t.sol\":216,\"test/compatibility/NormalGovernance.t.sol\":230,\"test/compatibility/NormalGovernanceInvariant.t.sol\":340,\"test/compatibility/NormalPoolInvariant.t.sol\":318,\"test/compatibility/NormalQuotaLifecycle.t.sol\":122,\"test/compatibility/NormalSettlement.t.sol\":190,\"test/compatibility/NormalWorkflowFixture.sol\":263,\"test/compatibility/README.md\":86,\"test/compatibility/check_compatibility.py\":124,\"test/compatibility/evidence/acceptance.json\":1192,\"test/compatibility/evidence/forge-default.json.gz\":5939,\"test/compatibility/evidence/local-transaction.json\":516,\"test/compatibility/local_transaction.py\":299,\"test/integration/OfficialFactoryIntegration.t.sol\":365,\"test/positive/AgendaResponsePositive.t.sol\":52,\"test/positive/ExternalInterfaces.sol\":70,\"test/positive/GovernancePositive.t.sol\":165,\"test/positive/ImdFactoryPositive.t.sol\":237,\"test/positive/NormalIntegrated.t.sol\":172,\"test/positive/OrganizationQuotaPositive.t.sol\":30,\"test/positive/RecusalPositive.t.sol\":167,\"test/positive/RevenueAndScalePositive.t.sol\":100,\"tools/build_external_fixtures.py\":34,\"tools/constitution_pack.py\":36,\"tools/issuance_lab.py\":249,\"tools/mainnet_fork_positive.py\":162,\"tools/prepare_issuance.py\":175,\"tools/run_acceptance.py\":20,\"tools/seed_parameters.py\":67,\"tools/test_factory_integration.py\":135,\"tools/verify_candidate.py\":49},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"1d9faa06898500a5421e98bdda67bc833940783fd2988f28b7bd971845c0ea3d","verifiedTreeHash":"7ac392932be63218f82e637f980ec6f4a9e5cc54","verifierVersion":"0.1.0+6a374fcd"},{"checks":[{"durationMs":67311,"exitCode":0,"name":"build","output":"Compiling 65 files with Solc 0.8.28\nSolc 0.8.28 finished in 67.18s\nCompiler run successful!\n","passed":true},{"durationMs":1833,"exitCode":0,"name":"test","output":"No files changed, compilation skipped\n\nRan 5 tests for test/positive/OrganizationQuotaPositive.t.sol:OrganizationQuotaPositiveTest\n[PASS] testNormalBuyAndProcurementKeepsOnlyReturnedCredit() (gas: 157905)\n[PASS] testNormalDonationRefundDoesNotCreateCredit() (gas: 118156)\n[PASS] testNormalRewardPayoutRetiresExistingCreditDownToZero() (gas: 140238)\n[PASS] testNormalSaleConsumesCreditOnlyOnce() (gas: 152861)\n[PASS] testNormalUnusedBudgetPreservesCredit() (gas: 132251)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 940.88µs (1.28ms CPU time)\n\nRan 3 tests for test/compatibility/FixedTokenBindingPositive.t.sol:FixedTokenBindingPositiveTest\n[PASS] testNormalAtomicFactorySeedRecordProofAndClaim() (gas: 584479)\nLogs:\n  factory_launch_execution_gas: 14337123\n  hook_initcode_with_arguments_bytes: 20011\n\n[PASS] testNormalBuySellAndFactoryFeeCollection() (gas: 1129731)\n[PASS] testNormalZeroArgumentCandidateBinding() (gas: 39671)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 71.68ms (9.18ms CPU time)\n\nRan 5 tests for test/positive/NormalIntegrated.t.sol:NormalIntegratedTest\n[PASS] testNormalFixedStakeHasNoSnapshotOrSeatCap() (gas: 3078138)\n[PASS] testNormalJoinAuthorizationAndSeparateStake() (gas: 87290)\n[PASS] testNormalKeyRotationCarriesStakeAndPreservesPastEarnings() (gas: 438263143)\n[PASS] testNormalTwoQualifiedPeriodsAndAllowanceClaim() (gas: 437036802)\n[PASS] testNormalTwoWorkRoundsAndExit() (gas: 1073068425)\nLogs:\n  operating: 870000000000000000000\n  remaining_stake: 4500000000000000000000\n  treasury_accounted: 870000000000000000000\n\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.18s (2.28s CPU time)\n\nRan 5 tests for test/positive/ImdFactoryPositive.t.sol:ImdFactoryPositiveTest\n[PASS] testNormalAtomicFactorySeedRecordProofAndClaim() (gas: 584494)\nLogs:\n  factory_launch_execution_gas: 14381648\n  hook_initcode_with_arguments_bytes: 20011\n\n[PASS] testNormalBuySellAndFactoryFeeCollection() (gas: 1164568)\n[PASS] testNormalLaunchTaxFundsQualifiedMembersAndAcceptedWork() (gas: 520992026)\n[PASS] testNormalPlatformFeesReachTwoAssetTreasury() (gas: 1576422)\n[PASS] testNormalTwoAssetAllowanceWorkRewardAndSale() (gas: 905908241)\nSuite result: ok. 5 passed; 0 failed; 0 skipped; finished in 1.44s (1.93s CPU time)\n\nRan 4 tests for test/positive/AgendaResponsePositive.t.sol:AgendaResponsePositiveTest\n[PASS] testNormalInFlightResponseSurvivesWorkerProgressMessage() (gas: 850703)\n[PASS] testNormalResponseAtExistingAnchorAgeLimit() (gas: 821834)\n[PASS] testNormalResponseWithNoAgendaYet() (gas: 140378)\n[PASS] testNormalSameBlockMessagesUseFinalConfirmedRevision() (gas: 953874)\nSuite result: ok. 4 passed; 0 failed; 0 skipped; finished in 1.48s (2.00ms CPU time)\n\nRan 12 tests for test/positive/RevenueAndScalePositive.t.sol:RevenueAndScalePositiveTest\n[PASS] testNormalAnyoneMayRecognizeOperatingDonationsWithoutProposal() (gas: 394368)\n[PASS] testNormalDirectSupportedDonationsRecognizedExactlyOnce() (gas: 461914)\n[PASS] testNormalFixedStakeHasNoSnapshotOrSeatCap() (gas: 3078138)\n[PASS] testNormalHistoricalRegistrationsDoNotIncreaseEmptyWeekScan() (gas: 1225815714)\nLogs:\n  settlement gas with 1000 historical rotations and no responses: 197514\n\n[PASS] testNormalJoinAuthorizationAndSeparateStake() (gas: 87334)\n[PASS] testNormalKeyRotationCarriesStakeAndPreservesPastEarnings() (gas: 438615512)\n[PASS] testNormalLateDonationRecognitionDoesNotRewriteClosedBudget() (gas: 283838736)\n[PASS] testNormalOperatingDonationsAreIncomeBeforeBudgetAndRefund() (gas: 551594057)\n[PASS] testNormalRegistrationIndexMatchesRotationExpiryAndExit() (gas: 53712963)\n[PASS] testNormalResponderBatchesPreserveAllRegisteredDenominator() (gas: 135665285)\n[PASS] testNormalTwoQualifiedPeriodsAndAllowanceClaim() (gas: 437389237)\n[PASS] testNormalTwoWorkRoundsAndExit() (gas: 1082339402)\nLogs:\n  operating: 870000000000000000000\n  remaining_stake: 4500000000000000000000\n  treasury_accounted: 870000000000000000000\n\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 1.48s (5.76s CPU time)\n\nRan 6 tests for test/integration/OfficialFactoryIntegration.t.sol:OfficialFactoryIntegrationTest\n[PASS] testCatalogNonceMovementDoesNotChangeAtomicBindings() (gas: 30912330)\n[PASS] testExactPermissionsInitializationAndFactoryOnlyLiquidity() (gas: 22614418)\n[PASS] testOnlyRecordedPayerCanHandOverFeeRight() (gas: 22601025)\n[PASS] testPayerHandoverRoutesFutureFeesAndSplitsEachAssetOnce() (gas: 25205560)\n[PASS] testPolicyOpeningSupplyAndTransactionSizeLimits() (gas: 22653578)\nLogs:\n  factory_transaction_gas_upper_bound: 14711562\n\n[PASS] testZeroRequesterIsIrrecoverableAndCannotBeAccepted() (gas: 23569621)\nSuite result: ok. 6 passed; 0 failed; 0 skipped; finished in 1.48s (614.91ms CPU time)\n\nRan 12 tests for test/compatibility/GovernancePoolPositive.t.sol:GovernancePoolPositiveTest\n[PASS] testNormalAcceptedWorkRetiresOrganizationQuotaAndPaysReward() (gas: 495988522)\n[PASS] testNormalApprovedTaskExceedsBudgetThenRetriesWithinBudget() (gas: 315583972)\n[PASS] testNormalAtomicFactorySeedRecordProofAndClaim() (gas: 584663)\nLogs:\n  factory_launch_execution_gas: 14381648\n  hook_initcode_with_arguments_bytes: 20011\n\n[PASS] testNormalBuySellAndFactoryFeeCollection() (gas: 1164655)\n[PASS] testNormalLaunchTaxFundsQualifiedMembersAndAcceptedWork() (gas: 520992151)\n[PASS] testNormalManifestPermissionsMatchConstructor() (gas: 8473)\n[PASS] testNormalPlatformFeesReachTwoAssetTreasury() (gas: 1576421)\n[PASS] testNormalProcurementRetiresOnlySpentOrganizationQuota() (gas: 405920513)\n[PASS] testNormalTwoAssetAllowanceWorkRewardAndSale() (gas: 905908465)\n[PASS] testNormalUnavailableServiceRollsBackTradeAndCanRetry() (gas: 316240425)\n[PASS] testNormalVotedBuyThenSellTaxAndRefunds() (gas: 406314168)\n[PASS] testNormalVotedFeeCollectionSplitsIncomeOnlyOnce() (gas: 406276652)\nSuite result: ok. 12 passed; 0 failed; 0 skipped; finished in 1.48s (5.26s CPU time)\n\nRan 3 tests for test/positive/RecusalPositive.t.sol:RecusalPositiveTest\n[PASS] testNormalManyInterestedMembersLeaveThresholdFixedAndProposalExpires() (gas: 1004960931)\n[PASS] testNormalSeparateWorkerAndRecipientRemainInBudgetAndAcceptanceDenominator() (gas: 948998697)\n[PASS] testNormalTenQualifiedSeatsRequireSevenWithDeclaredRecipients() (gas: 780180547)\nSuite result: ok. 3 passed; 0 failed; 0 skipped; finished in 1.56s (3.38s CPU time)\n\nRan 14 tests for test/positive/GovernancePositive.t.sol:GovernancePositiveTest\n[PASS] testNormalDelayedResolutionDoesNotExtendRepairClock() (gas: 552627076)\n[PASS] testNormalFixedStakeHasNoSnapshotOrSeatCap() (gas: 3078714)\n[PASS] testNormalJoinAuthorizationAndSeparateStake() (gas: 87408)\n[PASS] testNormalKeyRotationCarriesStakeAndPreservesPastEarnings() (gas: 438510108)\n[PASS] testNormalMissedRepairReturnsBudget() (gas: 624533352)\n[PASS] testNormalOneRepairFreshVoteThenPayment() (gas: 747306445)\n[PASS] testNormalOperatingConversionNameAndLaterUpdate() (gas: 671796053)\n[PASS] testNormalSecondUnapprovedDeliveryReturnsBudget() (gas: 695287837)\n[PASS] testNormalSnapshotTimeoutAndRepairClock() (gas: 1051716884)\n[PASS] testNormalSuspendedMemberCanExitAndReceiveOriginalStake() (gas: 745029114)\n[PASS] testNormalSuspensionPreservesOldBallotAndRecoversAfterFourWeeks() (gas: 1459304883)\n[PASS] testNormalTwoQualifiedPeriodsAndAllowanceClaim() (gas: 437283761)\n[PASS] testNormalTwoWorkRoundsAndExit() (gas: 1073646605)\nLogs:\n  operating: 870000000000000000000\n  remaining_stake: 4500000000000000000000\n  treasury_accounted: 870000000000000000000\n\n[PASS] testNormalUnavailableServiceLeavesBudgetAndAllowsRetry() (gas: 552024881)\nSuite result: ok. 14 passed; 0 failed; 0 skipped; finished in 1.65s (14.18s CPU time)\n\nRan 10 test suites in 1.66s (11.82s CPU time): 69 tests passed, 0 failed, 0 skipped (69 total tests)\n","passed":true},{"durationMs":146,"exitCode":0,"name":"source-index","output":"{\"v\":1,\"entryPoints\":[\"AuthenticatedRouterPrototype.swap((address,address,uint24,int24,address),bool,uint128,uint256,uint256,uint160,uint256)\",\"AuthenticatedRouterPrototype.unlockCallback(bytes)\",\"LocalSeats.mint(address,uint256)\",\"LocalSeats.transferFrom(address,address,uint256)\",\"LocalToken.approve(address,uint256)\",\"LocalToken.mint(address,uint256)\",\"LocalToken.transfer(address,uint256)\",\"LocalToken.transferFrom(address,address,uint256)\",\"QuorumCoreCode.create(address,address,uint256,address)\",\"QuorumIssuanceHook.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"QuorumIssuanceHook.beforeInitialize(address,(address,address,uint24,int24,address),uint160)\",\"QuorumIssuanceHook.closeOperatingQuota(uint256)\",\"QuorumIssuanceHook.collectPlatformFees(uint64)\",\"QuorumIssuanceHook.countQualifiedWeek(uint256,uint256)\",\"QuorumIssuanceHook.flushRevenue()\",\"QuorumIssuanceHook.openOperatingQuota(uint256)\",\"QuorumIssuanceHook.registerOriginal(uint64,uint256,bytes32[])\",\"QuorumIssuanceHook.rewardPaid(address,uint256)\",\"QuorumLaunchToken.approve(address,uint256)\",\"QuorumLaunchToken.transfer(address,uint256)\",\"QuorumLaunchToken.transferFrom(address,address,uint256)\",\"QuorumMembership.accept(address,uint256,bytes32)\",\"QuorumMembership.authorize(address,uint256)\",\"QuorumMembership.report(uint256,string)\",\"QuorumMembership.requestExit(uint256)\",\"QuorumMembership.respond(uint256,uint256,bytes32,uint256,string)\",\"QuorumMembership.revoke()\",\"QuorumMembership.withdraw(uint256)\",\"QuorumOperatingAccount.execute((uint256,uint256,uint256,(address,address,uint256)[],(address,uint256,bytes,bytes32)[]))\",\"QuorumOperatingAccount.receive()\",\"QuorumOperatingAccount.sweepBeforeOperation()\",\"QuorumRevenueSink.flush()\",\"QuorumSwapRouter.swap((address,address,uint24,int24,address),bool,uint128,uint256,uint256,uint160,uint256)\",\"QuorumSwapRouter.unlockCallback(bytes)\",\"QuorumToken.approve(address,uint256)\",\"QuorumToken.transfer(address,uint256)\",\"QuorumToken.transferFrom(address,address,uint256)\",\"QuorumTreasury.claimAllowance(uint256,uint256)\",\"QuorumTreasury.depositAssetRevenue(address,uint256)\",\"QuorumTreasury.depositRevenue(uint256)\",\"QuorumTreasury.executeOperating((uint256,uint256,uint256,(address,address,uint256)[],(address,uint256,bytes,bytes32)[]))\",\"QuorumTreasury.makePayable(address,uint256)\",\"QuorumTreasury.pay(address,address,uint256)\",\"QuorumTreasury.receive()\",\"QuorumTreasury.release(address,uint256)\",\"QuorumTreasury.reserve(address,uint256)\",\"QuorumTreasury.settleWeek(uint256,uint256)\",\"QuorumTreasury.syncAssetRevenue(address)\",\"QuorumTreasury.syncOperatingRevenue()\",\"QuorumWork.accept(uint256)\",\"QuorumWork.appendEntry(uint256)\",\"QuorumWork.claim(uint256)\",\"QuorumWork.defend(uint256,string)\",\"QuorumWork.executeOperation(uint256,(uint256,uint256,uint256,(address,address,uint256)[],(address,uint256,bytes,bytes32)[]))\",\"QuorumWork.executeSuspension(uint256)\",\"QuorumWork.expire(uint256)\",\"QuorumWork.explain(uint256,string)\",\"QuorumWork.fund(uint256)\",\"QuorumWork.prepareBallot(uint256,uint256)\",\"QuorumWork.propose(uint256,uint256,address,uint256,uint256,string)\",\"QuorumWork.proposeAsset(uint256,uint256,address,address,uint256,uint256,string)\",\"QuorumWork.proposeOperation(uint256,(uint256,uint256,uint256,(address,address,uint256)[],(address,uint256,bytes,bytes32)[]),address[],string)\",\"QuorumWork.proposeSuspension(uint256,address,string)\",\"QuorumWork.resolveAcceptance(uint256)\",\"QuorumWork.submit(uint256,string)\",\"QuorumWork.vote(uint256,uint256,bool)\",\"QuotaPrototype.closeOrganizationBudget(address,uint256)\",\"QuotaPrototype.consume(address,uint256)\",\"QuotaPrototype.openOrganizationBudget(address,uint256)\",\"QuotaPrototype.qualify(address,uint256)\",\"QuotaPrototype.recordBuy(address,uint256)\",\"QuotaPrototype.recordEarned(address,uint256)\",\"QuotaPrototype.register(address,bytes32,uint256)\",\"QuotaPrototype.retireOrganizationBought(address,uint256)\",\"RestrictedPoolPrototype.afterSwap(address,(address,address,uint24,int24,address),(bool,int256,uint160),int256,bytes)\",\"RestrictedPoolPrototype.beforeInitialize(address,(address,address,uint24,int24,address),uint160)\",\"WorkCyclePrototype.acceptWork(uint256)\",\"WorkCyclePrototype.claim(uint256)\",\"WorkCyclePrototype.depositRevenue(uint256)\",\"WorkCyclePrototype.expire(uint256)\",\"WorkCyclePrototype.propose(address,address,uint256,uint256,string)\",\"WorkCyclePrototype.reserveBudget(uint256)\",\"WorkCyclePrototype.submit(uint256,string)\",\"WorkCyclePrototype.vote(uint256,bool,bool)\"],\"files\":{\".gitattributes\":1,\".gitignore\":15,\"ACCEPTANCE.json\":159,\"ADAPTATION.md\":136,\"PREREQUISITES.json\":50,\"README.md\":15,\"constitution.en.md\":66,\"constitution.packed.hex\":1,\"constitution.zh.md\":77,\"evidence/acceptance-summary.json\":489,\"evidence/factory-source-verification.json\":68,\"evidence/forge-all.json\":1,\"evidence/forge-all.stderr.txt\":0,\"evidence/independent-static-review.json\":27,\"evidence/local-official-factory/build.txt\":1430,\"evidence/local-official-factory/config.json\":17,\"evidence/local-official-factory/packet.json\":290,\"evidence/local-official-factory/receipts.json\":1030,\"evidence/local-official-factory/summary.json\":409,\"evidence/local-preflight.json\":78,\"evidence/mainnet-prerequisite-verification.json\":24,\"evidence/official-factory-fork/summary.json\":773,\"evidence/official-factory-fork/token0-packet.json\":308,\"evidence/official-factory-fork/token1-packet.json\":308,\"evidence/submission-source-preflight.json\":82,\"fixtures/external-build/README.md\":19,\"fixtures/external-build/build-summary.json\":255,\"fixtures/external-build/out/LaunchFactory.sol/LaunchFactory.json\":1,\"fixtures/external-build/out/LaunchFees.sol/LaunchFees.json\":1,\"fixtures/external-build/out/LaunchRegistry.sol/LaunchRegistry.json\":1,\"fixtures/external-build/out/MerkleDistributor.sol/MerkleDistributor.json\":1,\"fixtures/external-build/out/PoolManager.sol/PoolManager.json\":1,\"fixtures/policy/imd-public-launch-parameters.json\":27,\"fixtures/policy/imd-public-policies.json\":1,\"foundry.toml\":16,\"launch.json\":29,\"requirements-local.txt\":3,\"src/ConstitutionPrototype.sol\":28,\"src/ImdLaunchProof.sol\":36,\"src/LocalFixtures.sol\":24,\"src/QuorumBoundCore.sol\":21,\"src/QuorumCodeCatalog.sol\":21,\"src/QuorumCoreCode.sol\":34,\"src/QuorumCreate.sol\":14,\"src/QuorumIssuanceHook.sol\":211,\"src/QuorumLaunchToken.sol\":18,\"src/QuorumLocalSystem.sol\":29,\"src/QuorumMembership.sol\":208,\"src/QuorumOperatingAccount.sol\":51,\"src/QuorumRevenueSink.sol\":22,\"src/QuorumToken.sol\":10,\"src/QuorumTreasury.sol\":181,\"src/QuorumWork.sol\":338,\"src/QuotaPrototype.sol\":132,\"src/RestrictedPoolPrototype.sol\":143,\"src/WorkCyclePrototype.sol\":201,\"test/compatibility/FixedTokenBindingPositive.t.sol\":150,\"test/compatibility/GovernancePoolPositive.t.sol\":216,\"test/integration/OfficialFactoryIntegration.t.sol\":365,\"test/positive/AgendaResponsePositive.t.sol\":52,\"test/positive/ExternalInterfaces.sol\":70,\"test/positive/GovernancePositive.t.sol\":165,\"test/positive/ImdFactoryPositive.t.sol\":237,\"test/positive/NormalIntegrated.t.sol\":172,\"test/positive/OrganizationQuotaPositive.t.sol\":30,\"test/positive/RecusalPositive.t.sol\":167,\"test/positive/RevenueAndScalePositive.t.sol\":100,\"tools/build_external_fixtures.py\":34,\"tools/constitution_pack.py\":36,\"tools/issuance_lab.py\":249,\"tools/mainnet_fork_positive.py\":162,\"tools/prepare_issuance.py\":175,\"tools/run_acceptance.py\":20,\"tools/seed_parameters.py\":67,\"tools/test_factory_integration.py\":135,\"tools/verify_candidate.py\":49},\"excluded\":[\"lib/\",\"node_modules/\"],\"truncated\":false}","passed":true}],"detail":"all checks passed","evaluation":"checks","profile":"foundry","status":"accepted","submissionHash":"6b9bbbd2395f952f5ed8af3512034c2e3235cac51267c6dbe961faf474964c79","verifiedTreeHash":"45feaf7f46d0ad31bca61fbec35d23b553738b0a","verifierVersion":"0.1.0+6a374fcd"}]}