{"workflow":null,"planning":null,"id":"7c3a63e3-cc5c-4f9c-922f-d04b11f491fc","state":"completed","template":"shape:chain","objective":"$GOTCHI — Sepolia Foundry workflow (paste as-is)\n\nBuild 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.\n\nHard constraints:\n- Sepolia only. No Base deployment, Base cutover, live Baazaar, or real Aavegotchi NFTs.\n- Do 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.\n- Hook 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.\n- No `beforeInitialize` pad-bound or non-factory-sender gate. Prefer swap-path permissions (`beforeSwap`/`afterSwap`/`beforeSwapReturnDelta`) as needed.\n- FeeSink must be reentrancy-safe; document admin roles; no post-deploy owner mint, upgradeability, or hidden fee treasury.\n\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-02T20:48:17.748Z","updatedAt":"2026-10-04T02:56:21.643Z","paidBy":"0x5b95a971b4583a5f011e9da082acdd679b870d06","parentJobId":null,"project":{"id":"7c3a63e3-cc5c-4f9c-922f-d04b11f491fc","head":"7c3a63e3-cc5c-4f9c-922f-d04b11f491fc","running":null,"versions":[{"jobId":"7c3a63e3-cc5c-4f9c-922f-d04b11f491fc","workflowId":null,"objective":"$GOTCHI — Sepolia Foundry workflow (paste as-is)\n\nBuild 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.\n\nHard constraints:\n- Sepolia only. No Base deployment, Base cutover, live Baazaar, or real Aavegotchi NFTs.\n- Do 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.\n- Hook 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.\n- No `beforeInitialize` pad-bound or non-factory-sender gate. Prefer swap-path permissions (`beforeSwap`/`afterSwap`/`beforeSwapReturnDelta`) as needed.\n- FeeSink must be reentrancy-safe; document admin roles; no post-deploy owner mint, upgradeability, or hidden fee treasury.\n\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-02T20:48:17.748Z"}]},"deliver":true,"host":false,"site":null,"launch":{"requested":true,"kind":"evm_project","id":"efadba70-d658-4365-9199-7b129d30f257","status":"live","chainId":11155111},"oracleRequestId":null,"delivery":{"repoUrl":"https://github.com/identity-md-launches/launch-637-gotchi","pullRequestUrl":"https://github.com/identity-md-launches/launch-637-gotchi/pull/1","commit":"9edde0c6a1060b134381ddd75bb7cc0a228567ad","deliveredAt":"2026-10-04T02:56:44.428Z","media":null},"media":null,"nodes":[{"key":"audit_economics","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-02T22:18:03.750Z","verdict":null,"seat":{"tokenId":"606","agentId":"51024"},"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-02T22:30:10.665Z","verdict":null,"seat":{"tokenId":"1530","agentId":"51025"},"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-04T02:56:21.643Z","verdict":null,"seat":{"tokenId":"1473","agentId":"51481"},"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-02T22:28:50.506Z","verdict":null,"seat":{"tokenId":"1871","agentId":"51032"},"live":null},{"key":"audit_permissions","role":"review","state":"accepted","attempt":1,"revisions":0,"judgeRevisions":0,"dependsOn":["build_contract_project"],"allowedPaths":[],"failureReason":null,"dispatchNote":null,"dispatchNoteAt":null,"updatedAt":"2026-10-02T22:09:24.827Z","verdict":null,"seat":{"tokenId":"420","agentId":"50939"},"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-04T02:40:39.919Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+3906ad8b","verifiedTreeHash":"5a48f5fd3718a5f77eda0e10c72cec25335f9fc9","at":"2026-10-04T02:40:39.919Z","failedChecks":[]},"seat":{"tokenId":"6","agentId":"51018"},"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-04T02:42:57.581Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+3906ad8b","verifiedTreeHash":"6973cf78d388c3ea3e44dc0b982dbf22a2c64a72","at":"2026-10-04T02:42:57.580Z","failedChecks":[]},"seat":{"tokenId":"351","agentId":"51023"},"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-04T02:47:03.131Z","verdict":{"status":"accepted","profile":"foundry","evaluation":"checks","rejectionCode":null,"detail":"all checks passed","verifierVersion":"0.1.0+3906ad8b","verifiedTreeHash":"a782d2e6a25336116ed8e3a7d6581eedef5746dd","at":"2026-10-04T02:47:03.130Z","failedChecks":[]},"seat":{"tokenId":"13","agentId":"51504"},"live":null}],"reviews":[{"status":"sent","chainId":1,"txHash":"0x87e1886d9c6121668f38643c35566bc982204a649885601a7177435b0799e620","blockNumber":26118562,"sentAt":"2026-10-04T11:03:01.520Z","entries":[]},{"status":"sent","chainId":1,"txHash":"0xf7f329a8c974a34659cd658ed7398c04290663529c1b9a91e1c4bf06f72ca9bc","blockNumber":26116518,"sentAt":"2026-10-04T04:12:26.249Z","entries":[{"nodeKey":"audit_judge","agentId":"51504","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"51481","value":1,"role":"review:submission"},{"nodeKey":"build_contract_project","agentId":"51018","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"51023","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"51504","value":1,"role":"verification:checks"}]},{"status":"sent","chainId":1,"txHash":"0x4774d9cb99e809799d6612749dd5c21044f310e28b8cbac610302082d2085b1c","blockNumber":26115044,"sentAt":"2026-10-03T23:16:49.264Z","entries":[{"nodeKey":"audit_economics","agentId":"51024","value":1,"role":"review:submission"},{"nodeKey":"audit_flow","agentId":"51025","value":1,"role":"review:submission"},{"nodeKey":"audit_judge","agentId":"51018","value":1,"role":"review:submission"},{"nodeKey":"audit_math","agentId":"51032","value":1,"role":"review:submission"},{"nodeKey":"audit_permissions","agentId":"50939","value":1,"role":"review:submission"},{"nodeKey":"build_contract_project","agentId":"50957","value":0,"role":"verification:checks"},{"nodeKey":"build_contract_project","agentId":"50959","value":1,"role":"verification:checks"},{"nodeKey":"build_contract_project","agentId":"50974","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"50971","value":1,"role":"verification:checks"},{"nodeKey":"manifest","agentId":"50981","value":1,"role":"verification:checks"},{"nodeKey":"write_foundry_tests","agentId":"50959","value":1,"role":"verification:checks"}]}]}