{"workflow":null,"planning":null,"id":"08e07872-3fdd-46af-ae3b-da05c7427571","state":"completed","template":"shape:chain","objective":"Build a standalone Foundry project on Sepolia (chainId 11155111) for an ERC20 $GOTCHI paired with ETH in a simple/forever Uniswap v4-style pool. The hook skims swap fees in ETH into FeeSink. When FeeSink balance >= MIN_BUY_THRESHOLD, it buys the cheapest listed mock Aavegotchi-style NFT through MockBaazaar.buyCheapest. FlipEscrow then resolves each acquisition 50/50: transfer NFT to BURN_ADDRESS or airdrop it to a holder selected by $GOTCHI balance (commit-reveal mock randomness; use Chainlink VRF Sepolia only if keys are available). Emit the events below for a future cliff/flame/parachute UI; events only, no UI art.\n\nDelivery: compile, README, ABIs, and green forge test are mandatory. An optional forge-script Sepolia deploy may deploy token, hook, FeeSink, MockBaazaar, FlipEscrow, and picker. Contracts only. No website, no IPFS, no pad.\n\nHard constraints:\n\nSepolia only. No Base deployment, Base cutover, live Baazaar, or real Aavegotchi NFTs.\nDo NOT use Community Coins 80/10/10 or 10/80/10, a bonding-pad/launchpad template, mandatory 4 ETH graduation, or a virtual bonding curve. Initial liquidity and mcap/supply are configurable constants.\nHook constructor must take only the literal PoolManager address 0xE03A1074c86CFeDd5C142C4F04F1a1536e203543. Do not put token, sink, or sibling placeholders in constructorArgs; wire siblings after deployment or document source immutables.\nNo beforeInitialize pad-bound or non-factory-sender gate. Prefer swap-path permissions (beforeSwap/afterSwap/beforeSwapReturnDelta) as needed.\nFeeSink must be reentrancy-safe; document admin roles; no post-deploy owner mint, upgradeability, or hidden fee treasury.\nModules: GotchiToken (ERC20); GotchiFeeHook/FeeCollector; FeeSink; MockBaazaar (mock ERC721 list + ETH-priced buyCheapest); FlipEscrow; HolderWeightedPicker (exclude zero balances and burn/dead address; document snapshot/live weighting).\n\nFlow: Hook → FeeSink (ETH) → MockBaazaar.buyCheapest → FlipEscrow → commit-reveal/VRF → burn or holder-weighted airdrop.\n\nKey params: FEE_BPS=30; MIN_BUY_THRESHOLD=0.01 ether; FLIP_BURN_BPS=5000; BURN_ADDRESS=0x000000000000000000000000000000000000dEaD; INITIAL_LIQUIDITY_ETH/TOKEN_SUPPLY/mcap=TBD configurable; pair=ETH/$GOTCHI; PoolManager=0xE03A1074c86CFeDd5C142C4F04F1a1536e203543.\n\nEvents (keep indexed fields stable):\nevent FeesCollected(address indexed pool, uint256 amountEth);\nevent BuyTriggered(uint256 indexed listingId, uint256 priceEth, uint256 tokenId);\nevent FlipRequested(uint256 indexed acquisitionId, uint256 tokenId, bytes32 requestId);\nevent FlipResolved(uint256 indexed acquisitionId, uint256 tokenId, bool burned, address indexed recipient);\nevent Burned(uint256 indexed tokenId, address indexed to);\nevent Airdropped(uint256 indexed tokenId, address indexed recipient, uint256 weight);\nevent ListingMocked(uint256 indexed listingId, uint256 tokenId, uint256 price);\n\nForge tests must cover token transfer/weight exclusions; fee calculation and hook-to-sink ETH flow; threshold/no-buy and reentrancy-safe FeeSink; cheapest listing, seller payment, and NFT transfer; forced burn and airdrop paths; deterministic weighted picker; and end-to-end fees → buy → flip with event assertions. No Base work in this job. Later Base/Diamond/Baazaar integration and VRF migration are README TODOs only.\n\nToken name: GOTCHI","blockedReason":null,"createdAt":"2026-10-04T17:01:30.949Z","updatedAt":"2026-10-04T20:54:30.648Z","paidBy":"0x5b95a971b4583a5f011e9da082acdd679b870d06","parentJobId":null,"project":{"id":"08e07872-3fdd-46af-ae3b-da05c7427571","head":"08e07872-3fdd-46af-ae3b-da05c7427571","running":null,"versions":[{"jobId":"08e07872-3fdd-46af-ae3b-da05c7427571","workflowId":null,"objective":"Build a standalone Foundry project on Sepolia (chainId 11155111) for an ERC20 $GOTCHI paired with ETH in a simple/forever Uniswap v4-style pool. The hook skims swap fees in ETH into FeeSink. When FeeSink balance >= MIN_BUY_THRESHOLD, it buys the cheapest listed mock Aavegotchi-style NFT through MockBaazaar.buyCheapest. FlipEscrow then resolves each acquisition 50/50: transfer NFT to BURN_ADDRESS or airdrop it to a holder selected by $GOTCHI balance (commit-reveal mock randomness; use Chainlink VRF Sepolia only if keys are available). Emit the events below for a future cliff/flame/parachute UI; events only, no UI art.\n\nDelivery: compile, README, ABIs, and green forge test are mandatory. An optional forge-script Sepolia deploy may deploy token, hook, FeeSink, MockBaazaar, FlipEscrow, and picker. Contracts only. No website, no IPFS, no pad.\n\nHard constraints:\n\nSepolia only. No Base deployment, Base cutover, live Baazaar, or real Aavegotchi NFTs.\nDo NOT use Community Coins 80/10/10 or 10/80/10, a bonding-pad/launchpad template, mandatory 4 ETH graduation, or a virtual bonding curve. Initial liquidity and mcap/supply are configurable constants.\nHook constructor must take only the literal PoolManager address 0xE03A1074c86CFeDd5C142C4F04F1a1536e203543. Do not put token, sink, or sibling placeholders in constructorArgs; wire siblings after deployment or document source immutables.\nNo beforeInitialize pad-bound or non-factory-sender gate. Prefer swap-path permissions (beforeSwap/afterSwap/beforeSwapReturnDelta) as needed.\nFeeSink must be reentrancy-safe; document admin roles; no post-deploy owner mint, upgradeability, or hidden fee treasury.\nModules: GotchiToken (ERC20); GotchiFeeHook/FeeCollector; FeeSink; MockBaazaar (mock ERC721 list + ETH-priced buyCheapest); FlipEscrow; HolderWeightedPicker (exclude zero balances and burn/dead address; document snapshot/live weighting).\n\nFlow: Hook → FeeSink (ETH) → MockBaazaar.buyCheapest → FlipEscrow → commit-reveal/VRF → burn or holder-weighted airdrop.\n\nKey params: FEE_BPS=30; MIN_BUY_THRESHOLD=0.01 ether; FLIP_BURN_BPS=5000; BURN_ADDRESS=0x000000000000000000000000000000000000dEaD; INITIAL_LIQUIDITY_ETH/TOKEN_SUPPLY/mcap=TBD configurable; pair=ETH/$GOTCHI; PoolManager=0xE03A1074c86CFeDd5C142C4F04F1a1536e203543.\n\nEvents (keep indexed fields stable):\nevent FeesCollected(address indexed pool, uint256 amountEth);\nevent BuyTriggered(uint256 indexed listingId, uint256 priceEth, uint256 tokenId);\nevent FlipRequested(uint256 indexed acquisitionId, uint256 tokenId, bytes32 requestId);\nevent FlipResolved(uint256 indexed acquisitionId, uint256 tokenId, bool burned, address indexed recipient);\nevent Burned(uint256 indexed tokenId, address indexed to);\nevent Airdropped(uint256 indexed tokenId, address indexed recipient, uint256 weight);\nevent ListingMocked(uint256 indexed listingId, uint256 tokenId, uint256 price);\n\nForge tests must cover token transfer/weight exclusions; fee calculation and hook-to-sink ETH flow; threshold/no-buy and reentrancy-safe FeeSink; cheapest listing, seller payment, and NFT transfer; forced burn and airdrop paths; deterministic weighted picker; and end-to-end fees → buy → flip with event assertions. No Base work in this job. Later Base/Diamond/Baazaar integration and VRF migration are README TODOs only.\n\nToken name: GOTCHI","baseCommit":"0243d7da4a4337ae8b16bcdf15bb4ead736fd68f","state":"completed","createdAt":"2026-10-04T17:01:30.949Z"}]},"deliver":true,"host":false,"site":null,"launch":{"requested":true,"kind":"evm_project","id":"e5638691-fadc-41a2-9677-208711df175c","status":"live","chainId":11155111},"oracleRequestId":null,"delivery":{"repoUrl":"https://github.com/identity-md-launches/launch-697-gotchi","pullRequestUrl":"https://github.com/identity-md-launches/launch-697-gotchi/pull/1","commit":"c44eb8c6fce166d9a8034cdf3f9656a43e6d49bc","deliveredAt":"2026-10-04T20:54:36.575Z","media":null},"media":null,"nodes":[{"key":"audit_economics","role":"review","state":"accepted","attempt":2,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-04T19:13:03.856Z","verdict":null,"seat":{"tokenId":"1176","agentId":"51883"},"live":null},{"key":"audit_flow","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-04T18:09:57.199Z","verdict":null,"seat":{"tokenId":"125","agentId":"51154"},"live":null},{"key":"audit_judge","role":"review","state":"accepted","attempt":1,"revisions":2,"judgeRevisions":2,"dependsOn":["build_contract_project","write_foundry_tests","manifest","audit_math","audit_permissions","audit_economics","audit_flow"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-04T20:54:30.648Z","verdict":null,"seat":{"tokenId":"1430","agentId":"52114"},"live":null},{"key":"audit_math","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-04T18:07:02.700Z","verdict":null,"seat":{"tokenId":"880","agentId":"51081"},"live":null},{"key":"audit_permissions","role":"review","state":"accepted","attempt":2,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-04T18:16:13.745Z","verdict":null,"seat":{"tokenId":"354","agentId":"50903"},"live":null},{"key":"build_contract_project","role":"implement","state":"accepted","attempt":1,"revisions":2,"judgeRevisions":2,"dependsOn":[],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-04T20:32:45.885Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+bb1c0c94","verifiedTreeHash":"ffb7cadc7af1e9fa1895a53f4b668acf0e7b5705","at":"2026-10-04T20:32:46.376Z","failedChecks":[]},"seat":{"tokenId":"970","agentId":"51879"},"live":null},{"key":"manifest","role":"integrate","state":"accepted","attempt":1,"revisions":2,"judgeRevisions":2,"dependsOn":["build_contract_project"],"allowedPaths":["launch.json"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-04T20:36:43.586Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+bb1c0c94","verifiedTreeHash":"3f84bd4a308608e1cb70df62691243031f641751","at":"2026-10-04T20:36:43.587Z","failedChecks":[]},"seat":{"tokenId":"626","agentId":"51875"},"live":null},{"key":"write_foundry_tests","role":"tests","state":"accepted","attempt":1,"revisions":2,"judgeRevisions":2,"dependsOn":["build_contract_project"],"allowedPaths":["test","test/**"],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-04T20:52:45.124Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+bb1c0c94","verifiedTreeHash":"8284bd532c020599477ee51cd5e01f56c3e478a3","at":"2026-10-04T20:52:45.125Z","failedChecks":[]},"seat":{"tokenId":"498","agentId":"51874"},"live":null}],"reviews":[{"status":"sent","chainId":1,"txHash":"0x2604e368814358ec14296c046335dc527f657135726cfe30fd3f41768adfe06f","blockNumber":26122561,"sentAt":"2026-10-05T00:24:49.166Z","entries":[]},{"status":"sent","chainId":1,"txHash":"0xf55edf6ef6c60b8ed47522f47661f57c4678ae9446272cd18862ac105f5369cc","blockNumber":26121514,"sentAt":"2026-10-04T20:55:03.899Z","entries":[{"nodeKey":"audit_economics","agentId":"51883","value":1,"role":"review:submission"},{"nodeKey":"audit_flow","agentId":"51154","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"51451","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"51163","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"52114","value":1,"role":"review:submission"},{"nodeKey":"audit_math","agentId":"51081","value":1,"role":"review:submission"},{"nodeKey":"audit_permissions","agentId":"50903","value":1,"role":"review:submission"},{"nodeKey":"build_contract_project","agentId":"50957","value":0,"role":"verification:checks"},{"nodeKey":"build_contract_project","agentId":"51508","value":1,"role":"verification:checks"},{"nodeKey":"build_contract_project","agentId":"50959","value":1,"role":"verification:checks"},{"nodeKey":"build_contract_project","agentId":"51879","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"52082","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"51884","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"51875","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"51494","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"51882","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"51874","value":1,"role":"verification:checks"}]}]}