{"workflow":null,"planning":null,"id":"dc4e3a21-8e12-44c3-9a6d-ae180f5c8c60","state":"completed","template":"shape:chain","objective":"Deploy the Worker Frens collection (wFREN, 2222 on-chain pixel frens) on Ethereum, exactly as it is in the repository: the COLLECTION launch, two contracts from src/FrensPlacement.sol in this order: PlaceFrens (no constructor arguments), then PlaceModules with one argument, $contract:PlaceFrens. PlaceFrens creates the price table and the collection (IMD6900Frens, named Worker Frens); PlaceModules creates its swapper, ETH minter and workers' and WL gate, through the standard CREATE2 deployer 0x4e59b44847b379578588920cA78FbF26c0B4956C with the creation code in src/FrensCode.sol and the salts in src/FrensPlan.sol: the collection lands at 0x6900d042460d6bdbe68CE994F4dE36706797CCd4, the swapper at 0x69002297DD7980af0d24249f6a44E7046B1Cb1fb, the minter at 0x46B50a3061Ea692e075231c13bc653FdD1Bedd29 and the gate at 0xF83807Ec2E27e1771Fb2594139c1F6925Cfd9B8E whoever deploys. Every contract is the team wallet's (0x35dA9C0303507ddf708E87F2568EdDf12c47a059: owner and governor); the launch keeps no role. About 12.3M gas in one transaction (test_EachLaunchFitsOneTransaction). The art is already live (IMD launch 1067: WorkerFrensRenderer 0x0a2e5e0c1d00fe63ab4e391c052a023cc7a16292); the team wallet points the collection at it with script/frens/DeployFrens.s.sol setup(). This is the re-run of IMD job ea109756, which blocked on its judge's mandatory fixes (dc3bd30d: ETH waiting to be bought into the floor left out of the price; b7d35d29: unswept $IMD left out of the sale and treasury prices; plus the spent-nonce approveJob and the open()/resume() lock-out): all four are fixed in this commit, each proven by a test that fails on the old code (README, 'IMD's audit, fixed'), and the salts were re-mined. The requester's decision for this job: if the audit finds a HIGH or CRITICAL defect that needs src/frens/ changed, fix it, add a test, run 'forge build && python3 script/placement/gen.py' (it re-mines the 0x6900 salts) and report the new addresses; for MEDIUM, LOW or INFO findings, record them in ADAPTATION.md and do not change src/frens/, src/FrensCode.sol, src/FrensPlan.sol, the salts or foundry.toml (any changed byte moves the addresses the Ethereum timelock is set to). Mined salts must contain no f2/f4/ff byte (gen.py enforces it: a salt kept as raw data could trip the admission scan). Everything builds offline (lib/ is vendored); FrensPlacementForkTest and the fork tests need MAINNET_RPC_URL; the two validator tests that use transient storage need forge's --isolate with forge 1.4.","blockedReason":null,"createdAt":"2026-10-08T21:16:46.319Z","updatedAt":"2026-10-08T23:37:32.311Z","paidBy":"0xc94400e90bb652afa02740bff50824e14069c133","parentJobId":null,"project":{"id":"dc4e3a21-8e12-44c3-9a6d-ae180f5c8c60","head":"dc4e3a21-8e12-44c3-9a6d-ae180f5c8c60","running":null,"versions":[{"jobId":"dc4e3a21-8e12-44c3-9a6d-ae180f5c8c60","workflowId":null,"objective":"Deploy the Worker Frens collection (wFREN, 2222 on-chain pixel frens) on Ethereum, exactly as it is in the repository: the COLLECTION launch, two contracts from src/FrensPlacement.sol in this order: PlaceFrens (no constructor arguments), then PlaceModules with one argument, $contract:PlaceFrens. PlaceFrens creates the price table and the collection (IMD6900Frens, named Worker Frens); PlaceModules creates its swapper, ETH minter and workers' and WL gate, through the standard CREATE2 deployer 0x4e59b44847b379578588920cA78FbF26c0B4956C with the creation code in src/FrensCode.sol and the salts in src/FrensPlan.sol: the collection lands at 0x6900d042460d6bdbe68CE994F4dE36706797CCd4, the swapper at 0x69002297DD7980af0d24249f6a44E7046B1Cb1fb, the minter at 0x46B50a3061Ea692e075231c13bc653FdD1Bedd29 and the gate at 0xF83807Ec2E27e1771Fb2594139c1F6925Cfd9B8E whoever deploys. Every contract is the team wallet's (0x35dA9C0303507ddf708E87F2568EdDf12c47a059: owner and governor); the launch keeps no role. About 12.3M gas in one transaction (test_EachLaunchFitsOneTransaction). The art is already live (IMD launch 1067: WorkerFrensRenderer 0x0a2e5e0c1d00fe63ab4e391c052a023cc7a16292); the team wallet points the collection at it with script/frens/DeployFrens.s.sol setup(). This is the re-run of IMD job ea109756, which blocked on its judge's mandatory fixes (dc3bd30d: ETH waiting to be bought into the floor left out of the price; b7d35d29: unswept $IMD left out of the sale and treasury prices; plus the spent-nonce approveJob and the open()/resume() lock-out): all four are fixed in this commit, each proven by a test that fails on the old code (README, 'IMD's audit, fixed'), and the salts were re-mined. The requester's decision for this job: if the audit finds a HIGH or CRITICAL defect that needs src/frens/ changed, fix it, add a test, run 'forge build && python3 script/placement/gen.py' (it re-mines the 0x6900 salts) and report the new addresses; for MEDIUM, LOW or INFO findings, record them in ADAPTATION.md and do not change src/frens/, src/FrensCode.sol, src/FrensPlan.sol, the salts or foundry.toml (any changed byte moves the addresses the Ethereum timelock is set to). Mined salts must contain no f2/f4/ff byte (gen.py enforces it: a salt kept as raw data could trip the admission scan). Everything builds offline (lib/ is vendored); FrensPlacementForkTest and the fork tests need MAINNET_RPC_URL; the two validator tests that use transient storage need forge's --isolate with forge 1.4.","baseCommit":"6d3bead28ad9e66c0ed90985d892667b741cd109","state":"completed","createdAt":"2026-10-08T21:16:46.319Z"}]},"deliver":true,"host":false,"site":null,"launch":{"requested":true,"kind":"evm_contracts","id":"28d64402-1dac-4a8d-8b6b-a57a560b2092","status":"live","chainId":1},"oracleRequestId":null,"delivery":{"repoUrl":"https://github.com/identity-md-launches/launch-1095-placefrens-placemodules","pullRequestUrl":"https://github.com/identity-md-launches/launch-1095-placefrens-placemodules/pull/1","commit":"bf09c6a5b8ba9ebe7100e472d7ac2ef78219cc97","deliveredAt":"2026-10-08T23:37:50.603Z","media":null},"media":null,"nodes":[{"key":"adapt_contract_project","role":"implement","state":"accepted","attempt":1,"revisions":1,"judgeRevisions":1,"dependsOn":["audit_imported_code"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T23:01:33.019Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+ad90ce4c","verifiedTreeHash":"206fc78e6c7b16667ff66114ceb55a4dcd444506","at":"2026-10-08T23:01:33.021Z","failedChecks":[]},"seat":{"tokenId":"1507","agentId":"51533"},"live":null},{"key":"audit_economics","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["adapt_contract_project"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T22:22:59.145Z","verdict":null,"seat":{"tokenId":"1295","agentId":"51291"},"live":null},{"key":"audit_flow","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["adapt_contract_project"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T22:28:07.086Z","verdict":null,"seat":{"tokenId":"1725","agentId":"51234"},"live":null},{"key":"audit_imported_code","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":[],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T21:48:47.910Z","verdict":null,"seat":{"tokenId":"1050","agentId":"52164"},"live":null},{"key":"audit_judge","role":"review","state":"accepted","attempt":1,"revisions":1,"judgeRevisions":1,"dependsOn":["adapt_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T23:37:32.311Z","verdict":null,"seat":{"tokenId":"926","agentId":"51445"},"live":null},{"key":"audit_math","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["adapt_contract_project"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T22:25:51.705Z","verdict":null,"seat":{"tokenId":"12","agentId":"50907"},"live":null},{"key":"audit_permissions","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["adapt_contract_project"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T22:25:42.846Z","verdict":null,"seat":{"tokenId":"629","agentId":"52162"},"live":null},{"key":"manifest","role":"integrate","state":"accepted","attempt":2,"revisions":1,"judgeRevisions":1,"dependsOn":["adapt_contract_project"],"allowedPaths":["launch.json"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T23:31:25.306Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+ad90ce4c","verifiedTreeHash":"2d812a91187956144748eea2ddd41dfb123d9763","at":"2026-10-08T23:31:25.309Z","failedChecks":[]},"seat":{"tokenId":"916","agentId":"51728"},"live":null},{"key":"write_foundry_tests","role":"tests","state":"accepted","attempt":1,"revisions":1,"judgeRevisions":1,"dependsOn":["adapt_contract_project"],"allowedPaths":["test","test/**"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-08T23:23:22.458Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+ad90ce4c","verifiedTreeHash":"e2194f587b788eff9c7e2b9e8bc1216740bdc733","at":"2026-10-08T23:23:22.511Z","failedChecks":[]},"seat":{"tokenId":"495","agentId":"51160"},"live":null}],"reviews":[{"status":"queued","chainId":1,"txHash":null,"blockNumber":null,"sentAt":null,"entries":[{"nodeKey":"adapt_contract_project","agentId":"51740","value":1,"role":"verification:checks"},{"nodeKey":"adapt_contract_project","agentId":"51533","value":1,"role":"verification:checks"},{"nodeKey":"audit_economics","agentId":"51291","value":1,"role":"review:submission"},{"nodeKey":"audit_flow","agentId":"51234","value":1,"role":"review:submission"},{"nodeKey":"audit_imported_code","agentId":"52164","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"52481","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"51445","value":1,"role":"review:submission"},{"nodeKey":"audit_math","agentId":"50907","value":1,"role":"review:submission"},{"nodeKey":"audit_permissions","agentId":"52162","value":1,"role":"review:submission"},{"nodeKey":"manifest","agentId":"51536","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"51728","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"51160","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"51727","value":1,"role":"verification:checks"}]}]}