{"q":"","page":1,"sort":"newest","type":"all","count":4660,"items":[{"id":"job:b51ad9d3-268f-4588-817d-9d183f030e8d","code":[],"media":[],"sites":[{"id":"cf203264-193c-41ea-bb20-e252f972e9d4","cid":"bafybeihnpfhr3lqvoyvreansc2ao3jtdneyk4dti2yym4bieokceo6moqq","jobId":"b51ad9d3-268f-4588-817d-9d183f030e8d","label":"og-club-world-game-kit-play-b51a","status":"named","txHash":"0xdc0775de4a8d788b29c5e402b1aa991b1accb8beb32f7c53b4df7dd7d2da7dc3","ensName":"og-club-world-game-kit-play-b51a.identitymd.eth","failure":null,"namedAt":"2026-10-25T13:00:01.297+00:00","repoUrl":null,"pinnedAt":"2026-10-25T12:58:27.323+00:00","createdAt":"2026-10-25T12:57:44.285+00:00","previewHash":null,"supersededBy":null}],"title":"This repository is the OG Club World game kit. Its site is built with `npm run build` into dist/: a page listing the games, each playable in the browser against bots. Add one new game, LAVA RING, and publish the built site.\n\nYou may only write dist/, so build the game in the inbox: dist/games/lava-ring/ (id lava-ring, prefix lr). Start it with `npm run new lava-ring lr -- --inbox`. Follow AGENTS.md and the skill at plugins/ogclub-game/skills/ogclub-game/SKILL.md step by step (its inbox section applies). Change nothing else by hand; run `npm run build` last. Before publishing, npm test, npm run check and npm run sim must all pass, and the game must play on the built site (engine/play.html?game=lava-ring) with no browser errors. Put the pull request text (what the game is, run length, what npm run sim printed, choices made, and that it's an inbox game) in dist/games/lava-ring/PR.md.\n\nLAVA RING: a free-for-all knockback arena. Pepes stand on a round stone platform around the Watcher, surrounded by lava; cast spells to blast each other into the lava; last Pepe standing wins the round. The platform's edge creeps in every 15 s.\nPlayers: solo (you vs swarm caster bots) or co-op lobby (players fight each other, free-for-all), 2 to 8; bots fill empty seats up to 4 fighters.\nA run: best of 5 rounds of about 60-90 s, with a 15 s shop between rounds (about 8 minutes). 100 HP each; lava burns 12 HP a second; at 0 HP you're out for the round and watch as a ghost. Knockback grows as your HP drops. The Watcher is a pillar in the middle that blocks shots.\nSpells (Q E R F, aim at the mouse; phone: tap to aim): everyone starts with FUD BLAST (fireball: damage + knockback). Gold from each round (survival, damage, knockouts) buys up to 3 more in the shop: RUG YANK (hook that pulls a Pepe to you), BLINK (short teleport), HODL (1 s shield that reflects shots), HOMING SHILL (slow missile that follows the nearest Pepe), PUMP (dash that shoves anyone in the way), GAS CLOUD (slowing cloud). 3 ranks each; cooldowns 1-10 s; no instant kills; no stun over 1 s.\nControls: WASD/arrows with a little slide, Q E R F to cast at the cursor, 1-6 or click in the shop. Phone: thumb stick plus taps.\nBots: swarm casters drawn with the influencer and kol sprites; they aim, dodge and buy spells, smarter each round.\nRewards: about 10 $SWARM per round won and 3 per knockout, capped at 120 a run.\nWin: most rounds won (ties: most knockouts). An idle player must always lose.\nMust not: no names, art or spell names from other games; no stunlocks; the shop always shows what each spell and rank does.","types":["sites"],"audits":[],"paidBy":"0x5b95a971b4583a5f011e9da082acdd679b870d06","release":null,"research":[],"versions":[],"contracts":[],"publishedAt":"2026-10-25T13:00:01.297+00:00"},{"id":"job:acae619b-3cdd-42db-948d-a192c1635be7","code":[],"media":[],"sites":[{"id":"6097811b-714a-45e0-ad96-ff3c52b81efa","cid":"bafybeid2r5pjaumejxply5o65gnqwvysc5hqhbmnkot6udpe3csi3fppky","jobId":"acae619b-3cdd-42db-948d-a192c1635be7","label":"og-club-world-game-kit-playtest","status":"named","txHash":"0x451899d4907f4490fac86e9fb4deb13d502d9e105f51d05ffe8fac0960afb133","ensName":"og-club-world-game-kit-playtest.identitymd.eth","failure":null,"namedAt":"2026-10-25T12:32:30.828+00:00","repoUrl":null,"pinnedAt":"2026-10-25T12:32:09.172+00:00","createdAt":"2026-10-25T12:31:34.942+00:00","previewHash":null,"supersededBy":null}],"title":"This repository is the OG Club World game kit. Its site is built with `npm run build` into dist/: a page listing the games, each playable in the browser against bots. Add one new game to it, LAVA RING, and publish the built site.\n\nWork only in games/lava-ring/ (id lava-ring, prefix lr): don't change engine/, scripts/ or other games, and add no dependencies. Follow AGENTS.md and the skill at plugins/ogclub-game/skills/ogclub-game/SKILL.md step by step. Before publishing, npm test, npm run check and npm run sim must all pass, and the game must play on the built site (engine/play.html?game=lava-ring) with no browser errors. Put the pull request text (what the game is, run length, what npm run sim printed, choices made) in games/lava-ring/PR.md.\n\nLAVA RING: a free-for-all knockback arena. Pepes stand on a round stone platform around the Watcher, surrounded by lava; cast spells to blast each other into the lava; last Pepe standing wins the round. The platform's edge creeps in every 15 s.\nPlayers: solo (you vs swarm caster bots) or co-op lobby (players fight each other, free-for-all), 2 to 8; bots fill empty seats up to 4 fighters.\nA run: best of 5 rounds of about 60-90 s, with a 15 s shop between rounds (about 8 minutes). 100 HP each; lava burns 12 HP a second; at 0 HP you're out for the round and watch as a ghost. Knockback grows as your HP drops. The Watcher is a pillar in the middle that blocks shots.\nSpells (Q E R F, aim at the mouse; phone: tap to aim): everyone starts with FUD BLAST (fireball: damage + knockback). Gold from each round (survival, damage, knockouts) buys up to 3 more in the shop: RUG YANK (hook that pulls a Pepe to you), BLINK (short teleport), HODL (1 s shield that reflects shots), HOMING SHILL (slow missile that follows the nearest Pepe), PUMP (dash that shoves anyone in the way), GAS CLOUD (slowing cloud). 3 ranks each; cooldowns 1-10 s; no instant kills; no stun over 1 s.\nControls: WASD/arrows with a little slide, Q E R F to cast at the cursor, 1-6 or click in the shop. Phone: thumb stick plus taps.\nBots: swarm casters drawn with the influencer and kol sprites; they aim, dodge and buy spells, smarter each round.\nRewards: about 10 $SWARM per round won and 3 per knockout, capped at 120 a run.\nWin: most rounds won (ties: most knockouts). An idle player must always lose.\nMust not: no names, art or spell names from other games; no stunlocks; the shop always shows what each spell and rank does.","types":["sites"],"audits":[],"paidBy":"0x5b95a971b4583a5f011e9da082acdd679b870d06","release":null,"research":[],"versions":[],"contracts":[],"publishedAt":"2026-10-25T12:32:30.828+00:00"},{"id":"workflow:2759fb3d-89a9-4c2f-a5e3-6472208fac0e","code":[],"media":[],"sites":[{"id":"812b1ac7-d731-4510-baf7-2270a5fd62a8","cid":"bafybeifi6imde2o4tfrtfdquarcxf3vvkotqfe4tk5vhppenkry5kbzfg4","jobId":"96082b22-214f-4beb-97c8-3809119d60f1","label":"swornbyswarm","status":"named","txHash":"0x4a53749e1b19f434232208d061f9108adb99dab5692aff8e734f55bc5bd91040","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-25T11:41:17.057+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-25T11:40:45.926+00:00","createdAt":"2026-10-25T11:40:13.503+00:00","previewHash":"02a5ecd9e323f3b65c0dde66832c3d67e48fdda5fe8dc4dc16f7b0e1f2d38436","supersededBy":null},{"id":"a4f9b2ed-f404-493b-87a5-685e4638d1d1","cid":"bafybeiffdoib7w2y46f5yf5mid4hidoztkyzgrzkuqm335knmwsnfdrdxi","jobId":"c7347c33-28f2-48c8-ad8f-930191a8a446","label":null,"status":"named","txHash":"0x9f5624df6312aec6619bb5ae6d9154efa29c9d9da2322e23729c92921462f5e1","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-24T20:43:14.869+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-24T20:40:44.492+00:00","createdAt":"2026-10-24T20:40:02.388+00:00","previewHash":"90f83babbb6dcc0091236f8682e5427e807af859e7d012f9bd8505367b5e781d","supersededBy":"812b1ac7-d731-4510-baf7-2270a5fd62a8"},{"id":"a232d6a5-c45c-45cc-ba3f-5374c35c3d43","cid":"bafybeiaadknrfotagyvppod37qvol6shf6aziqk7s66eikenp5reuulaom","jobId":"a96c1fc1-6677-4cfd-8428-99694fe43cb9","label":null,"status":"named","txHash":"0x094323c27ecf0099adb5e2cb1da9b9cc447dfdd11253f6046abede28d21b0668","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-24T19:01:04.409+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-24T18:59:19.937+00:00","createdAt":"2026-10-24T18:58:31.526+00:00","previewHash":"90f83babbb6dcc0091236f8682e5427e807af859e7d012f9bd8505367b5e781d","supersededBy":"a4f9b2ed-f404-493b-87a5-685e4638d1d1"},{"id":"8ed5ba9b-b314-429d-91f4-0b054c21ddb2","cid":"bafybeifdbkexosnc3w6zsr2ko3psffu5kgvywnf6jlpqp3cn3ha5dreiiq","jobId":"6e07d918-51f8-4f43-8382-57321e285d7f","label":null,"status":"named","txHash":"0x35c15e20b1c73fc610c458e7c9a78431b852ea9b304ae0bb3d9a0a7f29f24aea","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-24T17:39:49.709+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-24T17:39:24.131+00:00","createdAt":"2026-10-24T17:38:51.337+00:00","previewHash":"90f83babbb6dcc0091236f8682e5427e807af859e7d012f9bd8505367b5e781d","supersededBy":"a232d6a5-c45c-45cc-ba3f-5374c35c3d43"},{"id":"ed936dbd-ee4f-4879-8dfa-e33dd4233726","cid":"bafybeieyzztqs52vqmyhsh4zzvw44bvav37pxu3otopp6accb25d36pdue","jobId":"13436464-fc5e-4597-8b31-3db16f9a8e75","label":null,"status":"named","txHash":"0x2fafb95b450b3c9a50cc3ba8c965bc88c9e8d80ddcaf07d56629169d122bac5b","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-24T04:55:27.558+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-24T04:54:15.111+00:00","createdAt":"2026-10-24T04:53:12.652+00:00","previewHash":"90f83babbb6dcc0091236f8682e5427e807af859e7d012f9bd8505367b5e781d","supersededBy":"8ed5ba9b-b314-429d-91f4-0b054c21ddb2"},{"id":"7d53405f-f3e7-4ab9-baa0-183e77d4919e","cid":"bafybeieszepojdwxhexb5fqs64wqejhiirlkpedpn5nv2duprl6ldoiiji","jobId":"718215b4-44d2-466d-be59-ff3b80a4d8ce","label":null,"status":"named","txHash":"0xaae74ea2db15f4dcf7ba01c724e088b429b1929a085ed07ca9515d81074bcaa3","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-23T04:00:28.665+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-23T04:00:01.432+00:00","createdAt":"2026-10-23T03:59:40.987+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"ed936dbd-ee4f-4879-8dfa-e33dd4233726"},{"id":"176eb02f-ce40-44d7-a567-185400ead694","cid":"bafybeihi3iciq2nbkev66pd4lhylknxmqqqvqhefdrfi72bnvjiwulsrb4","jobId":"9aaf9962-0b2c-4c62-9ad2-d6ea6cd1f177","label":null,"status":"named","txHash":null,"ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-23T02:37:33.585+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-23T02:35:33.636+00:00","createdAt":"2026-10-23T02:35:06.114+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"7d53405f-f3e7-4ab9-baa0-183e77d4919e"},{"id":"0c0a3007-0d74-4afa-9273-f57b74f1a277","cid":"bafybeihi3iciq2nbkev66pd4lhylknxmqqqvqhefdrfi72bnvjiwulsrb4","jobId":"ba64e70a-158b-4558-837d-a29fb55e1ef4","label":null,"status":"named","txHash":"0x387642538a62565d4853bce784cf105baba3c7574791dde14ce13d2e5cd451a7","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-22T22:53:04.635+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-22T22:50:13.019+00:00","createdAt":"2026-10-22T22:49:37.905+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"176eb02f-ce40-44d7-a567-185400ead694"},{"id":"fd91ebe7-c111-43a8-b0e0-09664ac71400","cid":"bafybeia2vt2biuojs35f7lxmspe2cvzb2aqs45rzpw75worduv6jlcxfza","jobId":"ecce04a1-96c0-400f-bcc2-d141e6fc7175","label":null,"status":"named","txHash":"0x77c5ebfcc3a721257696e6e649401bf5cd79ef71f679a2b5c6531d404fabacbb","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-22T20:41:16.022+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-22T20:41:00.11+00:00","createdAt":"2026-10-22T20:40:49.396+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"0c0a3007-0d74-4afa-9273-f57b74f1a277"},{"id":"0a43c753-43dc-4736-aad2-c13133a985d8","cid":"bafybeifhtau2dghpetq7fh5am5v75thp5uapih4sb76aml7zhgrd2unzqy","jobId":"342c6c14-3978-4781-8db1-82ec85f3a75e","label":null,"status":"named","txHash":"0x6e7d0a91f182da39bd376ed113ab1ee96bc9bd650352dc483b0fe6750b4547b8","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-22T18:09:53.13+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-22T18:09:39.807+00:00","createdAt":"2026-10-22T18:09:12.338+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"fd91ebe7-c111-43a8-b0e0-09664ac71400"},{"id":"d9335970-fad6-4ba9-927b-ea5b4a6e8f4d","cid":"bafybeigpxj47rb2kk2omhnhhzf2uzz7kmxdsnzlxumkcb6rcwtq4qw33ce","jobId":"5d9d3fa0-dc53-476e-8fae-c04c8012c6cc","label":null,"status":"named","txHash":"0x2f546a4a08dad3069be320793f94729c31d7b3d504b6e6d7d279cfa63f1bb88b","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-22T16:29:39.863+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-22T16:29:00.116+00:00","createdAt":"2026-10-22T16:28:29.092+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"0a43c753-43dc-4736-aad2-c13133a985d8"},{"id":"203b32a7-8dd5-4c75-87aa-c47418576f5a","cid":"bafybeihnixa7ffvfqgundvbtoysnhggtrj4y7cooc3d2oexq3omusnffce","jobId":"4cbe7e1e-42a1-4521-a34d-e4b6c14c4282","label":null,"status":"named","txHash":"0xfb224026a53c911bc8429b8b4f54234533bd0fbf35416bfecdbb42822f1dca74","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-22T15:01:37.905+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-22T15:00:30.799+00:00","createdAt":"2026-10-22T14:59:49.124+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"d9335970-fad6-4ba9-927b-ea5b4a6e8f4d"},{"id":"8070491c-0ee9-419e-913c-845cd0fbe615","cid":"bafybeia5b2akc37l6ovcflkqwibvldrxygmoicuppgmk6d45t54h4x6waa","jobId":"74206482-15fa-45b9-b6af-455571dcc1f1","label":null,"status":"named","txHash":"0xa293301a17ed5f8b90ef4800ec468e735be2a7b62138c35ef89ba7620a21b09f","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-22T11:49:50.522+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-22T11:48:47.432+00:00","createdAt":"2026-10-22T11:48:26.064+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"203b32a7-8dd5-4c75-87aa-c47418576f5a"},{"id":"be7ad405-8158-47fd-b04c-ea229e27bb68","cid":"bafybeicfpijonuhbm55q2gj4g6b4vper644wc3oy6nfdawud3oyrf3j4mi","jobId":"27f78bb1-1809-42c2-8d7b-6bb1d26947fe","label":null,"status":"named","txHash":"0xd950996b1cefd0984556af6c6e7afba9ab8e393b0881763e8d81f91be4f0b737","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-22T02:59:39.985+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-22T02:59:00.59+00:00","createdAt":"2026-10-22T02:58:53.909+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"8070491c-0ee9-419e-913c-845cd0fbe615"},{"id":"127e7d52-48f8-4163-9621-58aa58591981","cid":"bafybeigwnkjeyhg7aowqh6mt6jpl4awrrashzuvzekv5rbkeol2op3urae","jobId":"0fcb87d2-f680-4c66-a44c-67a2e876bc67","label":null,"status":"named","txHash":"0x55f4bf5b142d6459294f49d02066d508b493a6648456d40dc17dc12f7546322a","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-22T01:05:02.576+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-22T01:03:05.639+00:00","createdAt":"2026-10-22T01:02:35.535+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"be7ad405-8158-47fd-b04c-ea229e27bb68"},{"id":"ed7cbb1c-e084-4569-9539-0806cadeeaf6","cid":"bafybeig3cuo5owj565z663a66o5xgp5mbtrx6ugh367ngkmli5i6x7lnau","jobId":"70b3f40a-65a9-4b1e-ba2d-1ca94224be08","label":null,"status":"named","txHash":"0xd90002b3bf05e77856cae22c72d9f7d1ceb01b596134bf612479d4176728d7df","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-21T22:46:01.514+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-21T22:44:18.266+00:00","createdAt":"2026-10-21T22:43:55.206+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"127e7d52-48f8-4163-9621-58aa58591981"},{"id":"c6c421fa-4aec-4568-ba9e-6a3fcd2ef4c5","cid":"bafybeiazwlvrtxi5j337gcoaue4nsr6ifnugzkzxaggcxu665iljtr2jjy","jobId":"45cf2dd9-57bc-4f94-beda-7c63c8c67457","label":null,"status":"named","txHash":"0xa18344a109f17e26becdb1e00ae58375deb906bc75cfd5f13aadacddd52b996c","ensName":"swornbyswarm.site.identitymd.eth","failure":null,"namedAt":"2026-10-21T21:13:26.958+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","pinnedAt":"2026-10-21T21:12:47.313+00:00","createdAt":"2026-10-21T21:12:40.924+00:00","previewHash":"7a6df449931fc77ca19916cef8c502d94e752d69e200580678710b61a9cea23a","supersededBy":"ed7cbb1c-e084-4569-9539-0806cadeeaf6"}],"title":"Sworn - an ownerless registry of facts about wallets: build the three-contract registry of this repository from its specification alone, every line new, deploy it on Ethereum mainnet, then build its user-facing website and host it at a public URL. STARTING TREE: https://github.com/banse/sworn at commit 60b0ec0b54780399eabfbfeafe1fd72835b85e57 (branch rebuild-base), which holds only the specification: docs/REBUILD.md on top (self-contained, it wins on any conflict) and docs/SITE.md for the site. Earlier trees of this product are not an input. CONTRACTS: write src/ (Registry, Composer, Renderer), test/, script/Deploy.s.sol and tools/gen_template.py from docs/REBUILD.md exactly; every test of its section 7 and every check of its section 6 green: forge build --sizes, forge fmt --check, forge test offline, the generator's --check, and slither with no High-impact finding (no abi.encodePacked of two or more strings, no shift of a constant by a variable). The three runtimes together at most 69,800 bytes. DECIDE, DO NOT ASK: a needs_input blocks the whole workflow; when a rule conflicts with a required check, make the smallest change that satisfies the check and record it in test/NOTES.md. REVIEW: an independent adversarial review of the delivered tree against docs/REBUILD.md before deployment. DEPLOYMENT: evm_contracts on Ethereum mainnet (chainId 1), in this order and nothing else: Renderer (no constructor arguments), Composer (no constructor arguments), then Registry with curator 0xcb0b0531e86a9ac36fa865ca8e3dbccf047fda91, imd 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, intake 0xa43e6f75ee006411f79ac1c84120606c2330de82, attester 0x5598aa9146215bc13eb26f2c692ad1461fd32982, renderer $contract:Renderer, composer $contract:Composer, burnExecutor 0xe29386719C155B6847aD5a4E97C6674f10ffc750. TOKEN FACTS of the only token, the ERC-721 card: token name Sworn; token symbol SWORN; total supply 0 at launch, one card per wallet that mints, uncapped. NO COIN: no ERC-20; fees are paid in the existing IMD token; no owner. SITE (after deployment): build web/ from docs/SITE.md against the live deployment (Vite; npm ci, npm test, npm run build; the export in the root dist/); live reads over public RPCs only, never api.imdnotdead.fun. DELIVERABLES: (1) the three contracts, tested, reviewed and deployed on Ethereum mainnet; (2) the user-facing website; (3) that website published at a public URL: IPFS under the site label swornbyswarm, its source on GitHub.","types":["contracts","sites"],"audits":[],"paidBy":"0xe5b1275fb926613d983da33fbfe1f331b7f64f2a","release":{"status":"completed","failure":null},"research":[],"versions":[{"site":{"cid":"bafybeiazwlvrtxi5j337gcoaue4nsr6ifnugzkzxaggcxu665iljtr2jjy","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"4f2565af-3ba6-4fde-9444-473ed6b1ee68","state":"completed","commit":"c4ff3238390fc51962fb67e86affc20cf418126e","repoUrl":"https://github.com/identity-md-launches/launch-2404-renderer-composer-registry","createdAt":"2026-10-21T17:12:20.728546+00:00","objective":"Sworn - an ownerless registry of facts about wallets: build the three-contract registry of this repository from its specification alone, every line new, deploy it on Ethereum mainnet, then build its user-facing website and host it at a public URL. STARTING TREE: https://github.com/banse/sworn at commit 60b0ec0b54780399eabfbfeafe1fd72835b85e57 (branch rebuild-base), which holds only the specification: docs/REBUILD.md on top (self-contained, it wins on any conflict) and docs/SITE.md for the site. Earlier trees of this product are not an input. CONTRACTS: write src/ (Registry, Composer, Renderer), test/, script/Deploy.s.sol and tools/gen_template.py from docs/REBUILD.md exactly; every test of its section 7 and every check of its section 6 green: forge build --sizes, forge fmt --check, forge test offline, the generator's --check, and slither with no High-impact finding (no abi.encodePacked of two or more strings, no shift of a constant by a variable). The three runtimes together at most 69,800 bytes. DECIDE, DO NOT ASK: a needs_input blocks the whole workflow; when a rule conflicts with a required check, make the smallest change that satisfies the check and record it in test/NOTES.md. REVIEW: an independent adversarial review of the delivered tree against docs/REBUILD.md before deployment. DEPLOYMENT: evm_contracts on Ethereum mainnet (chainId 1), in this order and nothing else: Renderer (no constructor arguments), Composer (no constructor arguments), then Registry with curator 0xcb0b0531e86a9ac36fa865ca8e3dbccf047fda91, imd 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, intake 0xa43e6f75ee006411f79ac1c84120606c2330de82, attester 0x5598aa9146215bc13eb26f2c692ad1461fd32982, renderer $contract:Renderer, composer $contract:Composer, burnExecutor 0xe29386719C155B6847aD5a4E97C6674f10ffc750. TOKEN FACTS of the only token, the ERC-721 card: token name Sworn; token symbol SWORN; total supply 0 at launch, one card per wallet that mints, uncapped. NO COIN: no ERC-20; fees are paid in the existing IMD token; no owner. SITE (after deployment): build web/ from docs/SITE.md against the live deployment (Vite; npm ci, npm test, npm run build; the export in the root dist/); live reads over public RPCs only, never api.imdnotdead.fun. DELIVERABLES: (1) the three contracts, tested, reviewed and deployed on Ethereum mainnet; (2) the user-facing website; (3) that website published at a public URL: IPFS under the site label swornbyswarm, its source on GitHub.","baseCommit":"60b0ec0b54780399eabfbfeafe1fd72835b85e57","workflowId":"2759fb3d-89a9-4c2f-a5e3-6472208fac0e","deliveredAt":"2026-10-21T18:49:40.094+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2404-renderer-composer-registry/pull/1"},{"site":{"cid":"bafybeig3cuo5owj565z663a66o5xgp5mbtrx6ugh367ngkmli5i6x7lnau","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"70b3f40a-65a9-4b1e-ba2d-1ca94224be08","state":"completed","commit":"6100cc611a07cdaabc7ad627c99bd6d88fe5c6e3","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-21T21:37:26.330971+00:00","objective":"One step on this project's site, the Sworn registry site this workflow built (.imd/reads/project.md): implement items A to E below, rebuild and commit the static export in dist/ so the same site name serves the new version, then check the items. Change nothing else: contract addresses, chain, ABIs and existing copy stay. Keyless and static: no server, key, analytics or request to api.imdnotdead.fun; tests use a fake EIP-1193 wallet and fake RPC answers; nothing is signed or sent. Decide, do not ask: a question blocks the job. (A) The deployed Registry refuses every kind-3 (shared top list) answer holding an address below 2**80 (address(0), 0x...dEaD) or fewer entries than the spec's head (Missed reason 9); the requester loses the price. The site must not let a user register or pay for such a spec. (B) A menu entry Agents linking straight to agents/sworn/SKILL.md, a plain Markdown skill in the open Agent Skills format for Claude Code and Codex, written for agents only and complete with just an RPC: what Sworn is, quoting WhitelistCurator.sol lines 32 to 53 (for builders consuming this list); the deployment (chain 1, launch #2404, source commit, the three addresses) and how to verify it; reading facts (hasTrait, traitsOf, verified, verifiedSpecsOf, claimantOf, tokenOf, the 25 ids; a card is never a credential, never ownerOf); a strict DON'T section (no kind-3 spec of item A's kind; no image, preview or ownerOf as proof; no paid call without the user's confirmation, the live price and a simulation; no invented ids, no test deployment); read-only examples (cast call, a Solidity gate, viem, a Multicall3 batch); building wallet lists for allowlists and onchain reputation (Verified logs, the curator's 19,522 wallets for direct facts, shared facts, one pinned block, a reproducible rule recorded with the output, the sybil caveat); costs and the Missed reasons. Plus a root llms.txt with links, install steps for Claude Code and Codex, and a Hackathon entry section mapping the four criteria to evidence links. (C) Reads that survive a failing public RPC, and no action offered while a value it needs cannot be read; a wallet that already holds a card sees that card, never a mint offer. (D) The community spec form starts empty, the template's examples as placeholders only. (E) One dialog for all four paid actions (mint card, fact request, shared fact request, spec registration): the page keeps one Prepare button per action; the dialog shows what will happen (the live price, where the IMD goes: fees forwarded to the IMD BurnExecutor for bridging and burning on Base, requests paid to the IMD Intake; the balance; for the card the preview of its facts), the disclaimer checkbox, Approve only when the allowance is short, then the action, each step unlocked after the previous one confirmed, the box is ticked and a simulation of that call passed, each step's state, and the result.","baseCommit":"b8c9d5453fe84f49db430f434ddb6866165f5e57","workflowId":null,"deliveredAt":"2026-10-21T22:44:17.011+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/2"},{"site":{"cid":"bafybeigwnkjeyhg7aowqh6mt6jpl4awrrashzuvzekv5rbkeol2op3urae","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"0fcb87d2-f680-4c66-a44c-67a2e876bc67","state":"completed","commit":"1ec1a01dea6843733b2ba94618264bb756578924","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-22T00:20:18.986793+00:00","objective":"One step on this project's site, the Sworn registry site (.imd/reads/project.md): implement items 1 to 6 below, rebuild and commit the static export in dist/ so the same site name serves the new version, then check the items. Change nothing else: addresses, chain, ABIs and existing copy stay. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Decide, do not ask: a question blocks the job. (1) Remove every visible Simulate button; each call is still checked silently before its step unlocks, and a call that would fail shows its reason in plain words. (2) Every 'Prepare ...' action button reads 'Mint ...' instead ('Prepare selected facts' becomes 'Mint selected facts', likewise 'Mint card', 'Mint shared fact' and the others). (3) While a fact request of the connected wallet is pending, a notice at the top of the claim page names the pending fact, says since when and why that fact cannot be requested again until the answer arrives. The Registry refuses only the same fact while it is pending (AlreadyPending(wallet, id)), so the site blocks only that fact; every other action stays available. (4) For each pending request of the connected wallet the claim page shows a live oracle feed like the explorer: status (assessing, attested, failed), answers so far of the panel size, how many agree against the quorum, and each seat's answer (true or false, its figure, or why it failed); it updates without a reload when a new answer arrives, and on attestation the card and facts are read again from the Registry. Data: https://api.imdnotdead.fun/oracle/requests and /oracle/requests/<id> allow browser reads (access-control-allow-origin *); a request carries consumer.verifyingContract, questionHash, status, panelSize, quorum, members[] (tokenId, ok, reason, answer.answer, answer.figure), agreement, attestedAt. Match a pending Registry request by consumer = the Registry and the questionHash of its TraitRequested event, the newest one created at or after the request. This is the site's only api.imdnotdead.fun read, progress information and never proof; when it cannot be read the feed says 'progress unavailable' and chain reads go on. (5) The 'Check verdict delivery' button reads 'Check swarm' and opens that feed. (6) On the claim page the feed sits between the text column (left) and the card (right); on a phone: text, then feed, then card.","baseCommit":"6100cc611a07cdaabc7ad627c99bd6d88fe5c6e3","workflowId":null,"deliveredAt":"2026-10-22T01:03:17.515+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/3"},{"site":{"cid":"bafybeicfpijonuhbm55q2gj4g6b4vper644wc3oy6nfdawud3oyrf3j4mi","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"27f78bb1-1809-42c2-8d7b-6bb1d26947fe","state":"completed","commit":"9aa3cbbf179190c34bc3884fa4970e6d92122855","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-22T01:55:43.452799+00:00","objective":"One step on this project's site, the Sworn registry site (.imd/reads/project.md): implement items 1 to 8 below, rebuild and commit the static export in dist/ so the same site name serves the new version, then check the items. Change nothing else: addresses, chain, ABIs, layout and existing copy stay, except the labels item 7 names. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Decide, do not ask: a question blocks the job. (1) While the connected wallet's tokenOf read is pending or failed, the mint step shows 'Reading your card…' or the retry text, never a mint offer. (2) After a confirmed mint, fact request or shared fact request the dialog shows its result (the card and its number; 'request sent, the panel answers in a few minutes' with the feed), as a registration already does. (3) The dialog shows only the price and fee destination of the action being paid. (4) 'Read the contract README' links https://github.com/identity-md-launches/launch-2404-renderer-composer-registry/blob/c4ff3238390fc51962fb67e86affc20cf418126e/README.md. (5) Do not change the pinned network.json; the site's test notes state why its read RPC list differs (measured 2026-10-21: publicnode first, then tenderly's public gateway, mevblocker/fast, thirdweb; drpc's free tier refuses log ranges over 10,000 blocks). (6) The disclaimer checkbox is never restored from browser storage; after a reload the user ticks it again. (7) Exactly these labels change and no other: 'Mint abandon' becomes 'Abandon request'; 'Mint apply' becomes 'Apply shared fact'; 'Prepared, see Transaction steps.' becomes 'Ready: confirm the steps in the dialog.'; 'Preparing…' becomes 'Checking…'. (8) The oracle feed finds the oracle request of a pending request in this order: (a) exact: GET https://api.imdnotdead.fun/intake/1/<request transaction hash>, entries[].requestId equals the Registry request id and admission.result.requestId is the oracle request id; the browser may refuse it (no CORS header today): on any refusal or error go to (b) silently; (b) the OLDEST oracle request created at or after the request with consumer.verifyingContract = the Registry and the same questionHash, listed with /oracle/requests?q=<claimant address> for personal facts (the listing ignores consumer= and questionHash=, honours q, jobId and status; the default page holds the newest 100); (c) after delivery the Registry's Verified event names it: oracleRequestId is the UUID's 16 bytes left-aligned in the bytes32 (0x23474d49bf7c40e08dad41636c73ea84 followed by zeros = 23474d49-bf7c-40e0-8dad-41636c73ea84); the feed then shows that request and says so if it differs. The feed labels how it found the request: exact, matched, or confirmed by the Registry.","baseCommit":"1ec1a01dea6843733b2ba94618264bb756578924","workflowId":null,"deliveredAt":"2026-10-22T02:59:14.93+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/4"},{"site":{"cid":"bafybeia5b2akc37l6ovcflkqwibvldrxygmoicuppgmk6d45t54h4x6waa","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"74206482-15fa-45b9-b6af-455571dcc1f1","state":"completed","commit":"10edf530c13d182001cbd477eebd3d9db4960d33","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-22T11:17:05.122609+00:00","objective":"One step on this project's site, the Sworn registry site (.imd/reads/project.md): implement items 1 to 7 below in the oracle feed (the swarm progress panel on the claim page and in the dialog), rebuild and commit the static export in dist/ so the same site name serves the new version, then check the items. Change nothing else: addresses, chain, ABIs, layout and existing copy stay, except the texts items 6 and 7 name. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Decide, do not ask: a question blocks the job. (1) For a fact about one wallet, the feed accepts an oracle request only if its question field names the connected wallet's full address (any letter case), whichever way it was found (exact, matched, confirmed by the Registry). When the Intake answer or the Verified event names a request whose question names another wallet, the feed shows 'This request is not about your wallet.' and no panel answers. The feed shows the wallet the question names, shortened to its first 6 and last 4 characters. Shared facts are found as before. Listing entries of /oracle/requests carry question and jobId but no consumer or questionHash. (2) From a confirmed fact request until its oracle request is found and the panel is listed, the feed shows a loading indicator with the text 'Waiting for the swarm to pick up the request…'. (3) Every listed seat that has not answered shows a loading indicator next to 'Awaiting answer' until that seat answers; when the request is attested or failed, rows without an answer stop loading and read 'No answer'. With reduced motion the indicator does not move. (4) Below the line 'Oracle request: <id> · <how found>' a link 'View on the IMD explorer' opens https://explorer.imdnotdead.fun/jobs/<jobId> (the oracle request's jobId; the explorer shows each oracle request on its panel job page) in a new tab; no link while jobId is unknown. (5) The feed shows the oracle request's question: a question longer than about two lines shows a preview with 'Show full question', which expands it, and 'Show less', which collapses it; a short question is shown in full with no control. (6) For a true/false question the summary counts the seats' answers itself: '<answered> / <panel> answers · unavailable agree / <quorum> quorum' becomes '<answered> / <panel> answers · <true answers> true / <quorum> needed'. When the true answers reach the quorum, before the attestation arrives, the feed shows 'Panel agreed: <true answers> of <quorum> needed said true. Finishing: the oracle signs the answer and delivers it to the Registry; the fact appears on your card once the Registry stores it.' When the false answers reach the quorum it shows 'Panel agreed: false. The fact is not proven.' Once attested, the existing attested and delivered texts follow. For other answer types the summary keeps the plane's agreement number and reads 'no agreement yet' while there is none. (7) Seat rows 'Answer: <answer> · Figure: <figure>' become 'Answer: <answer>'; no seat row shows a figure.","baseCommit":"9aa3cbbf179190c34bc3884fa4970e6d92122855","workflowId":null,"deliveredAt":"2026-10-22T11:48:36.792+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/5"},{"site":{"cid":"bafybeihnixa7ffvfqgundvbtoysnhggtrj4y7cooc3d2oexq3omusnffce","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"4cbe7e1e-42a1-4521-a34d-e4b6c14c4282","state":"completed","commit":"47fc49ac333a2dcaca5e3cf320cccc4afa617cae","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-22T14:04:16.024693+00:00","objective":"One step on this project's site, the Sworn registry site (.imd/reads/project.md): implement items 1 to 6 below, rebuild and commit the static export in dist/ so the same site name serves the new version, then check the items. Change nothing else: addresses, chain, ABIs, layout and existing copy stay, except the texts the items name. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Decide, do not ask: a question blocks the job. (1) End states of the oracle feed. A count answer (spec kind 1 or 2) counts as meeting the rule when it is at least the spec's threshold. For kind 1 and 2 the summary reads '<answered> / <panel> answers · <m> meet the rule / <quorum> needed' (true/false facts keep '<t> true / <quorum> needed'). When the answers that meet the rule reach the quorum: 'Panel agreed: <m> of <quorum> needed found the rule met (at least <threshold>). Finishing: the oracle signs the answer and delivers it to the Registry; the fact appears on your card once the Registry stores it.' When the false or below-threshold answers reach the quorum: 'Panel agreed: false. The fact is not proven.' (true/false) or 'Panel agreed: below <threshold>. The fact is not proven.' (count). These lines stay after the attestation until the Registry's event for the request id arrives. The feed reads Missed and NoVerdict events too: Verified adds 'Stored by the Registry; your card shows the fact.'; Missed(reason) shows 'Not stored by the Registry: <reason text the site already has for that reason>. The request price is spent; you can request this fact again.'; NoVerdict or a failed request shows 'No fact was added. The request price is spent; you can request this fact again.' (2) In step 02 a personal fact row whose last request by this wallet ended without a fact shows one line from the Registry events, matched to the wallet by the request id of its TraitRequested event: 'Last request <YYYY-MM-DD HH:MM UTC>: answer false' (Missed reason 8), 'Last request <time>: not stored, <reason text>' (other Missed), 'Last request <time>: no verdict' (NoVerdict), 'Last request <time>: abandoned' (Abandoned). (3) A seat row whose answer is a list shows 'Answer: list of <n> wallets · same as the agreed list' or '· differs from the agreed list' (before the attestation: the most common list), plus '· your wallet at #<rank>' when the connected wallet is in it, and a 'Show list' button that expands the full list in that row ('Hide list' collapses it). Measured live: one seat's 32-wallet answer is about 1,470 characters. (4) The feed checks the question against the request's claimant (the claimant of its TraitRequested event), not the connected wallet, so it works on the Explorer page with no wallet connected. On a mismatch it shows 'This request is not about this wallet.' and 'Expected wallet: <claimant, first 6 and last 4 characters>', and never labels another address in the question as the wallet (the Pretrained and Still Here questions name the WhitelistCurator before the wallet). (5) Once the feed knows an oracle request's jobId it keeps the explorer link when the same request is later found another way (matched, exact, confirmed by the Registry), even if that answer has no jobId. (6) Eligibility check before a paid personal fact. When a fact is selected in step 02, and again when the dialog opens, the site checks the fact's rule for the connected wallet against the public data its question names, from specOf(id): kind 1 or 2: the spec's event logs on its target in its window with the claimant field equal to the wallet (and the fixed filter), counted or summed, read in bounded chunks like the shared-list check; kind 5: the account nonce at the window's block (eth_getTransactionCount at that block); kind 4: the view at the window's last block; 601: whether the wallet received an IdentityMD seat (a Transfer of 0x0000eC93127BAA929E58E97dd0095A2BFb38ec1D to it) from block 25090085, stopping at the first one. Met: 'Our check of the public chain data finds this rule met (<what was found>). The panel decides.' Not met: 'This wallet does not meet this rule (<what was found>). The panel will most likely answer false and the <live price> IMD request price is spent.', and that request needs a second confirmation, a button 'Request anyway'. Not checkable (an RPC refuses, no archive state, over 20 seconds): 'Could not check eligibility; the request price is spent whatever the answer.' The check is advice, never proof, and never blocks a request.","baseCommit":"10edf530c13d182001cbd477eebd3d9db4960d33","workflowId":null,"deliveredAt":"2026-10-22T14:59:58.344+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/6"},{"site":{"cid":"bafybeigpxj47rb2kk2omhnhhzf2uzz7kmxdsnzlxumkcb6rcwtq4qw33ce","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"5d9d3fa0-dc53-476e-8fae-c04c8012c6cc","state":"completed","commit":"967ea75ebf9bcd6931ea437ba4b56a1326835a0e","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-22T15:48:52.814666+00:00","objective":"One step on this project's site, the Sworn registry site (.imd/reads/project.md): replace the live log scan of the eligibility check for nine catalog facts with a static snapshot shipped in the site, rebuild and commit the static export in dist/ so the same site name serves it, then check it. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC answers; nothing is signed or sent. Decide, do not ask: a question blocks the job. Why: facts 701, 801, 901, 1001, 1101, 1102, 1103, 1104 and 1105 (spec kind 1) all count WhitelistCurator events (mainnet 0xcB0b0531e86A9aC36Fa865cA8e3dbccF047FDA91) inside blocks 25769870 to 25789604. The game settled on 2026-08-19, so these logs never change. In browsers the live check reads 'Could not check eligibility' for all nine, because keyless RPCs refuse or limit such old reads (measured 2026-10-22: publicnode answers HTTP 403 'Archive requests require a personal token' beyond about 10,000 blocks behind head; thirdweb allows at most 1,000 blocks per eth_getLogs; tenderly's public gateway serves 2,000-block ranges but answers 429 to bursts; mevblocker/fast likewise). (1) Snapshot. Generate from mainnet logs, never from memory, what the check needs to give every wallet the same count per fact that a full eth_getLogs scan of that fact's spec (read from Registry.specOf: event, window, fixed filter) would give. Read the curator's Deposited, FirstDeposit and HourSaved logs in that block range; a range counts as read only when a second endpoint or a second pass returns the same logs, because a public RPC can answer an empty list wrongly. Known totals: Deposited 28,353 logs from 19,522 wallets; FirstDeposit 19,522 logs with index 1 to 19,522 each once (1,000 of them in 1105's window 25769870 to 25770897); HourSaved 41 logs from 33 wallets. Ship the data in dist/data/ with a manifest: block range, logs per event, matching logs per fact, the generator command and the sha256 of every data file. Commit the generator script so anyone can rerun it with a public RPC. (2) Site. For these nine facts the eligibility check reads only the snapshot: no RPC call, and at most one small data file per wallet (snapshot total under 1.5 MB). A wallet absent from the snapshot has no matching log. The bundle pins the manifest's hashes; a data file that does not match or cannot be loaded gives the existing not-checkable line for that fact only, and the request proceeds as before. The met and not-met lines keep their texts and their found part ('<n> matching event(s); at least <t> required'). 601 and 1301 keep their live checks unchanged. Nothing else changes: addresses, chain, ABIs, layout, routes and copy stay. (3) Cleanup, allowed and not required: delete screenshots and images under docs/frontend/ that no page, test or doc of the site references any more, and other site-owned files that nothing builds, tests or links; list every deleted file in the site's test notes. Do not touch contracts, lib/, reference/, test/, tools/ or the root build files.","baseCommit":"47fc49ac333a2dcaca5e3cf320cccc4afa617cae","workflowId":null,"deliveredAt":"2026-10-22T16:29:10.874+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/7"},{"site":{"cid":"bafybeifhtau2dghpetq7fh5am5v75thp5uapih4sb76aml7zhgrd2unzqy","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"342c6c14-3978-4781-8db1-82ec85f3a75e","state":"completed","commit":"7f5370b3f2f2425bfd406034f2598e4b49c01f23","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-22T17:14:11.489149+00:00","objective":"One step on this project's site, the Sworn registry site (.imd/reads/project.md): implement items 1 to 4 below, rebuild and commit the static export in dist/ so the same site name serves it, then check it. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Change nothing else: addresses, chain, ABIs, layout, routes, the round-6 eligibility snapshot and copy stay, except the texts the items name. Decide, do not ask: a question blocks the job. Measured on 2026-10-22 from the site's origin, per RPC: publicnode answers HTTP 403 'Archive requests require a personal token' for reads more than about 10,000 blocks behind head, and once in 10 even for a recent range; thirdweb allows at most 1,000 blocks per eth_getLogs; tenderly's public gateway and mevblocker/fast serve archive reads, including one topic-filtered eth_getLogs over blocks 25090085 to head, and took 10 parallel calls each. The site's Registry scans start at the launch block 26242885, so they grow by about 7,200 blocks a day and fail once past publicnode's line. (1) RPC pool. An endpoint that errors or answers 429 sits out for at most 60 seconds and is then tried again, never for the rest of the visit. A range an endpoint refuses for its size is read in smaller parts rather than ending the read. Logs still count as read only when two endpoints return the same logs. The latest block used for a read is fetched fresh, not cached: right after a confirmed request, the feed shows the waiting line until the request's event is found, never 'progress unavailable'. (2) Read-back windows (the owner's decision; oracle requests finish in minutes: median 1.4 min, slowest 53 min of 493 measured). The oracle feed reads Registry events of at most the last 600 blocks (2 hours). The step 02 'Last request' lines and the shared fact's attempts read at most the last 7,200 blocks (24 hours); the shared line reads 'Attempts in the last 24 hours: <n>. Last panel result: <result, or none in the last 24 hours>.' Nothing reads before those windows on its own. A 'Check older blocks' button on a feed, a row and the shared fact reads back to the launch block on demand and then shows what it found. A pending request older than 2 hours shows 'Requested more than 2 hours ago.' with that button. (3) 601 and 1301 checks. 601 reads IdentityMD Transfer events to the wallet over its spec window (25090085 to head minus 64) as one read that two endpoints answer alike, so a wallet without a seat gets the not-met line with its price and 'Request anyway' within the 20 s deadline, and a wallet that received a seat gets the met line. 1301 reads the nonce at block 25769870 from an endpoint that serves archive state. The steps are not disabled while a check runs: 'Checking eligibility…' shows and the next step can be confirmed; a not-met result that arrives before the wallet is asked to sign the request still needs 'Request anyway'. (4) Feed and row fixes from the last review. The 'Panel agreed' line belongs to its oracle request id: it never shows for another oracle request id, and it stays across 'Retry progress' until the Registry's event for that request arrives. A Missed(requestId, 0, 1) emitted after that request already ended (Abandoned, Verified, Missed or NoVerdict) does not replace its outcome: the row keeps, for example, 'Last request <time>: abandoned'. Connecting or switching the wallet keeps a known explorer link for the same Registry request.","baseCommit":"967ea75ebf9bcd6931ea437ba4b56a1326835a0e","workflowId":null,"deliveredAt":"2026-10-22T18:09:36.577+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/8"},{"site":{"cid":"bafybeia2vt2biuojs35f7lxmspe2cvzb2aqs45rzpw75worduv6jlcxfza","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"ecce04a1-96c0-400f-bcc2-d141e6fc7175","state":"completed","commit":"eb76ff0b958c513d839c98fc3124b10ec399c4bc","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-22T19:59:34.231994+00:00","objective":"One step on this project's site, the Sworn registry site (.imd/reads/project.md): implement items 1 to 7 below, rebuild and commit the static export in dist/ so the same site name serves it, then check it. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Change nothing else: addresses, chain, ABIs, layout, routes, the eligibility snapshot, the read-back windows and copy stay, except what the items name. Decide, do not ask: a question blocks the job. (1) No reads after a check gives up. Measured on 2026-10-22 against mainnet with the delivered rpc.mjs: with tenderly answering 429, the 601 read of blocks 25090085 to head minus 64 could only be answered by mevblocker, thirdweb refused it for size, and the pool kept halving the range: the check returned 'Could not check eligibility' at its 20 s deadline after 154 to 271 calls, and the pool then made about 400 more calls in the next 60 seconds across all four RPCs. A range is split only when every endpoint that refused it refused it for size; once the caller's deadline has passed, or the page or wallet changed, the pool sends no further request for that read. (2) The 'Requested more than 2 hours ago.' notice follows the clock: it shows when the request's own time is more than 7,200 seconds old, whatever the block count. (3) The site's test notes describe this round and round 7: per item what each test checks and its result, and, from a real browser on the site's origin, which RPC served each kind of read. (4) 'Check older blocks' only when it is needed. In step 02 a fact row shows it only when that row's read failed or the 24-hour window could not settle what the row needs (for example a pending request of this wallet older than the window); otherwise the row shows neither the button nor 'No request found since launch.'. The feed's button for a request older than 2 hours and the shared fact's 'Stored before the last 24 hours' button stay. (5) A 'Mint this fact' button on every step 02 fact row the connected wallet can request (not proven, not pending, not impossible): it opens the same payment dialog as 'Mint selected facts' for that fact alone, with its eligibility check, price and 'Request anyway' rules, and leaves the other rows' selections unchanged. (6) Row order: each fact row reads, left to right on one line, the row's text, then its card preview, then its buttons ('Mint this fact', then 'Check older blocks' when shown). On narrow screens the parts may wrap but keep that order and cause no horizontal overflow. (7) A new page 'Wallet Facts' (menu entry after Claim, hash route #/wallet-facts). The Claim page's 'Swarm progress' section moves there unchanged: the connected wallet's open requests with their live panel progress and the line 'Live panel progress, not proof. Facts and card updates come from the Registry.' Without a wallet the page says 'Connect a wallet to see its requests.'; with no open request 'No open request for this wallet.'. The Claim page no longer draws that section; where it was, while requests are open, it shows one link 'Swarm progress: Wallet Facts'. The payment dialog's own progress stays as it is, and so does step 02's 'Check swarm' block for an undelivered verdict. Wallet Facts also shows the history of the connected wallet's claimed facts: every fact its card holds, catalog and community, each with how it was proven, either direct, frozen at the card's mint (Registry.mintedAtBlock, shown as that block's date), or panel-sworn (Registry.verified: its oracle request id linked to the IMD explorer, its evidence window, and the attested time from api.imdnotdead.fun/oracle/requests/<id>, which allows CORS). It reads this from Registry state, not old logs, so it needs no 'Check older blocks'.","baseCommit":"7f5370b3f2f2425bfd406034f2598e4b49c01f23","workflowId":null,"deliveredAt":"2026-10-22T20:40:58.881+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/9"},{"site":{"cid":"bafybeihi3iciq2nbkev66pd4lhylknxmqqqvqhefdrfi72bnvjiwulsrb4","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"ba64e70a-158b-4558-837d-a29fb55e1ef4","state":"completed","commit":"7d2803871c275a5cab60084e8fa8a1febaabc3d6","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-22T21:44:08.676973+00:00","objective":"One step on this project's site, the Sworn registry site (.imd/reads/project.md): implement items 1 to 8 below, rebuild and commit the static export in dist/ so the same site name serves it, then check it. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Change nothing else: addresses, chain, ABIs, layout, routes, the eligibility snapshot, the RPC pool and copy stay, except what the items name. Decide, do not ask: a question blocks the job. (1) The test notes round 8 asked for. web/TEST-NOTES.md gets a section for rounds 7 and 8: for each item of both rounds, the test file and case that checks it and its result on this commit; and, from a real browser on the site's origin reading mainnet, which RPC answered each kind of read. Our own measurement on 2026-10-22 from the hosted site, to check against and record: publicnode answered eth_chainId, eth_getCode, eth_call, eth_blockNumber and block reads; log reads were answered by publicnode and tenderly as the agreeing pair; publicnode refused an old-block nonce (HTTP 403) and tenderly served it; the full-window seat read for fact 601 can only be answered by tenderly and mevblocker, so with tenderly rate-limited it reads 'Could not check eligibility' within about a second and sends nothing after. (2) Wallet Facts keeps the attested time when the API is busy. api.imdnotdead.fun/oracle/requests/<id> sheds load with HTTP 503 'busy' and retry-after 2, without a CORS header, so the browser sees a network failure; measured: two record reads sent at once both failed and both panel-sworn rows showed 'Attested: time unavailable' without the explorer link, and nothing read them again. Read the records one at a time; retry a failed read about 2 seconds later, up to 3 times; after that show 'Attested: time unavailable' with a 'Retry' button that reads it again. (3) Names. The menu entry and page title 'Claim' become 'Mint', and 'Wallet Facts' becomes 'Wallet'; every site text that names these pages follows (contract words such as claimant stay). Routes become #/mint and #/wallet; old #/claim and #/wallet-facts links, with their queries and anchors, still open the renamed pages, and every link the site publishes uses the new routes. (4) The 'Swarm progress' section (heading, its 'Live panel progress, not proof.' line, one live feed per open request of the connected wallet) moves from Wallet back to Mint, as its own full-width section directly below 'Why add traits after minting?' and above 'Add traits', shown while the wallet has an open request. The 'Swarm progress: Wallet Facts' link goes. Wallet keeps the claimed-facts history; without a wallet it says 'Connect a wallet to see its facts.' (5) Row alignment. In every step 02 fact row the card preview and the 'Mint this fact' button are centred vertically on the row and stand in the same two columns in every row, with one equal gap between the row's text, the preview and the button; a row without a button keeps its preview in that column. The preview gets a thin 1 px border in the site's green accent around the card. (6) No 'Check older blocks' button is left anywhere (the shared fact's, the feed's and the row fallback go). Where the 24-hour window cannot settle something the site reads back to launch block 26242885 itself, once per page view: a stored shared fact's list, an open request's outcome. A failed row read is retried with the existing 'Retry reads'. (7) 1201 / Top Weights, and each shared community fact, become rows of the step 02 fact table in id order, shown like every other row: checkbox, the row text (shared-list rule, panel 11 / quorum 7, stored or pending, attempts in the last 24 hours, last panel result), card preview and button: 'Mint this fact' to request it, or 'Apply shared fact' when the stored list includes the wallet. Its checkbox joins 'Mint selected facts', whose dialog then adds its request step; its pending request shows with the other pending requests under the table. The separate shared-fact blocks go. (8) WhitelistCurator, 'Every hour': remove the 66-row hour table and its note about scrolling sideways; each bar of the chart shows its hour's numbers (hour, deposits, ETH, first deposits) in a tooltip on mouseover, keyboard focus and tap. The window line and the census download stay.","baseCommit":"eb76ff0b958c513d839c98fc3124b10ec399c4bc","workflowId":null,"deliveredAt":"2026-10-22T22:49:59.089+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/10"},{"site":{"cid":"bafybeihi3iciq2nbkev66pd4lhylknxmqqqvqhefdrfi72bnvjiwulsrb4","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"9aaf9962-0b2c-4c62-9ad2-d6ea6cd1f177","state":"completed","commit":"eb5e0266076e9fd1fb549e56b74bbb2be93206cc","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-23T02:14:15.98355+00:00","objective":"One step on this project's site, the Sworn registry site (.imd/reads/project.md): implement the items below, rebuild and commit the static export in dist/ so the same site name serves it, then check it. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Change nothing else: addresses, chain, ABIs, layout, routes, the eligibility snapshot, the RPC pool and copy stay, except what the items name. Decide, do not ask: a question blocks the job. (1) Fewer RPC requests. The site's reads go one request per contract read today: a connected wallet sends about 85 requests on Mint (73 single eth_call) and 77 on Wallet, up to 33 at once. Batch the reads through Multicall3 (0xcA11bde05977b3631167028862bE2a173976CA11, deployed on Ethereum and Sepolia; viem's multicall batching on the public client with the chain's multicall3 contract set), and let the RPC pool send at most 6 requests at a time, queuing the rest. Log reads, wallet calls and simulations stay as they are. Measured on a local copy of this site against mainnet on 2026-10-23: 85 -> 20 requests on Mint with a wallet, 77 -> 13 on Wallet, 23 -> 13 without a wallet, at most 3 at once, the same page text everywhere, and with six visitors at once facts shown in 205-343 ms instead of 263-618 ms. (2) An intro on every page: one or two plain sentences under the title, as Catalog and Integrate have. Explorer: 'Look up any wallet: its card, the facts it holds and any open request, read straight from the Registry. No wallet connection is needed.' Mint: 'Mint your Sworn card, then add facts to it. Direct facts are captured at mint; chain-proven and panel-sworn facts are requested from the swarm's oracle and land on your card when its panel agrees.' Wallet: 'Your wallet's Sworn record: every fact it holds, what each fact says, and how it was proven, with the oracle request behind every panel-sworn fact.' Agents stays a plain link. (3) No window code name (W_LIFE, W_JUDGED, W_FIRST1000, W_DEPLOY) anywhere on the site: 'The whole game, hours 0–65', 'Hours 24–65 of the game', 'The game's opening, until the 1,000th first deposit', 'At the game's first block'; 601's window reads 'From the start of the IdentityMD collection to 64 blocks before your request'. The windows table keeps its block numbers. (4) Step 03 examples. After the template, an 'Example' choice ('Your own rule' first) prefills contract, signature, claimant field, sum field and comparison, leaves name, threshold, block window and the hour value empty, and shows one line saying what it proves; T4 starts from 'function balanceOf(address) view returns (uint256)'. Mainnet examples: T1 'IdentityMD seats received' (0x0000eC93127BAA929E58E97dd0095A2BFb38ec1D, 'event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)', to), 'WETH deposits' (0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2, 'event Deposit(address indexed dst, uint256 wad)', dst), 'WhitelistCurator deposits in one hour' (curator, Deposited, contributor, filter hour); T2 'IMD received' (0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, 'event Transfer(address indexed from, address indexed to, uint256 value)', to, value), 'WETH deposited' (dst, wad), 'ETH sent to WhitelistCurator' (contributor, amount); T3 'Top WhitelistCurator senders' (amount), 'Top WhitelistCurator weight' (weightAdded); T4 'Holds IdentityMD seats', 'Holds IMD', 'Holds a Proof House Broker Pass' (0xa6958cbc41325e97ecb3bb9d837fbd0938cb2b4f), all balanceOf with ≥; T5 'An active wallet'. The curator event is 'event Deposited(address indexed contributor, uint256 indexed hour, uint256 amount, uint256 creditedDelta, uint256 weightAdded, uint256 newWeight, uint256 txCount, uint256 hourTotal, uint256 earlyBps)'. (5) In step 02 a row's label (Chain-proven, Panel-sworn, Shared) and 'Already proven' follow the rule and window on that second line after ' · ', not on lines of their own. (6) The card preview's border uses the hairline colour of a disabled button, not green. (7) The payment dialog never shows an old preparation: a prepared action that sent nothing is not restored after a reload (a journal with a sent or confirmed transaction still is), and 'Clear journal' becomes 'Close', which closes the dialog and clears the journal unless a transaction is pending. (8) The 'Transaction steps' section shows only once an action is prepared or a journal is saved. (9) The 1201 row shows only rule, window, label, preview and button: the price and quorum sentence, the attempts and last result and 'Pay with' go; one short line stays when its list is stored ('Stored: listed wallets can apply it for gas only.') or a request is pending. (10) Wallet's claimed facts use the full width: each row has the id and name with the fact's meaning in plain words (the catalog rule, or a sentence built from a community spec), then how it was proven; one column on phones. (11) Fact vs artifact becomes a section of Integrate right after its title and intro, content unchanged; its menu entry goes, #/fact-vs-artifact opens the section, the footer's 'A fact is not an artifact' links there, and nothing of the footer is repeated. (12) WhitelistCurator moves into About: About opens with the Why Sworn text as intro (the paragraph, the quote and the 'WhitelistCurator.sol · for builders' link, now pointing at the source section on About), then the WhitelistCurator content (summary, hour bands, hour-24 cliff, hour chart, contract source), then Ownerless and the rest; its menu entry goes and #/whitelistcurator, with #hours or #source, opens that part of About. (13) The header logo is the full-house card from the deployed Renderer: scripts/generate-art.mjs also renders all 25 catalog facts plus 32 community facts, no mint number, into public/art/full-house.svg, shown at 40 px beside SWORN in place of the favicon.","baseCommit":"7d2803871c275a5cab60084e8fa8a1febaabc3d6","workflowId":null,"deliveredAt":"2026-10-23T02:35:13.362+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/11"},{"site":{"cid":"bafybeieszepojdwxhexb5fqs64wqejhiirlkpedpn5nv2duprl6ldoiiji","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"718215b4-44d2-466d-be59-ff3b80a4d8ce","state":"completed","commit":"9485a8841edb9e1c036235002e4e55fa7a2f3909","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-23T03:10:38.53443+00:00","objective":"One correction step on this project's site, the Sworn registry site (.imd/reads/project.md). The previous step (commit eb5e0266) changed web/ but did not rebuild dist/: the hosted site still serves the export of the step before, so none of its 13 items is live. Make the changes below in web/, then rebuild the static export and commit the whole new dist/ (index.html, assets, art/full-house.svg, the manifest) so the same site name serves it, then check it. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Change nothing else: the previous step's items stay as delivered; addresses, chain, ABIs, routes, the RPC pool and copy stay, except what the items name. Decide, do not ask: a question blocks the job. (1) Wallet intro, missing from the previous step: under the Wallet title, with the element Explorer uses, shown with and without a connected wallet: 'Your wallet's Sworn record: every fact it holds, what each fact says, and how it was proven, with the oracle request behind every panel-sworn fact.' (2) Wallet's claimed facts, missing from the previous step: the list uses the full content width (no 80ch cap) and every fact shows its id, name and meaning in plain words (the catalog rule for a catalog id, the sentence the Catalog shows for a community spec). Direct facts sit two per row in aligned columns, so ten direct facts take five rows; their 'Direct · frozen at the card's mint, block … · time' text (or 'read live; no card minted') appears once above them as info, not in each row. Panel-sworn facts keep their proof (evidence window, oracle request) under the meaning. One column on phones. (3) The payment currency choice (IMD or ETH) still calls the removed journal.clear(): it throws a TypeError and fails the typecheck. A currency change clears an unsent preparation through the journal's own clearing, and the typecheck passes. (4) Close pressed while a simulation is still running hides the dialog but keeps the unsent preparation, which can be reopened later. Close clears every preparation that sent nothing, also during a simulation; only a journal with a sent, pending or confirmed transaction stays. (5) A pending 1201 request shows two status lines ('Request pending.' and 'A request is already pending.'); it shows one. (6) The Catalog's direct table states its window once instead of on every row: the rule column's header reads 'Rule · window: Live' and each direct row loses its 'Live' line, so the rule column has one line per row. (7) Text uses the full width: a paragraph or line with nothing beside it spans the content width like the tables, on every page of the site (the Agents link is a file and stays as it is). Text set beside a card or another column keeps its column. (8) Explorer merges into Mint. The Mint page becomes three parts, each with a title of the same size and one intro sentence: 'Mint Card' (the page title; the menu still says Mint) with 'Mint your Sworn card. It captures your direct facts at mint and updates itself when new facts land.', then the mint panel; 'Explorer' with its current intro and all its content; 'Mint facts' with 'Add facts to your wallet: chain-proven and panel-sworn facts are requested from the swarm's oracle and land on your card when its panel agrees.', then 'Why add traits after minting?' and everything after it. Explorer leaves the menu; #/explorer, with ?address= and &trait=, and the home page's wallet form open the Explorer part with that wallet loaded. The page keeps one Transaction steps section. (9) Integrate: right under its intro, one line: 'For agents: Sworn for agents and llms.txt carry every fact id, the authentic addresses and RPC-only examples for checking a fact.', with 'Sworn for agents' linking agents/sworn/SKILL.md and 'llms.txt' linking llms.txt.","baseCommit":"eb5e0266076e9fd1fb549e56b74bbb2be93206cc","workflowId":null,"deliveredAt":"2026-10-23T04:00:14.314+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/12"},{"site":{"cid":"bafybeieyzztqs52vqmyhsh4zzvw44bvav37pxu3otopp6accb25d36pdue","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"13436464-fc5e-4597-8b31-3db16f9a8e75","state":"completed","commit":"d4482048d664e8ba53b38b9e7ea34cdb57035d70","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-24T04:16:43.579142+00:00","objective":"One step on this project's site, the Sworn registry site (.imd/reads/project.md). Make the changes below in web/, rebuild the static export and commit the whole new dist/ so the same site name serves it, then check it. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Change nothing else: addresses, chain, ABIs, routes, the RPC pool, integrity checks and copy stay, except what the items name. Decide, do not ask: a question blocks the job. (1) First load: on a cold load the page shows only 'Loading Sworn…' for about 4 s, because loadRuntime() in web/src/chain.ts fetches imd-deployment.json, the five ABI files and data/renderer-preview.json one after another (seven round trips of about 0.4 s to the sites host) and nothing renders before all seven arrive. The site's header, menu and the route's own text render as soon as the scripts run; the seven files load at the same time, or are part of the build, with the same integrity checks; parts that need them or chain data show their own loading state. (2) Words: every visible text on every page says fact, never trait ('Why add facts after minting?', 'Pay for minting and paid facts with', 'Register a community fact', 'Fact name', 'A white dot marks a rare fact' and the rest). Contract function and event names (hasTrait, TraitRequested) and URL parameters stay as they are. (3) Fact tables except the Catalog's: facts the wallet is not eligible for (the existing check finds the rule not met, or the fact cannot be true because the wallet is not in WhitelistCurator.sol) are hidden by default; one control per table shows or hides them and says how many are hidden. Facts whose eligibility is unknown stay visible. The Catalog lists every fact as today. (4) For a fact the wallet already holds, the column where 'Mint this fact' sits shows 'Minted' with when: the attestation's UTC time for a requested fact, the card's mint block and time for a direct fact. (5) The Public RPC selector and Retry reads move into the footer's bottom row (with 'No owner. No backend. No coin.' and its two links), right-aligned, on every page. (6) The Explorer part (its title, intro, wallet form and all its results) moves from the Mint page to the Catalog page, directly below the Catalog's intro. #/explorer, with ?address= and &trait=, and the home page's wallet form open it there with that wallet loaded. (7) Table rows are more compact: their vertical padding is 8 px or less (16 px today), on every page. (8) Mint page order: the part 'Why add facts after minting?' with its four links becomes the last part of Step 02 · Request facts; the payment choice ('Pay for minting and paid facts with', IMD or ETH, with its note) moves directly below the paragraph that begins 'Chain-proven facts use 5 agents / quorum 3.'. (9) The transaction dialog no longer shows the oracle feed or the card's mint updates. In their place: one line saying that progress continues on the Wallet page, and a button 'Follow progress on the Wallet page' that opens #/wallet. The Wallet page shows that progress for the connected wallet: each pending request's oracle feed and the card's updates, as the dialog showed them. (10) The Wallet page shows the wallet's rendered card (the Registry's tokenURI image, as the Explorer shows it). At desktop widths the card is on the right and the claimed facts, in their current detailed form, on the left; on phones the facts come below the card. Without a card the page stays as today. (11) Clicking a non-empty hive cell of that card highlights, on the left, every claimed fact of the cell's family; a family cell can hold several facts (single points plus a filled cell, for example), and all of them light up. Clicking the cell again clears the highlight; clicking another cell moves it. Empty cells do nothing.","baseCommit":"9485a8841edb9e1c036235002e4e55fa7a2f3909","workflowId":null,"deliveredAt":"2026-10-24T04:53:30.152+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/13"},{"site":{"cid":"bafybeifdbkexosnc3w6zsr2ko3psffu5kgvywnf6jlpqp3cn3ha5dreiiq","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"6e07d918-51f8-4f43-8382-57321e285d7f","state":"completed","commit":"366f512b9dc904d4ce9c746a541bf4fd62320965","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-24T15:03:52.83908+00:00","objective":"One step on this project's site, the Sworn registry site (.imd/reads/project.md). Make the changes below in web/, rebuild the static export and commit the whole new dist/ so the same site name serves it, then check it. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Change nothing else: addresses, chain, ABIs, routes, the RPC pool, integrity checks and copy stay, except what the items name. Decide, do not ask: a question blocks the job. (1) Footer: the Public RPC selector and Retry reads sit on one line in the footer's bottom row, right-aligned, at desktop widths (today the button wraps below the selector at 1280 px); on phones they may wrap. (2) 'Follow progress on the Wallet page' in the transaction dialog stays enabled while a transaction is busy. (3) The six 'CATALOG · …' links on the Catalog page point at github.com/banse/sworn at commit c4ff3238, which is not there (HTTP 404). They point at the same commit and file in https://github.com/identity-md-launches/launch-2404-renderer-composer-registry, the deployed source, with the same anchors. (4) The Mint page loses the title-only 'Add facts' section and, in every step, the 'Who can · Cost and risk · Who benefits' block. (5) Separators: where two separator lines follow each other with nothing between them, one of them goes, on every page at 1280 and 390 px, with and without a wallet (seen today: between the Mint Card panel and Mint facts, above step 01, between the last row of step 02 and step 03 at 390 px, between the home page's record strip and its evidence section at 390 px, between the Wallet's last fact and the footer). (6) Step titles lose the word Step: '01 – Direct WhitelistCurator facts – written onchain, readable from the contract', '02 – Sworn WhitelistCurator facts – provable onchain, sworn by the swarm', '03 – Sworn Community facts – not limited to WhitelistCurator'; the number in the accent colour, the name in the title's weight, the part after the second dash lighter. Under the 01 title a link 'WhitelistCurator.sol on Etherscan: Read Contract ↗' opens https://etherscan.io/address/0xcB0b0531e86A9aC36Fa865cA8e3dbccF047FDA91#readContract. (7) Each step starts with the Catalog's intro of its topic, as on the Catalog page but without its 'in step 02' pointers: 01 the Direct reads intro; 02 the Chain-proven, Shared facts and Panel-sworn intros, one line each, led by the topic name in bold; 03 the Community facts intro. (8) Title hierarchy: on every page each heading level is easy to tell apart: the page title clearly largest, part titles next, step titles next (with the number in the accent colour), sub-parts inside a step smallest, in capitals and muted ('Community facts', 'Why add facts after minting?'). Each level's size is distinct and decreasing, and no two levels look alike. (9) The 'Show ineligible facts (N hidden)' control appears only when at least one fact is hidden. (10) 'Why add facts after minting?', with its text and its four links, moves directly below the Mint facts intro (the previous step had put it at the end of 02). No separator line follows it: the Mint facts part (its title, intro and 'Why add facts after minting?') runs into 01 with space but no line; the lines between 01, 02 and 03 stay. (11) 01 has no 'Show ineligible facts' control: it lists the direct facts the wallet holds, and the Catalog lists every direct rule.","baseCommit":"d4482048d664e8ba53b38b9e7ea34cdb57035d70","workflowId":null,"deliveredAt":"2026-10-24T17:39:03.874+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/14"},{"site":{"cid":"bafybeiaadknrfotagyvppod37qvol6shf6aziqk7s66eikenp5reuulaom","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"a96c1fc1-6677-4cfd-8428-99694fe43cb9","state":"completed","commit":"7cc77af754c49507e5f3005cf074ee6bc4235ace","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-24T18:42:30.503411+00:00","objective":"Sworn site, one step on this project's site (.imd/reads/project.md): make the changes below in web/, rebuild the static export and commit the whole new dist/ so the same site name serves it, then check it. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Change nothing else: addresses, chain, ABIs, routes, the RPC pool, integrity checks and copy stay, except what the items name. Decide, do not ask: a question blocks the job. (1) Wallet: every claimed fact uses the direct facts' form: two columns, the id and name, then one short line, and no proof lines (no 'Panel-sworn', evidence window, oracle request or attested time). The short line is the fact's short rule: 601 'Accepted swarm jobs >= 3', 701 'Deposited again in hours 24–65', 1301 'Account nonce ≥ 20 at launch', the others as the direct facts show theirs. The intro becomes 'Your wallet's Sworn record: every fact it holds and what each fact says.' (2) Wallet: the line 'Direct · frozen at the card's mint, block … · time' goes. Above each group of claimed facts a title in the accent green: 'Direct facts', 'Sworn WhitelistCurator facts' (chain-proven, shared and panel-sworn facts), 'Sworn Community facts'; a group with no fact shows no title. (3) Mint: the step titles 01, 02, 03 show their number and name in the accent green and the part after the second dash in grey, at 19 px (15 px today; the tail 15 px). (4) Mint, 02: in the three lines that start 'Chain-proven ·', 'Shared facts ·' and 'Panel-sworn ·' the text is grey; the three names keep their colour and weight. The paragraph after them ('Chain-proven facts use 5 agents / quorum 3. Panel-sworn facts use 11 / 7. …') is grey too, with one blank line above it, and all the grey text of this block has that paragraph's font size. (5) Mint: selecting a fact never removes its row. Today a wallet whose 1301 rule is not met sees 1301 vanish when it is selected, because the hiding rule in web/src/fact-ui.tsx also hides on the eligibility check that the selection starts, while the payment dialog still lists it. One check: hiding by default uses only what is known before any selection; a selected fact stays in its table with its eligibility result, and the row and the dialog show the same result text. (6) Mint, 'Why add facts after minting?': no links, and 'Mint a card' goes. In their place three quiet info items in three columns, like Integrate's 'The fact / The artifact / The attestation' but smaller and grey, each a title with its arrow and one sentence: '→ Request a fact' 'Choose facts in 02 and pay the live oracle price, per fact.'; '→ Agents check the rule' 'A panel of IMD agents checks your wallet against the fact's rule and block window.'; '→ Your card updates' 'When the panel agrees, the fact lands on your card and in your wallet's record.' One column on phones. (7) Integrate, 'How to verify a card': steps 1 to 4 and the sentence below them are grey; the function names in them (claimantOf(tokenId), hasTrait, verified, ownerOf) keep their look. (8) About: the 'Contracts' section (addresses, chain, attested source, earlier deployments) and the links row after it go, with one separator line left where they stood. (9) Footer, every page: 'Deployment manifest ↗', 'About & sources ↗', the Public RPC selector and Retry reads go. After 'No owner. No backend. No coin.' come 'Source repository ↗' (https://github.com/identity-md-launches/launch-2404-renderer-composer-registry), 'Identity.md ↗' (https://imdnotdead.fun), 'IMD agents ↗' (https://imdnotdead.fun/docs), 'Sworn on X ↗' (https://x.com/swornbyswarm). Reads keep falling back across the RPC pool by themselves; no text tells visitors to use the removed controls. (10) Separators: with a pending request, the last row of 02 and the start of 03 show two lines; one goes. No two separator lines follow each other with nothing between them, on any page.","baseCommit":"366f512b9dc904d4ce9c746a541bf4fd62320965","workflowId":null,"deliveredAt":"2026-10-24T18:59:11.244+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/15"},{"site":{"cid":"bafybeiffdoib7w2y46f5yf5mid4hidoztkyzgrzkuqm335knmwsnfdrdxi","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"c7347c33-28f2-48c8-ad8f-930191a8a446","state":"completed","commit":"55475816f2b5d548a3e89a9a4042b02539ced51b","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-24T20:14:21.409353+00:00","objective":"Sworn site, one step on this project's site (.imd/reads/project.md): make the changes below in web/, rebuild the static export and commit the whole new dist/ so the same site name serves it, then check it. Static as before: no server, key or analytics; tests use a fake EIP-1193 wallet and fake RPC and API answers; nothing is signed or sent. Change nothing else: addresses, chain, ABIs, routes, the RPC pool, integrity checks and copy stay, except what the items name. Decide, do not ask: a question blocks the job. (1) Wallet: below the intro comes the card block that Mint shows today for a wallet with a card: on the left the title 'Your Sworn card #N', the line 'Card #N · Original claimant: …' and the line 'already minted'; on the right the card. The card is the Wallet's interactive card: selecting a non-empty hive cell highlights its claimed facts and selecting it again clears. Under the card stays only the hint 'Select a non-empty hive cell to highlight its claimed facts. Select it again to clear.'; the caption 'Sworn #N · minted' and the status line ('… family selected.', 'All claimed facts shown.') go. A card that holds no fact shows no hint either, since no cell can be selected. A wallet without a card shows no card block. On phones the block stacks as Mint's does. (2) Wallet: 'Claimed facts' follows below the card block at the full content width. Direct facts stay as today, two facts per row. Sworn WhitelistCurator facts and Sworn Community facts show one fact per row in three aligned columns: the id and name, the short line, and the fact's type as Mint's rows show it (Chain-proven, Shared or Panel-sworn, in the same colour). The green group titles, the rows' lines and the highlighting stay; phones as today. The line under 'Claimed facts' ('Every fact this wallet holds, read from Registry state. Card #N.') goes. (3) Mint: for a wallet with a card, the Mint Card part no longer shows the card block; in its place one line: 'Your Sworn card #N is minted. It is on the Wallet page with every fact it holds.', with 'Wallet page' linking #/wallet. A wallet without a card sees the Mint Card part as today, with item 9's capital. (4) Mint, 02: the three lines that start 'Chain-proven ·', 'Shared facts ·' and 'Panel-sworn ·' and the paragraph after them use the step's full width, as the texts of 01 and 03 do; today they stop at 75 characters (.step-intros > p, .step-note in web/src/styles.css). (5) Mint, 02: the 'Community facts' heading and the line under it after 'Mint selected facts' go ('No community specs registered yet. …', 'Community facts appear in the picker above.'). Registered community facts keep appearing as rows in the list. While the community specs load, or if reading them fails, one status line says so above 'The payment dialog explains …'. (6) Mint, 02: a paid fact that the site's own eligibility check finds not met is hidden on load behind 'Show ineligible facts' and counted there, like the facts hidden today. On load, run the same bounded check the Explorer runs (useFactChecks in web/src/fact-ui.tsx) for every paid fact the wallet does not hold. A fact whose check fails, times out or has no answer stays visible; a selected fact keeps its row and its note. Example: a wallet whose nonce at block 25,769,870 is below 20 finds 1301 among the hidden facts. (7) Mint, 'Why add facts after minting?': the three info columns start at the same height; today the second and third sit 8 px lower (the global 'li + li' margin). (8) Separators, last round's item 10, not yet done: with a pending request, the last seat row of 02's Swarm progress and the start of 03 show two lines with nothing between them; the seat row's line goes. Above '01 – Direct WhitelistCurator facts' comes one separator line, as above 02 and 03. No two separator lines follow each other with nothing between, on any page. (9) BurnExecutor texts: that the fee is forwarded to the BurnExecutor is enough. The community intro (03 and Catalog) loses 'BurnExecutor V2 receives this fee.'; on About, 'BurnExecutor V2 receives fees; its bridge configuration, message delivery and Base execution are external dependencies.' goes, so that paragraph reads 'For minting and registration, the fee is forwarded to the BurnExecutor for bridging and burning on Base.' No public text names BurnExecutor V2. The mint panel's line for a wallet without a card starts with a capital: 'The fee is forwarded to the BurnExecutor for bridging and burning on Base.' (10) 1301's short rule reads 'Account nonce ≥ 20 at launch of WhitelistCurator' wherever it shows (web/src/data.ts: Mint, Catalog, and Wallet for a wallet that holds it).","baseCommit":"7cc77af754c49507e5f3005cf074ee6bc4235ace","workflowId":null,"deliveredAt":"2026-10-24T20:40:18.149+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/16"},{"site":{"cid":"bafybeifi6imde2o4tfrtfdquarcxf3vvkotqfe4tk5vhppenkry5kbzfg4","status":"named","ensName":"swornbyswarm.site.identitymd.eth"},"jobId":"96082b22-214f-4beb-97c8-3809119d60f1","state":"completed","commit":"dcf509b5e566c8e0c33bff216deb89751f508eb8","repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context","createdAt":"2026-10-25T11:09:05.973071+00:00","objective":"Sworn, replace this project's site, served under the site name swornbyswarm, with a redirect page to https://sworn.sites.imd.fun/, where Sworn's version 2 now lives under the site name sworn: change the site source in web/ so that its build is the redirect page, rebuild the static export and commit the new dist/, so the same site name serves it. The page is deliberately minimal and is not a redesign: one heading, one sentence and one link, in the colours and type the site already uses, nothing else. Static: no RPC read, wallet code, analytics or request to api.imdnotdead.fun. Change nothing outside web/ and dist/. Decide, do not ask: a question blocks the job. (1) The page title stays exactly 'swornbyswarm'. (2) A visit with JavaScript goes at once, without adding a history entry, to https://sworn.sites.imd.fun/ followed by the visit's own hash, so every route keeps its hash; a visit without JavaScript goes to https://sworn.sites.imd.fun/ after one second by a meta refresh; the head carries a canonical link to https://sworn.sites.imd.fun/. (3) The visible text, word for word: the heading 'Sworn has moved', the sentence 'This page served Sworn's first public version (swarm launch #2404). Sworn now lives at sworn.sites.imd.fun.' and the link 'Open Sworn' to https://sworn.sites.imd.fun/ with the visit's hash added. (4) dist/ holds index.html and at most a favicon and one same-origin script or stylesheet; the app's assets, abi and data folders are removed from dist/.","baseCommit":"55475816f2b5d548a3e89a9a4042b02539ced51b","workflowId":null,"deliveredAt":"2026-10-25T11:40:40.341+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context/pull/17"}],"contracts":[{"id":"1377d17c-3f09-49e8-87e7-20a07ad45ea9","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"Composer","role":"other","txHash":"0x2f65613f267fc2a5eb38efc3c1534fe47b184bd5f63f7bda975f6a17136016cf","address":"0xf564dd76bd081554170c5e0b78144abfb39f7061"},{"name":"Registry","role":"other","txHash":"0x2f65613f267fc2a5eb38efc3c1534fe47b184bd5f63f7bda975f6a17136016cf","address":"0x0da2679000ea5380d1361cc3cca7d4e8c881f766"},{"name":"Renderer","role":"other","txHash":"0x2f65613f267fc2a5eb38efc3c1534fe47b184bd5f63f7bda975f6a17136016cf","address":"0x3039eaf3b979759c77a2a3fc62850f9534162c3b"}],"createdAt":"2026-10-21T18:49:40.094+00:00","updatedAt":"2026-10-21T18:51:16.808+00:00","launchNumber":2404,"parkedReason":null,"sourceCommit":"c4ff3238390fc51962fb67e86affc20cf418126e","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2404-renderer-composer-registry"}],"publishedAt":"2026-10-25T11:41:17.057+00:00"},{"id":"launch:ff7eecf0-476d-4d5d-85f8-6cd541ac6940","code":[],"media":[],"sites":[],"title":"Build OGClubCreatorPool: a Solidity contract that pays $OG each month to the developers of games in OG Club World, plus Foundry tests and deploy scripts. Put it in the existing Foundry project with OGClubFarmVault, OGClubStaking and OGClubClubs, in the same style (OpenZeppelin 5, Solidity ^0.8.24, Ownable2Step, ReentrancyGuard, SafeERC20, MerkleProof, custom errors).\n\nSETUP: constructor(IERC20 token, address owner); token immutable; no zero addresses. CLAIM_DELAY = 3 days, CLAIM_PERIOD = 90 days. No ETH, no receive, no proxy.\n\nGAMES: id = keccak256(bytes(kitId)), e.g. \"coin-dash\"; pure helper gameId(string). games[id] = {payout, listed}. listGame(id, payout): owner only, an id can only ever be listed once. delistGame/relistGame: owner only, doesn't stop claims of months already proposed. changePayout(id, to): ONLY the game's current payout wallet; the owner can never change a payout. No zero or self payout.\n\nMONEY IN: plain ERC-20 transfers count (the farm vault pays this contract by listing its address as one account in a vault season, then claim(season, pool, amount, proof)). fund(amount) pulls with safeTransferFrom and checks the exact balance change. free() = balance - reserved.\n\nMONTHS: month id YYYYMM (month%100 in 1..12, year >= 2026). proposeMonth(month, root, total), owner only: root and total nonzero, total <= free(), month > lastMonth (or == lastMonth if that month was cancelled, which overwrites it); opensAt = now + 3 days; reserved += total. cancelMonth(month), owner only, before opensAt: releases what's left. claim(month, game, amount, proof), anyone: open between opensAt and opensAt + 90 days, once per game per month, leaf = keccak256(bytes.concat(keccak256(abi.encode(month, game, amount)))), amount <= remaining, game must have a payout (delisted is fine); pays games[game].payout, never the caller; exact balance check. sweep(month), anyone, after the 90 days: unclaimed goes back to free().\n\nOWNER CAN'T: withdraw, sweep to itself, change a payout, change the token, or touch money owed to a month after its 3-day window. $OG only leaves as claims to game payout wallets.\n\nTESTS: list/delist/payout rules; full months with several games (odd and even leaf counts); anyone can push a claim; payout change before claim pays the new wallet; every revert (early, late, twice, wrong leaf, over budget, bad month, cancel too late, sweep too early); cancel and re-propose; sweep then reuse; fee-on-transfer token reverts; INTEGRATION with the real OGClubFarmVault: a vault season lists the pool's address, the vault claim lands $OG in the pool, then a pool month pays games. Fuzz: paid per month <= total. Invariants: balance >= reserved; reserved = sum of open months' remaining; owner's $OG never rises through this contract.\n\nDEPLOY: Sepolia with a mock $OG and test games from a JSON of [kitId, payout]; mainnet from env OG_TOKEN, OWNER, no games listed. Print address and constructor args for verification.\n\nOUT OF SCOPE: the game side (measuring play, the monthly draft and Merkle list, the claim page, adding the pool to vault seasons).","types":["contracts"],"audits":[],"paidBy":"0x5b95a971b4583a5f011e9da082acdd679b870d06","release":null,"research":[],"versions":[],"contracts":[{"id":"ff7eecf0-476d-4d5d-85f8-6cd541ac6940","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"OGClubCreatorPool","role":"other","txHash":"0x542c9a8175312440dc459ba9840173afebeb554b68759d508c8bd97aa2406d23","address":"0x3a8514ebb7eb31fc3c2987b326587de5f19d25cd"}],"createdAt":"2026-10-25T11:20:17.892+00:00","updatedAt":"2026-10-25T11:21:04.735+00:00","launchNumber":2568,"parkedReason":null,"sourceCommit":"849e2564e470f3705f477bbb6591b0b6de7c2dbb","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2568-build-ogclubcreatorpool-solidity-contrac"}],"publishedAt":"2026-10-25T11:20:17.892+00:00"},{"id":"job:b58971f0-f89e-49cb-9d55-16b30b3f1237","code":[],"media":[],"sites":[],"title":"Audit the contracts in 0xtenang/Runner as they are.","types":["audits"],"audits":[{"jobId":"b58971f0-f89e-49cb-9d55-16b30b3f1237","repoUrl":"https://github.com/0xtenang/Runner.git","findings":4,"reportUrl":"https://github.com/Identity-md/research/blob/main/jobs/b58971f0-f89e-49cb-9d55-16b30b3f1237/_identitymd/README.md","baseCommit":"556c9205a52556d2e6da958ba1a9e225ad439083","severities":{"low":2,"info":2},"publishedAt":"2026-10-25T11:16:00.249+00:00"}],"paidBy":"0x0f397e46e4e810313dbc782cdb0236347157f1b4","release":null,"research":[],"versions":[],"contracts":[],"publishedAt":"2026-10-25T11:16:00.249+00:00"},{"id":"job:ed4b93f2-c26d-4072-8f64-d2da5c0978aa","code":[],"media":[],"sites":[],"title":"Audit the contracts in 0xtenang/Runner as they are.","types":["audits"],"audits":[{"jobId":"ed4b93f2-c26d-4072-8f64-d2da5c0978aa","repoUrl":"https://github.com/0xtenang/Runner.git","findings":10,"reportUrl":"https://github.com/Identity-md/research/blob/main/jobs/ed4b93f2-c26d-4072-8f64-d2da5c0978aa/_identitymd/README.md","baseCommit":"3ffb33f80479d0e616c46f1d9deb7c11188c721f","severities":{"low":2,"info":8},"publishedAt":"2026-10-25T10:07:47.001+00:00"}],"paidBy":"0x0f397e46e4e810313dbc782cdb0236347157f1b4","release":null,"research":[],"versions":[],"contracts":[],"publishedAt":"2026-10-25T10:07:47.001+00:00"},{"id":"job:35330f3f-2cd3-4fb1-9a5d-4011f68e9ed9","code":[],"media":[],"sites":[{"id":"e9326e6f-acde-46ba-8def-95b0b65979b6","cid":"bafybeihinpt5ypanxf7gtqbjyghvcdndyyalwafah6ovyni3wdxn5slnnm","jobId":"35330f3f-2cd3-4fb1-9a5d-4011f68e9ed9","label":"ns-curatedresearch-token-sa-a9a4","status":"named","txHash":"0x83d6aae79169851c93586e834fa10bda6a631a58bc1d5017d50790fb8c95b7c1","ensName":"ns-curatedresearch-token-sa-a9a4.identitymd.eth","failure":null,"namedAt":"2026-10-25T08:39:27.885+00:00","repoUrl":null,"pinnedAt":"2026-10-25T08:38:57.969+00:00","createdAt":"2026-10-25T08:38:38.102+00:00","previewHash":null,"supersededBy":null}],"title":"Build \"Token Safety + Agent Deployment Checklist\", a small self-contained web tool: One x402 call returns a complete pre-deployment safety checklist for any token — honeypot, liquidity, ownership, proxy risks, audit status, and a go/no-go verdict. Agents call it before every launch.. A callable x402 tool that takes a token contract address or deployment spec and returns a structured safety/deployment checklist: honeypot check, liquidity lock verification, ownership renounce status, proxy/admin risks, audit links, slippage/tax analysis, and a go/no-go summary. Returns JSON so agents can pipe it into deployment scripts. Priced at $0.25 per call. Static, runs in the browser, no wallet, no backend. Clean, fast, works on a phone. The owner's direction: The first research pack is live. Next priority: create callable tools that AI agents can query via x402 (not just written reports). Build tools such as: - Best autonomous agent workflow for a given topic - IMD + x402 quick starter checklist - Token safety + agent deployment checklist Price them low per call ($0.05–$0.50). Focus on tools agents will actually pay for.","types":["sites"],"audits":[],"paidBy":"0x56b93fb524900faac6908dc35748c84a4fc4f64f","release":null,"research":[],"versions":[],"contracts":[],"publishedAt":"2026-10-25T08:39:27.885+00:00"},{"id":"launch:a9e7b4c3-d72e-4aa0-bf0e-a9017e4cc63c","code":[],"media":[],"sites":[],"title":"A custom token: Mutually Assured Destruction (MAD).\nToken name: Mutually Assured Destruction\nToken symbol: MAD\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","types":["contracts"],"audits":[],"paidBy":"0xee2aaa315cf7ed169f93148d30d24af9318dbb66","release":null,"research":[],"versions":[],"contracts":[{"id":"a9e7b4c3-d72e-4aa0-bf0e-a9017e4cc63c","kind":"custom_token","token":{"logo":"277c317fd574f12313af5784b2e9fdd9bfa6e0288932e18529d9b54e361d7388","name":"Mutually Assured Destruction","symbol":"MAD"},"seeded":{"pools":[{"fee":12500,"hooks":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000","currency0":"0x099195850ab1e4b2a1ea2044c9ce87a4c4df51a1","currency1":"0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7","tickSpacing":60}],"launched":[],"positions":[{"factory":"0xff03410d0fe5fa8f7f59f743de35e333d9857120","tickLower":-128940,"tickUpper":887220,"launchNumber":2566}]},"status":"live","chainId":1,"artifacts":[{"name":"MADToken","role":"token","txHash":"0xa59d6b20fe15393f73565a8027b757bf0c881473512fbb67039be5392be79762","address":"0x099195850ab1e4b2a1ea2044c9ce87a4c4df51a1"},{"name":"MerkleDistributor","role":"distributor","txHash":"0xa59d6b20fe15393f73565a8027b757bf0c881473512fbb67039be5392be79762","address":"0x0f1317818c697eb113543b6576df746b3163f5e8"},{"name":"PoolInitializationGuard","role":"hook","txHash":"0xa59d6b20fe15393f73565a8027b757bf0c881473512fbb67039be5392be79762","address":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000"}],"createdAt":"2026-10-25T08:17:37.118+00:00","updatedAt":"2026-10-25T08:18:25.116+00:00","launchNumber":2566,"parkedReason":null,"sourceCommit":"3d576c7142faff1c523403c73fe47d80e0e40558","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2566-mutually-assured-destruction"}],"publishedAt":"2026-10-25T08:17:37.118+00:00"},{"id":"job:8d4586f5-6af3-4ebb-a492-75f941aa0e4f","code":[],"media":[],"sites":[],"title":"Audit the contracts in 0xtenang/Runner as they are.","types":["audits"],"audits":[{"jobId":"8d4586f5-6af3-4ebb-a492-75f941aa0e4f","repoUrl":"https://github.com/0xtenang/Runner.git","findings":9,"reportUrl":"https://github.com/Identity-md/research/blob/main/jobs/8d4586f5-6af3-4ebb-a492-75f941aa0e4f/_identitymd/README.md","baseCommit":"15a66e930ceed9549d636c41182bd06a51128d42","severities":{"low":4,"info":5},"publishedAt":"2026-10-25T07:51:03.134+00:00"}],"paidBy":"0x0f397e46e4e810313dbc782cdb0236347157f1b4","release":null,"research":[],"versions":[],"contracts":[],"publishedAt":"2026-10-25T07:51:03.134+00:00"},{"id":"job:414ba24a-5132-48dc-8cbd-db1f369016c2","code":[],"media":[],"sites":[],"title":"List the 50 highest-signal voices in crypto/web3 DISCOURSE that you can\nverify from open platforms — the people whose writing drives what crypto\nargues about, NOT only researchers and engineers. Target balance: roughly a\nthird technical, the rest markets, narratives, founders, policy and culture.\nQuality over quantity: 50 verified beats 60 padded. Plain-text answer only —\nno files.\n\nSCOPE — openly readable sources only (do not scrape x.com itself): Farcaster,\npersonal/research blogs, Mirror, Substack/Ghost, governance forums, GitHub,\npodcast transcripts, preprints. X-NATIVE VOICES ARE WELCOME when their work is\nverifiable through open mirrors: a ThreadReader-style unroll, an archived\nthread, or substantial quoted coverage of their writing counts as the\nrationale URL, with the X handle as identifier.\n\nINCLUSION BAR — signal density, not follower count: produces ORIGINAL\nwriting or argument of any register — research, engineering, market theses,\ntrade post-mortems, narrative essays, founder reflections, policy analysis;\nactive on an open platform in the last 90 days; cited, quoted or argued-with\nby other credible voices. EXCLUDE news outlets,\naggregators, accounts mainly doing paid promotion or token-shilling, dormant\nvoices, official project marketing accounts (individual founders/researchers\nare fine).\n\nFORMAT — exactly one line per voice, pipe-delimited. Plain text only: no\nnumbering, no markdown, no bold, no headers, no commentary between lines.\nhandle | primary platform URL | category | rationale URL | cited-by URL | flags\n\nSIZE — keep the whole answer under 18,000 characters. If space runs short,\nfewer fully-verified lines (never below 45) beats a truncated list. Prefer\nshorter canonical URLs where they exist.\n\n- category: one of protocol-research, security-mev, infra-defi-engineering,\n  data-analysis, markets-trading, macro-economics, narratives-culture,\n  founders-builders, governance-policy, media-essays\n- rationale URL: a SPECIFIC piece of original work from the last 6 months\n- cited-by URL: another credible voice citing or building on them\n- flags: \"-\" or any of anon / project-affiliated:<name> /\n  undisclosed-promotion-history\n\nAfter the 50 lines, add one short paragraph: which sources you swept and how\nyou gathered cited-by evidence.\n\nACCEPTANCE: at least 45 lines in exactly the stated format; every line has a\nrationale URL and a cited-by URL; at least 8 of the 10 categories appear; NO\nMORE THAN 20 lines from the four technical categories (protocol-research,\nsecurity-mev, infra-defi-engineering, data-analysis) combined; the method\nparagraph is present.","types":["research"],"audits":[],"paidBy":"0xbe80e5979313cf8aff2b8e54e615fe3ecd8358f5","release":null,"research":[{"jobId":"414ba24a-5132-48dc-8cbd-db1f369016c2","panel":{"quorum":2,"wanted":5,"vendors":["codex"],"answered":3},"steps":1,"commit":null,"repoUrl":null,"publishedAt":"2026-10-25T07:44:39.308+00:00","pullRequestUrl":null}],"versions":[],"contracts":[],"publishedAt":"2026-10-25T07:44:39.308+00:00"},{"id":"launch:7d98948b-fce1-4cf9-ae09-d239cfbd2ae1","code":[],"media":[],"sites":[],"title":"A custom token: swornbyswarm (SWORN).\nToken name: swornbyswarm\nToken symbol: SWORN\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.\nWhat it does: X：x.com/swornbyswarm\nwebsite：swornbyswarm.sites.imd.fun","types":["contracts"],"audits":[],"paidBy":"0xee2aaa315cf7ed169f93148d30d24af9318dbb66","release":null,"research":[],"versions":[],"contracts":[{"id":"7d98948b-fce1-4cf9-ae09-d239cfbd2ae1","kind":"custom_token","token":{"logo":"fa0606bc863fbb2502217c6fa987ac633f29db270b247a58b57ed2a46fc0aaab","name":"swornbyswarm","symbol":"SWORN"},"seeded":{"pools":[{"fee":12500,"hooks":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000","currency0":"0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7","currency1":"0xe8fce2547267ea98027f8991f26b74db3de2e584","tickSpacing":60}],"launched":[],"positions":[{"factory":"0xff03410d0fe5fa8f7f59f743de35e333d9857120","tickLower":-887220,"tickUpper":122040,"launchNumber":2564}]},"status":"live","chainId":1,"artifacts":[{"name":"MerkleDistributor","role":"distributor","txHash":"0x01cb6010dcfb7d2a77986d9592a5c3414cdd3590e8d6a6b607fda3bb2b1d0598","address":"0x36cc90d2afee8795924780317e45c7f8c72204df"},{"name":"PoolInitializationGuard","role":"hook","txHash":"0x01cb6010dcfb7d2a77986d9592a5c3414cdd3590e8d6a6b607fda3bb2b1d0598","address":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000"},{"name":"SwornToken","role":"token","txHash":"0x01cb6010dcfb7d2a77986d9592a5c3414cdd3590e8d6a6b607fda3bb2b1d0598","address":"0xe8fce2547267ea98027f8991f26b74db3de2e584"}],"createdAt":"2026-10-25T07:43:31.869+00:00","updatedAt":"2026-10-25T07:44:04.737+00:00","launchNumber":2564,"parkedReason":null,"sourceCommit":"810e78d4cd6fa7576c6a744247fbbd49be974499","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2564-swornbyswarm"}],"publishedAt":"2026-10-25T07:43:31.869+00:00"},{"id":"launch:4ba572fe-2cf9-462f-9851-52975b8b5cea","code":[],"media":[],"sites":[{"id":"b673c1d6-8669-401d-a74f-761c138ed813","cid":"bafybeigmvfekjzi3fo4pdm3ioqmbe4m7odmfnw2xur3kujohbjlzmwzv2y","jobId":"a8de2d29-06dc-4ffe-a014-46e17f2e5a58","label":"sworn","status":"named","txHash":"0xa05a7708d301b36244e99a7eca6b737b7b4e0b701bb64dba6cd59cb35770ab09","ensName":"sworn.site.identitymd.eth","failure":null,"namedAt":"2026-10-25T05:51:49.074+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2147-launch-sworn-registry-symbol","pinnedAt":"2026-10-25T05:51:09.158+00:00","createdAt":"2026-10-25T05:50:05.844+00:00","previewHash":"02a5ecd9e323f3b65c0dde66832c3d67e48fdda5fe8dc4dc16f7b0e1f2d38436","supersededBy":null},{"id":"fd7699d8-3726-4cac-960a-d18f3b243b54","cid":"bafybeic3sjnswlinfjdwo62laimynlxfrjdub6fzkgaaz5kf7uof6aepnm","jobId":"b209ece6-0040-40a1-beea-65ed031218e7","label":null,"status":"named","txHash":"0xe5e3181d041701d56892bf3723de66ead57b967a36838e13a0bd4ec5a3820f82","ensName":"sworn.site.identitymd.eth","failure":null,"namedAt":"2026-10-23T16:36:53.508+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2147-launch-sworn-registry-symbol","pinnedAt":"2026-10-23T16:32:42.305+00:00","createdAt":"2026-10-23T16:32:32.956+00:00","previewHash":"7f4bb06b8913fd48065c759dda49703d3d0e2d19a6ea476092eaa569d4037569","supersededBy":"b673c1d6-8669-401d-a74f-761c138ed813"},{"id":"a6badfcc-3821-4779-bce5-3f8453f96769","cid":"bafybeicmvtlu7yd2euh6tuvhaxxynbj4wxyqeuc5flf6k2npwhugvj7ogm","jobId":"53f5fb2b-2480-46a1-9540-1601d2d0b68a","label":null,"status":"named","txHash":"0x73b01c0ae93eaac0e99ac357703ecac7fd26ba5efb0ca2d537b9165a9d1a866f","ensName":"sworn.site.identitymd.eth","failure":null,"namedAt":"2026-10-18T21:26:26.447+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2147-launch-sworn-registry-symbol","pinnedAt":"2026-10-18T21:24:29.264+00:00","createdAt":"2026-10-18T21:24:21.768+00:00","previewHash":"087d32c8cc7c63166e9febc108fa5e3f55483011dc07c82820a83c1461326484","supersededBy":"fd7699d8-3726-4cac-960a-d18f3b243b54"}],"title":"Launch the Sworn registry (symbol SWORN) from this repository on Ethereum mainnet, deployed in this order and with no other contracts: Renderer (no constructor arguments), Composer (no constructor arguments), then Registry with constructor arguments curator 0xcb0b0531e86a9ac36fa865ca8e3dbccf047fda91 (WhitelistCurator), idmd 0x0000ec93127baa929e58e97dd0095a2bfb38ec1d (IdentityMD), imd 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7 (IMD), intake 0xa43e6f75ee006411f79ac1c84120606c2330de82 (Intake v2), attester 0x5598aa9146215bc13eb26f2c692ad1461fd32982 (the IMD oracle signer), renderer $contract:Renderer, composer $contract:Composer, burnExecutor 0xe29386719C155B6847aD5a4E97C6674f10ffc750 (IMD BurnExecutor V2; see the burn rule below). The three contracts have no owner roles. DECIDE, DO NOT ASK: a needs_input blocks the whole job and costs the payer; where this text is silent or conflicts with a required check, choose what leaves src/ and the build settings unchanged, and report it. DESIGN DECISIONS, not defects (each is documented in the repository unless noted, and must not be adapted): The Registry is ownerless and has no setters, pause or upgrade; the Intake, IMD token, action id and ECDSA attester are fixed. Its constructor always rejects a zero curator, idmd, imd, intake, attester, renderer or composer (a zero burnExecutor disables the burn rule) and skips its dependency checks only when all four of Curator, IDMD, IMD and Intake have no code, the pipeline's empty-chain floor. Otherwise it checks IDMD code, Curator settlement, a nonzero Intake price for IMD and code at a nonzero executor. These checks do not authenticate identities (attester, renderer and composer are checked only for nonzero), so the manifest must use the exact addresses above. Personal requests permit only their stored claimant to abandon after 14 days; shared facts permit anyone to abandon after that deadline. Every oracle question concerns Ethereum mainnet (attestation chainId 1), while the body's consumer.chainId and the EIP-712 signing domain use the deployment chain. Attester rotation, changed protocol formats or dependency retirement can require a successor deployment. Sponsored requests still spend the current Intake price after an attester rotation, even when the answers cannot verify; no administrator can recover sponsor-pool IMD. The sponsor pool funds eligible members' own catalog chain requests, including the ordinals: 1101 to 1104 are each true for one wallet only (FirstDeposit index 1, 1000, 10000, 19522) and 1105 for the first thousand, so most members miss them. Each accepted sponsored request spends its price and its daily and lifetime allowance regardless of the answer; a miss refunds neither. Burn rule, live on mainnet: after the Intake request, claimSponsored and upgradeSponsored call the executor's previewBridge() with at most 600,000 gas. If it returns at least 69 IMD and a fee of at most 0.005 ETH, msg.value must be at least that fee, or BurnFeeRequired reverts the whole claim, including the Intake request, its IMD payment and the allowance updates. With enough ETH the registry forwards all of msg.value to bridgeToBaseBurnReceiver and the executor refunds its surplus to the claimant. On 2026-10-16 the preview was 454.94 IMD for 0.000219 ETH at block 26,202,203 (the block the docs pin) and 455.40 IMD for 0.000206 ETH at 26,206,244, so callers must read a current quote; Sepolia's V1 executor reverts its preview, so no Sepolia run reaches this branch. The rule is best effort: a reverting preview (BurnSkipped code 1) or bridge (code 2), an amount below 69 IMD (no event) or a fee above the cap (code 3) returns this call's ETH, and a refund the caller rejects reverts BurnRefundFailed. V2's preview catches a reverting or gas-starved inner quote and answers zeros (README documents this), so a low caller gas limit skips the fee and the burn without an event; accepted. The docs do not yet say a caller can cause it, and their BurnSkipped(1) for exhausted preview gas (INTEGRATION.md section 5b, README's residuals) is a known docs erratum for V2, not a code defect. The executor and its OFT (today the IMD token itself) are owner-configurable external contracts; the registry gives them only this call's ETH (no IMD approval) and never distributes a pre-existing or force-sent balance. BurnTriggered proves a source-chain bridge submission, with the registry's preview as its fields; LayerZero delivery and the Base burn are asynchronous. Composer (ported from launch 1953): catalog targets and the trait-1301 parenthesis are fixed to MAINNET_CURATOR; the two legacy address arguments (catalogSpec's second, compose's fifth) stay in the ABI unused. On chain 1, community windows use the registry's block.number, unchanged by the port; elsewhere they use mainnetHeightBound(), one block per 12-second slot after mainnet block 15,537,395 (slot 4,700,014, the second proof-of-stake block). That bound is not a mainnet-head oracle: its slack (76,427 blocks, about 10.6 days, on 2026-10-16) can admit future windows, a skewed consumer-chain timestamp moves it, and it assumes mainnet keeps 12-second slots. Those limits are accepted off mainnet. Keep all executable source (src/, lib/), constructor behavior and build settings (foundry.toml, remappings.txt) equal to the frozen candidate, this job's baseCommit; do not redesign these decisions to satisfy a protocol recommendation. Adapt nothing in src/. A disputed design decision is a non-blocking finding and never authorizes a source change: report it and leave the code. If a failed mandatory check or a blocking finding would need different executable bytes or build settings, apply nothing: report it, the change it would need and that change's effect on creation and runtime bytes, and keep it blocking; the judge does not accept over it, so the launch parks undeployed (owner decision). Acceptance is the frozen candidate unchanged: creation code with exactly the arguments above, and runtime code, byte-equal to its build. Report every change the adapt step makes.","types":["contracts","sites"],"audits":[],"paidBy":"0xe5b1275fb926613d983da33fbfe1f331b7f64f2a","release":null,"research":[],"versions":[{"site":null,"jobId":"c3792acf-e0c4-4268-9eea-c533b7c87935","state":"completed","commit":"b86d7aea5bd2d67e38c6868148168fabf3c83b3d","repoUrl":"https://github.com/identity-md-launches/launch-2147-launch-sworn-registry-symbol","createdAt":"2026-10-18T05:51:08.952394+00:00","objective":"Launch the Sworn registry (symbol SWORN) from this repository on Ethereum mainnet, deployed in this order and with no other contracts: Renderer (no constructor arguments), Composer (no constructor arguments), then Registry with constructor arguments curator 0xcb0b0531e86a9ac36fa865ca8e3dbccf047fda91 (WhitelistCurator), idmd 0x0000ec93127baa929e58e97dd0095a2bfb38ec1d (IdentityMD), imd 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7 (IMD), intake 0xa43e6f75ee006411f79ac1c84120606c2330de82 (Intake v2), attester 0x5598aa9146215bc13eb26f2c692ad1461fd32982 (the IMD oracle signer), renderer $contract:Renderer, composer $contract:Composer, burnExecutor 0xe29386719C155B6847aD5a4E97C6674f10ffc750 (IMD BurnExecutor V2; see the burn rule below). The three contracts have no owner roles. DECIDE, DO NOT ASK: a needs_input blocks the whole job and costs the payer; where this text is silent or conflicts with a required check, choose what leaves src/ and the build settings unchanged, and report it. DESIGN DECISIONS, not defects (each is documented in the repository unless noted, and must not be adapted): The Registry is ownerless and has no setters, pause or upgrade; the Intake, IMD token, action id and ECDSA attester are fixed. Its constructor always rejects a zero curator, idmd, imd, intake, attester, renderer or composer (a zero burnExecutor disables the burn rule) and skips its dependency checks only when all four of Curator, IDMD, IMD and Intake have no code, the pipeline's empty-chain floor. Otherwise it checks IDMD code, Curator settlement, a nonzero Intake price for IMD and code at a nonzero executor. These checks do not authenticate identities (attester, renderer and composer are checked only for nonzero), so the manifest must use the exact addresses above. Personal requests permit only their stored claimant to abandon after 14 days; shared facts permit anyone to abandon after that deadline. Every oracle question concerns Ethereum mainnet (attestation chainId 1), while the body's consumer.chainId and the EIP-712 signing domain use the deployment chain. Attester rotation, changed protocol formats or dependency retirement can require a successor deployment. Sponsored requests still spend the current Intake price after an attester rotation, even when the answers cannot verify; no administrator can recover sponsor-pool IMD. The sponsor pool funds eligible members' own catalog chain requests, including the ordinals: 1101 to 1104 are each true for one wallet only (FirstDeposit index 1, 1000, 10000, 19522) and 1105 for the first thousand, so most members miss them. Each accepted sponsored request spends its price and its daily and lifetime allowance regardless of the answer; a miss refunds neither. Burn rule, live on mainnet: after the Intake request, claimSponsored and upgradeSponsored call the executor's previewBridge() with at most 600,000 gas. If it returns at least 69 IMD and a fee of at most 0.005 ETH, msg.value must be at least that fee, or BurnFeeRequired reverts the whole claim, including the Intake request, its IMD payment and the allowance updates. With enough ETH the registry forwards all of msg.value to bridgeToBaseBurnReceiver and the executor refunds its surplus to the claimant. On 2026-10-16 the preview was 454.94 IMD for 0.000219 ETH at block 26,202,203 (the block the docs pin) and 455.40 IMD for 0.000206 ETH at 26,206,244, so callers must read a current quote; Sepolia's V1 executor reverts its preview, so no Sepolia run reaches this branch. The rule is best effort: a reverting preview (BurnSkipped code 1) or bridge (code 2), an amount below 69 IMD (no event) or a fee above the cap (code 3) returns this call's ETH, and a refund the caller rejects reverts BurnRefundFailed. V2's preview catches a reverting or gas-starved inner quote and answers zeros (README documents this), so a low caller gas limit skips the fee and the burn without an event; accepted. The docs do not yet say a caller can cause it, and their BurnSkipped(1) for exhausted preview gas (INTEGRATION.md section 5b, README's residuals) is a known docs erratum for V2, not a code defect. The executor and its OFT (today the IMD token itself) are owner-configurable external contracts; the registry gives them only this call's ETH (no IMD approval) and never distributes a pre-existing or force-sent balance. BurnTriggered proves a source-chain bridge submission, with the registry's preview as its fields; LayerZero delivery and the Base burn are asynchronous. Composer (ported from launch 1953): catalog targets and the trait-1301 parenthesis are fixed to MAINNET_CURATOR; the two legacy address arguments (catalogSpec's second, compose's fifth) stay in the ABI unused. On chain 1, community windows use the registry's block.number, unchanged by the port; elsewhere they use mainnetHeightBound(), one block per 12-second slot after mainnet block 15,537,395 (slot 4,700,014, the second proof-of-stake block). That bound is not a mainnet-head oracle: its slack (76,427 blocks, about 10.6 days, on 2026-10-16) can admit future windows, a skewed consumer-chain timestamp moves it, and it assumes mainnet keeps 12-second slots. Those limits are accepted off mainnet. Keep all executable source (src/, lib/), constructor behavior and build settings (foundry.toml, remappings.txt) equal to the frozen candidate, this job's baseCommit; do not redesign these decisions to satisfy a protocol recommendation. Adapt nothing in src/. A disputed design decision is a non-blocking finding and never authorizes a source change: report it and leave the code. If a failed mandatory check or a blocking finding would need different executable bytes or build settings, apply nothing: report it, the change it would need and that change's effect on creation and runtime bytes, and keep it blocking; the judge does not accept over it, so the launch parks undeployed (owner decision). Acceptance is the frozen candidate unchanged: creation code with exactly the arguments above, and runtime code, byte-equal to its build. Report every change the adapt step makes.","baseCommit":"59e9bf04b359e523d5d3ba784d017dafc5ef32e1","workflowId":null,"deliveredAt":"2026-10-18T06:25:11.268+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2147-launch-sworn-registry-symbol/pull/1"},{"site":{"cid":"bafybeicmvtlu7yd2euh6tuvhaxxynbj4wxyqeuc5flf6k2npwhugvj7ogm","status":"named","ensName":"sworn.site.identitymd.eth"},"jobId":"53f5fb2b-2480-46a1-9540-1601d2d0b68a","state":"completed","commit":null,"repoUrl":"https://github.com/identity-md-launches/launch-2147-launch-sworn-registry-symbol","createdAt":"2026-10-18T06:44:04.621047+00:00","objective":"Three steps on the deployed Sworn registry (this repository; symbol SWORN): build its static public site, check it, then rewrite the README. FORM: an instrument panel set in monospace, a block explorer for one registry: dense tables, thin rules, numbered steps; not a dashboard, not a marketing site. DESIGN, owner-approved. LAYOUT: max width 1200 px (claim guide and about 1040 px), 32 px side padding, 16 px on phones; sections split by 1px rules; section labels 11px uppercase, tracked 0.12em; body 13px, line-height 1.55; page titles 24px weight 500, the landing headline 34px. Header: the 32px logo, SWORN 15px weight 600 tracked 0.22em in the accent, the menu 12px muted, the active item dark text on the accent, a 1px accent rule below. Tables full width, 12px, head row 10px tracked uppercase muted, 1px #151515 row rules, sideways scroll on phones. Claim guide steps: faint 01 to 04 in a 48px column, each with its own picker, cost and button. Every number has its source in 10 to 11px muted next to it. Buttons square, 44px+, accent fill with dark text, or a 1px accent outline for a second action. The claim guide's card mint is one block in a 1px accent border: the card at about 300px on the left, the text and the mint button on the right. LOGO: the Renderer's own image, Renderer.tokenURI(Card) by eth_call for a full-house card (top 101, 202, 303, 404, 503, 601, 701, 801, 901, 1001, 1101, 1201, 1301; communityCount 8192) with its token-number text removed, committed as SVG; the landing's sample card is the Renderer preview of a synthetic wallet holding 101, 202, 302, 402, 502, 701, 1105, 1301. Decide, do not ask: a question blocks the whole job. Add no component the mockup lacks: no hero image, gradient, glow, shadow, rounded corner (radius 0), pill button, card wall, icon set, emoji, particles, animation, web font or marketing line; tables stay tables. THE BRIEF OVERRIDES THE HOUSE BAR: the owner approved, and build and review keep, monospace for all text including prose, the tracked uppercase labels (0.08 to 0.22em) above sections, the type sizes above, the eight-word headline and the whole landing copy, and the em dashes inside the quoted source comment; do not change them to pass the probe's tracking, eyebrow, type-face, type-size, glyph, headline or prose checks. Look: background #0a0a0a, text #d9e0da, muted #8c968e, faint #5f6861, 1px rules #1f1f1f and #151515; one accent #00ff41 for links, primary buttons, the active menu item and the header rule; the card's greens only as evidence-class markers (direct #00cc33, chain-proven #00ff41, shared #dbfee6, panel #8ff0a4), a white dot for rare ids; the system monospace stack (ui-monospace, SFMono-Regular, Menlo, Consolas). Menu: Catalog, Explorer, Claim, Fact vs artifact, Integrate, WhitelistCurator, About. NAMES: Sworn, SWORN, the 13 family names of CATALOG.md section 7, no working name; the menu item and page title say WhitelistCurator, text that names the contract says WhitelistCurator.sol; Identity.md with a capital I; panel members are IMD agents. USE EXACTLY: headline 'Facts about wallets, onchain and sworn by the swarm.'; landing copy 'Sworn is an ownerless registry on Ethereum mainnet. It records verifiable facts about wallets, starting with 25 built on the 19,522 wallets in WhitelistCurator.sol: some read live from the chain, the rest proven by panels of IMD agents and signed. A card shows a wallet's facts; any contract can check them. Everyone can add facts.'; claim guide 'Mint your card now. It updates itself.' and 'A community trait costs 6.9 IMD: 0.5 for your first claim and 6.4 IMD paid forward into the pool by registerSpec().' Keyless and static: no server, API key, analytics or call to api.imdnotdead.fun from the browser; every script and asset bundled, no CDN (the host allows same-origin scripts only); chain state through user-switchable public RPCs (default rpc.mevblocker.io, ethereum-rpc.publicnode.com, 1.rpc.thirdweb.com); attestations as links (https://api.imdnotdead.fun/oracle/requests/<uuid>/attestation, uuid = the first 16 bytes of oracleRequestId). Addresses: Registry, Composer and Renderer from the launch (.imd/reads/project.md); WhitelistCurator.sol 0xcB0b0531e86A9aC36Fa865cA8e3dbccF047FDA91, IDMD 0x0000eC93127BAA929E58E97dd0095A2BFb38ec1D, IMD 0xD34a99Bc0f67aE1bbd63C660e6d0b0dd03E263B7, Intake v2 0xa43e6f75ee006411f79ac1c84120606c2330de82, attester 0x5598aa9146215bc13eb26f2c692ad1461fd32982, BurnExecutor V2 0xe29386719C155B6847aD5a4E97C6674f10ffc750; the builder commits site/addresses.json, reads curator(), imd() and intake() from the Registry and shows a red banner on a mismatch. No private wallet: examples are synthetic 0x...c1a1 addresses or the three public contributors the fork tests name.","baseCommit":"b86d7aea5bd2d67e38c6868148168fabf3c83b3d","workflowId":null,"deliveredAt":null,"pullRequestUrl":null},{"site":{"cid":"bafybeic3sjnswlinfjdwo62laimynlxfrjdub6fzkgaaz5kf7uof6aepnm","status":"named","ensName":"sworn.site.identitymd.eth"},"jobId":"b209ece6-0040-40a1-beea-65ed031218e7","state":"completed","commit":null,"repoUrl":"https://github.com/identity-md-launches/launch-2147-launch-sworn-registry-symbol","createdAt":"2026-10-23T16:18:54.560146+00:00","objective":"One step on this project's site, the first Sworn site (.imd/reads/project.md), served under the site name sworn. It belongs to swarm launch #2147, a test deployment; Sworn now runs on swarm launch #2404 with its site at https://swornbyswarm.sites.imd.fun/. Replace this site with a redirect page, so that every visit lands on the same page of the new site: change the site source so that its build is the redirect page, rebuild the static export and commit the new dist/, so the same site name serves it. The page is deliberately minimal and is not a redesign: one heading, one sentence and one link, in the colours and type DESIGN.md already sets, nothing else. Static: no RPC read, wallet code, analytics or request to api.imdnotdead.fun. Change nothing outside the site source and dist/: README.md, DESIGN.md and artifacts/ stay as they are. Decide, do not ask: a question blocks the job. (1) The page title stays exactly 'Sworn | Wallet facts on Ethereum'. (2) A visit with JavaScript goes at once, without adding a history entry, to https://swornbyswarm.sites.imd.fun/ followed by the visit's own hash, so #/claim, #/catalog, #/about, #/whitelistcurator, #/fact-vs-artifact and every other route keep their hash (the new site opens #/claim as its Mint page); a visit without JavaScript goes to https://swornbyswarm.sites.imd.fun/ after one second by a meta refresh; the head carries a canonical link to https://swornbyswarm.sites.imd.fun/. (3) The visible text, word for word: the heading 'Sworn has moved', the sentence 'This page served the test deployment of Sworn (swarm launch #2147). Sworn now lives at swornbyswarm.sites.imd.fun.' and the link 'Open Sworn' to https://swornbyswarm.sites.imd.fun/ with the visit's hash added. (4) dist/ holds index.html and at most a favicon and one same-origin script or stylesheet; the old app's assets/, data/ and examples/ are removed from dist/, because they describe the retired test registry.","baseCommit":"b86d7aea5bd2d67e38c6868148168fabf3c83b3d","workflowId":null,"deliveredAt":null,"pullRequestUrl":null},{"site":{"cid":"bafybeigmvfekjzi3fo4pdm3ioqmbe4m7odmfnw2xur3kujohbjlzmwzv2y","status":"named","ensName":"sworn.site.identitymd.eth"},"jobId":"a8de2d29-06dc-4ffe-a014-46e17f2e5a58","state":"completed","commit":"64005f6c4c252c3fca6a065c14ad9f1c2b8676e4","repoUrl":"https://github.com/identity-md-launches/launch-2147-launch-sworn-registry-symbol","createdAt":"2026-10-25T05:09:28.094499+00:00","objective":"Sworn, host version 2 of the site under this project's name, sworn. Replace the hosted files with the dist/ folder of https://github.com/banse/sworn/tree/swornv2 at commit f4e16276a954f0c9c7327733ba6adee298279fa6 (a public repository; dist/ holds 85 files with index.html at its root, built there from web/ by that repository's own build), used unchanged: no file added, changed or left out, and no build run here. The page under this name is currently a redirect to swornbyswarm.sites.imd.fun; version 2 replaces it entirely and keeps the name. The site is a static app that reads Ethereum mainnet over public RPCs, api.imdnotdead.fun and IPFS gateways from the visitor's browser. Decide, do not ask: a question blocks the job.","baseCommit":"b86d7aea5bd2d67e38c6868148168fabf3c83b3d","workflowId":null,"deliveredAt":"2026-10-25T05:50:14.21+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2147-launch-sworn-registry-symbol/pull/2"}],"contracts":[{"id":"4ba572fe-2cf9-462f-9851-52975b8b5cea","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"Composer","role":"other","txHash":"0xe647fe252afa7fac3fbbf56e1c3ad64de2093337c29d199a2280c25dc4704c24","address":"0x06bf2168dd115fa37bd1637fa1f50adb29a3029d"},{"name":"Registry","role":"other","txHash":"0xe647fe252afa7fac3fbbf56e1c3ad64de2093337c29d199a2280c25dc4704c24","address":"0x39bec7648259d5a128c29b24951eabcd4d1f95a6"},{"name":"Renderer","role":"other","txHash":"0xe647fe252afa7fac3fbbf56e1c3ad64de2093337c29d199a2280c25dc4704c24","address":"0xea9185cc6dffe42a8c059b099c50cb21021439ad"}],"createdAt":"2026-10-18T06:25:11.268+00:00","updatedAt":"2026-10-18T06:26:28.71+00:00","launchNumber":2147,"parkedReason":null,"sourceCommit":"b86d7aea5bd2d67e38c6868148168fabf3c83b3d","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2147-launch-sworn-registry-symbol"}],"publishedAt":"2026-10-25T05:51:49.074+00:00"},{"id":"job:6427f320-f79e-4da3-bf1f-b2e8135eb877","code":[],"media":[],"sites":[{"id":"cd666a3d-9498-4cbe-a754-06696ed39ef7","cid":"bafybeih6nkdgzfpu7t2lmfccvpkvxpxg4behztq4yakmcn5hiii3hvc34m","jobId":"61b28e15-f4ed-4e70-a214-16a6ab480ea3","label":"burned-6427","status":"named","txHash":"0x4dc0f132a7caa5297821e4eddd4d9bc873c768eadd21c17724908ccaa159da98","ensName":"burned-6427.identitymd.eth","failure":null,"namedAt":"2026-10-25T04:28:16.242+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2552-imd-burn-tracker-host","pinnedAt":"2026-10-25T04:27:30.224+00:00","createdAt":"2026-10-25T04:26:50.038+00:00","previewHash":null,"supersededBy":null},{"id":"7833ef8c-5fd1-4831-ba48-43953e5779a9","cid":"bafybeibkl3whwdxlwa2wipk4e77kdbdcxtdq4mqgstphqgvvygr2vhmedu","jobId":"6e50f75a-e02e-4713-b631-2acbab58a9e3","label":null,"status":"named","txHash":"0xc4aa01426ff2a1b98d80ae218a9b1386bad4b9f2b975e724ebed44744fb7f040","ensName":"burned-6427.identitymd.eth","failure":null,"namedAt":"2026-10-24T21:24:04.217+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2552-imd-burn-tracker-host","pinnedAt":"2026-10-24T21:21:08.982+00:00","createdAt":"2026-10-24T21:20:20.967+00:00","previewHash":null,"supersededBy":"cd666a3d-9498-4cbe-a754-06696ed39ef7"},{"id":"d12599d3-6c2a-43ac-8b93-68f32805be38","cid":"bafybeihccivnsijexinjjmrg24vz27vwbxzmfktj6pa2afd2xds4jh3byy","jobId":"6427f320-f79e-4da3-bf1f-b2e8135eb877","label":null,"status":"named","txHash":"0x70f7e2d52b98fef18cc0e642589a0ff3881c874951063f4acc1cb669ec7918db","ensName":"burned-6427.identitymd.eth","failure":null,"namedAt":"2026-10-24T18:16:26.529+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2552-imd-burn-tracker-host","pinnedAt":"2026-10-24T18:15:57.34+00:00","createdAt":"2026-10-24T18:15:54.646+00:00","previewHash":null,"supersededBy":"7833ef8c-5fd1-4831-ba48-43953e5779a9"}],"title":"IMD Burn tracker, host its static site. dist/ is the finished site: dist/index.html, dist/fonts.css (IBM Plex Mono, embedded), dist/d3.v7.9.0.min.js and dist/data/*.json, ten data files the page fetches from its own origin. Build it with the repository's own build script (package.json), which needs network access: it refreshes the data files in dist/data/ from public sources, or keeps them and notes why in dist/data/imd-refresh-status.json. Change nothing else: the hosted files are dist/ after that build, every other file as committed. The page loads only same-origin files (no CDN, no RPC, no wallet, no analytics); its inline scripts are part of the page. Decide, do not ask: a question blocks the job.","types":["sites"],"audits":[],"paidBy":"0x6585f6987205f5f5216d4b8c6d15624269e47009","release":null,"research":[],"versions":[{"site":{"cid":"bafybeihccivnsijexinjjmrg24vz27vwbxzmfktj6pa2afd2xds4jh3byy","status":"named","ensName":"burned-6427.identitymd.eth"},"jobId":"6427f320-f79e-4da3-bf1f-b2e8135eb877","state":"completed","commit":"92207e1c0031bd9510c7b997a0dc3c2ca20ec949","repoUrl":"https://github.com/identity-md-launches/launch-2552-imd-burn-tracker-host","createdAt":"2026-10-24T18:06:49.909437+00:00","objective":"IMD Burn tracker, host its static site. dist/ is the finished site: dist/index.html, dist/fonts.css (IBM Plex Mono, embedded), dist/d3.v7.9.0.min.js and dist/data/*.json, ten data files the page fetches from its own origin. Build it with the repository's own build script (package.json), which needs network access: it refreshes the data files in dist/data/ from public sources, or keeps them and notes why in dist/data/imd-refresh-status.json. Change nothing else: the hosted files are dist/ after that build, every other file as committed. The page loads only same-origin files (no CDN, no RPC, no wallet, no analytics); its inline scripts are part of the page. Decide, do not ask: a question blocks the job.","baseCommit":"b829e6281da37619579989d1cdba99ecd0cdddc7","workflowId":null,"deliveredAt":"2026-10-24T18:16:22.037+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2552-imd-burn-tracker-host/pull/1"},{"site":{"cid":"bafybeibkl3whwdxlwa2wipk4e77kdbdcxtdq4mqgstphqgvvygr2vhmedu","status":"named","ensName":"burned-6427.identitymd.eth"},"jobId":"6e50f75a-e02e-4713-b631-2acbab58a9e3","state":"completed","commit":"c6a955d786508f5fd082b105a3ebf4a70e948134","repoUrl":"https://github.com/identity-md-launches/launch-2552-imd-burn-tracker-host","createdAt":"2026-10-24T21:05:51.260771+00:00","objective":"IMD Burn tracker, refresh its data and host the site again. Build it with the repository's own build script (package.json), which needs network access: it refreshes the data files in dist/data/ from public sources, or keeps them and notes why in dist/data/imd-refresh-status.json. Change nothing else: the hosted files are dist/ after that build. Decide, do not ask: a question blocks the job.","baseCommit":"92207e1c0031bd9510c7b997a0dc3c2ca20ec949","workflowId":null,"deliveredAt":"2026-10-24T21:20:48.124+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2552-imd-burn-tracker-host/pull/2"},{"site":{"cid":"bafybeih6nkdgzfpu7t2lmfccvpkvxpxg4behztq4yakmcn5hiii3hvc34m","status":"named","ensName":"burned-6427.identitymd.eth"},"jobId":"61b28e15-f4ed-4e70-a214-16a6ab480ea3","state":"completed","commit":"ee7e24697059a88a1487d83a69d3a3bcc211a572","repoUrl":"https://github.com/identity-md-launches/launch-2552-imd-burn-tracker-host","createdAt":"2026-10-25T04:15:54.519647+00:00","objective":"IMD Burn tracker, refresh its data and host the site again. Build it with the repository's own build script (package.json), which needs network access: it refreshes the data files in dist/data/ from public sources, or keeps them and notes why in dist/data/imd-refresh-status.json. Change nothing else: the hosted files are dist/ after that build. Decide, do not ask: a question blocks the job.","baseCommit":"c6a955d786508f5fd082b105a3ebf4a70e948134","workflowId":null,"deliveredAt":"2026-10-25T04:27:11.222+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2552-imd-burn-tracker-host/pull/3"}],"contracts":[],"publishedAt":"2026-10-25T04:28:16.242+00:00"},{"id":"job:a6591c35-19e0-409b-b299-dc388acb497d","code":[],"media":[],"sites":[{"id":"06af5934-ac1d-4b4c-baba-8a03043def5b","cid":"bafybeiftgyu7xcj5zgt4itzearkfazadqeigka4gmfxvwkdvtj2yg6t57u","jobId":"a6591c35-19e0-409b-b299-dc388acb497d","label":"swarmstreet","status":"named","txHash":"0x2e69931b75e509ae596de4dcc057a8886c629c9112b7fedfd6f8a0bcda3d3c01","ensName":"swarmstreet.identitymd.eth","failure":null,"namedAt":"2026-10-25T04:18:04.756+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2561-little-computer-pepes-static","pinnedAt":"2026-10-25T04:17:15.598+00:00","createdAt":"2026-10-25T04:16:54.533+00:00","previewHash":null,"supersededBy":null}],"title":"Little Computer Pepes, a static browser game: a little pepe lives one IMD swarm seat's working day in a cut-away house, and the visitor can follow a running job from seat to seat. Host the finished site in dist/ as it is, with no build and no edits: plain HTML, CSS and JavaScript modules, two sprite images with their notice (dist/assets/imd/), and one data file, dist/data/launch-pools.json. In the browser it reads only public sources (api.imdnotdead.fun: /swarm and the oracle routes; DexScreener; the worker releases on GitHub) and Google Fonts. Charts, swaps, the IMD Explorer and the Sworn and burn tracker sites open as links in new tabs, never in a frame. Decide, do not ask: a question blocks the job.","types":["sites"],"audits":[],"paidBy":"0x887b86b6b6957f7bbea88b8cefd392f39236a88c","release":null,"research":[],"versions":[],"contracts":[],"publishedAt":"2026-10-25T04:18:04.756+00:00"},{"id":"launch:02fb86d5-5323-4101-9873-88ea5de51462","code":[],"media":[],"sites":[],"title":"A game where you click mint() and pass a value of 0.1 eth and it buys imd from the univ4 imd/eth pool with 0.08 eth and sends it to them but also keeps track of who was payer and exactly how many imd tokens they got\n\nit keeps track of who go the fewest tokens and when it mints out they get sent all the \"rewards\" that are the remaining 0.02 eth from each mint that stayed in the contract","types":["contracts"],"audits":[],"paidBy":"0x047f606fd5b2baa5f5c6c4ab8958e45cb6b054b7","release":null,"research":[],"versions":[],"contracts":[{"id":"02fb86d5-5323-4101-9873-88ea5de51462","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"LowestMintGame","role":"other","txHash":"0xf33b7595c696e962abc2fd952cc7b801c4ffa7e56b1a98c51e18aec7491ccab3","address":"0xa86db0ffea0d166b5bd4fbe237122c2ae6e95c26"}],"createdAt":"2026-10-25T04:17:19.352+00:00","updatedAt":"2026-10-25T04:17:51.288+00:00","launchNumber":2558,"parkedReason":null,"sourceCommit":"c14bca15f930b4b283e4ac761c771958359b345e","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2558-game-where-you-click"}],"publishedAt":"2026-10-25T04:17:19.352+00:00"},{"id":"job:bea3fd5d-8fc8-4408-8d7b-f9748277763f","code":[],"media":[],"sites":[],"title":"Compile a research directory of 300–500 high-signal voices in crypto/web3\ntechnical and economic discourse, as structured data files.\n\nSCOPE — open platforms only (no X/Twitter scraping; an X handle may be\n*listed* as a known identifier, but all evidence must come from open sources):\nFarcaster, personal/research blogs, Mirror, Substack/Ghost newsletters,\ngovernance forums (e.g. Ethereum Magicians, protocol forums), GitHub\n(discussions/research repos), published podcast transcripts, academic preprints.\n\nINCLUSION BAR — signal density, not follower count:\n- Produces ORIGINAL analysis, research, engineering, or argument (not\n  aggregation, not news rewrites, not engagement bait).\n- Active within the last 90 days on at least one open platform.\n- Cited or built upon by other credible voices (give evidence).\nEXCLUDE: news outlets and aggregator brands, accounts whose output is primarily\npaid promotion or token-shilling, dead/dormant voices, official project\nmarketing accounts (individual founders/researchers are fine).\n\nFOR EACH VOICE provide:\n- name_or_handle; identifiers per platform (farcaster handle, blog URL, forum\n  username, github, known X handle if any — identifier only)\n- primary_platform and its URL\n- category, exactly one of: protocol-research | security | mev-markets |\n  governance-policy | macro-economics | infra-engineering | defi-design |\n  data-analysis | legal-regulatory | culture-essays\n- rationale: 1–2 sentences naming a SPECIFIC piece of work from the last 6\n  months, with a working link to it\n- cited_by: 1+ concrete example of another credible voice citing/building on\n  them (link)\n- cadence: rough posting frequency (daily/weekly/monthly)\n- flags: empty, or any of [undisclosed-promotion-history, anon,\n  project-affiliated:<project>]\n\nDELIVERABLES (files):\n1. voices.csv — one row per voice, columns exactly as the fields above\n   (identifiers as a JSON object in one column; links pipe-separated)\n2. voices.json — same data as a JSON array\n3. README.md — method note (sources swept, how cited_by evidence was gathered),\n   per-category counts table, and a shortlist of the 20 voices with the\n   strongest cited_by evidence\n\nACCEPTANCE (checkable from delivered files alone): ≥ 300 rows; every row has a\nrationale link and ≥ 1 cited_by link; every category from the list is non-empty;\nCSV parses with consistent columns; README counts match the CSV.","types":["research"],"audits":[],"paidBy":"0xbe80e5979313cf8aff2b8e54e615fe3ecd8358f5","release":null,"research":[{"jobId":"bea3fd5d-8fc8-4408-8d7b-f9748277763f","panel":{"quorum":2,"wanted":5,"vendors":["claude","codex"],"answered":4},"steps":1,"commit":null,"repoUrl":null,"publishedAt":"2026-10-25T04:11:26.523+00:00","pullRequestUrl":null}],"versions":[],"contracts":[],"publishedAt":"2026-10-25T04:11:26.523+00:00"},{"id":"job:3d4382bf-120a-4ddd-b666-638e9eb3aeb2","code":[],"media":[],"sites":[{"id":"385db441-e960-4afb-938c-aba88f607490","cid":"bafybeidgrvdxvylxl4eifut4cm2sw7vnkv3ddxtathd47cme2sq5p7bhmy","jobId":"3d4382bf-120a-4ddd-b666-638e9eb3aeb2","label":"ten-onchain-projects-surfcoderep","status":"named","txHash":"0x8e155dc747f6c6f5005599a121f84b095f7b49f1e7d173cd9afb90d429bbabec","ensName":"ten-onchain-projects-surfcoderep.identitymd.eth","failure":null,"namedAt":"2026-10-25T03:48:16.313+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2560-lets-create-super-minimalist","pinnedAt":"2026-10-25T03:47:53.438+00:00","createdAt":"2026-10-25T03:47:09.07+00:00","previewHash":null,"supersededBy":null}],"title":"Lets create a super minimalist website with almost no styling. \n\nIt is about upcoming 10 minimal onchain projects that are constrained to no tokens (nft or erc20), no pausable or owner owned functions, and no uis, only playable via etherscan, it is an art project to try to create demand when there aren't token or NFT upside incentives, project by @surfcoderepeat on twitter (link to twitter)\n\nwe will update the site with the projects as we launch them","types":["sites"],"audits":[],"paidBy":"0x047f606fd5b2baa5f5c6c4ab8958e45cb6b054b7","release":null,"research":[],"versions":[],"contracts":[],"publishedAt":"2026-10-25T03:48:16.313+00:00"},{"id":"launch:c73cd49e-64ee-4a60-bb62-47efd46b4de2","code":[],"media":[],"sites":[],"title":"A custom token: MINT GAME (MINT).\nToken name: MINT GAME\nToken symbol: MINT\nToken supply: 1,000,000,000 with 18 decimals, all minted once to the deployer in the constructor.","types":["contracts"],"audits":[],"paidBy":"0x1ee3ffadfe138415a2ddaedeebe5f46616fa413d","release":null,"research":[],"versions":[],"contracts":[{"id":"c73cd49e-64ee-4a60-bb62-47efd46b4de2","kind":"custom_token","token":{"logo":"8ed44265b72fc972160dd84859e25e14539eded0636c578e54b53ec2a3b84002","name":"MINT GAME","symbol":"MINT"},"seeded":{"pools":[{"fee":12500,"hooks":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000","currency0":"0x30e03419c4d83900ba7ff6a071f7a359afb55520","currency1":"0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7","tickSpacing":60}],"launched":[],"positions":[{"factory":"0xff03410d0fe5fa8f7f59f743de35e333d9857120","tickLower":-128940,"tickUpper":887220,"launchNumber":2559}]},"status":"live","chainId":1,"artifacts":[{"name":"MerkleDistributor","role":"distributor","txHash":"0xcffecbfe7b150f7cf2c980f7c4c22aa1b05c098f79ee7b8c59e3bc995c0810a1","address":"0x9008c1e14b379de4fa30ad0af72f81904157117c"},{"name":"MintGame","role":"token","txHash":"0xcffecbfe7b150f7cf2c980f7c4c22aa1b05c098f79ee7b8c59e3bc995c0810a1","address":"0x30e03419c4d83900ba7ff6a071f7a359afb55520"},{"name":"PoolInitializationGuard","role":"hook","txHash":"0xcffecbfe7b150f7cf2c980f7c4c22aa1b05c098f79ee7b8c59e3bc995c0810a1","address":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000"}],"createdAt":"2026-10-25T03:30:59.498+00:00","updatedAt":"2026-10-25T03:31:37.1+00:00","launchNumber":2559,"parkedReason":null,"sourceCommit":"110b4beb8b570e47fcbbc3606f1efede2af7e087","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2559-mint-game"}],"publishedAt":"2026-10-25T03:30:59.498+00:00"},{"id":"launch:6bbd400c-3937-4054-9b00-aedee80a8716","code":[],"media":[],"sites":[],"title":"A contract that has a counter , each time someone up 1 the counter it adds 100 to the counter, someone else can lower the counter by 100 too, the wallet that gets to 1000 in the counter is declared a winner","types":["contracts"],"audits":[],"paidBy":"0x047f606fd5b2baa5f5c6c4ab8958e45cb6b054b7","release":null,"research":[],"versions":[],"contracts":[{"id":"6bbd400c-3937-4054-9b00-aedee80a8716","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":4663,"artifacts":[{"name":"CounterGame","role":"other","txHash":"0x9cfac8e7f25b22583202dbe611b8011698d8df9b7cdb2f36dee7db35886d4bf5","address":"0x0bab26f7d65a941c2fe5d39d6ad61ae0ec62bc48"}],"createdAt":"2026-10-25T02:30:01.779+00:00","updatedAt":"2026-10-25T02:30:10.537+00:00","launchNumber":2557,"parkedReason":null,"sourceCommit":"dd5a26a90673669f1c970fed5af77a0a20975750","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2557-contract-has-counter"}],"publishedAt":"2026-10-25T02:30:01.779+00:00"},{"id":"job:5afefd90-862c-499a-aa1a-56964a2212b3","code":[],"media":[],"sites":[{"id":"8bb5ed5f-4a4c-4090-9966-adcf1e98d67b","cid":"bafybeicwefbxfrzccjvgvez4bp2ecm7mrkxpqfp6onsrwaiig3274pdlwm","jobId":"5afefd90-862c-499a-aa1a-56964a2212b3","label":"ns-hashnest","status":"named","txHash":"0xaff4e04722cd1b087d3715337b85ed9bf0f87d1589b30a6c5a676553556f01fc","ensName":"ns-hashnest.identitymd.eth","failure":null,"namedAt":"2026-10-25T01:18:28.503+00:00","repoUrl":null,"pinnedAt":"2026-10-25T01:18:10.845+00:00","createdAt":"2026-10-25T01:17:09.568+00:00","previewHash":null,"supersededBy":null}],"title":"Build the website for HashNest. A one-page site for HashNest: the promise (Democratize efficient crypto mining with zero-hassle, profitable returns for all.), who it is for (Retail investors and small businesses seeking passive income through optimized, managed mining hardware.), the products with prices, a buy button per product, and a short FAQ. Products and their buy links: \"MiningCalc Pro\" ($9.00, buy link https://getnightshift.tech/buy/hashnest/1df8c306-e613-477d-85b3-5cfad6137b9b). The buy links take payment themselves; link to them, do not add a wallet. Static site, fast, works on a phone.","types":["sites"],"audits":[],"paidBy":"0x711bab409ae103ec26f779cf03421ff1a9a623c8","release":null,"research":[],"versions":[],"contracts":[],"publishedAt":"2026-10-25T01:18:28.503+00:00"}],"pageSize":20,"totalPages":233}