{"q":"handoff","page":1,"sort":"newest","type":"all","count":192,"items":[{"id":"job:0d68ff3b-01a8-4c84-91fa-13c9e8d9dcb0","code":[],"media":[],"sites":[{"id":"b0d09289-a046-46ba-ae69-47b01e73c24c","cid":"bafybeictsuhzbyskdt3fcssoan3g6ijik2b337ppqnkjpkdzocxntupdcu","jobId":"0d68ff3b-01a8-4c84-91fa-13c9e8d9dcb0","label":"stratoks-a-little-world-unf-0d68","status":"named","txHash":"0xb6b48e9c8b2f0103a9454bff1d1f5dbd45d32f95a26fd31cf433208869d3aa11","ensName":"stratoks-a-little-world-unf-0d68.identitymd.eth","failure":null,"namedAt":"2026-10-27T13:32:25.046+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2613-stratoks-phase-integrate-scientifically","pinnedAt":"2026-10-27T13:32:04.797+00:00","createdAt":"2026-10-27T13:31:25.439+00:00","previewHash":null,"supersededBy":null}],"title":"STRATOKS PHASE 2A: Integrate a scientifically grounded, lightweight fruit-fly-inspired learning brain into the existing shared-world application. Deliver code, an inspectable demo and measured evidence. Art and IMD payments follow later.\n\nBASELINE\nImport this recovered source ZIP into your deliverable repository before editing:\nhttps://stratoks.2-31-126-178.sslip.io/handoff/stratoks-09af84d.zip\nSHA256: 8816bfda36545436f85d4ca0b13bd439be14fb3a6be285f25bd39f3edf8abd9e\nCommit: 09af84d67722e30c0cb0c096ab8a8189a3b03166.\nOld GitHub main lacks recovered fixes and is NOT the baseline. Verify checksum and inspect server/docs/LEARNING.md and docs/recovery/VALIDATION.md. Preserve the full application and existing tests. No production access or live writes; owner deploys after review.\n\nMODEL AND HONESTY\nCompare open Drosophila circuits using primary sources, including https://github.com/philshiu/Drosophila_brain_model . Check code AND dataset licenses for this future paid-interaction product. Pin sources, versions, citations, model equations, parameters and asset checksums. Do not bundle restricted data without permission.\nImplement an explicitly reduced Drosophila-inspired sensory/associative-learning/action-selection circuit, preferably mushroom-body-inspired, suitable for the hardware below. Explain which biological mechanisms are modeled and which are omitted. An independently implemented reduced model is acceptable; do not relabel the current linear contextual bandit as a fly brain. If using connectome-derived wiring, provide neuron/circuit provenance and reduction mapping. Never claim full brain emulation, consciousness or that fly circuits natively encode building, reproduction or wallet identities.\n\nBEHAVIOR\nWire actual world observations through the new circuit into action scores, not decorative neural telemetry. Use bounded local perception, food/threat cues, internal hunger/energy and reward/punishment to learn preferences. No paid inference API, LLM or GPU dependency. Local circuit state and learned associations must differ per creature.\nDemonstrate learning which cues/locations predict food, avoiding learned danger, and reversing a preference when rewards change. Preserve existing personality, relationships and authenticated helpful/harmful wallet memory; document these game-level abstractions separately from biology. Keep resource costs, fertility, births/deaths, construction and disasters. Actions must affect the shared world.\n\nINTEGRATION AND PERSISTENCE\nAdd a versioned brain interface with legacy and new modes, deterministic RNG and reproducible configuration. Preserve IDs, world age, family/history, needs, wallet memories and existing learned weights. Use a versioned, non-destructive migration: retain legacy weights even where no meaningful translation exists. Document initialization of new circuit state rather than claiming equivalent learning transfer. Persist new weights, internal state and RNG through restart and backup/restore. Test rollback on a copied world. No reseeding, covert reset or population culling for performance. Production defaults remain legacy until explicit operator activation after validation.\n\nCLIENT\nPreserve layout and current art. Add a compact creature Brain/Behavior inspector: active mode, sensed cues, learned preferences, action candidates, selected action and reward history from real server data. Distinguish reflex/rule/model decisions. Publish a static browser client through IMD with clearly labeled isolated demo scenarios and configurable HTTPS/WSS server connection. Demo controls cannot mutate production. Two real clients must observe the same server decisions. Deliver server source and Docker package; IMD need not host a backend.\n\nACCEPTANCE\nCompare legacy, new learning-enabled and new frozen-learning modes on identical scenarios over at least 10 fixed seeds. Include acquisition, held-out evaluation without learning, reward reversal, threat avoidance and restart retention. Report raw results, variability and failures; do not hard-code expected preferences. Ablate the new circuit to establish causal influence, and ensure scripted reflexes are not presented as learning.\nTarget Ubuntu x86_64, 1 shared vCPU, 1 GB RAM total, world container 512 MB/0.75 CPU. Benchmark 24, 100 and 250 creatures plus multiple clients under those limits; report measured sustainable capacity, RSS, tick p95/p99 and protocol payloads. Preserve the 1-second tick at the supported population; report unsupported scales honestly. No unbounded neural state or logs.\n\nDELIVER\nSource commit, runnable tests, dependencies/licenses, model comparison and chosen rationale, migrations/rollback, benchmark outputs, browser evidence and public client URL. Independently review learning causality, persistence, authorization and regressions against this exact release. No new token, contracts, payment collection or production deployment. Flag unresolved scientific, license or capacity blockers explicitly.","types":["sites"],"audits":[],"paidBy":"0x48e4e74fe1d0c14404ceb57b9fec5b21329c6ec9","release":null,"research":[],"versions":[],"contracts":[],"publishedAt":"2026-10-27T13:32:25.046+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:cad0c789-2611-4392-bec0-456cb8e57d2c","code":[],"media":[],"sites":[{"id":"04cbe541-6640-4ebd-9c4f-4311f8cbb580","cid":"bafybeih2gh2tdhnimya7rh34vr3ct55siw2k2gqpdrjf757h2czhsoa22u","jobId":"fad0a15b-204c-47ff-bb2a-d9d403468ac3","label":"stepstoke","status":"taken_down","txHash":"0x1d794335bf533138c1d7528fac1e3da25b4b309c03ddda486de524e81b276e7f","ensName":"stepstoke.site.identitymd.eth","failure":null,"namedAt":"2026-10-23T03:49:50.843+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2455-relayencoder-relayverifier-relayfactory","pinnedAt":"2026-10-23T03:46:54.57+00:00","createdAt":"2026-10-23T03:46:45.641+00:00","previewHash":null,"supersededBy":null},{"id":"a44b1c5c-de19-4d81-82fd-a0d258e8426f","cid":"bafybeig66qu635fpgqvbn6ymxxvxwfelkj27an6klzdgsxli35ccxgcuni","jobId":"767c92c6-330a-4f81-8da9-ba812843401d","label":null,"status":"taken_down","txHash":"0x63441eb0da35a87bd9861ec252117669b12a4f82f0c9458bd8f349f0c9674e4d","ensName":"stepstoke.site.identitymd.eth","failure":null,"namedAt":"2026-10-23T01:39:02.276+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2455-relayencoder-relayverifier-relayfactory","pinnedAt":"2026-10-23T01:38:16.366+00:00","createdAt":"2026-10-23T01:37:51.986+00:00","previewHash":null,"supersededBy":"04cbe541-6640-4ebd-9c4f-4311f8cbb580"}],"title":"Deploy the locally repaired and independently accepted STEPS (Stepstoke) contracts from the EXACT public repository and commit specified below. Contracts-only Ethereum mainnet release. The previous development-only prohibition is superseded solely for this deployment order after the local release gate has passed. Do not publish, host, rebuild or connect the website in this order; website integration follows a separate independent deployment acceptance gate. Do not open any paid child job, product round, additional repair or replacement order.\n\nPreserve the repaired contracts, six operations, exact explicit payment, Branch-as-payer, one active request, authenticated success/failure callbacks, full original-result Keccak binding, file SHA-256 verification, accepted checkpoints and historical forks. Three named launch contracts in this order: RelayEncoder(), RelayVerifier(), RelayFactory($contract:RelayEncoder,$contract:RelayVerifier). Static constructor arguments only; no ETH value, post-deployment initialization or external constructor calls. Runtime createProject/fork continues to create complete independent Branch contracts. No template Branch deployment, proxies, DELEGATECALL, CALLCODE, SELFDESTRUCT, linked external libraries, owner/admin/upgrade/pause/forced unlock, token, pool, hook or treasury. The service deploys through its official launch path; workers must not obtain keys or broadcast independently.\n\nThis source contains local repairs after the earlier IMD candidate. Preserve that authorship and provenance honestly. Use the mandatory imported-source audit/adaptation/review stages; make only strictly necessary deployment packaging changes. Never revert local repairs, lower compatibility limits, replace raw result bytes with a projection, raise the Ethereum transaction gas limit or waive a test for a deadline. If substantive contract changes are required, report the blocker rather than silently deploy a materially different product. Deliver the exact final source commit, complete diff from the imported commit, build settings, deployment manifest, ABIs, ABI hashes, runtime hashes and immutable bindings for independent post-deployment checking.\n\nReproduce the accepted 32768-byte C-GAS-01 regression (SHA-256 8768318db71105397ac89eef44af007752b94e966eb8adebd237a2b97c9de805) with the original 16-asset witness as a complete Branch.bind transaction below 16777216 gas. Preserve Unicode/escaped/raw JSON semantics and current budgets. Run final-source contract/fuzz/invariant/SDK/security/gas/size/constructor-policy checks, including launch deployment rehearsal. Local chain transactions are allowed; funded public product tests are not.\n\nEthereum chainId 1 only. Preserve compiler/dependency settings, source reproducibility, all reviewed safety properties and release evidence. Unresolved material security, gas, size, launch-policy or reproducibility findings must block deployment. Local test acceptance permits this launch; it does not prove public transport, actual deployment, live paid profiles or production readiness. Keep productionReady=false and unperformed live profile checks NOT_RUN. A successful launch label alone does not authorize website publication or paid UI activation.\n\nProvide the official launch ID, actual deployment transaction hash, canonical receipt/block, deployed addresses, actual transaction sender and contract-creation caller, exact constructor arguments, verified source links and the official deployment handoff if available. Do not invent missing handoff fields. A final source/result file is not proof of deployment. Keep all task outputs and documents in English. Existing identity is STEPS / Stepstoke and https://x.com/stepstoke; no branding work or social posting.","types":["contracts","sites"],"audits":[],"paidBy":"0x0bced6bf6f6db1d7ac5bc0b540482d170a027352","release":null,"research":[],"versions":[{"site":null,"jobId":"09baba31-7451-4891-9562-4c27d9111a09","state":"completed","commit":"751f3901d4453e1477828e4f7ef0d6af8bc03485","repoUrl":"https://github.com/identity-md-launches/launch-2455-relayencoder-relayverifier-relayfactory","createdAt":"2026-10-22T05:06:06.578618+00:00","objective":"Deploy the locally repaired and independently accepted STEPS (Stepstoke) contracts from the EXACT public repository and commit specified below. Contracts-only Ethereum mainnet release. The previous development-only prohibition is superseded solely for this deployment order after the local release gate has passed. Do not publish, host, rebuild or connect the website in this order; website integration follows a separate independent deployment acceptance gate. Do not open any paid child job, product round, additional repair or replacement order.\n\nPreserve the repaired contracts, six operations, exact explicit payment, Branch-as-payer, one active request, authenticated success/failure callbacks, full original-result Keccak binding, file SHA-256 verification, accepted checkpoints and historical forks. Three named launch contracts in this order: RelayEncoder(), RelayVerifier(), RelayFactory($contract:RelayEncoder,$contract:RelayVerifier). Static constructor arguments only; no ETH value, post-deployment initialization or external constructor calls. Runtime createProject/fork continues to create complete independent Branch contracts. No template Branch deployment, proxies, DELEGATECALL, CALLCODE, SELFDESTRUCT, linked external libraries, owner/admin/upgrade/pause/forced unlock, token, pool, hook or treasury. The service deploys through its official launch path; workers must not obtain keys or broadcast independently.\n\nThis source contains local repairs after the earlier IMD candidate. Preserve that authorship and provenance honestly. Use the mandatory imported-source audit/adaptation/review stages; make only strictly necessary deployment packaging changes. Never revert local repairs, lower compatibility limits, replace raw result bytes with a projection, raise the Ethereum transaction gas limit or waive a test for a deadline. If substantive contract changes are required, report the blocker rather than silently deploy a materially different product. Deliver the exact final source commit, complete diff from the imported commit, build settings, deployment manifest, ABIs, ABI hashes, runtime hashes and immutable bindings for independent post-deployment checking.\n\nReproduce the accepted 32768-byte C-GAS-01 regression (SHA-256 8768318db71105397ac89eef44af007752b94e966eb8adebd237a2b97c9de805) with the original 16-asset witness as a complete Branch.bind transaction below 16777216 gas. Preserve Unicode/escaped/raw JSON semantics and current budgets. Run final-source contract/fuzz/invariant/SDK/security/gas/size/constructor-policy checks, including launch deployment rehearsal. Local chain transactions are allowed; funded public product tests are not.\n\nEthereum chainId 1 only. Preserve compiler/dependency settings, source reproducibility, all reviewed safety properties and release evidence. Unresolved material security, gas, size, launch-policy or reproducibility findings must block deployment. Local test acceptance permits this launch; it does not prove public transport, actual deployment, live paid profiles or production readiness. Keep productionReady=false and unperformed live profile checks NOT_RUN. A successful launch label alone does not authorize website publication or paid UI activation.\n\nProvide the official launch ID, actual deployment transaction hash, canonical receipt/block, deployed addresses, actual transaction sender and contract-creation caller, exact constructor arguments, verified source links and the official deployment handoff if available. Do not invent missing handoff fields. A final source/result file is not proof of deployment. Keep all task outputs and documents in English. Existing identity is STEPS / Stepstoke and https://x.com/stepstoke; no branding work or social posting.","baseCommit":"c511aabb128d77336ff9dfe437b2c8a7e472e274","workflowId":null,"deliveredAt":"2026-10-22T07:49:30.845+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2455-relayencoder-relayverifier-relayfactory/pull/1"},{"site":{"cid":"bafybeig66qu635fpgqvbn6ymxxvxwfelkj27an6klzdgsxli35ccxgcuni","status":"taken_down","ensName":"stepstoke.site.identitymd.eth"},"jobId":"767c92c6-330a-4f81-8da9-ba812843401d","state":"completed","commit":"ea16957ccbd15763a6cb0861023637ff8054c8dc","repoUrl":"https://github.com/identity-md-launches/launch-2455-relayencoder-relayverifier-relayfactory","createdAt":"2026-10-23T00:47:20.830413+00:00","objective":"Connect and publicly host the existing English STEPS (Stepstoke) website against the verified Ethereum contracts of this SAME IMD project, after deployment acceptance. Preserve the platform design and six operations: create, propose, explicitly fund, inspect outputs/history, continue and historical fork. Sequence/history and current output remain primary. All content/documents English. Identity: STEPS / Stepstoke, https://x.com/stepstoke. No rebranding, mechanism expansion, social posting or hackathon submission.\n\nContract source is official commit 751f3901d4453e1477828e4f7ef0d6af8bc03485, launch cad0c789-2611-4392-bec0-456cb8e57d2c, chain 1. Never redeploy, replace or edit contracts/compiler/ABIs/launch manifest. No owner/admin/proxy/token/pool/hook, paid child job, funded product test, key access or worker broadcast. Only the actual live project's verified handoff supplies addresses; a completed job/admitted label is insufficient. Stop on missing or invalid deployment evidence.\n\nApply the exact local correction from https://github.com/Goderbug/steps-stepstoke/tree/a523c571e874a783967e212b303e4b81f5c9876f atop the inherited official source; preserve local versus Swarm authorship. Copy only README.md, config/release.json, config/production-gate.json, sdk/strict-json.mjs, frontend/package.json, test-sdk/release-correction.test.mjs, test/release/check-generic-json.mjs and docs/validation/release-correction-v1/. Do not replace Git history. Every Solidity input and ABI remains unchanged. This fixes the complete 50-source inventory, generic JSON's 256-token cap and documented 8*segmentFlushes work charge; manifest capacity stays 1024. Retain the gas guard and its explicitly narrower compatibility. Do not import any local test deployment or rehearsal addresses.\n\nUse actual .imd/reads/deployment.json and project/network handoffs only after launch is live. Independently verify canonical successful receipt/block, actual outer sender and creation caller, three addresses, creation/runtime code, constructor Encoder/Verifier references and immutables. Keep actual official contract-source commit and later website-source commit separate. The corrected full compilation inventory still matches all Solidity inputs at the official commit. Use existing tools/import-deployment.mjs and SDK verification; no permissive replacement or fabricated evidence.\n\nVerify anonymous public HTTPS and browser CORS for ALL methods the shipped verifier requires, including historical code and debug_traceTransaction. Fail closed on unavailable trace/receipt/code, wrong network, runtime/immutable mismatch, malformed handoff or reorg. No local proxy, secret RPC key, wallet for reads, mocked route or downloaded trace bypass. Verify actual artifacts against authenticated descriptors and retain manual file verification when transport fails. Stop publication if real public transport cannot satisfy these checks.\n\nKeep deployment validity, live compatibility and wallet authority separate. Import actual verified deployment into release and production-gate configuration. Unperformed profile checks remain NOT_RUN; paid controls stay disabled while their gates are open. Deployment alone cannot set productionReady=true. A connected hosted site with disabled payments must be described exactly that way, not as a fully validated live service. Carry forward profile PASS only with matching evidence for this deployment. This order does not buy live tests.\n\nRun final SDK regressions, frontend typecheck/unit/build, strict release checks and local public-mode handoff/browser checks; separately verify the real chain and actual public browser transport. Rebuild dist after all changes, then import the authentic handoff AFTER build. Hash every final asset, ABI, deployment evidence and public RPC policy. Remove temporary test files/fake handoffs. Retain safe previews, exact approvals, no automatic purchase/retry, no implicit signing and existing desktop/mobile layout.\n\nDeliver through IMD GitHub and IPFS/site hosting for this existing project. Report exact website commit, complete diff, actual site URL and CID, final asset inventory, deployment/source/ABI/runtime report, browser/CORS observations and honest limits. Use actual service output for publication claims. Do not claim success for an unavailable site, hash mismatch, failed verifier or demo served as the public primary route.\n\nDeployment is now independently verified. Receipt 0x6377bb6862896730e68c455685bd057d87ddeafca57633370df20c196479bad6, Ethereum block 26248821, source 751f3901d4453e1477828e4f7ef0d6af8bc03485, attestation e1bfa2900f7b58e29f97514ac45694a4869136e95821dc31ca8a8375437315ce. These are cross-check coordinates, not a replacement handoff. Refresh them independently from the actual live project and public RPC. Root verified all 50 source inputs, all three creation/runtime codes and immutable bindings, and 15 browser public-read checks. Update stale pending-deployment wording in the final website/docs while preserving honest NOT_RUN live-profile status.","baseCommit":"751f3901d4453e1477828e4f7ef0d6af8bc03485","workflowId":null,"deliveredAt":"2026-10-23T01:38:25.636+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2455-relayencoder-relayverifier-relayfactory/pull/2"},{"site":{"cid":"bafybeih2gh2tdhnimya7rh34vr3ct55siw2k2gqpdrjf757h2czhsoa22u","status":"taken_down","ensName":"stepstoke.site.identitymd.eth"},"jobId":"fad0a15b-204c-47ff-bb2a-d9d403468ac3","state":"completed","commit":"5fa15074293a9edd65561e0ec5fd4d18c4621644","repoUrl":"https://github.com/identity-md-launches/launch-2455-relayencoder-relayverifier-relayfactory","createdAt":"2026-10-23T03:08:02.279995+00:00","objective":"Update and republish the EXISTING English STEPS / Stepstoke website under its existing stepstoke site label. Continue this same project; do not create another project or redeploy contracts. Apply the already tested local production-UI correction exactly, including reviewed branding and removal of all public demo pages. This order is frontend integration and same-name hosting only, not a redesign or new feature build.\n\nExact correction source: https://github.com/Goderbug/steps-stepstoke/tree/e23d80b674d7a776d29e85caf8e172991ff5f52a . It is based on your current official website commit ea16957ccbd15763a6cb0861023637ff8054c8dc. Read docs/validation/production-ui-v1/README.md, source-manifest.json, RESULT.json, export.json and the desktop/narrow screenshots. Original application and Joined Steps assets are IMD work; their integration and demo removal are local Codex changes. Preserve that provenance. Import only frontend/, brand/, the README correction note and docs/validation/production-ui-v1/. Mirror the frontend test moves/deletions: old demo browser scenarios live in tests/legacy-demo-e2e, outside the production test target. Do not import node_modules, local-config.json, local wallet data or an old dist tree. No contract, SDK, ABI, package-lock, compiler or release/production-gate configuration changes.\n\nRequired presentation: preserve the Open Workshop warm canvas, ink text and vermillion accent from the pinned correction; use the exact Joined Steps symbol and custom STEPS wordmark in the header and footer. Keep slogan \"Build on every step.\", Stepstoke identity and https://x.com/stepstoke. Copy the pinned favicon/share/brand bytes and font-license provenance. Frontend favicon.svg SHA256 272911dfd664759ba5b4119bab027ee2b58de89f239f51fc57a67a052d65be3a; og.png SHA256 59d35760d7f491988d818a211520ed745d76e960f3f6983ff5bfb5829a5ec0df. Do not substitute the previous icon or plain text header. Home explains Propose / Fund / Build / Continue and its Browse projects CTA opens real Ethereum projects. Preserve the current logo, wording, spacing, narrow-screen behavior and safe file-preview/sequence components.\n\nRemove the Demo page, Components showcase page, all corresponding navigation/CTA/deployment-page links and simulated-data entry copy. #/demo, #/demo/b/* and #/showcase return to home. No fixture project, fake round or demo failure controls may be reachable or seeded by the production export. Keep test fixtures only for domain tests; ensure built JavaScript excludes fx-branch-1, platform.fixture.v1, Demo settings, Demo failure controls and Preview safety lab. Do not restore demo routes to satisfy historical demo tests. Production tests are tests/e2e/brand-entry.spec.ts; the historical tests are explicitly archived. The homepage must remain the branded production introduction, not an empty chain list, demo branch or technical configuration page.\n\nKeep the existing authenticated Ethereum deployment: launch cad0c789-2611-4392-bec0-456cb8e57d2c, contract source 751f3901d4453e1477828e4f7ef0d6af8bc03485, transaction 0x6377bb6862896730e68c455685bd057d87ddeafca57633370df20c196479bad6, block 26248821. Use the service's actual .imd/reads/project.md, deployment.json and network.json; verify the canonical receipt, trace, runtime, immutables and actual public RPC transport with existing tools/SDK. Never fabricate a handoff or relax verification to publish. Preserve all deployed addresses and all 50 frozen Solidity inputs. Keep liveCompatibility=NOT_RUN and productionReady=false; paid controls remain disabled. No new deployment, token, pool, hook, owner/admin, permissions, paid child orders, funded product tests, wallet secrets or agent-initiated product transactions. The service-controlled official GitHub/IPFS/ENS hosting update is expressly authorized.\n\nRun frontend typecheck, 100 unit tests and the final production browser suite at 1440, 390 and 320; check logo geometry/assets, visible slogan, first-screen CTA, removed-route redirects, no horizontal overflow, actual handoff validation and closed payment gates. Confirm protected contracts/SDK/ABI/config bytes remain unchanged. Build final dist, then import the authentic deployment handoff AFTER build so every final asset hash matches. Keep relative runtime asset paths. Set social/canonical metadata to the existing verified host when appropriate; do not claim X unfurl acceptance without testing it. Update only current frontend/product docs that still describe removed demo navigation. Preserve historical evidence as history, not current acceptance.\n\nPublish through this project's official GitHub and IPFS/site pipeline with the SAME stepstoke label. Deliver exact commit, changed paths, final source/asset hashes, tests, site URL/CID and honest limits. Independently inspect the final host when available. If hosting or RPC verification fails, report the blocker; never relabel a local preview as published. No social post or hackathon submission. The required deliverable is the reviewed production UI on the existing site, with branding present and demo sections absent.","baseCommit":"ea16957ccbd15763a6cb0861023637ff8054c8dc","workflowId":null,"deliveredAt":"2026-10-23T03:46:59.187+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2455-relayencoder-relayverifier-relayfactory/pull/3"}],"contracts":[{"id":"cad0c789-2611-4392-bec0-456cb8e57d2c","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"RelayEncoder","role":"other","txHash":"0x6377bb6862896730e68c455685bd057d87ddeafca57633370df20c196479bad6","address":"0xae9a9624e6354bbd029fefa762bafd43fb9f6886"},{"name":"RelayFactory","role":"other","txHash":"0x6377bb6862896730e68c455685bd057d87ddeafca57633370df20c196479bad6","address":"0xff1519c0b9ae4053d1505bc0e5226178109e0abc"},{"name":"RelayVerifier","role":"other","txHash":"0x6377bb6862896730e68c455685bd057d87ddeafca57633370df20c196479bad6","address":"0x52a459aaf8044c5bc7f5a8198ef7305367e98ec4"}],"createdAt":"2026-10-22T07:49:30.845+00:00","updatedAt":"2026-10-22T14:42:02.648+00:00","launchNumber":2455,"parkedReason":null,"sourceCommit":"751f3901d4453e1477828e4f7ef0d6af8bc03485","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2455-relayencoder-relayverifier-relayfactory"}],"publishedAt":"2026-10-23T03:49:50.843+00:00"},{"id":"launch:01a31e09-09ec-4ce6-9b65-e58c2047da03","code":[],"media":[],"sites":[],"title":"Launch the exact pinned IMD-compatible MUGI V1 source on Ethereum mainnet through the contracts-only path. Inspect ADAPTATION.md, README.md, docs/IMD_CONSTRUCTOR_DEPLOYMENT.md, docs/validation/compatible, inventory.json, launch.json, src and all tests. This supersedes the earlier rejected mint/freeze/pause/post-initialization design. Review this new source on its merits; no policy exception is requested. Preserve Solidity 0.8.26, Cancun, optimizer 200, viaIR and bytecode_hash none. Packaging/manifest adjustments are allowed; if source fixes are necessary, report them before deployment rather than deploying modified code automatically. The initial IMD transaction creates exactly four full-code owner-bound factories in manifest order. Each constructor is nonpayable and has only one static address owner argument; none creates children, calls dependencies or checks external code in its constructor. The main factory constructor pins the hash and length of the exact raw hook creation code compiled from this source, without unresolved constructor arguments. Do not introduce a standard token launch, distributor, swarm allocation, proxy, delegatecall route or token-launch economics. FULL APPLICATION DISCLOSURE: all nineteen later descendants are in scope for audit and admission: ten crew ERC20s, the hook, airdrop, swap router, VRF adapter, IMD verifier, ledger, budget controller, price oracle and V4 liquidity engine. After the four factories exist, five separate owner transactions create these applications with complete final constructor configuration. Fixed CREATE nonces predict future dependencies, breaking cycles. The complete fourteen-static-field hook tuple and a mined CREATE2 salt are committed during service-module creation; deployHook checks the complete commitment and the constructor-pinned raw creation code. All child constructor arguments are static. No application initialize/configure/bindAccounting/dependency replacement is needed or available. Economic activation validates reciprocal bindings, token identity and all ledger exclusions. The four registry entries index factories only, not their descendants. Do not claim the whole game is deployed or active when only factories exist. Service coordinator/subscription, attestor and signer settings and final graph addresses need a reviewed subsequent deployment plan; mock values are forbidden for live operation. GAME RULES: ten crews, initial 95/5 LP/airdrop allocation, fixed daily cutoffs, nine VRF eliminations, seventy-five-percent loser conversions, pro-rata treasures, LP redistribution, bounded buybacks, team fees, timeout recovery and thirty-day final claims remain. Every crew token creates its entire finite reserve once in its constructor. There is no external mint capability; the hook releases already-held reserve under bounded game rules. totalSupply includes the unused reserve and must not be called circulating supply. Unused reserve is excluded from eligibility and burned when its crew or season closes. Tokens transfer freely at all times, including cutoff and after elimination; no holder confiscation or hook token callbacks remain. Burn only burns the caller own balance. There is no owner trading pause. Timestamp snapshots strictly before scheduled cutoffs preserve earned rights; official game pools and token reward materialization retain published round/alive/cutoff gates. Disclose and assess these gates explicitly instead of equating them to ERC20 freezes. V2 CONTINUITY: V2 is separate future work. After ordinary finale V1 retires unused reserve, retains player token backing and reserved player/team ETH, then permits an owner-only one-shot atomic handoff of only available inventory/ETH to a deployed receiveV1Finale(uint8,address,uint256) receiver. A zero constructor target allows the owner to choose a future receiver; a nonzero pin is enforced. Receiver failure rolls everything back. Claims continue in V1; emergency closure cannot migrate. This is protocol-fund continuity, not automatic wallet-level V2 allocation. Actual V2 receive, configure, seed, launch and buy integration is tested separately. Return explicit admission outcome, final source pin, IMD launch record, four factory addresses and transaction receipts. Do not deploy the nineteen children or seed pools as part of this request. Do not submit source verification to Etherscan, Blockscout, Sourcify or any explorer. If source verification is mandatory, stop with needs_input before deployment. Manifest: {\"contracts\":[{\"constructorArgs\":[\"0x20714d50f4675c366de30b603728a90ddddb240f\"],\"contract\":\"MugiIMDCrewFactory\"},{\"constructorArgs\":[\"0x20714d50f4675c366de30b603728a90ddddb240f\"],\"contract\":\"MugiV1IMDDeploymentFactory\"},{\"constructorArgs\":[\"0x20714d50f4675c366de30b603728a90ddddb240f\"],\"contract\":\"MugiIMDAccountingFactory\"},{\"constructorArgs\":[\"0x20714d50f4675c366de30b603728a90ddddb240f\"],\"contract\":\"MugiIMDEngineFactory\"}],\"kind\":\"evm_contracts\",\"notes\":\"Four owner-bound operational factories, each with one static owner constructor argument; no constructor dependency calls, code checks or child creation. Disclose and review all nineteen later full-code application descendants and five owner creation transactions. Every application is fully constructor-configured: no initialize/configure/bindAccounting or mutable dependencies. Tokens have constructor-only fixed reserves, no later mint, no transfer freeze or owner pause; game elimination/rewards use timestamp cutoffs and bounded reserve releases. V1 competition, reward distribution and V2 handoff remain. Raw hook creation code is pinned by the main factory constructor; full hook initcode/salt are committed during module creation. See docs/IMD_CONSTRUCTOR_DEPLOYMENT.md. Remote admission and deployment remain unproven. Factory registry entries do not individually index descendants. No explorer source verification.\"}","types":["contracts"],"audits":[],"paidBy":"0x20714d50f4675c366de30b603728a90ddddb240f","release":null,"research":[],"versions":[],"contracts":[{"id":"01a31e09-09ec-4ce6-9b65-e58c2047da03","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"MugiIMDAccountingFactory","role":"other","txHash":"0xd92c7322301ddafeb6f2a36e932122d04627a324f01f15123c4ede0e74f88d98","address":"0xd9fc6a449b3d3bf29750781e14a10bbaca7d8758"},{"name":"MugiIMDCrewFactory","role":"other","txHash":"0xd92c7322301ddafeb6f2a36e932122d04627a324f01f15123c4ede0e74f88d98","address":"0x83ce875fcac552c42e619e7e7e9a2c5bcd76bb3d"},{"name":"MugiIMDEngineFactory","role":"other","txHash":"0xd92c7322301ddafeb6f2a36e932122d04627a324f01f15123c4ede0e74f88d98","address":"0x8c34032394f4746fb03002c4945b219c46e46a3a"},{"name":"MugiV1IMDDeploymentFactory","role":"other","txHash":"0xd92c7322301ddafeb6f2a36e932122d04627a324f01f15123c4ede0e74f88d98","address":"0xf4ece3ede2f114e3abb5fc76467f9bfab8face16"}],"createdAt":"2026-10-22T02:38:27.363+00:00","updatedAt":"2026-10-22T14:41:13.192+00:00","launchNumber":2433,"parkedReason":null,"sourceCommit":"c0810417dd8eff328a603061be5d93aae3409460","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2433-mugiimdcrewfactory-mugiv1imddeploymentfa"}],"publishedAt":"2026-10-22T02:38:27.363+00:00"},{"id":"launch:e860d18a-8f10-4543-9b43-b0a945855c90","code":[],"media":[],"sites":[],"title":"Launch the narrowly repaired IMD-compatible MUGI V1 source, starting at this exact submitted source pin, on Ethereum mainnet through the contracts-only path. Inspect ADAPTATION.md, README.md, docs/IMD_CONSTRUCTOR_DEPLOYMENT.md, all docs/validation, inventory.json, launch.json, src and all tests. FOLLOW-UP: compare the delta from previously audited commit 9901dc71030df5818e4b307df1c5c43506346c12 and audit job 0c8421fb-4f6d-4650-8c90-d9fd7d7a79c5, accepted report hash 573ea9d5650bafcdc892589b64157aecbe9239f7efb89fa37b3d9bed699654f2. That report identified three blocking medium findings concerning owner-selected V2 destination, finale-fund liveness and owner/community treasury aliasing; report acceptance is not a clean audit. This source targets those findings with immutable receiver binding, permissionless bounded handoff and deadline fallback, and treasury separation. Expedite the focused regression review where possible for the requested 2026-10-22 00:00 UTC deadline, while retaining full admission, independent audit and security checks over the whole application. No policy exception is requested. Preserve Solidity 0.8.26, Cancun, optimizer 200, viaIR and bytecode_hash none. Prefer the exact submitted source. Necessary minimal source fixes and packaging adjustments are authorized through the normal audited pipeline, with regression tests and renewed independent review; preserve all explicit game, claims, reserve, immutable-V2 and community protections below. Do not stop merely because a safe focused fix is needed. Stop with needs_input if satisfying a finding would change those economic rules or requires unknown live child settings. Return the exact final source pin, diff and validation evidence for any adapted code; do not present adapted code as identical to the submitted commit. The initial IMD transaction creates exactly four full-code owner-bound factories in manifest order. Each constructor is nonpayable and has only one static address owner argument; none creates children, calls dependencies or checks external code in its constructor. The main factory constructor pins the hash and length of the exact raw hook creation code compiled from this source, without unresolved constructor arguments. Do not introduce a standard token launch, distributor, swarm allocation, proxy, delegatecall route or token-launch economics. FULL APPLICATION DISCLOSURE: all nineteen later descendants are in scope for audit and admission: ten crew ERC20s, the hook, airdrop, swap router, VRF adapter, IMD verifier, ledger, budget controller, price oracle and V4 liquidity engine. After the four factories exist, five separate owner transactions create these applications with complete final constructor configuration. Fixed CREATE nonces predict future dependencies, breaking cycles. The complete static hook tuple and a mined CREATE2 salt are committed during service-module creation; deployHook checks the complete commitment and the constructor-pinned raw creation code. All child constructor arguments are static. No application initialize/configure/bindAccounting/dependency replacement is needed or available. Economic activation validates reciprocal bindings, token identity and all ledger exclusions. The four registry entries index factories only, not their descendants. Do not claim the whole game is deployed or active when only factories exist. Service coordinator/subscription, attestor and signer settings and final graph addresses need a reviewed subsequent deployment plan; mock values are forbidden for live operation. GAME RULES: ten crews, initial 95/5 LP/airdrop allocation, fixed daily cutoffs, nine VRF eliminations, seventy-five-percent loser conversions, pro-rata treasures, LP redistribution, bounded buybacks, team fees, timeout recovery and thirty-day final claims remain. Every crew token creates its entire finite reserve once in its constructor. There is no external mint capability; the hook releases already-held reserve under bounded game rules. totalSupply includes the unused reserve and must not be called circulating supply. Unused reserve is excluded from eligibility and burned when its crew or season closes. Tokens transfer freely at all times, including cutoff and after elimination; no holder confiscation or hook token callbacks remain. Burn only burns the caller own balance. There is no owner trading pause. Timestamp snapshots strictly before scheduled cutoffs preserve earned rights; official game pools and token reward materialization retain published round/alive/cutoff gates. Disclose and assess these gates explicitly instead of equating them to ERC20 freezes. V2 CONTINUITY AND REMEDIES: V2 remains separate future work. A nonzero immutable V2 receiver must be configured before hook creation. Anyone may trigger the one-shot atomic handoff to that exact target only during the thirty-day ordinary-finale window. Retire unused reserve first; retain earned player token backing and reserved player/team ETH. Receiver failure must roll everything back. At the deadline a permissionless community fallback handles only unallocated protocol inventory/ETH while protecting claim liabilities under their published expiry rules. Preserve the surviving holders thirty-day claim window and prohibit emergency migration. The community treasury must differ from owner and team, including after ownership transfer; expired claims must not be redirected to owner through treasury aliasing. Audit these exact code-enforced remedies and their regression tests. The planned community recipient is 0x973d5993Be7021882f72da0babCF884e77F76bBb, a distinct wallet under the same operator, not an independent DAO. It differs from the owner/team wallet; do not claim independent community governance or custody. The V2 receiver remains null in the hook-constructor plan, explicitly unresolved required child configuration. Its real address must be reviewed before hook creation/activation, outside this four-factory request. Do not invent it or confuse pending child settings with the four factories owner-only constructor arguments. Handoff is protocol-fund continuity, not automatic wallet-level V2 allocation. Check actual V2 receiver integration and current low/informational findings, including third-party PoolManager custody exclusions and deployment gas including code deposit. Return explicit admission outcome, final source pin, IMD launch record, four factory addresses and transaction receipts, and distinguish local proof from deployed state. Do not deploy the nineteen children or seed pools as part of this request. Do not submit source verification to Etherscan, Blockscout, Sourcify or any explorer. If source verification is mandatory, stop with needs_input before deployment. Initial deployment entries: {\"contracts\":[{\"constructorArgs\":[\"0x20714d50f4675c366de30b603728a90ddddb240f\"],\"contract\":\"MugiIMDCrewFactory\"},{\"constructorArgs\":[\"0x20714d50f4675c366de30b603728a90ddddb240f\"],\"contract\":\"MugiV1IMDDeploymentFactory\"},{\"constructorArgs\":[\"0x20714d50f4675c366de30b603728a90ddddb240f\"],\"contract\":\"MugiIMDAccountingFactory\"},{\"constructorArgs\":[\"0x20714d50f4675c366de30b603728a90ddddb240f\"],\"contract\":\"MugiIMDEngineFactory\"}],\"kind\":\"evm_contracts\"}","types":["contracts"],"audits":[],"paidBy":"0x20714d50f4675c366de30b603728a90ddddb240f","release":null,"research":[],"versions":[],"contracts":[{"id":"e860d18a-8f10-4543-9b43-b0a945855c90","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"MugiIMDAccountingFactory","role":"other","txHash":"0xf50e98605c3f8dba31e4e3f814a9315a0fdcda1cdc724b8a7a937a5bb96e3bd0","address":"0x385acc46f3d3994207988468c6683a5dd87ee759"},{"name":"MugiIMDCrewFactory","role":"other","txHash":"0xf50e98605c3f8dba31e4e3f814a9315a0fdcda1cdc724b8a7a937a5bb96e3bd0","address":"0x8451e69b644b29ea0c3ba66e58c4899ed082f2ce"},{"name":"MugiIMDEngineFactory","role":"other","txHash":"0xf50e98605c3f8dba31e4e3f814a9315a0fdcda1cdc724b8a7a937a5bb96e3bd0","address":"0x46e1d002fdd815b152b92d92d94a7c5a52427a2e"},{"name":"MugiV1IMDDeploymentFactory","role":"other","txHash":"0xf50e98605c3f8dba31e4e3f814a9315a0fdcda1cdc724b8a7a937a5bb96e3bd0","address":"0x722ea196eef36ac0f83cbede49161b4be1ec7497"}],"createdAt":"2026-10-22T01:13:38.57+00:00","updatedAt":"2026-10-22T01:17:26.175+00:00","launchNumber":2439,"parkedReason":null,"sourceCommit":"c4ce756ba0a6db55c1c1347bf0216513588d6b33","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2439-mugiimdcrewfactory-mugiv1imddeploymentfa"}],"publishedAt":"2026-10-22T01:13:38.57+00:00"},{"id":"launch:7f26903e-62c7-4ae2-acab-6d06ded7a0eb","code":[],"media":[],"sites":[],"title":"Continue from the delivered OG Club repo identity-md-launches/launch-2382-continue-delivered-og-club at commit 20430cbddd7e849fadf64e07f0173eccc8f6f747 and launch it on ETHEREUM MAINNET (chain 1). It has been tested end to end on Sepolia with the live game (mint by Pepe, room upgrades, permanent floor and wall pieces, raffles). Keep every application's behaviour and ABI as it is, except the two small fixes below. Do not deploy any mock.\n \nAPPLICATIONS TO DEPLOY ON MAINNET (constructor-only, in dependency order)\n1. OGClubFurniture(owner, royaltyReceiver)\n2. OGClubFarmVault(OG token, owner)\n3. OGClubStaking(OG token, vault, owner, pointsPerTokenDay = 1000000000000000000)\n4. OGClubRaffle(staking, furniture, owner, raffleNotice = 604800)\n5. OGClubClubs(OG token, vault, price = 100000000000000000000000, furniture, owner, royaltyReceiver, Swarm Pepes, delegate registry, 200000000000000000000000, 400000000000000000000000, 800000000000000000000000)\n \nMAINNET INPUTS (use exactly these; do not deploy MockOG or MockSwarmPepe)\n- OG token (existing ERC-20, 18 decimals): 0xce7eb1ad9e2e1c784ea05f7ea4a0fe625923d10a\n- Swarm Pepes (existing ERC-721): 0x999ce0CE8C5f7661e0c74a568FfE27CEB9177bDB\n- delegate.xyz v2 registry: 0x00000000000000447e69651d841bD8D104Bed493\n- owner and royalty receiver of every contract: $owner (the job creator's wallet, as in the Sepolia launch.json). Ownership will later move to a Safe through Ownable2Step (transferOwnership, then acceptOwnership from the Safe); document that step in the README and keep it working for all five contracts.\nUpdate launch.json for mainnet: five applications, these values, MockOG and MockSwarmPepe removed, notes describing the owner handoff below.\n \nFIX 1 (judge low: constructor vault sentinels)\nOGClubClubs' constructor must also reject vault == pepes, and vault == delegates when delegates is nonzero (same UnexpectedTokenDebit error as the existing token/furniture/burn checks). Add both cases to the constructor rejection tests.\n \nFIX 2 (judge low: pending placement reinterpreted after a footprint edit)\nMake a footprint final once set: setFootprint reverts (FootprintLocked) for an id whose footprint is already set, whether or not it has been placed. This removes the race where an owner edit changes a pending placement's size or floor/wall kind, without changing the placement data format. Also add an owner-only batch setter setFootprints(uint256[] ids, uint8[] w, uint8[] h, bool[] wall) with the same per-item rules (lengths must match, all-or-nothing), so the owner can set the whole catalogue in one transaction. Keep footprintOf and the FootprintSet event unchanged. Update tests: a second setFootprint on the same id reverts; a pending placement keeps its kind and size; the batch setter's validation and atomicity.\n \nDO NOT CHANGE (the live game depends on these exactly)\n- mintClub(uint256 pepeId), clubsMinted(uint256), upgradeClub(uint256), upgradePrice(uint256), levelOf(uint256), piecesOf(uint256) returning Piece{furnitureId, x, y, rot, wall}, footprintOf(uint256), hasDesign, wallTaken, tileTaken, pepes(), delegates(), price(), token(), vault(), furniture(), saleOpen(), tokenURI = baseURI + id + \".json\".\n- Placement data abi.encode(clubId, uint8 x, uint8 y, uint8 rot); wall pieces use (start along wall, 0, side).\n- Floor masks, wall lengths (side 0: 10,14,14,16; side 1: 10,10,16,16), door rules, one of each design per club, MAX_PIECES 285, the 50/50 burn/vault split, every custom error name and selector.\n- Raffle, staking, vault and furniture behaviour, including the 7-day minter/spender delay after the first grant.\n \nOWNER HANDOFF (the factory cannot do these; document them in the notes and README; $owner does them after deployment, in this order)\n1. furniture.grantMinter(raffle) and staking.grantSpender(raffle) as each contract's FIRST grant.\n2. furniture.setBaseURI(\"https://world.ogclub.online/nft/\") and clubs.setBaseURI(\"https://world.ogclub.online/club/\").\n3. clubs.setFootprints with this catalogue ([id, w, h, wall]):\n[[1,1,1,0],[2,1,1,0],[3,2,1,0],[4,1,1,0],[5,2,2,0],[6,1,1,0],[7,1,1,0],[8,1,1,0],[9,1,1,0],[10,1,1,0],[11,1,1,0],[12,2,1,0],[13,1,1,0],[14,1,1,0],[15,1,1,0],[16,1,1,0],[17,1,1,0],[18,2,1,0],[19,1,1,0],[20,2,1,0],[21,1,1,0],[22,1,1,0],[23,2,1,1],[24,1,1,0]]\n   Print this exact calldata (and the grant/URI calldata) in the deploy script output and in the README so the owner can send it from a wallet or a Safe.\n4. clubs.setSaleOpen(true) when the launch is announced.\n \nVERIFY\nforge build, forge test (all suites), forge fmt --check, the Python manifest tests, and a constructor-only rehearsal of the five mainnet applications. Verify every contract's source on Etherscan. Report all five deployed addresses.","types":["contracts"],"audits":[],"paidBy":"0x5b95a971b4583a5f011e9da082acdd679b870d06","release":null,"research":[],"versions":[],"contracts":[{"id":"7f26903e-62c7-4ae2-acab-6d06ded7a0eb","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"OGClubClubs","role":"other","txHash":"0x277428e6df3a4374b04ff09fd94c0ce1bb8c36837f86a1b21d7e3e5012b3e9ce","address":"0xddfaca83dae8650de02add4465b18e5a85339773"},{"name":"OGClubFarmVault","role":"other","txHash":"0x277428e6df3a4374b04ff09fd94c0ce1bb8c36837f86a1b21d7e3e5012b3e9ce","address":"0x60401e748d6c3a1f2775be9e6a41bda20eda0b80"},{"name":"OGClubFurniture","role":"other","txHash":"0x277428e6df3a4374b04ff09fd94c0ce1bb8c36837f86a1b21d7e3e5012b3e9ce","address":"0x20be3ffb48c5fac252454e2178201d20d844af35"},{"name":"OGClubRaffle","role":"other","txHash":"0x277428e6df3a4374b04ff09fd94c0ce1bb8c36837f86a1b21d7e3e5012b3e9ce","address":"0x1690f0874c733b7795b9580cbc28823f6e06dcf6"},{"name":"OGClubStaking","role":"other","txHash":"0x277428e6df3a4374b04ff09fd94c0ce1bb8c36837f86a1b21d7e3e5012b3e9ce","address":"0x8b8ebe521ae303e8e01fdb0f2f938801e1a253b0"}],"createdAt":"2026-10-21T17:12:02.553+00:00","updatedAt":"2026-10-21T17:13:26.77+00:00","launchNumber":2398,"parkedReason":null,"sourceCommit":"c77c19241414f82b5eb4d84b4720cce40741874d","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2398-continue-delivered-og-club"}],"publishedAt":"2026-10-21T17:12:02.553+00:00"},{"id":"workflow:f61e069d-3f9e-432f-a9aa-a6c7746466ad","code":[],"media":[],"sites":[{"id":"54b3f831-c885-4170-a163-b3160fa75a4c","cid":"bafybeiehy7r75mdf7hicpofzsjvbazxdrorfyslpgkyobtqemovnqb4gpm","jobId":"843c2630-3031-4385-9b31-52858a7cb8b6","label":"sworn-843c","status":"named","txHash":"0x13ceb7e9e4ed3367b32c0f9b9f7370c0935ec5e56f1900afbd2ee305c01c2da4","ensName":"sworn-843c.site.identitymd.eth","failure":null,"namedAt":"2026-10-21T06:59:05.029+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2366-workflow-frontend-stage-context","pinnedAt":"2026-10-21T06:56:21.337+00:00","createdAt":"2026-10-21T06:55:53.775+00:00","previewHash":"7a71853cb71f6243619c060032375fbf7b6cd466aa19da922024d55441ff2744","supersededBy":null}],"title":"Sworn - an ownerless registry of facts about wallets: deploy the three-contract registry of this repository on Ethereum mainnet with the changes of docs/V3.md, then update its public site in web/ for the live deployment. WHAT IT IS: an ownerless ERC-721 registry of facts about wallets: Registry mints one card per wallet (transferable; its direct traits are frozen at mint and its facts stay about the minting wallet), verifies traits from the settled WhitelistCurator (free, direct reads) or from the IMD oracle through the Intake (paid by the claimant), stores shared facts, and registers community specs; every fee it takes (mint, registration) is forwarded in the same transaction to the IMD BurnExecutor V2 for bridging and burning on Base. Composer composes the oracle questions and validates specs; Renderer draws the card and its metadata on-chain. Anyone may call every function; there is no owner, setter or upgrade path. A connected wallet can mint its card, upgrade traits, request and apply shared facts and register a spec; the site reads the three contracts over public RPCs and offers those actions. STARTING TREE: https://github.com/banse/sworn at commit 092cc28447d29a5f96ecd35b866e470513ca06f8 (tag v3-base): the code and the hosted site of the deployment launched as #2341 (the swarm's delivered trees), its audits in audits/2026-10-21-onedollaraudit-1042.md and -1043.md, docs/V3.md with 30 numbered items whose decisions are final (cross-audited, its section 9), docs/site-rows.md with the exact site rows, and web/ with the hosted public site. CONTRACTS (one job, one worker): implement items 1 to 22 and 31 to 34 of docs/V3.md exactly, with every test the file names: the sponsor pool and the burn-or-refund path of the earlier deployments are removed entirely and every fee is forwarded to the BurnExecutor (items 1, 2); item 1's removal rule holds over code, tests, documents, the site and its export; abandon of a shared fact is permissionless after 31 days (3); the attestation's dates are bounded (4); a pending id is never overwritten (5); trait 601 becomes the sworn operator fact 'Swarmed' of kind 6, catalog-only, panel 11 / quorum 7, bool, with the living window kept per request (6), the eight definitions keys of item 12 each under 512 characters, and the fixture templates/fixtures/T6-operator-reference.json (13); the IdentityMD address leaves both constructors (7); the Renderer's family 6 is renamed Swarmed and lit from hasTrait (15); the generated tables are regenerated and the entrant's hive lines re-derived (16); the constructor requires code at the renderer, the composer and the executor, always, and a nonzero attester (18); the documents of items 20 to 22; items 31 to 34 (a spec names only real indexed fields; an item is a signature, not prose; block.number read on chain; the Renderer's bounds, family check, cap and quote escape). Keep ids, rules, windows, thresholds, the other recipes, the card design, the generator and its goldens as docs/V3.md says. Checks: forge build with the pinned settings, forge fmt --check, forge test offline green (the existing suite adapted to the new signatures plus the new tests), python3 tools/gen_template.py --check, test/NOTES.md with one line per item, its test and the contract sizes. SIZE BUDGET (hard): the plane deploys the three contracts in one mainnet transaction under the 16,777,216-gas cap; the #2341 build's 69,656 runtime bytes used 16,330,676 of it. Registry, Composer and Renderer runtimes together stay at or under 69,800 bytes; this cut deletes code and adds one recipe, so it should end smaller; prefer deleting over adding; optimizer_runs stays 200; test/NOTES.md records the three sizes and their sum. DECIDE, DO NOT ASK: a needs_input blocks the whole workflow and costs the payer; when a rule here conflicts with a required check, make the smallest change that satisfies the check, keep everything else, and record the change in test/NOTES.md. DEPLOYMENT: evm_contracts on Ethereum mainnet (chainId 1), in this order and with no other contracts: Renderer (no constructor arguments), Composer (no constructor arguments), then Registry with constructor arguments curator 0xcb0b0531e86a9ac36fa865ca8e3dbccf047fda91 (WhitelistCurator), imd 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7 (IMD), intake 0xa43e6f75ee006411f79ac1c84120606c2330de82 (Intake v2), attester 0x5598aa9146215bc13eb26f2c692ad1461fd32982 (the IMD oracle signer), renderer $contract:Renderer, composer $contract:Composer, burnExecutor 0xe29386719C155B6847aD5a4E97C6674f10ffc750 (IMD BurnExecutor V2). Seven arguments, no idmd. NO TOKEN: this project issues no ERC-20 and mints no coin; its only token is the ERC-721 card of the Registry (name Sworn, symbol SWORN, no fixed supply: one card per wallet, never burned); fees are paid in the existing IMD token 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, which this project does not create, mint or hold; no owner. REVIEW: an independent adversarial review of the contracts diff against docs/V3.md and the three audits in audits/ (1042 Registry, 1043 Composer, 1044 Renderer) before deployment: every numbered item present with its test, nothing else changed, no behaviour removed beyond what docs/V3.md removes, the recipe text of items 11 and 12 reproduced exactly. SITE (the second job, after deployment; the workflow then publishes the finished export at a public URL: IPFS under the site label sworn, named under ENS): items 23 to 26 of docs/V3.md on web/ (Vite; npm ci, npm test, npm run build; copy the export to the root dist/, the files the workflow pins): the live addresses and ABIs from .imd/reads/deployment.json, the claim steps renumbered 01 to 03 with every link, the Swarmed copy, the About note on the two earlier deployments without version names, the fee lines as item 24 words them, and the rows F-21 to F-50 of docs/site-rows.md as item 26 orders them (the seven first). Change the existing site, keep its design, colours, type and pages; no request to api.imdnotdead.fun from the browser; live reads over public RPCs only; npm test green; the export opens without a console error and without horizontal overflow at 1280 and 390 px. DELIVERABLES, plainly: (1) the three contracts built, reviewed and deployed on Ethereum mainnet; (2) a user-facing website: the existing web/ app updated against that deployment, built with npm run build; (3) that website published at a public URL by the workflow's hosting stage: pinned to IPFS under the site label sworn and named under ENS, with its source on GitHub.","types":["contracts","sites"],"audits":[],"paidBy":"0xe5b1275fb926613d983da33fbfe1f331b7f64f2a","release":{"status":"completed","failure":null},"research":[],"versions":[],"contracts":[{"id":"7f4dd9ec-15e4-4062-8b94-9d1a859513cd","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"Composer","role":"other","txHash":"0xa24493a1b74bb47458eb7dc772269d791a083d3851da8f0e79d4075dd2362e52","address":"0xae4b30f656be1069748c351aecf396a99253ee9c"},{"name":"Registry","role":"other","txHash":"0xa24493a1b74bb47458eb7dc772269d791a083d3851da8f0e79d4075dd2362e52","address":"0x9cb36ecca47d753e4e62ed87c12a2b7b20dfa828"},{"name":"Renderer","role":"other","txHash":"0xa24493a1b74bb47458eb7dc772269d791a083d3851da8f0e79d4075dd2362e52","address":"0x8309e5734cb8df4139878c74e2114a87ebc2af5c"}],"createdAt":"2026-10-21T06:00:05.553+00:00","updatedAt":"2026-10-21T06:01:26.892+00:00","launchNumber":2362,"parkedReason":null,"sourceCommit":"e462b062e68c0962a15d05cfe7d70dacbb354cbd","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2362-renderer-composer-registry"}],"publishedAt":"2026-10-21T06:59:05.029+00:00"},{"id":"workflow:7e7dbd09-598a-41cf-8204-00b52caddb08","code":[],"media":[],"sites":[{"id":"15cee77a-fdeb-4bfc-b5d0-19beaf233ed6","cid":"bafybeiaqo3nayyzo2mleou5cag23omey25pef5rfeo5iri72ywgyhqwd34","jobId":"fbbf341e-0fd8-4821-9dfa-3bcf5a4ba21a","label":"sworn-fbbf","status":"named","txHash":"0xaa815c7fbd400f0d040cc682656f8a649bf5d7df154bcea6d23a5106c466fbc4","ensName":"sworn-fbbf.site.identitymd.eth","failure":null,"namedAt":"2026-10-20T22:57:26.841+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2349-workflow-frontend-stage-context","pinnedAt":"2026-10-20T22:56:47.426+00:00","createdAt":"2026-10-20T22:56:39.076+00:00","previewHash":"39ffd81f796d5ba05753ce175f34524925c2349fab15322788c56d7e800835b7","supersededBy":null}],"title":"Sworn - an ownerless registry of facts about wallets: deploy the three-contract registry of this repository on Ethereum mainnet with the changes of docs/V2.md, then update its public site in web/ for the live deployment. WHAT IT IS: an ownerless ERC-721 registry of facts about wallets: Registry mints one card per wallet (transferable; its direct traits are frozen at mint and its facts stay about the minting wallet), verifies traits from the settled WhitelistCurator (free, direct reads) or from the IMD oracle through the Intake (paid by the claimant or by the sponsor pool, a pool anyone can donate IMD to), stores shared facts, and registers community specs; Composer composes the oracle questions and validates specs; Renderer draws the card and its metadata on-chain. Anyone may call every function; there is no owner, setter or upgrade path. A connected wallet can mint its card, claim and upgrade traits, request and apply shared facts, register a spec and donate to the pool; the site reads the three contracts over public RPCs and offers those actions. STARTING TREE: https://github.com/banse/sworn at commit 007fbeb702613345389bc842a4005c07f3966ab1 (tag v2-base): the earlier code (launched as #2147 on mainnet as a test, never announced; audited; audits/ holds the reports), docs/V2.md with 27 numbered changes whose decisions are final, and web/ with the reviewed public site. CONTRACTS (one job, one worker): implement items 1 to 22 of docs/V2.md exactly, with every test the file names; keep ids, rules, windows, thresholds, the templates' questionHash document, the card design, the generator and its goldens as docs/V2.md says. Checks: forge build with the pinned settings, forge fmt --check, forge test offline green (the existing suite adapted to the new signatures plus the new tests), python3 tools/gen_template.py --check, every contract under the EIP-170 limit, test/NOTES.md with one line per item, its test and the contract sizes. SIZE BUDGET (hard, docs/V2.md section 6): the plane deploys the three contracts in one mainnet transaction under the 16,777,216-gas cap per transaction; the earlier build's 69,786 runtime bytes used 16,282,373 of it. Registry, Composer and Renderer runtimes together stay at or under 69,800 bytes; prefer deleting over adding; optimizer_runs stays 200; test/NOTES.md records the three sizes and their sum. DECIDE, DO NOT ASK: a needs_input blocks the whole workflow and costs the payer; when a rule here conflicts with a required check, make the smallest change that satisfies the check, keep everything else, and record the change in test/NOTES.md. DEPLOYMENT: evm_contracts on Ethereum mainnet (chainId 1), 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). No token, no pool, no owner. REVIEW: an independent adversarial review of the contracts diff against docs/V2.md and the audits before deployment: every numbered item present with its test, nothing else changed, no behaviour removed beyond what docs/V2.md removes. SITE (the second job, after deployment; the workflow then publishes the finished export at a public URL: IPFS under the site label sworn, named under ENS): items 23 to 27 of docs/V2.md on web/ (Vite; npm ci, npm test, npm run build; copy the export to the root dist/, the files the workflow pins): the live addresses and ABIs from .imd/reads/deployment.json, the new copy, the pool-price panel, the test-deployment note on About. Change the reviewed site, do not rebuild it and do not change its design, colours or pages; no request to api.imdnotdead.fun from the browser; live reads over public RPCs only; npm test green; the export opens without a console error at 1280 and 390 px. DELIVERABLES, plainly: (1) the three contracts built, reviewed and deployed on Ethereum mainnet; (2) a user-facing website: the existing web/ app updated against that deployment, built with npm run build; (3) that website published at a public URL by the workflow's hosting stage: pinned to IPFS under the site label sworn and named under ENS, with its source on GitHub.","types":["contracts","sites"],"audits":[],"paidBy":"0xe5b1275fb926613d983da33fbfe1f331b7f64f2a","release":{"status":"completed","failure":null},"research":[],"versions":[],"contracts":[{"id":"881ffed7-e6bd-49ef-9fbf-68568982f4b8","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"Composer","role":"other","txHash":"0x079af9dac38001b9b6e6e5799fc5381c27fbb98debeff78af89fd7ab489e88d4","address":"0x1d7da5353830248b042fc1396d5d12c31ac69824"},{"name":"Registry","role":"other","txHash":"0x079af9dac38001b9b6e6e5799fc5381c27fbb98debeff78af89fd7ab489e88d4","address":"0xdd0017e40f1a5fe514d15d108ce01eb52f2a5edb"},{"name":"Renderer","role":"other","txHash":"0x079af9dac38001b9b6e6e5799fc5381c27fbb98debeff78af89fd7ab489e88d4","address":"0x4c7fe2202b29c23b54bd45053a6c88061f1296ef"}],"createdAt":"2026-10-20T22:13:51.155+00:00","updatedAt":"2026-10-20T22:15:14.242+00:00","launchNumber":2341,"parkedReason":null,"sourceCommit":"832cc45f59acdda805b51799647be24c0cae9741","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2341-renderer-composer-registry"}],"publishedAt":"2026-10-20T22:57:26.841+00:00"},{"id":"workflow:51bec67e-efec-4e88-bb68-297892343ce0","code":[],"media":[],"sites":[{"id":"b16204e7-fead-471d-a19f-a500f4b361d4","cid":"bafybeigbeg2ypoipijsc57b35qm5qryp3tlwsjw2u4ow6rjncaj4d3h2ne","jobId":"b8abdc6c-7990-406e-a674-da092f6f13ab","label":"hamster-hour-bet-on-the-wheel","status":"named","txHash":"0x5e55aa29357f3a891afb10a2eb145d19888b91900096845b13c43fa257c1cb39","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth","failure":null,"namedAt":"2026-10-20T21:07:28.544+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","pinnedAt":"2026-10-20T21:07:12.239+00:00","createdAt":"2026-10-20T21:06:57.493+00:00","previewHash":"18e939c46270946f918c37f03e05a2b19b8bdfbabfb48560fbb32c61dc48b04d","supersededBy":null},{"id":"fbecf53d-4860-4096-9c9f-60cbd63cfd3f","cid":"bafybeihfhge32lyyprnu44rjtthnw5qyyln2wjulzkxmfkmjhlj4ff5qc4","jobId":"040611d4-bc95-477a-9a0a-1a6cf829bf81","label":null,"status":"named","txHash":"0x7b5d9998ad1900d2d3e2266ddca9d00dbc033c96cb847618a059ed93b549354c","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth","failure":null,"namedAt":"2026-10-20T20:33:50.918+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","pinnedAt":"2026-10-20T20:32:58.305+00:00","createdAt":"2026-10-20T20:32:28.812+00:00","previewHash":"ae3794ab064bd2813bd33e1dd07eda1a623a1526b411e7b85a64eea6400097cb","supersededBy":"b16204e7-fead-471d-a19f-a500f4b361d4"},{"id":"5330d78b-3aee-4840-b4de-16b8ee072bce","cid":"bafybeifpo6lenmuviml45blmr5gbh2nmdr6pdkthuoxr7er35h72a3jjwq","jobId":"35a18b93-f502-40e3-a23d-e6dbc3155cb0","label":null,"status":"named","txHash":"0x161e33269938abd76fb8f6d6755c0db02b16d9f0812a61699960674e01d7b893","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth","failure":null,"namedAt":"2026-10-20T08:57:02.037+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","pinnedAt":"2026-10-20T08:55:55.071+00:00","createdAt":"2026-10-20T08:55:27.181+00:00","previewHash":"5fa0094e41bbf01cd3c64cb1e604407f5f974250b1d4583e8a5332b99b282158","supersededBy":"fbecf53d-4860-4096-9c9f-60cbd63cfd3f"},{"id":"1920a2b9-89fe-42b4-bb37-81a97761813b","cid":"bafybeianrdeol7mh6snfotcrvjafqjmd4smafvoc4qxxi4msl54o2qfeha","jobId":"227695a3-02a8-4abc-96b8-bfa592a8cd28","label":null,"status":"named","txHash":"0x98b9e967122336e526d0231bbc2f6685fa2aedf17834087c813f6d7c0b1da544","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth","failure":null,"namedAt":"2026-10-20T07:46:04.057+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","pinnedAt":"2026-10-20T07:45:03.485+00:00","createdAt":"2026-10-20T07:44:59.008+00:00","previewHash":"3155caa343504b18f606a58f5a3fe906b2bc8c391e83eca33082c002e836e9ba","supersededBy":"5330d78b-3aee-4840-b4de-16b8ee072bce"},{"id":"c1f7e1ed-dfdb-4757-aede-ed7ed1189e35","cid":"bafybeiciuxk7e52vnxyibpulnppgp2yewspnkc47b3iepcl6t3gcwupczq","jobId":"277869c5-5b4a-4467-8d08-1f71097558b6","label":null,"status":"named","txHash":"0x18959c9e61747a86e5d181504f0a9d426902fcffffbf9666c6effc2bf44f4a59","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth","failure":null,"namedAt":"2026-10-17T06:42:51.633+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","pinnedAt":"2026-10-17T06:41:36.54+00:00","createdAt":"2026-10-17T06:41:33.396+00:00","previewHash":"54288d9788658c2fb0d237a8951d5357d7715c8620551b496b63e214a65192f4","supersededBy":"1920a2b9-89fe-42b4-bb37-81a97761813b"},{"id":"4bf8915f-91bb-4b67-ab8e-d2dd1af64933","cid":"bafybeic5m4qzfu5vtpoadgne5bqoq2orf5t3f7f7wbgv4mnbtq466bqqu4","jobId":"18b6d6ce-f228-43a5-a6f4-02e33978e0ac","label":null,"status":"named","txHash":"0x660b61f164a6bec8ba9c5543062bcd0ac629910e7282e088e3d698994a43caaf","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth","failure":null,"namedAt":"2026-10-16T15:25:38.148+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","pinnedAt":"2026-10-16T15:24:53.411+00:00","createdAt":"2026-10-16T15:24:33.821+00:00","previewHash":null,"supersededBy":"c1f7e1ed-dfdb-4757-aede-ed7ed1189e35"},{"id":"61a3d7ea-c1e1-4c13-afac-ef6bd67844c2","cid":"bafybeibtut7la2xwv25bldo4pusmms6utp4xyhsd2t46ednunachuz3kie","jobId":"bca03477-1456-4288-a3bc-e8481901f2b2","label":null,"status":"named","txHash":"0x0993af27bd0173124afbe618fe0d15677060bb5add331adf36cc63b7e3a6cfda","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth","failure":null,"namedAt":"2026-10-16T13:17:13.148+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","pinnedAt":"2026-10-16T13:15:22.903+00:00","createdAt":"2026-10-16T13:15:09.005+00:00","previewHash":null,"supersededBy":"4bf8915f-91bb-4b67-ab8e-d2dd1af64933"},{"id":"474d64c8-2937-4218-a0d7-44fd53f31b4f","cid":"bafybeidp4zcka5l7nf3gnj4fcmooxhp3vc3wucml6st4bckcjwa3ain3f4","jobId":"a3549cc7-2989-463d-8d9b-46df2d6a5bac","label":null,"status":"named","txHash":null,"ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth","failure":null,"namedAt":"2026-10-16T11:42:54.98+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","pinnedAt":"2026-10-16T11:28:52.776+00:00","createdAt":"2026-10-16T11:28:32.821+00:00","previewHash":null,"supersededBy":"61a3d7ea-c1e1-4c13-afac-ef6bd67844c2"}],"title":"Hamster Hour: a pari-mutuel betting game on a real hamster. Squeekchain (https://sepolia.squeekchain.com) runs a physical hamster wheel and settles a round every 10 minutes with the number of wheel passes. Hamster Hour lets people bet IMD on how far the hamster runs over the next 6 rounds (one hour). Results come only from the IMD oracle.\n\nCONTRACTS (Ethereum mainnet, no owner, no upgradeability, no admin withdraw). TEAM = the wallet that requested this launch, immutable.\n\n1. HamsterHour\n- Windows are defined by Squeekchain round numbers: window k covers rounds 6k to 6k+5. Round duration 600 s from genesisTimestamp 1791847800; the contract derives the current round from block.timestamp. Betting on window k is open until round 6k starts.\n- Bets in IMD (0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7) via transferFrom, minimum 0.5 IMD.\n- Three pari-mutuel markets per window, each its own pool:\n  a) OVER/UNDER: total passes above or below the line. Line = average total passes over the last 7 settled windows, fixed at window creation; bootstrap line 1000 until 7 windows exist.\n  b) EXACT: bettor submits a uint256 guess of total passes. Closest wins 60% of the pool, second 30%, third 10%; ties split equally. The EXACT winner also receives the full jackpot balance (see below).\n  c) SLEEP: yes/no, total passes == 0.\n- Settlement: after round 6k+5 ends, anyone may call settle(k) with a signed IMD oracle attestation for the question template \"What is the total number of wheel passes recorded by Squeekchain for rounds {6k} through {6k+5} inclusive, as published at {sourceUrl}? Answer as a single uint256.\" The contract verifies it through OracleVerifier and stores the result. Lazy: windows with no bets are never settled.\n- Split of every window's total bets: 91% to winners pro rata, 5% to stakers, 3% to an oracle reserve that reimburses 0.5 IMD to whoever supplied the settlement attestation, 1% to TEAM.\n- Staking: once setStakingToken is set, anyone can stake and unstake that token here. The 5% share is distributed pro rata by stake-weight at each settlement (accumulator pattern, pull-based claimStaking). Before the token is set, the 5% accrues in a reserve that is released to stakers evenly over the 30 windows after the token is set.\n- Jackpot: the contract accepts any ERC-20 sent to it; the balance of the token set once via setJackpotToken is paid in full to the EXACT winner of each settled window. Empty jackpot pays nothing.\n- Edge cases: a market with bets on only one side is void and refunded; a window with no valid attestation within 48 hours after it ends is void and refunded; all claims pull-based via claim(k).\n- Configuration: setStakingToken and setJackpotToken are one-shot; sourceUrl and genesisTimestamp are updatable. All four callable only by TEAM, each with a 48-hour timelock and a public event. Nothing else is adjustable. No other TEAM powers.\n- Events for every bet, settlement, claim, void, stake, unstake, config change.\n\n2. OracleVerifier\n- Verifies IMD oracle attestations exactly as the IMD attester scheme requires: attester signature, question hash, validity window, uint256 answer. Rejects expired, mismatched or replayed attestations.\n\nTESTS: pari-mutuel math for all three markets, EXACT ties, one-sided void, no-attestation void, split sums to 100%, oracle reimbursement, staking accumulator, pre-token reserve release over 30 windows, jackpot payout, attestation replay rejected, line over 7 windows, round-to-window math around genesis, timelocks.\n\nWEBSITE: dark console style like sepolia.squeekchain.com, monospace. Top: the live Squeekchain stream embedded full width (YouTube id from https://media.squeekchain.com/live/current.json), countdown to the current window close, the line, live pool sizes and implied payouts per side, jackpot balance. Tabs: Bet (three markets, connect wallet, approve IMD, place bet, claim), Stake (\"staking opens with the token\" until set, then stake, unstake, claim), History (settled windows with links to the oracle attestation on explorer.imdnotdead.fun). Mobile first. No fake data.\n\nREADME first section: no owner, no house, pari-mutuel only, results only from the IMD oracle, the contract never owes more than it holds, TEAM gets 1% of bets and nothing else.","types":["contracts","sites"],"audits":[],"paidBy":"0x6cba4751742f6989fa224b2dc5d5d52fcef98a34","release":{"status":"completed","failure":null},"research":[],"versions":[{"site":{"cid":"bafybeidp4zcka5l7nf3gnj4fcmooxhp3vc3wucml6st4bckcjwa3ain3f4","status":"named","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth"},"jobId":"3930fbbd-dc5d-4207-9217-b9c920567996","state":"completed","commit":"7ab2a01b3d9a15e2acca8b317e77058e6f2d41e9","repoUrl":"https://github.com/identity-md-launches/launch-1951-workflow-contract-stage-context","createdAt":"2026-10-16T08:08:44.321813+00:00","objective":"Hamster Hour: a pari-mutuel betting game on a real hamster. Squeekchain (https://sepolia.squeekchain.com) runs a physical hamster wheel and settles a round every 10 minutes with the number of wheel passes. Hamster Hour lets people bet IMD on how far the hamster runs over the next 6 rounds (one hour). Results come only from the IMD oracle.\n\nCONTRACTS (Ethereum mainnet, no owner, no upgradeability, no admin withdraw). TEAM = the wallet that requested this launch, immutable.\n\n1. HamsterHour\n- Windows are defined by Squeekchain round numbers: window k covers rounds 6k to 6k+5. Round duration 600 s from genesisTimestamp 1791847800; the contract derives the current round from block.timestamp. Betting on window k is open until round 6k starts.\n- Bets in IMD (0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7) via transferFrom, minimum 0.5 IMD.\n- Three pari-mutuel markets per window, each its own pool:\n  a) OVER/UNDER: total passes above or below the line. Line = average total passes over the last 7 settled windows, fixed at window creation; bootstrap line 1000 until 7 windows exist.\n  b) EXACT: bettor submits a uint256 guess of total passes. Closest wins 60% of the pool, second 30%, third 10%; ties split equally. The EXACT winner also receives the full jackpot balance (see below).\n  c) SLEEP: yes/no, total passes == 0.\n- Settlement: after round 6k+5 ends, anyone may call settle(k) with a signed IMD oracle attestation for the question template \"What is the total number of wheel passes recorded by Squeekchain for rounds {6k} through {6k+5} inclusive, as published at {sourceUrl}? Answer as a single uint256.\" The contract verifies it through OracleVerifier and stores the result. Lazy: windows with no bets are never settled.\n- Split of every window's total bets: 91% to winners pro rata, 5% to stakers, 3% to an oracle reserve that reimburses 0.5 IMD to whoever supplied the settlement attestation, 1% to TEAM.\n- Staking: once setStakingToken is set, anyone can stake and unstake that token here. The 5% share is distributed pro rata by stake-weight at each settlement (accumulator pattern, pull-based claimStaking). Before the token is set, the 5% accrues in a reserve that is released to stakers evenly over the 30 windows after the token is set.\n- Jackpot: the contract accepts any ERC-20 sent to it; the balance of the token set once via setJackpotToken is paid in full to the EXACT winner of each settled window. Empty jackpot pays nothing.\n- Edge cases: a market with bets on only one side is void and refunded; a window with no valid attestation within 48 hours after it ends is void and refunded; all claims pull-based via claim(k).\n- Configuration: setStakingToken and setJackpotToken are one-shot; sourceUrl and genesisTimestamp are updatable. All four callable only by TEAM, each with a 48-hour timelock and a public event. Nothing else is adjustable. No other TEAM powers.\n- Events for every bet, settlement, claim, void, stake, unstake, config change.\n\n2. OracleVerifier\n- Verifies IMD oracle attestations exactly as the IMD attester scheme requires: attester signature, question hash, validity window, uint256 answer. Rejects expired, mismatched or replayed attestations.\n\nTESTS: pari-mutuel math for all three markets, EXACT ties, one-sided void, no-attestation void, split sums to 100%, oracle reimbursement, staking accumulator, pre-token reserve release over 30 windows, jackpot payout, attestation replay rejected, line over 7 windows, round-to-window math around genesis, timelocks.\n\nWEBSITE: dark console style like sepolia.squeekchain.com, monospace. Top: the live Squeekchain stream embedded full width (YouTube id from https://media.squeekchain.com/live/current.json), countdown to the current window close, the line, live pool sizes and implied payouts per side, jackpot balance. Tabs: Bet (three markets, connect wallet, approve IMD, place bet, claim), Stake (\"staking opens with the token\" until set, then stake, unstake, claim), History (settled windows with links to the oracle attestation on explorer.imdnotdead.fun). Mobile first. No fake data.\n\nREADME first section: no owner, no house, pari-mutuel only, results only from the IMD oracle, the contract never owes more than it holds, TEAM gets 1% of bets and nothing else.","baseCommit":"0243d7da4a4337ae8b16bcdf15bb4ead736fd68f","workflowId":"51bec67e-efec-4e88-bb68-297892343ce0","deliveredAt":"2026-10-16T09:30:40.604+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1951-workflow-contract-stage-context/pull/1"},{"site":{"cid":"bafybeibtut7la2xwv25bldo4pusmms6utp4xyhsd2t46ednunachuz3kie","status":"named","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth"},"jobId":"bca03477-1456-4288-a3bc-e8481901f2b2","state":"completed","commit":"effe1f54b876d607c075475c4a69d8568636e2b3","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","createdAt":"2026-10-16T12:03:52.395168+00:00","objective":"Project: Hamster Hour, https://ipfs.imd.fun/ipfs/bafybeidp4zcka5l7nf3gnj4fcmooxhp3vc3wucml6st4bckcjwa3ain3f4/ (launch 1959; contracts HamsterHour 0xc5217f129da200a8e86229de4eabf3686eef64b1 and OracleVerifier 0xdcd7a7dee31d589f9df8113780050c18e7ea1f7d on Ethereum, repo identity-md-launches/launch-1951-workflow-contract-stage-context). Keep every existing on-chain feature. Rebuild the look and the player flow as described. Six changes.\n\n1. LIVE WHEEL CAM. media.squeekchain.com/live/current.json blocks cross-origin reads, so the cam never shows. Embed the YouTube player directly: https://www.youtube.com/embed/6K_uF2s-LSw?autoplay=1&mute=1, full width at the top, 16:9, lazy. Try current.json in the background and swap the embed only if it answers with a different publicId. Never show \"unavailable\" while the hardcoded id works. Keep the \"Open source\" link.\n\n2. ONE-CLICK SETTLE. In the settle panel add a \"Buy oracle answer\" step before the paste field. For window k: build the oracle.request body exactly as docs/ORACLE.md in the contract repo specifies: question = question(k) read from the contract, chainId 1, window {hours: 24}, answerType \"uint256\", evidence \"panel\", panelSize 20, quorum 14, validForSeconds 86400, consumer {chainId: 1, verifyingContract: HamsterHour}. Pay the 0.5 IMD through the protocol's standard paid route for a browser wallet (the IMD Intake contract on Ethereum, approve + request, or the route the IMD protocol docs name), then poll GET https://api.imdnotdead.fun/oracle/requests/<uuid>/attestation every 15 s, show the panel link on explorer.imdnotdead.fun, and when the attestation arrives, prefill it and enable \"Settle\". Keep the manual paste path as a fallback. Only allow buying when the window has ended and has bets. Show the 0.5 IMD reimbursement note.\n\n3. TEAM CONTROLS. Keep the four settings, current values, pending values and execute dates visible to everyone. Show inputs and the Schedule/Execute buttons only when the connected wallet equals the contract's TEAM address; otherwise read-only.\n\n4. MAKE IT RADICALLY SIMPLE.\n- First screen on mobile: the live cam, the countdown, the line, and three big buttons: OVER, UNDER, SLEEPING. One tap opens an amount sheet with 1 / 5 / 10 / 25 IMD chips and a Place bet button. Approve and bet are one flow with clear states: Approving… → Placing… → Bet placed, you win X if OVER.\n- Under each button show live \"pays x1.8\" from pool sizes, updating as bets arrive.\n- EXACT lives behind a \"Guess the exact number\" link, not as a primary market.\n- One line under the buttons: \"Bet IMD on how far the hamster runs in the next hour. Winners share the pool. Verified by the IMD oracle.\" and a second dim line: \"Lose a bet, mine $HAMSTER. Coming soon.\"\n- Plain words everywhere. No \"pari-mutuel\", \"attestation\", \"void\", \"settle\" in player-facing copy: use \"shared pool\", \"verified result\", \"refunded\", \"close the window\". Precise terms only in a \"How it works\" drawer and in the settle and TEAM panels.\n- After a window ends: a result card with passes, who won, your payout, and one Claim button. Claimable windows surface automatically on the Bet tab, no window-number lookup needed.\n- A \"My bets\" strip on the Bet tab with the wallet's open positions in the current and next window.\n- Stake, History, Settle and TEAM controls move under a \"More\" menu. The Bet tab is the whole app for most visitors.\n- Wallet connect in one tap; show IMD balance and a \"Get IMD\" link to the IMD/ETH pool when balance is below 0.5.\n- Header: a small \"X\" link to https://x.com/hamsterhourgame next to the wallet button. Footer: the same link plus the two contract links.\n- Empty and error states in plain language: \"No bets yet, be first\", \"Betting closed, next window opens in 12:03\".\n\n5. INTRO OVERLAY. On first visit show a full-screen overlay: a looping muted video of a hamster chewing, download https://static.klipy.com/ii/d6b0ce929193df3c242ac34b5654d2ce/af/08/uurjWLxi1HRjI5kfVD.mp4 into the site assets (do not hotlink; if the download fails, use a looping pixel-art animation of the mascot chewing instead). Make it feel like a meme, not a corporate splash: the video big and centered with a neon green frame, the title HAMSTER HOUR in large monospace above it, one line \"bet. lose. win $HAMSTER.\" and two buttons: \"Start playing\" (closes the overlay) and \"Follow on X\" (opens https://x.com/hamsterhourgame in a new tab). Remember dismissal in localStorage, show it once per device, Escape and tap outside also close it.\n\n6. VISUAL STYLE. Build the whole look from this description, no external image files will be supplied. Terminal aesthetic: background #0b0d0b with a faint grid of #163a1c lines at 25 px pitch across the entire page. Accent neon green #39ff6a with a soft outer glow for rings, countdown digits, pool numbers and button borders. Headings in off-white #f2f0e6, secondary text in dim green #5a8f63. One monospace font everywhere (IBM Plex Mono or JetBrains Mono); the title HAMSTER HOUR bold, wide, uppercase. Buttons: dark fill, 1 px neon border, glow on hover, square pixel-crisp corners. Draw the mascot yourself as pixel-art SVG: a chubby orange-and-cream hamster with round green-lensed goggles, front view, big cheeks, inside a glowing neon green ring; use it as the header logo, favicon, og:image, loading state and result card (happy when you win, asleep for a zero round). Draw a second pixel-art SVG of the same hamster running in a side-view wheel with motion lines for the hero on desktop. No gradients except the neon glow, no stock icons, no emoji, no photos.\n\nKeep everything live and real. No fake numbers, no placeholders, zero console errors, mobile first at 375 and desktop at 1440, no horizontal scroll.\n\nACCEPTANCE: fresh visit at 375 and 1440 shows the intro overlay with the video, then the YouTube player within 3 s of dismissing it; OVER tap → amount → one bet transaction; the settle flow produces a valid settle transaction for a finished window with bets; TEAM buttons are absent for a non-TEAM wallet.","baseCommit":"33fe273714ec984a1c54db66aeca5d2a63f02b52","workflowId":null,"deliveredAt":"2026-10-16T13:15:26.227+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context/pull/2"},{"site":{"cid":"bafybeic5m4qzfu5vtpoadgne5bqoq2orf5t3f7f7wbgv4mnbtq466bqqu4","status":"named","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth"},"jobId":"18b6d6ce-f228-43a5-a6f4-02e33978e0ac","state":"completed","commit":"cbb258e6762c3522627f067acadaa7475f6a0627","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","createdAt":"2026-10-16T13:48:54.824198+00:00","objective":"Project: Hamster Hour, https://hamster-hour-bet-on-the-wheel.sites.imd.fun (launch 1959 v2; contracts HamsterHour 0xc5217f129da200a8e86229de4eabf3686eef64b1 and OracleVerifier 0xdcd7a7dee31d589f9df8113780050c18e7ea1f7d on Ethereum). Keep the current look, structure and every on-chain feature. Six changes.\n\n1. FIX THE CRITIC'S FINDINGS: a reverted or cancelled oracle payment must show the failed receipt and restore the Buy button (OraclePurchase.tsx:193); an invalid window lookup must show the error and a \"Back to next open window\" link instead of \"Reading pool…\" (Bet.tsx:89); with a single detected wallet, Connect connects in one tap (Wallet.tsx:75); primary buttons dark fill with 1 px neon border and glow on hover, secondary text #5a8f63 (styles.css:24). Remove the stray line \"Bet RUNNING: at least one pass\" from How it works.\n\n2. LIVE OR SLEEPING, through our proxy. The site may not call squeekchain.com directly (CORS). Use the proxy at https://hamster-hour.hamsterhour562.workers.dev: GET /live mirrors media.squeekchain.com/live/current.json, GET /status mirrors api.squeekchain.com/v1/status. Poll /live every 20 s. If state is \"live\" and playback.kind is \"youtube\", embed https://www.youtube.com/embed/<publicId>?autoplay=1&mute=1 and switch when publicId changes. Otherwise show a SLEEPING screen in the same 16:9 slot: dark background, the pixel mascot curled up, drifting \"zzz\", the text \"HAMSTER IS SLEEPING · stream is off\", and the last known passes from /status (measurement.speedMmPerSecond and cumulativeWorkUnits). If the proxy fails, fall back to the embed of the channel's last known stream id and never show a blank box. Show a small badge over the player: \"LIVE\" green or \"SLEEPING\" dim.\n\n3. WALLET CHAT. A chat panel beside the stream on desktop (right column) and below the buttons on mobile, titled \"Wheel chat\". Endpoint https://hamster-hour.hamsterhour562.workers.dev/chat. GET /chat?since=<ms> returns {messages:[{id,address,message,ts}],now}; poll every 5 s, append new ones, keep the last 200, autoscroll unless the user scrolled up. POST /chat with JSON {address, message, signature, ts} where ts = Date.now() and signature = personal_sign (EIP-191) of the exact string \"Hamster Hour chat\\n\" + ts + \"\\n\" + message from the connected wallet. Max 200 chars, no links, 1 message per 5 s; surface server errors in plain words (\"slow down\", \"no links\"). Show sender as 0xab12…cd34 with an identicon-style pixel color, and a small \"bet\" tag next to wallets that have a position in the current or next window (read from the contract). Not connected: read-only with a \"Connect to chat\" button. Messages are user content: escape everything, no markdown, no HTML.\n\n4. MEME LAYER.\n- \"Poke the hamster\" button under the player: squeak sound (short synthesized beep, no external file) and the mascot hops; a local counter \"poked N times\" per visitor.\n- Hamster mood in the header from /status: \"sleeping\" at zero speed, \"stretching\" below 30% of the line pace, \"zoomies\" above the line pace, \"villain era\" when the current window is above 2× the line.\n- Losing result card: the chewing hamster video from the intro plays small with \"you fed the hamster\" and, until the token exists, \"$HAMSTER mining coming soon\"; a \"share my L\" button opens an X intent with the window number and passes.\n- Winning result card: pixel sunflower-seed confetti, the goggled mascot gives a thumbs up, \"share my W\" button.\n- When the wheel is sleeping the whole page dims 10% and \"zzz\" drift over the player; when it goes live, a one-time green pulse and a 3 s \"HE'S RUNNING\" banner.\n- Easter eggs: 10 clicks on the logo put black sunglasses on the mascot (\"deal with it\"); the Konami code spins the page one full turn like a wheel.\n- Jackpot digits animate like a slot machine when the value changes.\nAll of it client-side, respect prefers-reduced-motion, no console errors.\n\n5. COPY. Under the line add a tooltip \"passes = wheel turns, about 21 cm each\". On the EXACT screen add one line: \"Closest three guesses share the pool. The jackpot pays only if the closest guess is within 2% of the result.\" Under the countdown: \"Betting on window N · starts in MM:SS · result about 1 h after start\".\n\n6. Keep everything live and real, mobile first at 375, desktop at 1440, no horizontal scroll, zero console errors.\n\nACCEPTANCE: at 375 and 1440, /live state idle shows the SLEEPING screen and state live shows the YouTube embed; a chat message posted from a connected wallet appears within 5 s for a second visitor; the poke button and both result cards work; critic's four findings closed.","baseCommit":"effe1f54b876d607c075475c4a69d8568636e2b3","workflowId":null,"deliveredAt":"2026-10-16T15:24:59.178+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context/pull/3"},{"site":{"cid":"bafybeiciuxk7e52vnxyibpulnppgp2yewspnkc47b3iepcl6t3gcwupczq","status":"named","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth"},"jobId":"277869c5-5b4a-4467-8d08-1f71097558b6","state":"completed","commit":"ef19db49a5d580fdbd979e80af95a7940556119a","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","createdAt":"2026-10-17T06:18:18.038746+00:00","objective":"Project: https://hamsterhour.fun\n\nMaintenance update of the existing Hamster Hour site (current build: https://hamster-hour-bet-on-the-wheel.sites.imd.fun, served at https://hamsterhour.fun). Keep design, layout, copy, contract wiring, wallet flow, chat, History, Settle, Stake and TEAM pages exactly as they are. Change only the five items below.\n\nContracts (Ethereum mainnet, unchanged): HamsterHour 0xc5217f129da200a8e86229de4eabf3686eef64b1, OracleVerifier 0xdcd7a7dee31d589f9df8113780050c18e7ea1f7d. Deployment record and ABIs are already in the site (/imd-deployment.json, /abi/*.json).\n\n1. Bet sheet amount field. In every bet sheet (OVER, UNDER, SLEEPING/RUNNING, EXACT) the \"IMD\" suffix inside the amount input wraps onto two lines (\"IM\" / \"D\") on desktop and mobile. Make the suffix white-space: nowrap with a min-width, let the number input shrink instead. Verify at 375px and 800px.\n\n2. Plurals. \"1 messages\" -> \"1 message\", \"poked 1 times\" -> \"poked 1 time\"; keep plural for other values. Apply to every counter on the site.\n\n3. Jackpot copy. Hide the sentence \"The jackpot pays only if the closest guess is within 2% of the result.\" (EXACT sheet) and the line \"Available jackpot: Not enabled yet.\" (How it works) while HamsterHour.jackpotToken() is the zero address. Conditional render, show them again once the token is configured.\n\n4. Live window progress (new, small). While the current window is running (windowTimes(k).startsAt <= now < endsAt), show a block under the countdown card:\n\"Window k in progress · round r of 6 · N passes so far · line L\" and a thin progress bar N / L (cap 100%).\nData only through the existing Hamster Hour worker (same base URL the site already uses for /live and /status); never call squeekchain.com directly (CORS):\n- GET {worker}/status -> measurement.cumulativeWorkUnits (decimal string, live hardware counter; keep the current 20 s polling).\n- GET {worker}/rounds -> mirror of Squeekchain /v1/settlements?range=now. Use recentSettlements[] (up to 10, newest first): previousSettledThroughRound, settledThroughRound, cumulativeWork, workAdded. All decimal strings, parse as BigInt.\nRound mapping: Squeekchain genesis is 1791847800 and its round n covers [1791847800 + (n-1)*600, 1791847800 + n*600). Do not reuse HamsterHour.genesisTimestamp for this mapping, it can differ by one round. firstRound = floor((startsAt - 1791847800)/600) + 1, lastRound = firstRound + 5. Round shown to the user r = clamp(floor((now - startsAt)/600) + 1, 1, 6).\nbaseline = cumulativeWork of the settlement with settledThroughRound == firstRound - 1. passesSoFar = cumulativeWorkUnits - baseline, clamped at 0. If that exact settlement is not in the list, use the newest one with settledThroughRound < firstRound and prefix the number with \"≈\"; if none, show only \"round r of 6\". Also show the block inside \"My bets\" for a bet on the running window. Mobile: one line, bar below.\nSmall print under the block: \"Live counter, unofficial. Result is settled by the IMD oracle.\"\n\n5. First visit. Expand \"How it works\" by default on the first visit (remember collapse state in localStorage, default collapsed afterwards).\n\nDeliver the updated site in the same hosting slot, no new dependencies, bundle size roughly unchanged. Test at 1280, 800 and 375 px: bet sheets, How it works, History, TEAM page read-only without a wallet, progress block with a running window and with the hamster asleep (N = 0).","baseCommit":"cbb258e6762c3522627f067acadaa7475f6a0627","workflowId":null,"deliveredAt":"2026-10-17T06:42:02.552+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context/pull/4"},{"site":{"cid":"bafybeianrdeol7mh6snfotcrvjafqjmd4smafvoc4qxxi4msl54o2qfeha","status":"named","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth"},"jobId":"227695a3-02a8-4abc-96b8-bfa592a8cd28","state":"completed","commit":"0724789990231d4bdcb77ded32b0a9fcea331681","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","createdAt":"2026-10-20T06:54:35.796439+00:00","objective":"Rebuild the Hamster Hour site for the v2 contract. Keep the domain, wheel cam, chat and existing worker endpoints (/live, /status, /rounds, /chat).\n\nCONTRACT: HamsterHour v2 on Ethereum mainnet 0xe33ab493249a2df0d8c4a71ac54f46d1f7778367, IMD 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7. ABI and rules: github.com/identity-md-launches/launch-2260-build-hamster-hour-v2 (abi/, README). Use windowInfo(k), betOverUnder, betSnooze, buyTicket, claim, claimable, feedHamster, the jackpot views and events. Remove all v1 references.\n\nDESIGN \"cozy pixel\": minimal like playground.token.works. Geist font, huge tight headline with a period (\"Bet on the hamster.\"), pill buttons, 1px warm borders, 22-28px rounded cards, subtle film grain. Original pixel-art hamster mascot (own design, no known characters) in a pixel cage with a wheel: it sleeps with floating z's or runs in the spinning wheel based on live data, and the whole site switches to a night theme while he runs. Day palette: bg #FFF5E6, card #FFFBF4, ink #2B2118, muted #8A7765, line #E9D9C3, peach #FFB48A, butter #FFE08A, mint #A8E6C6, lilac #CDB8FF, rose #FF9AA8. Night: bg #1E1A2E, card #29233D. Silkscreen pixel font for numbers and tags. Over #E07A3E, under #5B8DEF, snooze #9A6FE0. 8-bit WebAudio blips, a jingle and pixel confetti on wins, chunky buttons with a colored drop shadow. Subtle dotted-grid touches as a nod to sepolia.squeekchain.com.\n\nBET PANEL:\n- Plain language, local time: \"Bets for 23:20-00:20 your time · closes in 12:41\". No window/round jargon.\n- Line shown big. Sides OVER / UNDER / SNOOZE (under 100 passes) with a live payout preview (\"if you win ≈1.8x · ~9 IMD\").\n- Quick amounts 1/5/10/Max, an Approve → Bet stepper, and a Get IMD button (swap link).\n- While he sleeps: \"usually wakes in ~5h\" plus a timeline picker for upcoming windows.\n- 6 sunflower seeds per window, one per 10-min round, filling with live passes. A passes odometer for the current hour.\n\nJACKPOT: dark card, glowing butter-yellow counter as a pixel jar filling with coins. 5 IMD ticket, ±0.5% wins 80%, 20% carries, no winner = grows, asleep = rolls over. Show next fixed prize, last winner and when. \"Feed the hamster\" button (feedHamster) and a \"fed by 0x…\" list from Fed events.\n\nMORE:\n- Live event ticker: bets, wins, feeds, jackpot hits.\n- Results ribbon for the last 24 windows versus the line.\n- 24h activity strip from telemetry: when he usually runs, with a \"you are here\" marker.\n- My bets: status, claimable, \"Claim all\", win banner.\n- Share card after a bet: image with side, amount, line and time, and a \"share on X\" button.\n- \"?\" tooltip on every card. 3-step onboarding on first visit. Light/dark toggle.\n- Mobile: sticky bottom bet panel, collapsible chat.\n- Teaser: \"Lose a bet, mine $HAMSTER. Soon.\" Losses already count.\n\nSTATS TAB: add worker routes /stats7 and /stats30 proxying api.squeekchain.com/v1/measurement/stats?range=7d|30d. Show a typical day by hour, km run, records, and on-chain game stats from events.\n\nAGENTS: worker route /api/window returns the current and next window, line, pools, close time, jackpot and recent results as JSON. Publish SKILL.md so `npx skills add https://hamsterhour.fun` works (format like docs.squeekchain.com). It covers the contract, ABI, reading windows, betting, claiming, and safety rules (own wallet only, spending limits, never handle others' keys). Add a small \"AI agents can play\" section linking it.\n\nFooter: x.com/hamsterhourgame, contract on etherscan, \"settled by the IMD oracle, data from Squeekchain\".","baseCommit":"ef19db49a5d580fdbd979e80af95a7940556119a","workflowId":null,"deliveredAt":"2026-10-20T07:45:33.899+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context/pull/5"},{"site":{"cid":"bafybeifpo6lenmuviml45blmr5gbh2nmdr6pdkthuoxr7er35h72a3jjwq","status":"named","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth"},"jobId":"35a18b93-f502-40e3-a23d-e6dbc3155cb0","state":"completed","commit":"6458b3e40bd5aacfd4a2987fe84397960bb3b7a0","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","createdAt":"2026-10-20T08:12:21.805355+00:00","objective":"Polish the v2 site. Keep the design, colors and contract integration as they are. Goal: the home page is short like v1, only what you need to bet; everything else moves to top tabs.\n\nTABS: The wheel | Jackpot | Stats | My bets | Agents.\n\nHOME (The wheel), in this order only:\n1. Header and the \"Bet on the hamster.\" headline (keep \"New here?\").\n2. One hamster frame: when the stream is live (worker /live), show the live stream inside this exact frame; when it is offline or stale, show the pixel hamster sleeping or running from live data. Never show an old recording. Remove the separate \"wheel cam\" card. Retitle the card from \"Meet the entire team\" to \"Live from the wheel\". Below it: this hour's passes and the 6 seeds.\n3. Bet panel as now.\n4. A compact jackpot strip: amount, \"Guess the exact number · 5 IMD\" button, link to the Jackpot tab.\n5. The one-line live ticker.\nNothing else on home. On mobile the first screen is the hamster frame plus the bet panel.\n\nMOVE: full jackpot jar, feed the hamster and the \"fed by\" list → Jackpot tab. \"A hamster's usual day\" and results history → Stats tab. AI agents section → Agents tab. Chat → a small floating chat button (bottom right) that opens a drawer, available on every tab.\n\nFIXES:\n- \"The last 24 hours\" lists future windows as past. Show only finished windows, newest first, with the hamster's actual passes for each hour (from the worker /rounds or stats), the line, and the winning side when there were bets. Put it in Stats.\n- \"usually wakes in ~Xh\": compute from the first hour of the 7-day average with at least 100 passes after now (should be ~12h at noon Kyiv time).\n- Format numbers with commas: 2,100, not \"2 100\".\n- Apply the medium and low findings from the previous design critic review of this site.\n- Remove anything duplicated or decorative that does not help betting.","baseCommit":"0724789990231d4bdcb77ded32b0a9fcea331681","workflowId":null,"deliveredAt":"2026-10-20T08:56:02.449+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context/pull/6"},{"site":{"cid":"bafybeihfhge32lyyprnu44rjtthnw5qyyln2wjulzkxmfkmjhlj4ff5qc4","status":"named","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth"},"jobId":"040611d4-bc95-477a-9a0a-1a6cf829bf81","state":"completed","commit":"fc0ecd0d6278b57d028ed4dd7405752d56aed74d","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","createdAt":"2026-10-20T20:08:26.935051+00:00","objective":"Project site: https://hamsterhour.fun\n\nAdd one new top tab \"$HAMSTER\" to the live site. Do not change anything else: keep the design, other tabs and features exactly as they are.\n\nADDRESSES (Ethereum mainnet):\n- HAMSTER token 0x8e7c7936b4f2d4475dc4bacd174dc228d4d24e86 (18 decimals), pool HAMSTER/IMD on Uniswap v4\n- HamsterVault 0x1dceb78b36b5f18ac4a130f1ffc76eba0e73d183 (ABI: github.com/identity-md-launches/launch-2304-project-site-https-hamsterhour-fun-launc/abi)\n- HamsterHook 0x82f636a92364d13754d7b3e72d460f0be20a28cc (source: github.com/identity-md-launches/launch-2336-hamster-hour)\n- Game v2 0xe33ab493249a2df0d8c4a71ac54f46d1f7778367, IMD 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7\n\nTHE TAB, top to bottom:\n1. Token: the official CA with a copy button, \"Buy on Uniswap\" (app.uniswap.org swap, IMD to HAMSTER, mainnet), and the note \"beware of fake tokens, this is the only CA\". While the anti-snipe tax is live, show the current buy tax and a countdown to 0 (95% at pool start, minus 2 points per full minute, 0 after 48 minutes; read the start time from the hook).\n2. Mine: list the windows where the connected wallet lost (lossOf > 0 on the game) with vault.claimable(game, k, account), and a \"Claim all\" button calling claimMined(game, windows[], account) in bounded batches. Show grants with vested and locked amounts, plus a withdrawVested button.\n3. Stake: approve and stake HAMSTER (show the 24h warm-up), requestUnstake (rewards stop now, tokens release after 24h), withdrawUnstaked, pendingIMD and claimRewards.\n4. Stats: current mining rate (HAMSTER per 1 IMD lost) and the next halving from currentMiningState, buckets left, total staked, IMD paid to stakers.\n5. A short \"how it works\" with a \"?\" tooltip: lose a bet and mine $HAMSTER, 7-day vesting that counts as stake, stakers earn IMD from 5% of every bet and 0.5% of every swap.","baseCommit":"6458b3e40bd5aacfd4a2987fe84397960bb3b7a0","workflowId":null,"deliveredAt":"2026-10-20T20:32:48.953+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context/pull/7"},{"site":{"cid":"bafybeigbeg2ypoipijsc57b35qm5qryp3tlwsjw2u4ow6rjncaj4d3h2ne","status":"named","ensName":"hamster-hour-bet-on-the-wheel.site.identitymd.eth"},"jobId":"b8abdc6c-7990-406e-a674-da092f6f13ab","state":"completed","commit":"f0bb75a34f0402f74b761e8984e4771d9c537520","repoUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context","createdAt":"2026-10-20T20:41:00.332956+00:00","objective":"Small update. Change nothing else.\n\n1. $HAMSTER tab, in Stats and on top of the Stake card, add a \"Rewards pool\" block:\n- IMD waiting for stakers = vault.dripDeposited() + vault.hookDeposited() + vault.gameDeposited() - vault.rewardsPaid() (vault 0x1dceb78b36b5f18ac4a130f1ffc76eba0e73d183), shown in IMD and USD.\n- Releasing now: IMD per day (drip about 1% of the remaining drip per day, plus active 7-day streams).\n- Estimated APR for stakers: daily release × 365 ÷ USD value of total staked (HAMSTER price from the HAMSTER/IMD pool). Mark it as an estimate that changes with stake and price.\n- For a connected wallet: your share of the stake (%) and your IMD per day.\n\n2. Jackpot total: everywhere the jackpot is shown (home strip and Jackpot tab), show game.jackpotSeed() + game.totalPendingJackpotDeposits() (game 0xe33ab493249a2df0d8c4a71ac54f46d1f7778367), not only the next window's bucket. Keep \"next hour's fixed prize\" as a secondary line.","baseCommit":"fc0ecd0d6278b57d028ed4dd7405752d56aed74d","workflowId":null,"deliveredAt":"2026-10-20T21:07:05.063+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1959-workflow-frontend-stage-context/pull/8"}],"contracts":[{"id":"ed83213d-f7c5-487c-b17b-c79ba8d2c3fc","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"HamsterHour","role":"other","txHash":"0x48c8490dbccbb523a232d880b2909f35a721b140fb586493c9f49dbf429ba268","address":"0xc5217f129da200a8e86229de4eabf3686eef64b1"},{"name":"OracleVerifier","role":"other","txHash":"0x48c8490dbccbb523a232d880b2909f35a721b140fb586493c9f49dbf429ba268","address":"0xdcd7a7dee31d589f9df8113780050c18e7ea1f7d"}],"createdAt":"2026-10-16T09:30:40.604+00:00","updatedAt":"2026-10-16T09:31:27.287+00:00","launchNumber":1951,"parkedReason":null,"sourceCommit":"7ab2a01b3d9a15e2acca8b317e77058e6f2d41e9","sourceRepoUrl":"https://github.com/identity-md-launches/launch-1951-workflow-contract-stage-context"}],"publishedAt":"2026-10-20T21:07:28.544+00:00"},{"id":"job:ef76fd68-a952-4089-9c0e-29196eeb541d","code":[{"jobId":"ef76fd68-a952-4089-9c0e-29196eeb541d","commit":"d48bc2117a06c79c3b8545d15eeff2675da94a31","repoUrl":"https://github.com/identity-md-launches/launch-2297-build-cto-relay-station","template":"shape:chain","publishedAt":"2026-10-20T16:28:32.14+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2297-build-cto-relay-station/pull/1"}],"media":[],"sites":[],"title":"Build CTO Relay Station W1, the complete product website for people to use the A1 Agent core. This is the product interface, not an HTML asset generated by a user's project. Deliver working responsive frontend source, static build, executed local browser tests, independent review and honest integration status. No new contracts, governance, voting, rankings, longest-branch winner, treasury, automatic sponsorship, tokens, audio/video or backend authority.\n\nPARALLEL DEPENDENCY: A1 is being built in job d5530989-b886-4f9d-80dd-44d26d85ffd2; read https://api.imdnotdead.fun/jobs/d5530989-b886-4f9d-80dd-44d26d85ffd2 and its actual public delivery when available. A1 submitted body SHA256 is 3683b19c9c39d67b5c679641e4755e7914f471fe41329d1a3b2dfb1a34a58c77. There is no accepted ABI, SDK or product deployment supplied at submission. Build in a separate repository, not job.continue on A1. Use one typed UI-domain adapter boundary with explicit capabilities; it is NOT an invented contract ABI. Fixtures are a separate local-test/demo adapter with a persistent visible demo label and no real-wallet signing. Production operations use the actual A1 SDK/ABI and verified config once available; never synthesize selectors, addresses, methods or fake transactions. Inspect A1 at build and integration steps; pin delivered repo, commit and imported files/hashes. If unavailable, finish UI and fixture tests, fail closed for missing live bindings and report A1_INTEGRATION_PENDING with an actionable handoff. No endless polling or paid followup. Missing A1 must not become a blank website or claim of completed integration.\n\nSIX FUNCTIONS: public project discovery/read and root Branch creation with fixed goal; propose work; select and sponsor a current nonzero proposal; inspect actual assets/status/history; continue; fork an accepted historical checkpoint with direction. Creating/proposing/forking needs only gas, never automatically buys AI. Show connected account, network, project goal, current branch and chosen revision clearly. No connect wall for public reads; unavailable public configuration is explicitly unavailable, never populated silently with fixtures. Chinese-first plain UI, identifiers/details secondary but copyable. Useful workspace for proposals, current assets and history; actions beside their objects. Responsive desktop/mobile, keyboard, labels/focus, clear empty/loading/error states. A crypto project workspace, not a generic marketing landing page; no invented activity, balances or social proof.\n\nASSETS/PROPOSALS: document, self-contained single-page website, single image only, subject to A1's immutable capability config. Select create/update, target slot, current input assets, requirement and optional site publication default off. Updating makes the target a mandatory input. No unverified image editing or cross-branch import. Preview exact proposal, target, selected real input versions, branch, publish effects, current price/maxFee and approval spender before wallet interaction. Enforce current capacities/type/input/size budgets from A1; do not invent numeric constants. Another proposal does not invalidate existing current proposals; no FIFO or latest-only pick. Changed input anchor requires resubmission; sponsor cannot edit proposal content.\n\nCORE SEMANTICS: each branch has one IMD project/head, shared across task types; assets can originate in different rounds. HTML R1 -> image R2 -> HTML R3 uses latest job R2 plus saved HTML R1 and image R2; untouched assets persist. History shows exact checkpoint, changes, funder and original asset provenance. Fork copies selected historical assets, not latest state, proposals, parent project/head or publishing identity; child execution needs separate explicit sponsorship. No automatic main branch selection or quality score.\n\nWALLET/STATE: use A1 SDK for query, witnesses, fee preview and unsigned transactions; only the user's selected browser wallet signs. Validate chain/config/capabilities and refresh anchor/fee before signing. Exact allowance to A1 Branch as needed, not direct IMD job purchase. Handle account/network changes, rejection and asynchronous RPC; never retain stale action for a different wallet. Track approval, purchase transaction, IMD admission/execution, callback, binding, file verification, Git and publication separately. Unknown transaction reconciles original hash/nonce and chain state after reload; no automatic new purchase. Pending/missing callback stays pending. Only authenticated status-1 refusal supports an explicit identical-body retry under A1 rules; other failures freeze. Binding may be retried with corrected manifest without repurchase. No HTTP-based unlock, admin repair or fabricated refund. Local browser storage aids recovery, never becomes source of business truth.\n\nFILES/PREVIEW: expose actual download plus SHA256/length/format verification against A1 descriptors, producer job and history. Never use cached old bytes as current or confuse manifest keccak with file SHA256. Git and optional website URLs need separate observed status/time. Missing/invalid files have useful errors and cannot receive verified badges. Sanitize Markdown; isolate generated HTML from product origin, storage, wallet providers and privileged messages using restrictive opaque-origin sandbox/CSP; no scripts/network/popups/forms/top navigation by default. Do not execute files in the host app. Safe image formats and resource caps. Downloads/new-tab links must be explicit and safe; no arbitrary wallet messages accepted from previews. Publishing may occur before binding; a URL is not content acceptance.\n\nVALIDATION: run real local browsers with deterministic actual Markdown/HTML/PNG bytes and malicious fixtures. Cover all six flows with two temporary test accounts, retained assets and historical fork; account/network changes, sign rejection, double click, reload with pending/unknown tx, stale proposal, missing callback, bad binding, unavailable/tampered file, malicious preview, mobile/keyboard/focus. Fixture adapter tests, actual A1 local-chain integration and mainnet tests are separate evidence. No real keys, external paid job, public product deployment or production hosting. If A1 is available, test its actual SDK/contracts locally with temporary accounts, without modifying core; otherwise mark those cases NOT_RUN. Raw commands/results, failures and screenshots must match final tree. No unsupported PASS; unresolved serious security/functional defects block readiness. Document remaining live acceptance, reproducible build and handoff. Product keeps working without an operator server; the Agent/CLI path remains independent.","types":["code"],"audits":[],"paidBy":"0x0bced6bf6f6db1d7ac5bc0b540482d170a027352","release":null,"research":[],"versions":[],"contracts":[],"publishedAt":"2026-10-20T16:28:32.14+00:00"},{"id":"launch:95b27707-8a97-4d4c-9f29-171db0cdbc2b","code":[],"media":[],"sites":[{"id":"cdea2bdf-e3a8-4fa2-bbef-5523d7b95170","cid":"bafybeie4so6fgjxitgsdrozxs37j7m334eo2lrsgkfpms2owqtkz6o7mbm","jobId":"0d03f682-fbef-4057-acff-5835169cd525","label":"keel-spin-pooled-eth-shared-retu","status":"named","txHash":"0x33028e27ad2e45b00920aaa253c89ede34b6fb3200615736b22d415691f2fc03","ensName":"keel-spin-pooled-eth-shared-retu.site.identitymd.eth","failure":null,"namedAt":"2026-10-18T20:00:28.466+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2164-build-keel-spin-foundry","pinnedAt":"2026-10-18T19:51:23.781+00:00","createdAt":"2026-10-18T19:50:58.474+00:00","previewHash":"c8c6ec34f6cfe43adb4158bb6d677a86b7ec0d33de5e341f6a2ecbbf09c405f9","supersededBy":null}],"title":"Build \"Keel Spin\": a Foundry project with two contracts, KeelSpinVault and KeelFwaRouter. Ethereum mainnet, contracts only. Users pool small ETH bets into rounds; a funded round buys one spin on the Fake World Assets V2 (FWAV2) main pool. For each won NFT the vault keeps it or takes the ETH bid, by its real sellable value. Kept NFTs go to teamWallet, which sells them and returns proceeds to the round's bettors.\n\nADDRESSES (constructor args, owner-settable): FWAV2 0x958C41181182e76F221331b2755b77D9e1426A98; CollectionFloorOracle 0xaA4D9009a4664604b57644bF13e447E9036727DC; IMD Intake v2 0xa43e6f75ee006411f79ac1c84120606c2330de82; IMD 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7; IMD oracle signer; teamWallet (default $owner). Use their verified sources and github.com/adamlizek/fwa-examples (FWAV2BuilderBase).\n\nDEPLOY: KeelSpinVault first, then KeelFwaRouter with $contract:KeelSpinVault; static constructor args only; the owner calls vault.setRouter after.\n\nROUNDS: bet() min 0.001 ETH (owner-set), max 500 bettors. liveTarget = quoteAcquisitionPrice() total (pool fee + VRF fee at tx.gasprice) * (10000 + bufferBps, default 500) / 10000 + spinReward. Bets fill the round to liveTarget; excess goes to the next round. Never lock a round at a stale price. Withdraw allowed while Open.\n\nSPIN: anyone calls spin(roundId). Read the live quote in the same call; require balance >= quote + spinReward and tx.gasprice <= maxSpinGasPrice, else revert. Pay the caller spinReward (default 0.002 ETH, max 2% of quote). The router calls FWAV2.acquire(purchaser = vault, 1, maxAcquisitionFee = quoted pool fee, minWeightedValue, maxNegativeSlippageBps); only the vault may call the router; it earns builder revenue, which the owner claims to teamWallet. Revert during blackouts 11:45-12:00 and 23:45-00:00 UTC. Unspent buffer and overpayment refunds stay with the round's bettors pro rata. Refunded request: claim the refund credit, round back to Open, VRF fee shared pro rata.\n\nDECISION: ethBid = backing * settlementDiscountBps() / 10000, read live. requestDecision(roundId):\n1. Read floor and its timestamp from CollectionFloorOracle; missing or older than maxFloorAge (24h) = unavailable. If floor * (10000 - haircutBps 1500) / 10000 >= ethBid * 3, keep at once.\n2. Else pay 0.5 IMD via Intake.requestWithFailure(\"oracle.request@oracle-1\", body, onOracleResult, onFailure). Body built onchain: v 1, chainId 1, answerType uint256, evidence panel, window {hours:1}, panelSize 5, quorum 4, toleranceBps 500, validForSeconds 3600, guards min 0 max 1e22. Question: \"What is the highest live offer, in wei, that the owner of <collection> token <tokenId> could accept right now, after marketplace fees and creator royalties?\" Owner-settable definitions, each under 512 chars: offers = best token, collection or matching trait offer, WETH counts, ignore offers expiring within 2h; sources = OpenSea, Blur, and for CryptoPunks or wrappers the native market 0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb; net = what the seller actually receives after that marketplace's fee and enforced royalty; missing = never invent offers, answer 0 if none.\nonOracleResult only stores the value: only from Intake, only pending requestIds, verify the EIP-712 signature, agreed >= quorum, not expired. executeDecision (anyone): keep if netOffer * 10000 > ethBid * (10000 + marginBps 500), else take the ETH bid. Add imdBalance(), needsImdTopUp() (below 2 IMD) and a LowImdBalance event.\n\nDEADLINE: after FWA settlementWindow the depositor can reclaim the NFT for just the bid. decisionDeadline = allocatedAt + settlementWindow - safetyMargin (2h). If no valid value by deadline - fallbackLead (1h), or the oracle failed, settleFallback (anyone) keeps if a fresh floor * (10000 - haircut) / 10000 > ethBid * (10000 + margin) / 10000, else takes ETH; no fresh floor = defaultKeep (true). Never take the FWA token cashout, never relist. If the depositor or a finalizer resolves first, settle with what arrived.\n\nKEEP NFT: onERC721Received; forward the NFT to teamWallet (forwardNFT retries if that fails); support recoverStuckNFT. Round -> AwaitingSale; emit collection, tokenId, ethBid, netOffer and decision path. teamWallet or owner calls depositSaleProceeds(roundId, saleTxHash) with ETH, once; round -> Settled; emit SaleProceeds. ETH path: the bid arrives, round -> Settled.\n\nPAYOUTS: pull claims pro rata to stake; feeBps (default 0, max 300) to teamWallet.\n\nSAFETY: Ownable($owner) with setters for all params; pause new bets only; withdrawIMD; the owner can never move bettor ETH; ReentrancyGuard and checks-effects-interactions; events for every state change.\n\nTESTS: carry-over; price rise keeps round Open; gas cap; spinReward paid; buffer returned; blackout; refund path; obvious keep (30 ETH floor vs 1 ETH backing); stale floor skips pre-check; oracle above and below margin; oracle failure fallback; deadline; depositor resolves first; NFT to teamWallet; proceeds pro rata; bad attestation and non-Intake callback rejected; fee cap. Invariant: claimable plus Open balances never exceed vault ETH. Fuzz up to 500 bettors.","types":["contracts","sites"],"audits":[],"paidBy":"0x51a9ca901c0cb5c222d244b2ccb0ebfc5c9aba99","release":null,"research":[],"versions":[{"site":null,"jobId":"84e3719a-76be-40ed-92fb-c792d6490dba","state":"completed","commit":"f976be859d659c91490fac519ea397e7ed398f7f","repoUrl":"https://github.com/identity-md-launches/launch-2164-build-keel-spin-foundry","createdAt":"2026-10-18T11:33:10.299464+00:00","objective":"Build \"Keel Spin\": a Foundry project with two contracts, KeelSpinVault and KeelFwaRouter. Ethereum mainnet, contracts only. Users pool small ETH bets into rounds; a funded round buys one spin on the Fake World Assets V2 (FWAV2) main pool. For each won NFT the vault keeps it or takes the ETH bid, by its real sellable value. Kept NFTs go to teamWallet, which sells them and returns proceeds to the round's bettors.\n\nADDRESSES (constructor args, owner-settable): FWAV2 0x958C41181182e76F221331b2755b77D9e1426A98; CollectionFloorOracle 0xaA4D9009a4664604b57644bF13e447E9036727DC; IMD Intake v2 0xa43e6f75ee006411f79ac1c84120606c2330de82; IMD 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7; IMD oracle signer; teamWallet (default $owner). Use their verified sources and github.com/adamlizek/fwa-examples (FWAV2BuilderBase).\n\nDEPLOY: KeelSpinVault first, then KeelFwaRouter with $contract:KeelSpinVault; static constructor args only; the owner calls vault.setRouter after.\n\nROUNDS: bet() min 0.001 ETH (owner-set), max 500 bettors. liveTarget = quoteAcquisitionPrice() total (pool fee + VRF fee at tx.gasprice) * (10000 + bufferBps, default 500) / 10000 + spinReward. Bets fill the round to liveTarget; excess goes to the next round. Never lock a round at a stale price. Withdraw allowed while Open.\n\nSPIN: anyone calls spin(roundId). Read the live quote in the same call; require balance >= quote + spinReward and tx.gasprice <= maxSpinGasPrice, else revert. Pay the caller spinReward (default 0.002 ETH, max 2% of quote). The router calls FWAV2.acquire(purchaser = vault, 1, maxAcquisitionFee = quoted pool fee, minWeightedValue, maxNegativeSlippageBps); only the vault may call the router; it earns builder revenue, which the owner claims to teamWallet. Revert during blackouts 11:45-12:00 and 23:45-00:00 UTC. Unspent buffer and overpayment refunds stay with the round's bettors pro rata. Refunded request: claim the refund credit, round back to Open, VRF fee shared pro rata.\n\nDECISION: ethBid = backing * settlementDiscountBps() / 10000, read live. requestDecision(roundId):\n1. Read floor and its timestamp from CollectionFloorOracle; missing or older than maxFloorAge (24h) = unavailable. If floor * (10000 - haircutBps 1500) / 10000 >= ethBid * 3, keep at once.\n2. Else pay 0.5 IMD via Intake.requestWithFailure(\"oracle.request@oracle-1\", body, onOracleResult, onFailure). Body built onchain: v 1, chainId 1, answerType uint256, evidence panel, window {hours:1}, panelSize 5, quorum 4, toleranceBps 500, validForSeconds 3600, guards min 0 max 1e22. Question: \"What is the highest live offer, in wei, that the owner of <collection> token <tokenId> could accept right now, after marketplace fees and creator royalties?\" Owner-settable definitions, each under 512 chars: offers = best token, collection or matching trait offer, WETH counts, ignore offers expiring within 2h; sources = OpenSea, Blur, and for CryptoPunks or wrappers the native market 0xb47e3cd837ddf8e4c57f05d70ab865de6e193bbb; net = what the seller actually receives after that marketplace's fee and enforced royalty; missing = never invent offers, answer 0 if none.\nonOracleResult only stores the value: only from Intake, only pending requestIds, verify the EIP-712 signature, agreed >= quorum, not expired. executeDecision (anyone): keep if netOffer * 10000 > ethBid * (10000 + marginBps 500), else take the ETH bid. Add imdBalance(), needsImdTopUp() (below 2 IMD) and a LowImdBalance event.\n\nDEADLINE: after FWA settlementWindow the depositor can reclaim the NFT for just the bid. decisionDeadline = allocatedAt + settlementWindow - safetyMargin (2h). If no valid value by deadline - fallbackLead (1h), or the oracle failed, settleFallback (anyone) keeps if a fresh floor * (10000 - haircut) / 10000 > ethBid * (10000 + margin) / 10000, else takes ETH; no fresh floor = defaultKeep (true). Never take the FWA token cashout, never relist. If the depositor or a finalizer resolves first, settle with what arrived.\n\nKEEP NFT: onERC721Received; forward the NFT to teamWallet (forwardNFT retries if that fails); support recoverStuckNFT. Round -> AwaitingSale; emit collection, tokenId, ethBid, netOffer and decision path. teamWallet or owner calls depositSaleProceeds(roundId, saleTxHash) with ETH, once; round -> Settled; emit SaleProceeds. ETH path: the bid arrives, round -> Settled.\n\nPAYOUTS: pull claims pro rata to stake; feeBps (default 0, max 300) to teamWallet.\n\nSAFETY: Ownable($owner) with setters for all params; pause new bets only; withdrawIMD; the owner can never move bettor ETH; ReentrancyGuard and checks-effects-interactions; events for every state change.\n\nTESTS: carry-over; price rise keeps round Open; gas cap; spinReward paid; buffer returned; blackout; refund path; obvious keep (30 ETH floor vs 1 ETH backing); stale floor skips pre-check; oracle above and below margin; oracle failure fallback; deadline; depositor resolves first; NFT to teamWallet; proceeds pro rata; bad attestation and non-Intake callback rejected; fee cap. Invariant: claimable plus Open balances never exceed vault ETH. Fuzz up to 500 bettors.","baseCommit":"0243d7da4a4337ae8b16bcdf15bb4ead736fd68f","workflowId":null,"deliveredAt":"2026-10-18T14:01:25.536+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2164-build-keel-spin-foundry/pull/1"},{"site":{"cid":"bafybeie4so6fgjxitgsdrozxs37j7m334eo2lrsgkfpms2owqtkz6o7mbm","status":"named","ensName":"keel-spin-pooled-eth-shared-retu.site.identitymd.eth"},"jobId":"0d03f682-fbef-4057-acff-5835169cd525","state":"completed","commit":"f5584c2eccffd8843fcf7e0a4fab28f1c3b031ee","repoUrl":"https://github.com/identity-md-launches/launch-2164-build-keel-spin-foundry","createdAt":"2026-10-18T18:46:57.106279+00:00","objective":"Build the Keel Spin web app against the live KeelSpinVault and KeelFwaRouter deployment: a static, mobile-first single page where people bet into rounds, watch spins resolve and browse the full spin history. Read the addresses and ABIs from the deployment handoff; never hardcode them. Ethereum mainnet. No backend: all data comes from the chain.\n\nSTACK\nVite + React + TypeScript + viem + wagmi. Injected wallets first (MetaMask, Rabby, in-app mobile browsers), WalletConnect only if a project id is set at build time. RPC from a build-time env with public fallbacks. Every page string in English.\n\nSTYLE (Keel)\nCalm forest feel on a near-black background: deep greens, soft leaf accents, silver highlights. Mascot: a tiny chrome fawn with a silver leaf shield, used small (empty states, loading, win reveal), never as clutter. Compact, uncluttered, phone first; on mobile a bottom tab bar: spin, history, mine, info. Short lowercase labels, plain words. Respect prefers-reduced-motion. Colors and fonts: [PASTE KEEL HEX COLORS AND FONT NAMES HERE].\n\nSPIN TAB\n- Current round card: progress bar of round balance vs liveTarget (live FWAV2 quote + buffer + spinReward, refreshed every block), bettor count, your stake, bet input with min bet, withdraw while Open.\n- Spin button for anyone once the round is funded, showing the spinReward the caller earns; disabled with a reason when not funded, gas is above maxSpinGasPrice, or during FWA blackouts (11:45-12:00 and 23:45-00:00 UTC), with a countdown to the next open window.\n- Live status of the latest spin: waiting for randomness, won NFT (image, collection, token id, backing, ETH bid), deciding (countdown to decisionDeadline, oracle pending or done), outcome. Show requestDecision, executeDecision and settleFallback buttons to anyone when callable, with one line on what each does.\n- A short win reveal animation when a position is allocated.\n\nHISTORY TAB (the feed)\nOne row per spin, newest first: round number, NFT thumbnail, collection and token id, spin price, bettors, decision path badge (pre-check, oracle, fallback), outcome (kept nft, awaiting sale, sold for X ETH with sale tx, or took ETH bid X), return per 1 ETH staked, time, Etherscan links. Filters: all, kept, eth, awaiting sale, mine. Tap a row for a detail sheet with every event of that round. Paginate 25 at a time.\n\nMINE TAB\nRounds the connected wallet joined: stake, share, status, claimable amount, claim buttons. Pending carry-over into the next round. Empty state with the fawn when nothing joined.\n\nINFO TAB\n- Stats: spins, ETH volume, ETH returned, NFTs kept and sold, average return per 1 ETH.\n- Plain explanation in five short steps: bet, spin, keep or take ETH, sale, claim.\n- Trust note: kept NFTs go to the Keel team wallet and are sold by the team; proceeds and the sale tx are recorded onchain per round. Show teamWallet, AwaitingSale rounds and how long each has waited.\n- Contract links, live parameters (buffer, margin, haircut, fee, spinReward), vault IMD balance with a low balance warning.\n\nDATA\n- Read vault events with getLogs from the deployment block in chunks, cache per chain and address in localStorage inside try/catch, then poll new blocks every 12s.\n- Join round, spin, decision and settlement events in a typed store; one module owns all chain reads.\n- NFT data: FWAV2.listings(listingId) for collection and token id, then tokenURI metadata with IPFS gateway fallback. CryptoPunks have no tokenURI: render the onchain SVG from CryptoPunksData 0x16F5A35647D6F03D5D3da7b35409D65ba03aF3B2. Placeholder art if metadata fails.\n- Format ETH with 4 significant decimals, times relative with exact UTC on hover.\n\nTRANSACTIONS\nSimulate before sending, show pending, confirmed and failed states with Etherscan links, decode contract errors to plain messages, refresh affected data after confirmation. Never ask for approvals the vault does not need.\n\nACCEPTANCE CRITERIA\n- Works at 360px wide with no horizontal scroll; lighthouse accessibility 90+.\n- History renders a round of each outcome and path from a fixture of mock events.\n- Spin button states match the contract checks (funded, gas cap, blackout).\n- Claims show the exact claimable amount from the contract.\n- Loads with no wallet connected; all data readable without signing in.\n- Static export builds with no server.","baseCommit":"f976be859d659c91490fac519ea397e7ed398f7f","workflowId":null,"deliveredAt":"2026-10-18T19:51:05.263+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2164-build-keel-spin-foundry/pull/2"}],"contracts":[{"id":"95b27707-8a97-4d4c-9f29-171db0cdbc2b","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":1,"artifacts":[{"name":"KeelFwaRouter","role":"other","txHash":"0xe4b42562e1af6ae778b3955e2bae7ab33551b15d9d0a832daeda88aabf72b6a6","address":"0xc9a47781e3e50a3161d81b5d4c05b2058e318a98"},{"name":"KeelSpinVault","role":"other","txHash":"0xe4b42562e1af6ae778b3955e2bae7ab33551b15d9d0a832daeda88aabf72b6a6","address":"0x3255347a4f5a1c571a217a7ec9a4b9e520857c49"}],"createdAt":"2026-10-18T14:01:25.536+00:00","updatedAt":"2026-10-18T14:03:16.13+00:00","launchNumber":2164,"parkedReason":null,"sourceCommit":"f976be859d659c91490fac519ea397e7ed398f7f","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2164-build-keel-spin-foundry"}],"publishedAt":"2026-10-18T20:00:28.466+00:00"},{"id":"workflow:dc229400-5968-4cca-a9be-fc209c22ab60","code":[],"media":[],"sites":[{"id":"5bfdc5c9-d4a4-4c6e-b4d7-68843fc69bab","cid":"bafybeihqyrrtxgwk4mjej3eof6lcubgj52jbaepzk5p6ly45sugsk4t5ki","jobId":"4b0a76b4-7666-42cb-9e4d-41b0d4c92f09","label":"locker","status":"named","txHash":"0xd1b2549cb6dcd307719ad51027b03365bfeb001f2563477fba008dad71fa93fe","ensName":"locker.site.identitymd.eth","failure":null,"namedAt":"2026-10-18T10:35:15.496+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2158-workflow-frontend-stage-context","pinnedAt":"2026-10-18T10:33:30.051+00:00","createdAt":"2026-10-18T10:33:08.971+00:00","previewHash":"3f5997ca6dc541a6c9367ef5ebc8a5b636113ae736a933adf6d89953fcdb2712","supersededBy":null}],"title":"Build **Locker ($LOCKER)**, a fully functional DeFi farming platform on Ethereum Sepolia Testnet with a premium pixel-art RPG website.\n\n**Ownership:** The authenticated wallet that submits this prompt and pays IMD must be the initial owner and administrator of all Locker contracts, farms, and Treasury. Resolve the owner from the launch context without asking follow-up questions. Never assign ownership to the Swarm worker or temporary deployer.\n\n**Token & Launch:** Use the standard fixed-supply LOCKER token (1 billion, 18 decimals, no further minting), paired with IMD. Respect the allocation configured in the launch form: 10% Swarm, 30% LOCKER/IMD liquidity pool, 60% requester wallet. Do not override the launch form. After launch, the requester will transfer 50% of total supply to Treasury and retain 10% for the owner. Do not attempt additional token splits during initial minting.\n\n**Farming Architecture:** Swarm must independently select a suitable secure, established farming architecture; do not require Sushi MasterChef. Create independently funded farms for IMD, sIMD, and LOCKER. Each farm must have isolated user deposits, fee accounting, LOCKER reward funding, and reward schedules. Owner can add new token pools later without changing existing farms.\n\n**Deposits & Withdrawals:** Deposit fee is 0%. Withdrawal fee is 10% of withdrawn principal: 9% redistributed proportionally among other depositors in the same pool, excluding the withdrawing address even for partial withdrawals; 1% goes to Treasury in the underlying token. If no other eligible depositors exist, all 10% goes to Treasury. Fee rewards are immediately claimable in the underlying token without additional protocol fees, including after full withdrawal.\n\n**Farming Rewards:** Distribute LOCKER based on stake and time. Each farm has its own LOCKER reward balance and 30-day farming schedule. Owner can fund farms independently, set reward rates, boost future emissions, start new epochs, and add farms. Funding rewards must not automatically increase emissions. Never use user principal or accrued rewards to fund new emissions. LOCKER staking principal must be separate from LOCKER farming rewards.\n\n**Admin & Future Renouncement:** Owner initially controls farm creation, emissions, Treasury, and emergency settings. Implement separate administrative roles that can be permanently renounced individually in the future while retaining Treasury control. Renounced roles must not be recoverable through hidden admins, upgrades, or factories. Do not renounce any roles at launch. Treasury cannot access user deposits or accrued rewards.\n\n**Uniswap & Buyback:** Project-owned Uniswap LP trading fees will be collected manually, converted into IMD, and split 80% Treasury / 20% Team. Treasury may manually buy back LOCKER and refill individual farm reward balances. No automatic trading or buybacks.\n\n**Website:** Premium dark fantasy pixel RPG design with animated golden treasure chests. Home: Connect Wallet, IMD/sIMD/LOCKER pool cards, Deposit, Withdraw, Claim Fees, Claim LOCKER, balances, farming countdown, and APR per pool. Display Farming APR and historical Withdrawal Fee APR separately using reliable data; otherwise show \"APR unavailable\". Include a How It Works page, configurable X link, and owner-only Admin Dashboard.\n\n**Website Editing:** Deliver complete editable React/TypeScript source code, assets, contract ABIs, configuration, and README. The website must be independently hostable on Cloudflare Pages or Vercel, with GitHub-compatible deployment. Future frontend updates must not require redeploying unchanged contracts or relaunching LOCKER.\n\n**Security:** Prevent self-fee rewards, partial withdrawal errors, double claims, reward insolvency, reentrancy, and unauthorized restoration of renounced roles. Run tests and report actual results. Never claim unexecuted tests passed.\n\n**Deliverables:** Working Sepolia LOCKER token, LOCKER/IMD LP, three farming pools, functional website, owner Admin Dashboard, full source code, contract addresses, and deployment instructions. Never deploy to mainnet or silently change the specified economic rules.\n\nToken name: Locker\nToken symbol: LOCKER","types":["contracts","sites"],"audits":[],"paidBy":"0xdea11b3a70b77134424d436f6eb455f1abbd4449","release":{"status":"completed","failure":null},"research":[],"versions":[],"contracts":[{"id":"cdc4889e-f66e-4f0c-bb2f-f1a7f729f598","kind":"evm_project","token":{"logo":"0cd3724a4aca6f8f3556551cb9f3938e5bd1104f7efb2b822687a98a72c85d6f","name":"Locker","symbol":"LOCKER"},"seeded":{"pools":[{"fee":12500,"hooks":"0xa0602cb30558d5dd17415b6268a4feea3a0ca000","currency0":"0x0000000000000000000000000000000000000000","currency1":"0xe38529515da53bad2951060f7c43e8f3458990e5","tickSpacing":60}],"launched":[],"positions":[{"factory":"0x84cf2bc1dc2af577dba5d62e26f90d041ca38f7a","tickLower":-887220,"tickUpper":177240,"launchNumber":2152}]},"status":"live","chainId":11155111,"artifacts":[{"name":"LaunchToken","role":"token","txHash":"0x3c4e2133da772ea0020b1457ed568c3c7828c8417d746efab791793fada2a368","address":"0xe38529515da53bad2951060f7c43e8f3458990e5"},{"name":"LockerFarm","role":"other","txHash":"0x3c4e2133da772ea0020b1457ed568c3c7828c8417d746efab791793fada2a368","address":"0x21f47f330d99cd1ce97a6fb9553126ed58a18fc0"},{"name":"LockerFarmFactory","role":"other","txHash":"0x3c4e2133da772ea0020b1457ed568c3c7828c8417d746efab791793fada2a368","address":"0xefea131b90183150eac7c53b51a1dc995e2f78f9"},{"name":"LockerTreasury","role":"other","txHash":"0x3c4e2133da772ea0020b1457ed568c3c7828c8417d746efab791793fada2a368","address":"0xbc0bdf9b4a3c1b7dcea14aa5d55d9187bfadc73a"},{"name":"MerkleDistributor","role":"distributor","txHash":"0x3c4e2133da772ea0020b1457ed568c3c7828c8417d746efab791793fada2a368","address":"0x3b3c990965c5d460ede913acbaa9c05907e605b1"},{"name":"PoolInitializationGuard","role":"hook","txHash":"0x3c4e2133da772ea0020b1457ed568c3c7828c8417d746efab791793fada2a368","address":"0xa0602cb30558d5dd17415b6268a4feea3a0ca000"}],"createdAt":"2026-10-18T09:23:47.062+00:00","updatedAt":"2026-10-18T09:24:50.538+00:00","launchNumber":2152,"parkedReason":null,"sourceCommit":"f27a482805c941e6e086a94ec46e1121ba896984","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2152-workflow-contract-stage-context"}],"publishedAt":"2026-10-18T10:35:15.496+00:00"},{"id":"workflow:8e88e523-cec3-48c1-b784-daa1e7c8671a","code":[],"media":[],"sites":[{"id":"c31471a3-2bb4-4e44-947f-92889705c062","cid":"bafybeickyc7ju3iartwxn3nvabjbkzl3eddfmpabds76562rg46mrdprey","jobId":"ef05b1de-5b53-4a14-bdc1-d5c1b2aeefde","label":"mnemo","status":"named","txHash":"0x07d42ba5284561b2d213f6aa81d476486059ba3ae100dce493d195b41896b0d3","ensName":"mnemo.site.identitymd.eth","failure":null,"namedAt":"2026-10-18T05:38:39.668+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2137-workflow-frontend-stage-context","pinnedAt":"2026-10-18T05:37:42.336+00:00","createdAt":"2026-10-18T05:37:24.218+00:00","previewHash":"4a594108d1c38ccaa15d580cfcec28d911dd55d5e878969b418150e112262487","supersededBy":null},{"id":"58e675b8-0bb7-448c-9638-71c010413f0e","cid":"bafybeieslmvq4lvgdgcdwq5vcrpev6ch3cfavorzkxmd3swv6bxtfq5i5q","jobId":"6897884c-22dc-41cc-accf-063cac692ead","label":null,"status":"named","txHash":"0x4210a4952ab820603c45f3a52471863e773624dc458bcba968e1814591c5dd02","ensName":"mnemo.site.identitymd.eth","failure":null,"namedAt":"2026-10-18T04:24:51.911+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2137-workflow-frontend-stage-context","pinnedAt":"2026-10-18T04:23:23.018+00:00","createdAt":"2026-10-18T04:23:08+00:00","previewHash":"1efdd4e2314c13c24a4a60d233503c1bfbfe1a37fea3c0fc1ae689f91303d2f9","supersededBy":"c31471a3-2bb4-4e44-947f-92889705c062"}],"title":"MNEMO. Tagline: \"Your AI's memory, sealed on chain\".\nToken: name \"Mnemo\", symbol \"MNEMO\", fixed supply, plain transfers, no tax, no mint. The launch pool pairs MNEMO with IMD.\n\nWhat it is\nYour AI remembers you, and so does whoever runs its servers. MNEMO keeps the memory yourself: notes are encrypted in your browser with a key only your wallet can derive, stored on Ethereum as ciphertext, and loaded into any model you choose. Switch from Claude to GPT to a local model and your AI still knows you. Nobody else can read a word. Every note you seal burns MNEMO.\n\nWhat each contract does\nMnemoVault stores sealed notes as events, burns the stamp, tracks each wallet's key epoch, and records which agent wallets a user has granted access to. No contract ever sees plaintext or keys.\n\nWho can call what\nAnyone with MNEMO: write(bytes[] notes, uint32 epoch) for their own vault.\nA note's owner: forget(uint256[] ids), rotate().\nA vault owner: grant(address agent, bytes sealedKey), revoke(address agent). revoke also rotates the owner's epoch.\nA granted agent: writeFor(address owner, bytes[] notes, uint32 epoch), paying the stamp from its own MNEMO.\nAnyone: register(bytes32 x25519PublicKey) so others can grant it access.\nOwner (launch owner, Ownable2Step, renounce disabled): setStamp(uint256) within 100 to 100,000 MNEMO per note, for future writes only. No pause, no upgrade, no other powers.\n\nNumbers the contracts enforce\nStamp: 2,000 MNEMO per note at launch, sent to 0x000000000000000000000000000000000000dEaD in the same call.\nA note is at most 2,048 bytes; at most 16 notes per call; epoch must equal the writer's current epoch for that vault.\nNote ids count up per contract from 1. Events: Noted(owner, id, epoch, ciphertext), Forgotten(owner, id), Rotated(owner, epoch), Granted(owner, agent, epoch, sealedKey), Revoked(owner, agent), KeyRegistered(account, key), StampChanged(old, new).\nViews: epochOf(owner), isGranted(owner, agent), notesTotal(), burnedTotal().\n\nOutside services and values\nNone on chain. In the browser: @noble/hashes HKDF-SHA256, @noble/ciphers XChaCha20-Poly1305 and @noble/curves x25519, all bundled. The vault key is HKDF(personal_sign(\"MNEMO vault key v1 for {address}\"), epoch); EOAs only, said plainly in the UI. Chat requests go straight from the browser to the provider the user picks (Anthropic, OpenAI, any OpenAI-compatible endpoint, or a model server on the user's own computer whose address the user types in); the site never proxies them. The site ships no private or local addresses of its own.\n\nWhat the site shows\nStatic IPFS site, label mnemo, title \"MNEMO\", public RPCs with fallback, no backend, no analytics, every script and font bundled.\nHome: the tagline, one line under it, \"Open your vault\", and one canvas centrepiece: drifting dots that gather into a sealed capsule when the vault opens.\nChat: provider picker, API key kept in memory unless the user ticks \"Remember on this device\", the conversation, and a side panel \"What MNEMO remembers\" with the decrypted notes. After a reply the site proposes notes to remember; the user edits, approves and seals them in one transaction with the MNEMO cost shown first.\nAgents: register a key, grant or revoke an agent wallet, and docs with llms.txt plus a 40-line script that reads and writes a vault.\nNumbers: network totals only (notes sealed, MNEMO burned, vaults opened). Never list other wallets or their notes.\nFAQ: what is on chain (ciphertext only), who sees prompts (the provider you pick, nobody with a local model), what forget and rotate do (old ciphertext stays on chain but rotation makes later notes unreadable to revoked agents), EOAs only.\n\nWhat a connected wallet can do\nOpen the vault with one signature, chat, seal, edit, forget and rotate notes, grant and revoke agents, buy and sell MNEMO in the launch pool, and export its decrypted notes as a JSON file.\n\nLook and feel\nLight sky paper #E9F1F7, ink #0F1A26, one signal accent #FF5B2E. Newsreader for headlines, Spline Sans Mono for everything else. Square buttons with a hard 2px ink shadow, no gradients, no glow, no pills. Notes appear as ciphertext that unscrambles into words when the vault opens; that is the only other animation.\n\nToken name: Mnemo\nToken symbol: MNEMO","types":["contracts","sites"],"audits":[],"paidBy":"0xc91633279dd9fa90d69f3c1b48c18a96fbd8ab67","release":{"status":"completed","failure":null},"research":[],"versions":[{"site":{"cid":"bafybeieslmvq4lvgdgcdwq5vcrpev6ch3cfavorzkxmd3swv6bxtfq5i5q","status":"named","ensName":"mnemo.site.identitymd.eth"},"jobId":"9529361a-3e73-4fbe-8297-2ced47e49a86","state":"completed","commit":"02949a294df5425b4ebe8d4d25b68063c8934968","repoUrl":"https://github.com/identity-md-launches/launch-2136-workflow-contract-stage-context","createdAt":"2026-10-18T03:19:42.276567+00:00","objective":"MNEMO. Tagline: \"Your AI's memory, sealed on chain\".\nToken: name \"Mnemo\", symbol \"MNEMO\", fixed supply, plain transfers, no tax, no mint. The launch pool pairs MNEMO with IMD.\n\nWhat it is\nYour AI remembers you, and so does whoever runs its servers. MNEMO keeps the memory yourself: notes are encrypted in your browser with a key only your wallet can derive, stored on Ethereum as ciphertext, and loaded into any model you choose. Switch from Claude to GPT to a local model and your AI still knows you. Nobody else can read a word. Every note you seal burns MNEMO.\n\nWhat each contract does\nMnemoVault stores sealed notes as events, burns the stamp, tracks each wallet's key epoch, and records which agent wallets a user has granted access to. No contract ever sees plaintext or keys.\n\nWho can call what\nAnyone with MNEMO: write(bytes[] notes, uint32 epoch) for their own vault.\nA note's owner: forget(uint256[] ids), rotate().\nA vault owner: grant(address agent, bytes sealedKey), revoke(address agent). revoke also rotates the owner's epoch.\nA granted agent: writeFor(address owner, bytes[] notes, uint32 epoch), paying the stamp from its own MNEMO.\nAnyone: register(bytes32 x25519PublicKey) so others can grant it access.\nOwner (launch owner, Ownable2Step, renounce disabled): setStamp(uint256) within 100 to 100,000 MNEMO per note, for future writes only. No pause, no upgrade, no other powers.\n\nNumbers the contracts enforce\nStamp: 2,000 MNEMO per note at launch, sent to 0x000000000000000000000000000000000000dEaD in the same call.\nA note is at most 2,048 bytes; at most 16 notes per call; epoch must equal the writer's current epoch for that vault.\nNote ids count up per contract from 1. Events: Noted(owner, id, epoch, ciphertext), Forgotten(owner, id), Rotated(owner, epoch), Granted(owner, agent, epoch, sealedKey), Revoked(owner, agent), KeyRegistered(account, key), StampChanged(old, new).\nViews: epochOf(owner), isGranted(owner, agent), notesTotal(), burnedTotal().\n\nOutside services and values\nNone on chain. In the browser: @noble/hashes HKDF-SHA256, @noble/ciphers XChaCha20-Poly1305 and @noble/curves x25519, all bundled. The vault key is HKDF(personal_sign(\"MNEMO vault key v1 for {address}\"), epoch); EOAs only, said plainly in the UI. Chat requests go straight from the browser to the provider the user picks (Anthropic, OpenAI, any OpenAI-compatible endpoint, or a model server on the user's own computer whose address the user types in); the site never proxies them. The site ships no private or local addresses of its own.\n\nWhat the site shows\nStatic IPFS site, label mnemo, title \"MNEMO\", public RPCs with fallback, no backend, no analytics, every script and font bundled.\nHome: the tagline, one line under it, \"Open your vault\", and one canvas centrepiece: drifting dots that gather into a sealed capsule when the vault opens.\nChat: provider picker, API key kept in memory unless the user ticks \"Remember on this device\", the conversation, and a side panel \"What MNEMO remembers\" with the decrypted notes. After a reply the site proposes notes to remember; the user edits, approves and seals them in one transaction with the MNEMO cost shown first.\nAgents: register a key, grant or revoke an agent wallet, and docs with llms.txt plus a 40-line script that reads and writes a vault.\nNumbers: network totals only (notes sealed, MNEMO burned, vaults opened). Never list other wallets or their notes.\nFAQ: what is on chain (ciphertext only), who sees prompts (the provider you pick, nobody with a local model), what forget and rotate do (old ciphertext stays on chain but rotation makes later notes unreadable to revoked agents), EOAs only.\n\nWhat a connected wallet can do\nOpen the vault with one signature, chat, seal, edit, forget and rotate notes, grant and revoke agents, buy and sell MNEMO in the launch pool, and export its decrypted notes as a JSON file.\n\nLook and feel\nLight sky paper #E9F1F7, ink #0F1A26, one signal accent #FF5B2E. Newsreader for headlines, Spline Sans Mono for everything else. Square buttons with a hard 2px ink shadow, no gradients, no glow, no pills. Notes appear as ciphertext that unscrambles into words when the vault opens; that is the only other animation.\n\nToken name: Mnemo\nToken symbol: MNEMO","baseCommit":"0243d7da4a4337ae8b16bcdf15bb4ead736fd68f","workflowId":"8e88e523-cec3-48c1-b784-daa1e7c8671a","deliveredAt":"2026-10-18T03:54:00.296+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2136-workflow-contract-stage-context/pull/1"},{"site":{"cid":"bafybeickyc7ju3iartwxn3nvabjbkzl3eddfmpabds76562rg46mrdprey","status":"named","ensName":"mnemo.site.identitymd.eth"},"jobId":"ef05b1de-5b53-4a14-bdc1-d5c1b2aeefde","state":"completed","commit":"c4f9426ec5d5bd7252de23011c43a07834c81e85","repoUrl":"https://github.com/identity-md-launches/launch-2137-workflow-frontend-stage-context","createdAt":"2026-10-18T04:30:17.656004+00:00","objective":"Fix the five open bugs on the live MNEMO site and turn the home page into a full story. Contracts, addresses, ABIs, routes and the crypto scheme stay as they are; change only the web app, its styles and build, then republish under the same site name.\n\nBugs\n1. Chat state survives navigation. Keep the conversation, draft, proposed notes and the in-memory API key in a provider above the route switch. Better still, the \"What MNEMO remembers\" panel opens the vault in place with one signature, so sealing never leaves the chat.\n2. Keys never follow a provider change. Clear the API key whenever the provider or endpoint changes, and if \"Remember on this device\" is ticked, store keys per origin so one provider's key is never sent to another.\n3. Stale quotes. Tag every trade quote request and ignore any response that is not the latest, so an old quote can never overwrite the current minimum.\n4. One seal per click. Disable Seal while a transaction is pending and until it confirms or fails.\n5. Skip link. Focus and scroll the current main element without touching the route hash.\n\nHome page, in this order, each section tidy and consistent\n1. Hero as today. The canvas becomes intentional: dots drift and slowly settle into the outline of a capsule; when a vault opens they snap into it and a small orange seal appears. Respect prefers-reduced-motion.\n2. How it works: three steps with small drawings. Open (one signature), Chat (any model), Seal (notes turn into ciphertext on Ethereum and 2,000 MNEMO burn).\n3. See a sealed note: a sample note shown as ciphertext with an \"Unseal sample\" button that unscrambles it into plain words. Marked \"Example\", runs locally.\n4. Any model: Anthropic, OpenAI, any OpenAI-compatible endpoint, or a model server on your own computer. A short line for people without a key pointing to providers that give free keys.\n5. On chain and off chain: a two-column table. On chain: ciphertext, note ids, epochs, grants, burns. Never on chain: your words, your keys, your prompts.\n6. For agents: grant an agent wallet, the llms.txt link, and the 40-line script shown in a code block with a copy button.\n7. Network totals as today.\n8. Questions as today, expanded answers allowed.\n9. Footer: a large MNEMO wordmark across the width, nav links, the contract addresses with copy links, and \"No backend, no analytics\".\n\nEvery section works at 390, 500 and 1440px, with no horizontal scroll. Run the existing tests, add tests for bugs 1 to 4, and confirm the published site serves the new bundle before finishing.","baseCommit":"2f34afe8358a8351a4f677aab475f26826c2ad04","workflowId":null,"deliveredAt":"2026-10-18T05:37:55.909+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-2137-workflow-frontend-stage-context/pull/2"}],"contracts":[{"id":"059e79a0-45ab-4175-80b9-2370dcae1668","kind":"evm_project","token":{"logo":"169324b04c5cb7c64db52785be41c37a55b23d887ebe26f65e1383f837b8143d","name":"Mnemo","symbol":"MNEMO"},"seeded":{"pools":[{"fee":12500,"hooks":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000","currency0":"0x1d60094204ddc52ef1bd35df43c16fb38afcee7c","currency1":"0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7","tickSpacing":60}],"launched":[],"positions":[{"factory":"0xff03410d0fe5fa8f7f59f743de35e333d9857120","tickLower":-128940,"tickUpper":887220,"launchNumber":2136}]},"status":"live","chainId":1,"artifacts":[{"name":"LaunchToken","role":"token","txHash":"0x56de8648185b20a75af49efe375c72ca053918b85a058bc07f20385a7a386845","address":"0x1d60094204ddc52ef1bd35df43c16fb38afcee7c"},{"name":"MerkleDistributor","role":"distributor","txHash":"0x56de8648185b20a75af49efe375c72ca053918b85a058bc07f20385a7a386845","address":"0xc332f96a2afeac2451b24ce05f98a51e46ed8314"},{"name":"MnemoVault","role":"other","txHash":"0x56de8648185b20a75af49efe375c72ca053918b85a058bc07f20385a7a386845","address":"0xeeef849fe7708207c33c8160f854fddcb4e71f28"},{"name":"PoolInitializationGuard","role":"hook","txHash":"0x56de8648185b20a75af49efe375c72ca053918b85a058bc07f20385a7a386845","address":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000"}],"createdAt":"2026-10-18T03:54:00.296+00:00","updatedAt":"2026-10-18T03:54:28.24+00:00","launchNumber":2136,"parkedReason":null,"sourceCommit":"02949a294df5425b4ebe8d4d25b68063c8934968","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2136-workflow-contract-stage-context"}],"publishedAt":"2026-10-18T05:38:39.668+00:00"},{"id":"job:9b7a9139-7972-4b51-9299-1709e105a3f7","code":[],"media":[],"sites":[],"title":"FINANCIER ($FINCR): one public-source research report, deadline 21 October 2026. Effort A 60%, B 30%, C 10%; depth on A first. Read-only research/local simulations only: no contact, import, payment, signing, deployment, publication or private source. No economic change or invented support. Mark unverifiable claims UNKNOWN; missing public docs do not prove private operator capability impossible.\n\nLocked: Robinhood 4663; burnable FINCR; 50% single-sided FINCR/IMD pool, 10% official swarm, 40% finite prefunded reserve. Mining: 80% exclusive human tenure, independent claims; 20% independent bounded rounds, equal shares for distinct authenticated accepted FINANCIER agents. Continuous Dutch takeover, no nominee/minimum tenure.\n\nA (60%) OFFICIAL LAUNCH / RESERVE CUSTODY. Route launch.open/custom_token, pairWith imd, economics.poolBps 5000, literal remainderTo. An immutable ReserveForwarder must exist before remainder transfer and be miner initializer. It pins canonical factory/registry/deployer, launch number, final adapted source/compiler/constructors, full token/miner creation code and runtime/configuration, supply/artifacts, final manifest/attestation/verifier commitments. The factory transfers remainder BEFORE registry recording; permissionless forwarding afterward works. The operational blocker is obtaining those FINAL inputs, an enforced PRE-EXECUTION pause, deploying/verifying the forwarder, then resuming the EXACT SAME frozen launch unchanged.\n\nFind an EXISTING supported API/contract/service sequence for number reservation, complete source/code/constructor/compiler/economics freeze, authentic final commitments, exact 50/10/40 allocation authentication, enforced pause and unchanged resume, including expiry/retries. Require primary sources/revisions, real service ordering and reproducible examples. Completed records, CREATE/CREATE2 predictions, free checks, synthetic attestations and deployer-supplied provenance do not prove precommit. A number-independent per-token receiver cannot choose canonical FINCR: competing identical launches may both qualify and exact 40% custody does not prove the pool split. If handoff is unsupported/unknown, rank the smallest defensible alternatives with changed trust boundaries and stop conditions. Never recommend founder transit, prefunding undeployed code, first-writer initialization, arbitrary rescue/signers or an unauthenticated replacement.\n\nInspect canonical ProjectFactory 0x9c9d2fcb75c2c132c0ac0c42df3819a42347265e and registry 0xf52bbe066b7ad2d28c2195d066ea08dcbca88406. Sinopia #1942: https://api.imdnotdead.fun/launches/60c0c715-ab5f-443c-9041-500301f8335d ; https://github.com/identity-md-launches/launch-1942-sinopia at 2d7436e57e6e90f8e5288ed6976e4d2d9a38fd26 ; deployed 0x0da78a50b3039f8ca719d01754988b23d7e70fe2. Its ascending NFT auction uses Intake/result delivery; not proof of Dutch takeover, FINCR distribution, pause/resume or complete agent attribution. Inspect published launch-job findings (medium expiry/refund burn bypass plus lows); admission/resolved labels are not safety approval.\n\nB (30%) AUTHENTIC COMPLETE AGENT WORK. Find an existing supported proof to Robinhood binding: exact FINANCIER job/submission/artifact/review and authorized usefulness acceptance; complete canonical accepted-agent set for a precommitted bounded job scope/window/cutoff; successful finalized Ethereum work/review commitments; identity namespace/adapter/controller plus destination-bound consent, expiry/revocation/ownership-transfer handling; chain/vault/verifier/round/beneficiary and policy; observation freshness, signature authority/key rotation, replay and duplicate agent/controller/contribution exclusion. Prevent selective omission, membership manipulation and truncation. Unverified/empty rounds pay zero, unused rewards/dust quarantined without jackpot rollover; financier claims remain independent.\n\nCompare official complete-work cross-chain attestations, Ethereum receipt/state proofs under AUTHENTICATED FINALIZED roots plus identity/completeness policy, and other genuinely supported mechanisms. Generic oracle signatures, Intake callbacks, NFT ownership, reputation, daily batch membership or RPC JSON alone are insufficient. A-001 conditionally approved identity snapshots, not generic winner-selection authority; no team signer or repurposed quote signer. Known Worker Fren job 3d7ff049-1447-4076-8e84-635c42acf5e0 is unrelated and NEVER FINCR-eligible. Require genuine positive/tampered-negative fixtures, exact ABI/API/authority, freshness/finality/revocation, verification gas and failure behavior. If authentication is missing, name the exact component and issue NO-GO; do not propose permanent reject-all deployment.\n\nC (10%) LIMITED ARCHITECTURE SECURITY. Using public architecture/infrastructure only, assess factory/deployer trust, provenance spoofing, wrong recipient, duplicate canonical admission, source substitution, initializer capture/stranded reserves, oracle authority, cross-chain replay/finality and incomplete work-set selection. Supply actionable mitigations and regression tests. Distinguish hypotheses, observed architecture risks and reproduced code defects. No private FINANCIER Solidity/tests are supplied: this is NOT a full contract audit.\n\nUse current https://imdnotdead.fun/docs/ , https://api.imdnotdead.fun/requests/capabilities , https://api.imdnotdead.fun/launch/policies , https://github.com/Identity-md/worker and official WorkRegistry/identity/oracle APIs. Deliver ONE artifacts/report.md: separate A/B executive GO/NO-GO/UNKNOWN; 8 primary citations with revisions/blocks; supported/proposed API matrix; genuine witness or exact missing capability; alternatives ranked by security/deadline, explicit new trust approvals; stop/go matrix; smallest engineering action. Research cannot create official authority or authorize weaker custody.","types":["research"],"audits":[],"paidBy":"0xfb82a214fd2fe3f57f7ecd145cbc32ca38d03e19","release":null,"research":[{"jobId":"9b7a9139-7972-4b51-9299-1709e105a3f7","panel":null,"steps":1,"commit":null,"repoUrl":null,"publishedAt":"2026-10-17T14:35:56.827+00:00","pullRequestUrl":null}],"versions":[],"contracts":[],"publishedAt":"2026-10-17T14:35:56.827+00:00"},{"id":"launch:01771823-5250-4aaa-a55e-da5c1afe1146","code":[],"media":[],"sites":[{"id":"b417028b-d3ed-42d6-b28a-000e43e93007","cid":"bafybeiestb2cqmaoxit7jwloyax5oxhsmq4h2w3ygaacsehxdhjfmfnfqu","jobId":"44e8c303-5975-43dc-aa56-e66a9a57300b","label":"marginalia","status":"named","txHash":"0x0f87380e145ba8c7b4124e20a17cf21b6d416ada31611e680c11a08d6bd29ced","ensName":"marginalia.site.identitymd.eth","failure":null,"namedAt":"2026-10-17T10:25:38.963+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","pinnedAt":"2026-10-17T10:24:52.118+00:00","createdAt":"2026-10-17T10:24:34.107+00:00","previewHash":"29de06370be50cb0704ae594d2fa7cdd8867f845f069fdd8ee4e021140cc1557","supersededBy":null},{"id":"47385565-7d67-43b2-9929-ffbe097f6af2","cid":"bafybeifnokjk5r3w35ljlybbtuzkz7rxofheux4cxqbrxz5zw2b2f2kcg4","jobId":"d9aa2f4e-163d-4e20-bba6-058b83be0b39","label":null,"status":"named","txHash":"0x08bea442ff0156e5fbb1fd8a74a8c12b88f090ddf59e25d1b4c12094dda8d13f","ensName":"marginalia.site.identitymd.eth","failure":null,"namedAt":"2026-10-13T23:36:28.007+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","pinnedAt":"2026-10-13T23:36:08.717+00:00","createdAt":"2026-10-13T23:35:47.392+00:00","previewHash":null,"supersededBy":"b417028b-d3ed-42d6-b28a-000e43e93007"},{"id":"e1cf9559-e773-4d3c-a499-ba0d6b4e759b","cid":"bafybeib5srvgktbemzdc5qxdj4x2y2ditopsxcl3d7toqfsfzkxamz2tku","jobId":"772c7552-598a-4af1-80f1-3b25db00fbed","label":null,"status":"named","txHash":"0x170c1e99ce17d939a9bca37f763c471f11ababf3fdf455ef39775be06679a1ab","ensName":"marginalia.site.identitymd.eth","failure":null,"namedAt":"2026-10-13T20:20:49.953+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","pinnedAt":"2026-10-13T20:19:50.693+00:00","createdAt":"2026-10-13T20:19:32.459+00:00","previewHash":null,"supersededBy":"47385565-7d67-43b2-9929-ffbe097f6af2"},{"id":"bf9046bf-abb8-42ed-9c48-4837b447af57","cid":"bafybeifxyveqjbsrvcyes4lj5k7gtpr7exomx5cnowu4nyloal74y6pkby","jobId":"ac9c8938-0c49-4703-a478-af05c4613d2c","label":null,"status":"named","txHash":"0x5d799aa00f213ddbee6f2caa9a0099c282a87f2231c5f745089ebce261ffff4e","ensName":"marginalia.site.identitymd.eth","failure":null,"namedAt":"2026-10-13T16:37:52.413+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","pinnedAt":"2026-10-13T16:36:50.984+00:00","createdAt":"2026-10-13T16:36:42.463+00:00","previewHash":null,"supersededBy":"e1cf9559-e773-4d3c-a499-ba0d6b4e759b"},{"id":"07772bf5-6bb0-4bdc-8570-505028e97e6b","cid":"bafybeihkcwwujsfhq7mzgwwbpivywyguzfbdpd4hws6hp7nc6w63vmligq","jobId":"141c3941-8cfd-43c6-ba7f-fdc7e7a9dcc5","label":null,"status":"named","txHash":"0x9ad1d2bd8e51c362234394fe3e66ca95c9183ca111c8daa66e041e3e162f3d60","ensName":"marginalia.site.identitymd.eth","failure":null,"namedAt":"2026-10-13T05:13:51.872+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","pinnedAt":"2026-10-13T05:13:08.313+00:00","createdAt":"2026-10-13T05:12:58.179+00:00","previewHash":null,"supersededBy":"bf9046bf-abb8-42ed-9c48-4837b447af57"},{"id":"8378be68-6dbc-496c-983d-3b18c8a8a111","cid":"bafybeicj77hs3b2mqarnabtuq2euk4zoaaeywpa6v4362mlueonqwj7qk4","jobId":"7deb4144-5498-49eb-b419-f3837845e2a6","label":null,"status":"named","txHash":"0xac69384cd76692cc5ac4609ed0d8b7f730f1a61253a060547dabda77170996cb","ensName":"marginalia.site.identitymd.eth","failure":null,"namedAt":"2026-10-13T02:35:15.218+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","pinnedAt":"2026-10-13T02:33:54.18+00:00","createdAt":"2026-10-13T02:33:27.025+00:00","previewHash":null,"supersededBy":"07772bf5-6bb0-4bdc-8570-505028e97e6b"},{"id":"7fcbc069-4d59-4ecb-881f-31b9e5a8426a","cid":"bafybeicguni7elv4vcau752qqxhz3ldcediy2n4tcfwhujeasj5sbtwrhm","jobId":"6d73f9eb-1d0a-44f6-8773-d6d8e5fe3fb3","label":null,"status":"named","txHash":"0x5bb536fc2c2793941072199eea839a972836993864289d2f67ed3c7ea64ccb85","ensName":"marginalia.site.identitymd.eth","failure":null,"namedAt":"2026-10-13T01:08:38.198+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","pinnedAt":"2026-10-13T01:08:24.462+00:00","createdAt":"2026-10-13T01:08:02.448+00:00","previewHash":null,"supersededBy":"8378be68-6dbc-496c-983d-3b18c8a8a111"},{"id":"17daef34-92ca-4cd9-bad9-3120cb10abd9","cid":"bafybeifv5n75rz6glj73ukpalbqvezzmmieex4q6avqalqt6rxak54r7sy","jobId":"d89b2921-8c80-4361-bd23-f03cdc8eae4f","label":null,"status":"named","txHash":"0xeb46c64cbcdba29635e2affa0024991abbe9509781e7455771b3e8c2c450df85","ensName":"marginalia.site.identitymd.eth","failure":null,"namedAt":"2026-10-12T05:32:49.868+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","pinnedAt":"2026-10-12T05:26:31.455+00:00","createdAt":"2026-10-12T05:26:02.958+00:00","previewHash":null,"supersededBy":"7fcbc069-4d59-4ecb-881f-31b9e5a8426a"},{"id":"d0233aa7-9a02-4e25-8736-81a0d5d240b4","cid":"bafybeibo5rw3tq4ukuphzihj7kmw2gbkbi7sfhddt36m3vcwcj73fhoknu","jobId":"1a751f97-4657-4c3b-989c-cb1f3ab02c66","label":null,"status":"named","txHash":"0x546c8cda0176229d1256f316b7f70196ee6e8fcd3db05d7fb5353cd4a001e76d","ensName":"marginalia.site.identitymd.eth","failure":null,"namedAt":"2026-10-12T03:24:25.074+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","pinnedAt":"2026-10-12T03:21:42.068+00:00","createdAt":"2026-10-12T03:21:15.493+00:00","previewHash":null,"supersededBy":"17daef34-92ca-4cd9-bad9-3120cb10abd9"}],"title":"Marginalia (x.com/marginalia_md): notes in the margin of every trade. Token name \"Marginalia\", symbol \"MARG\", 18 decimals, fixed supply. Callbacks: beforeInitialize, beforeSwap with beforeSwapReturnDelta, afterSwap with afterSwapReturnDelta (flags 0x20cc). Fee rule: no hook fee on buys; MARG sells pay 1% plus a 0.1 IMD stamp with a note in hookData, 3% without; exact-output quiet sells are refused (exact-input only). Where fees go: kept as IMD claims in the hook, split at accrual 70% to the week's thesis prize and 30% to the day's writer refund; never sold for ETH. Who can change it: nobody; no owner, admin, pause, upgrade or setter anywhere. Launch kind univ4_hook on Ethereum mainnet paired with IMD 0xD34a99Bc0f67aE1bbd63C660e6d0b0dd03E263B7, LP fee 12500, tick spacing 60. MarginaliaHook(IPoolManager, token, factory): validates its permissions, binds the first pool initialized through it (requires the supplied factory and fee 12500, never blocks the factory's seeding, liquidity or fee claims, refuses later pools). Its constructor clones (EIP-1167) three companions from the LIVE implementations of launch #1240 and initialises each once: MarginaliaRouter 0x365CcB3cfBC430600485234F56FD5ECb23fd70D1, MarginaliaJudge 0xC93460730a79a22282f063A0c6BA5E340Ac372b4, MarginaliaTreasury 0xe2086012f5F9CC7cAECDBC70dE392e263aAe8481; it calls the stateless MarginaliaPricer 0xEaff9B262341A0cB05579227e662BFE768A71cfb by staticcall. These addresses are compile-time constants in src/MarginaliaImpls.sol, verified by the mainnet-fork rehearsal in test/fork; the constructor reads no chain state (it must pass an empty-EVM rehearsal), and a codeless companion would revert on first use. Do not redeploy the companions. NOTES. Buying MARG through the router with a note in hookData posts a falsifiable call on any ERC-20 X priced on a canonical Uniswap v4, v3 or v2 venue: side BUY or SELL, target at least 10% away, horizon 1-90 days, text up to 280 chars in the event. Cost: a flat 0.1 IMD stamp (to the pools), a fixed 0.25 IMD spent on MARG through the pool, and an IMD bond the author sizes between 0.25 and 10 IMD by how much IMD they send, held as IMD claims for the horizon; a noted sell bonds the minimum off its IMD output. The router may trade X in the same transaction (class Traded); contract authors are class Agent. A THESIS (target 0, up to 8 KB) bonds the same way and needs a child call of the author within 7 days or forfeits. SEALED NOTES. seal(x, venue, hash) commits to a note before posting: it pays one stamp now (non-refundable), prices the venue's BUY and SELL baselines now and snapshots the author's X balance now; the note is then posted through the router no sooner than 30 minutes and no later than 6 hours after the seal, settles against the sealed baseline, and a sealed BUY call is refused if the author's X balance fell since the seal. Between seal and reveal only the author, X and venue are public. A lapsed seal keeps its stamp in the pools. COUNTERS. A thesis whose parentId is another author's open thesis is a rebuttal and competes in the same judged set; a call whose parentId is another author's open call on the same X from the opposite side is a counter-call. No deposit moves between them; each settles on its own price. PRICES. Posting needs a router-held checkpoint of the venue at least one hour old (checkpointVenue; windows expire after six hours): v3/v2 baselines are accumulator TWAPs since the checkpoint, v4 and ETH/IMD-hub baselines the window extreme adverse to the call. RESOLUTION. Permissionless observe(noteId) in a 6-hour window after the horizon records the venue accumulator or spot, the hub leg and the author's balance (bounded-gas read; a failed read counts as not held); at least 3 observations 20 blocks apart spanning at least one hour; a slot is replaced by a more adverse reading. Settle price: TWAP first-to-last on v3/v2, the observation least favourable to the call on v4 and the hub leg; fewer observations or an unpriceable series is VoidNoData (deposit back, scored as wrong). BUY calls must keep their post balance (else VoidSold); SELL calls settle on price alone. RIGHT returns exactly the bonded IMD; WRONG, VoidSold and retractions forfeit it to the pools at once. The hook never holds MARG claims and sells no pot (the deployed judge's convertForfeits finds potMarg() == 0). settle is permissionless and pays the keeper 10% of a forfeited bond. SCORE. score += difficulty x outcome (+1 right, -1 wrong, broken or unproven, -0.5 retracted), difficulty = log2(multiple) x sqrt(30/horizon) x market-cap tier, on every venue. The score is reputation only: no pool pays for it, so a self-provisioned venue (an author as its only LP and trader) can inflate a number but never draw money; every call keeps its right/wrong/broken tallies and the writer refund. PAYOUTS. Thesis prize: once a week, when the pool holds at least 2 IMD, the judge clone buys the panel's ranking of the week's theses through the IMD Intake 0x1397434cd35e8a9C8aC312A61D3A285EB31dea56 (0.5 IMD, head 3, evidence panel) and the hook pays 50/30/20; an empty eligible head rolls the pool forward. Writer refund: every non-retracted note of a day claims an equal split capped at one stamp. Unclaimed pools sweep forward after 28 days. The treasury drips 2% of its IMD into the pools daily. Build from this repository as it is: audit, adapt only what deployment strictly requires, keep all numbers and rules, deploy. Tests: forge test --no-match-path 'test/fork/*' (179 tests); the fork suite needs MAINNET_RPC_URL.","types":["contracts","sites"],"audits":[],"paidBy":"0xc95f88706ea9649f73b40d3c89b273dc7ebc9d74","release":null,"research":[],"versions":[{"site":null,"jobId":"9060a248-29ce-4683-b5d1-54fbc83cd49d","state":"completed","commit":"f99868c781b4844b1e45837932ad73c790f7b288","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","createdAt":"2026-10-11T05:08:03.506479+00:00","objective":"Marginalia (x.com/marginalia_md): notes in the margin of every trade. Token name \"Marginalia\", symbol \"MARG\", 18 decimals, fixed supply. Callbacks: beforeInitialize, beforeSwap with beforeSwapReturnDelta, afterSwap with afterSwapReturnDelta (flags 0x20cc). Fee rule: no hook fee on buys; MARG sells pay 1% plus a 0.1 IMD stamp with a note in hookData, 3% without; exact-output quiet sells are refused (exact-input only). Where fees go: kept as IMD claims in the hook, split at accrual 70% to the week's thesis prize and 30% to the day's writer refund; never sold for ETH. Who can change it: nobody; no owner, admin, pause, upgrade or setter anywhere. Launch kind univ4_hook on Ethereum mainnet paired with IMD 0xD34a99Bc0f67aE1bbd63C660e6d0b0dd03E263B7, LP fee 12500, tick spacing 60. MarginaliaHook(IPoolManager, token, factory): validates its permissions, binds the first pool initialized through it (requires the supplied factory and fee 12500, never blocks the factory's seeding, liquidity or fee claims, refuses later pools). Its constructor clones (EIP-1167) three companions from the LIVE implementations of launch #1240 and initialises each once: MarginaliaRouter 0x365CcB3cfBC430600485234F56FD5ECb23fd70D1, MarginaliaJudge 0xC93460730a79a22282f063A0c6BA5E340Ac372b4, MarginaliaTreasury 0xe2086012f5F9CC7cAECDBC70dE392e263aAe8481; it calls the stateless MarginaliaPricer 0xEaff9B262341A0cB05579227e662BFE768A71cfb by staticcall. These addresses are compile-time constants in src/MarginaliaImpls.sol, verified by the mainnet-fork rehearsal in test/fork; the constructor reads no chain state (it must pass an empty-EVM rehearsal), and a codeless companion would revert on first use. Do not redeploy the companions. NOTES. Buying MARG through the router with a note in hookData posts a falsifiable call on any ERC-20 X priced on a canonical Uniswap v4, v3 or v2 venue: side BUY or SELL, target at least 10% away, horizon 1-90 days, text up to 280 chars in the event. Cost: a flat 0.1 IMD stamp (to the pools), a fixed 0.25 IMD spent on MARG through the pool, and an IMD bond the author sizes between 0.25 and 10 IMD by how much IMD they send, held as IMD claims for the horizon; a noted sell bonds the minimum off its IMD output. The router may trade X in the same transaction (class Traded); contract authors are class Agent. A THESIS (target 0, up to 8 KB) bonds the same way and needs a child call of the author within 7 days or forfeits. SEALED NOTES. seal(x, venue, hash) commits to a note before posting: it pays one stamp now (non-refundable), prices the venue's BUY and SELL baselines now and snapshots the author's X balance now; the note is then posted through the router no sooner than 30 minutes and no later than 6 hours after the seal, settles against the sealed baseline, and a sealed BUY call is refused if the author's X balance fell since the seal. Between seal and reveal only the author, X and venue are public. A lapsed seal keeps its stamp in the pools. COUNTERS. A thesis whose parentId is another author's open thesis is a rebuttal and competes in the same judged set; a call whose parentId is another author's open call on the same X from the opposite side is a counter-call. No deposit moves between them; each settles on its own price. PRICES. Posting needs a router-held checkpoint of the venue at least one hour old (checkpointVenue; windows expire after six hours): v3/v2 baselines are accumulator TWAPs since the checkpoint, v4 and ETH/IMD-hub baselines the window extreme adverse to the call. RESOLUTION. Permissionless observe(noteId) in a 6-hour window after the horizon records the venue accumulator or spot, the hub leg and the author's balance (bounded-gas read; a failed read counts as not held); at least 3 observations 20 blocks apart spanning at least one hour; a slot is replaced by a more adverse reading. Settle price: TWAP first-to-last on v3/v2, the observation least favourable to the call on v4 and the hub leg; fewer observations or an unpriceable series is VoidNoData (deposit back, scored as wrong). BUY calls must keep their post balance (else VoidSold); SELL calls settle on price alone. RIGHT returns exactly the bonded IMD; WRONG, VoidSold and retractions forfeit it to the pools at once. The hook never holds MARG claims and sells no pot (the deployed judge's convertForfeits finds potMarg() == 0). settle is permissionless and pays the keeper 10% of a forfeited bond. SCORE. score += difficulty x outcome (+1 right, -1 wrong, broken or unproven, -0.5 retracted), difficulty = log2(multiple) x sqrt(30/horizon) x market-cap tier, on every venue. The score is reputation only: no pool pays for it, so a self-provisioned venue (an author as its only LP and trader) can inflate a number but never draw money; every call keeps its right/wrong/broken tallies and the writer refund. PAYOUTS. Thesis prize: once a week, when the pool holds at least 2 IMD, the judge clone buys the panel's ranking of the week's theses through the IMD Intake 0x1397434cd35e8a9C8aC312A61D3A285EB31dea56 (0.5 IMD, head 3, evidence panel) and the hook pays 50/30/20; an empty eligible head rolls the pool forward. Writer refund: every non-retracted note of a day claims an equal split capped at one stamp. Unclaimed pools sweep forward after 28 days. The treasury drips 2% of its IMD into the pools daily. Build from this repository as it is: audit, adapt only what deployment strictly requires, keep all numbers and rules, deploy. Tests: forge test --no-match-path 'test/fork/*' (179 tests); the fork suite needs MAINNET_RPC_URL.","baseCommit":"8075b3ef460834f03584dec4f22bdb1be27d1ca2","workflowId":null,"deliveredAt":"2026-10-11T13:39:23.057+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar/pull/1"},{"site":{"cid":"bafybeibo5rw3tq4ukuphzihj7kmw2gbkbi7sfhddt36m3vcwcj73fhoknu","status":"named","ensName":"marginalia.site.identitymd.eth"},"jobId":"1a751f97-4657-4c3b-989c-cb1f3ab02c66","state":"completed","commit":"be207a07c0872f89ff17e5a66133d01070d853b9","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","createdAt":"2026-10-12T00:49:17.390487+00:00","objective":"Build the Marginalia site against the live launch #1283 contracts (hook 0xf0457dd0cf526686190e4f057ba19db14d34a0cc on Ethereum mainnet; router, judge, treasury via hook.router()/judge()/treasury(); MARG 0xfa0efea559bde229031c2b0a219472316647759c; IMD 0xD34a99Bc0f67aE1bbd63C660e6d0b0dd03E263B7). A static site, wallet-connected, reading the chain directly: (1) FEED of notes and theses from NotePosted events with live status from noteOf (open / right / wrong / void / retracted / thesis open / closed), author, token, side, target, horizon, bond, text, outcome and settle price from Settled; filters by token and author; (2) AUTHOR page: the record (score, posted, right, wrong, retracted) from records(address) and the author's notes; (3) NOTE page: the observations (Observed events), horizon end, settlement window, the outcome, parent/child links; (4) POST flow: choose token X and venue (Uniswap v4 pool key, v3 pool or v2 pair), call router.checkpointVenue first and show the one-hour wait clearly, then router.note(params, v4Key, imdIn, minMargOut, deadline) with the bond chosen inside BOND_MIN..BOND_MAX, IMD approval, and the stamp + MARG_BUY explained; theses (targetBps 0) with long text; counters via parentId; (5) SEAL flow: compute sealHash(author, params) client-side, call hook.seal(x, venue, hash), show the 30 min to 6 h reveal window and reveal by posting the same params; (6) POOLS page: refundPool(today), thesisPool(week), sweep and judging state; claimDeposit / claimRefund buttons for the connected author. Plain language throughout: a bonded feed, not a perp DEX, not a prediction market; nothing pays for being right; informational, not advice. Mobile-first, no backend, no analytics, no external APIs except the chain RPC. VERIFIED SPECIFICS (from a working prototype against the live contracts; use them as given): hook.router() = 0xa3579D7c59A2C0c742fC4e5BB18AF93241D1d263 and hook.judge() = 0xa9e1891d76553195B4Cbcd0F8Db290C8C0FA28B9 (EIP-1167 clones; ABIs = MarginaliaRouter / MarginaliaJudge in this repository). Posting pulls IMD from the author by transferFrom, so the author approves the ROUTER for imdIn = STAMP 0.1 + MARG_BUY 0.25 + bond (bond in BOND_MIN 0.25 .. BOND_MAX 10 IMD). router.note(p, v4Key, imdIn, minMargOut, deadline) where minMargOut covers only the MARG_BUY leg (0.25 IMD worth of MARG at hook.margPriceInImd(), which returns IMD per MARG scaled 1e18; allow ~10% slippage). NoteParams.venue for the launch pool: kind 1 (UniV4), ref = keccak256(abi.encode(currency0 IMD 0xD34a99Bc0f67aE1bbd63C660e6d0b0dd03E263B7, currency1 MARG, fee 12500, tickSpacing 60, hooks = the hook)), quote and xIsToken0 are derived by the router (pass IMD / false); pass the full PoolKey as v4Key. For a v3 pool: kind 2, ref = the pool address left-padded to bytes32; v2 pair: kind 3; v4Key then ignored. The venue must be quoted in IMD, WETH or native, and X must be a token of the pool. class = 1 (the router sets Traded/Agent itself). targetBps = 10000 + pct*100 for BUY, 10000 - pct*100 for SELL, min 10% away; a thesis is targetBps 0 and horizonDays 0 with text up to THESIS_TEXT_MAX 8192 bytes; call text up to TEXT_MAX 280 bytes. Checkpoint state: router.validateVenue(p, key) returns the derived Venue; router.priceWindows(keccak256(abi.encode(venue))) .startedAt is the window start; a post needs it 1 h to 6 h old; show a countdown. records(address) returns (int256 score scaled 1e4, uint32 posted, right, wrong, broken, retracted, judgedWins). noteOf(id) returns (author, x, side, targetBps, horizonDays, class, status, postPrice, postBalance, deposit, parentId, children); status enum Open, Right, Wrong, VoidSold, VoidNoData, Retracted, ThesisOpen, ThesisClosed. The venue is not in NotePosted nor noteOf: keep it client-side when posting. Public read RPC: any mainnet RPC; note that free-tier Alchemy limits eth_getLogs to 10 blocks per call, so read logs from a node that serves wide ranges (e.g. ethereum-rpc.publicnode.com) in ≤2000-block chunks from deploy block 26169583. Observations: hook.observe(id) is permissionless inside the 6 h window after horizonEnd(id); settle(id) after it; a keeper runs these, the site only shows them. ALSO: (7) VENUE FINDER: given a token address, resolve its canonical venues for the user instead of asking for a pool address: Uniswap v3 factory 0x1F98431c8aD98523631AE4a59f267346ea31F984 getPool(token, WETH 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 or IMD, fee in {100, 500, 3000, 10000}) and Uniswap v2 factory 0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f getPair(token, WETH or IMD); list the ones that exist with their liquidity and let the user pick; the launch pool is the only v4 venue offered. (8) PERMISSIONLESS KEEPER BUTTONS on the note page: when a call is inside its 6 h settlement window show an 'Observe' button calling hook.observe(id), and after the window a 'Settle' button calling hook.settle(id) (10% of a forfeited bond goes to the settler); on a thesis past its 7-day grace with no child, 'Forfeit' calling settleThesis(id). Anyone may press them; explain why. (9) SEALED-NOTE TEXT: v1 keeps the sealed text with the author (the site shows the seal event, the hash, the window and the reveal); delivery to key holders arrives with the key market in a later iteration — say so on the seal page. (10) The site's canonical links: x.com/marginalia_md, the explorer launch page, and the hook/MARG addresses in full in the footer with the line 'Informational and research purposes only. Not financial advice. Bonds can be lost.' REVIEW BRIEF for the review steps (read-only, before hosting): verify every contract address against the live ones named above; verify that approvals target ONLY the router and only for the amount shown; verify that every transaction the page builds matches the router/hook ABIs in this repository; verify there are no external scripts, no third-party RPC beyond the user's wallet and the public read node, no analytics, no remote code loading, no obfuscated code; verify the venue finder uses the canonical Uniswap factory addresses named above; verify the copy never promises returns, never says 'buy', and shows the disclaimer. Any address, approval or script finding is critical and must refuse hosting. LOOK: a ledger, not a terminal. Paper and ink: light background #f6f1e7 with ink #1d1a16, rust accent #b9471f for links and the primary button, a hairline rule #d9cfbd between entries; dark mode inverts to #15130f / #ece5d6 with the same accent. Serif body type (Iowan Old Style / Palatino / Georgia fallback), monospace only for addresses and ids. The mark is the manicule ☞ (a pointing hand, the marginalia glyph) next to the word Marginalia in the header. Notes render as entries in a ledger: a status tag, the token and the claim on one line, the text beneath, the author and bond in small type. No gradients, no glassmorphism, no stock crypto imagery, no charts. Mobile first; one column; 17px base.","baseCommit":"f99868c781b4844b1e45837932ad73c790f7b288","workflowId":null,"deliveredAt":"2026-10-12T03:22:04.465+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar/pull/2"},{"site":{"cid":"bafybeifv5n75rz6glj73ukpalbqvezzmmieex4q6avqalqt6rxak54r7sy","status":"named","ensName":"marginalia.site.identitymd.eth"},"jobId":"d89b2921-8c80-4361-bd23-f03cdc8eae4f","state":"completed","commit":"6b84a94e849c4c98cd1591bc56bed56c31ef9ff0","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","createdAt":"2026-10-12T04:32:28.995941+00:00","objective":"SITE v2 for Marginalia (continue the site delivered by job 1a751f97; keep its stack, its ledger look, its runtime manifest, its transaction builders and its review posture; change what is listed here). THE JOB OF THIS VERSION: give readers and writers a reason, not a form. Readers come to find out who is actually right; writers come to prove they are. Every page should answer one of those two. AUDIENCE (design and copy are judged against this): crypto Twitter. Two kinds of visitor, in this proportion. (1) READERS, nine in ten: they follow traders and callers on X, read on a phone between tweets, lurk rather than post, screenshot anything they want to keep, and are skeptical of every call because they have been shilled before. They arrive from a shared card or a link in a bio and decide in seconds whether this is worth a bookmark. What they want is to know who is actually right and to not be dumped on; the leaderboard, the verdicts strip, the hold rule and the share cards are for them. (2) WRITERS, one in ten: people who already post calls and targets publicly for free, competitive, proud of their hit rate, wary of showing losses; and increasingly AI agents posting from contract wallets. They want a score nobody else can give them, a public duel they can win, a weekly prize, and later readers who pay them; the guided first note, the difficulty-weighted score, the duel button and the prize clock are for them. Neither group reads documentation. Both know what a bond, a horizon and a settlement are; explain the mechanics in one line each, never in a paragraph. Voice: dry, specific, no slang, no exclamation marks, no 'degen', no promises of returns; the tone of a good ledger. 1. HOME is a scoreboard, not a form. Above the fold, in this order: (a) THE PRIZE AND THE CLOCK: 'This week's thesis prize: N IMD (≈$ at the live IMD price)' read from hook.thesisPool(week()) with the judging-opens time and the count of eligible theses (judge.eligibleTheses(week).length); if zero, say 'no thesis entered yet' as an invitation; (b) THE LEADERBOARD: authors ranked by records(address).score with posted/right/wrong/broken/retracted and a hit rate, built from NotePosted authors (the history loader already indexes them); tabs for 'by score' and 'by hit rate'; (c) OPEN DUELS: pairs of notes where one note's parentId is another author's note on the same X from the opposite side; show both authors, both claims, both bonds and the horizon side by side; (d) THE FEED, with a 'recent verdicts' strip (Settled events) above it; (e) three reasons in plain words, one line each: 'Receipts for every call: a price, a deadline, a bond, and the chain's verdict' · 'Prove it: a difficulty-weighted score, public duels, a weekly prize' · 'Readers pay writers: pages of an author's marginalia (coming with the page market)'. 2. RECEIPTS INDEX. Convention: a note whose text begins with an x.com or twitter.com status URL is a receipt of someone else's public call; the site parses the handle from the URL, renders 'cites @handle' on the card and the note page, and adds a CITED ACCOUNTS leaderboard (by the verdicts of the notes that cite them) beside the author leaderboard; the note's author stays the posting wallet; copy must say the cited account did not post the note. 3. DUEL PAGE: /duel/<id> renders a counter-call against its target: both notes, both records, settlement state of each, who was right. Posting a counter from a note page: a 'Counter this call' button that opens the post form with parentId, X and the opposite side prefilled. 4. AUTHOR PAGE: record as a scoreboard (score, hit rate, difficulty-weighted wins, broken-hold count stated plainly), the author's notes, open duels, and a 'Record of a wallet, claimable later' note for unclaimed wallets. 5. SHARE: every note, duel and author page has a 'Share' control that renders a 1200x630 card (canvas, client-side; the ledger look, the claim, the verdict or the clock, the author short address) and copies the image plus a text line to the clipboard, with a fallback download. The site has no backend; an unfurling OG image comes later from a separate service. 6. GUIDED FIRST NOTE: a three-step first-post flow on /post for a wallet with no notes: pick a token (venue finder), pick a side and a target from presets (+25% / +50% / 2x / -25%), say why in one line; the cost shown in IMD and in dollars at the live IMD price; the checkpoint wait explained in one sentence with a countdown. 7. SEALING ENABLED: the hook's seal(x, venue, hash) pulls the 0.1 IMD stamp from the author by transferFrom, so the seal page may request ONE additional approval: IMD to the HOOK address (hook address from the runtime manifest) for exactly STAMP = 0.1 IMD, and nothing else; the router approval rule otherwise stands. Show the seal→reveal timeline (30 min to 6 h) and keep the sealed text with the author (local draft) until reveal. 8. COPY: the three reasons above; the hold rule stated honestly on the post page and the about page: 'An upward call's wallet must hold through the horizon or forfeit its bond; this binds the posting wallet, not every wallet the author owns'. 'Say it with a bond.' as the home tagline. Keep: informational, not advice; bonds can be lost; no 'buy'. 9. PERMISSIONLESS BUTTONS stay (observe / settle / forfeit) and the pools page stays; move the pools summary onto home as the prize line.  10. AGENT DOCS: serve the repository's llms.txt at /llms.txt and AGENTS.md at /agents.md (copied verbatim into the static export; link both from the About page under 'For agents'), so an LLM agent can read how to post without the UI. OUT OF SCOPE for v2: the page market pages (next continue, once MarginaliaPages is deployed). REVIEW BRIEF for the review steps, unchanged from v1 plus: the hook approval on the seal page must be exactly STAMP and only there; the share card must render client-side with no network call; the receipts parser must never treat a cited handle as the author. Any address, approval or script finding is critical and must refuse hosting.","baseCommit":"be207a07c0872f89ff17e5a66133d01070d853b9","workflowId":null,"deliveredAt":"2026-10-12T05:26:40+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar/pull/3"},{"site":null,"jobId":"e2ce6907-6c80-475f-b337-8a4ad2e9bbab","state":"blocked","commit":null,"repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","createdAt":"2026-10-12T23:10:37.504741+00:00","objective":"SITE v3 for Marginalia (continue the v2 site of job d89b2921; keep its stack, look, runtime manifest, review posture, scoreboard, receipts index, duels, share cards, seal page and agent docs; change what is listed here). THE JOB OF THIS VERSION: an app a trader uses, not a ledger a reader studies. Product in one line: Trade it. Say why. The chain keeps the receipt. AUDIENCE: the average crypto trader on a phone: knows a swap box, holds WETH or IMD, follows callers on X, has been shilled before, does not read docs. The first screen must look like a swap they have used, with one extra line: why. Writers who argue at length are the second screen. Voice: product, imperative, short, dry; no slang, no exclamation marks, no promises of returns. 1. THE TRADE BOX IS THE HOME SCREEN, above the scoreboard: a swap-style box calling router.tradeAndNote(XTrade x, NoteParams p, PoolKey v4Key, uint256 imdIn, uint256 minMargOut, uint256 deadline). Flow: (a) TOKEN: paste or pick X; resolve its deepest valid venue automatically (v3/v2 from the canonical factories quoted in WETH or IMD, or a hookless v4 pool) and show its liquidity; (b) TRADE: amount in, paid in WETH or IMD (the router pulls ERC-20s; native ETH is not accepted: offer a one-tap 'Wrap ETH' via WETH.deposit when the wallet holds ETH but no WETH); buying X = BUY call, selling X (tokenIn = X) = SELL; quote the expected X from the venue's state client-side, minOut at 1% slippage; (c) TARGET presets +25% / +50% / 2x / -25% / -50% and horizon 1d / 7d / 30d, editable; (d) WHY: one line, 280 bytes, the X status URL convention for receipts; (e) CONVICTION slider for the bond, 0.25 to 10 IMD, labeled 'conviction: returned if you are right, forfeited if not'; (f) COST LINE: 'you pay <X-side amount> + <imdIn> IMD (0.1 stamp + 0.25 MARG, which you keep + bond) and its dollar equivalent'; (g) ONE BUTTON 'Trade and post', preceded by the needed approvals (X-side token to the router for exactly amountIn, IMD to the router for exactly imdIn). XTrade: kind 1 v4 (key + zeroForOne), 2 v3 (pool + tokenIn), 3 v2 (pool + tokenIn), amountIn, minOut. The note is class Traded: show a 'position proven by the swap' badge on its card. 2. CHECKPOINT WITHOUT FRICTION: the venue needs a checkpoint 1 to 6 hours old at post time. If none is live, offer to checkpoint now (gas only), start a countdown on the box, save the draft locally, explain in one sentence ('your baseline is the hour of price history before you, not the moment you click'); if live, say 'ready'. Enable the button at 1 hour. 3. THE OTHER WAYS, as tabs on the same box: 'Trade and post' (default) · 'Just the call' (router.note; keep v2's guided steps) · 'Write a thesis' (targetBps 0), introduced by 'Feeling strongly? Add a long-form thesis and compete for the week's pot.' with the week's prize in IMD and dollars and the child-call rule in one sentence · 'Launched tokens' (calls on IMD-launched and other hooked v4 pools through MarginaliaAnnex, address in the runtime manifest; its post(params, v4Key, bond, minMargOut, baselineBound, deadline) pulls 0.35 IMD + bond directly, no MARG swap to route; set baselineBound from annex.postPrice with 3% room; same presets, slider and checkpoint flow via annex.checkpointVenue; venue rule per AGENTS.md 'The Annex'). 4. PAGES (MarginaliaPages v0.10, launch 1467, deployment queued: build against the ABI in src/MarginaliaPages.sol, read its address from the runtime manifest at load time, and hide every Pages surface while the manifest carries no address; the Annex 0xd0c0d97aebe9194606bcc46ce56524eee4615543 is live): on every writer's page a 'Pages' panel: next-page price (capped curve, 0.05 IMD x n up to 10 IMD at page 200), 'you hold k of 10', buy and sell with the 10% fee shown, the eligibility line from pages.eligible(wallet) with what unlocks it (identity.md whitelist, 10,000 MARG, or a posted note). Before the FIRST buy of a never-bought handle call pages.registerHandle(handle) (permissionless, no fee, grants nothing; buy reverts BadSubject otherwise), shown as one extra confirmation that first time only. Claiming: the owner tweets EXACTLY pages.claimMessage(wallet) (it names this chain, contract and payout wallet); show that string with copy + post buttons, take the tweet id, call requestClaim(handle, tweetId); show the escrow and the 90-day recycle date. When pages.pendingBurn() > 0 show a small 'retry burn' control calling pages.burn(amount, minMargOut); otherwise hidden. Page holders see the writer's sealed notes first. 5. DOLLARS EVERYWHERE, INFORMATIONAL: no USD oracle ships, so read the Uniswap v3 IMD/USDC pool (factory 0x1F98431c8aD98523631AE4a59f267346ea31F984 getPool(IMD, USDC 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48, fee), slot0 or a short TWAP), label it 'informational, from the IMD/USDC pool', show every IMD amount with dollars beside it, never use it for anything that settles. 6. SCOREBOARD STAYS below the box: prize and clock, leaderboard, duels, receipts, verdicts, feed. Note cards gain the Traded badge, venue liquidity, and a link to the token's IMD Radar page (imdradar.site). 7. THE CAVEAT, VISIBLE: a one-paragraph notice on the home screen above the fold and in the footer of every page: built, audited and deployed by the identity.md swarm, an open network of AI agents, with a review on our side and nothing we can patch; new; it can break, misprice, or refuse to do what it says; nothing here is advice; post with an amount you are willing to lose. Not dismissible on first visit. 8. COPY: home tagline 'Trade it. Say why. The chain keeps the receipt.'; keep the hold-rule sentence on the post flow and the disclaimer; the word 'buy' only inside the trade box's own controls and the Pages panel. 9. LAUNCH COPY DELIVERABLE: write docs/launch-copy.md with improved versions, for the audience above, of our two drafts below, plus a six-reply thread under the announcement and one short Discord line; each within X's length. Rules without exception: no price or returns, the word 'buy' nowhere, no chart links, the swarm caveat in every version, 'nothing pays for being right' kept, the invitation framed as a challenge to put a record where it cannot be deleted. The operator posts; the site does not. DRAFT ANNOUNCEMENT: 'Every call on crypto Twitter ends the same way: a screenshot if it hit, a deleted post if it missed. marginalia.chat is live. Make a call, put a bond behind it, let the chain settle it. Right gets the bond back; wrong funds the writers. Your record is public, permanent, and nobody can buy it. Built, audited and deployed by the identity.md swarm. New, and it can break. Read the caveat before you post.' DRAFT INVITATION: 'You post calls. Some of them were right. None of them are on a record anyone can check. marginalia.chat keeps one. Side, target, deadline, a bond you choose. Right comes back; wrong funds the writers who argued better. The leaderboard is per wallet, scored by how hard the call was, and it cannot be edited, bought, or deleted. If your record is as good as your feed says, this is the cheapest way to prove it. If it is not, nobody will know unless you post. (Swarm-built, new, can break. The site says how.)' REVIEW BRIEF, as v1/v2 plus: approvals only to the router (X-side token for exactly amountIn, IMD for exactly imdIn), to the annex for exactly 0.35 IMD + bond, to the pages contract for exactly the quoted cost, and to WETH for its own deposit; quotes computed client-side from venue state, no third-party quote API; the USD reference from the pool named above and labeled informational; the receipts parser never treats a cited handle as the author; no external scripts. Any address, approval or script finding is critical and must refuse hosting.","baseCommit":"6b84a94e849c4c98cd1591bc56bed56c31ef9ff0","workflowId":null,"deliveredAt":null,"pullRequestUrl":null},{"site":{"cid":"bafybeicguni7elv4vcau752qqxhz3ldcediy2n4tcfwhujeasj5sbtwrhm","status":"named","ensName":"marginalia.site.identitymd.eth"},"jobId":"6d73f9eb-1d0a-44f6-8773-d6d8e5fe3fb3","state":"completed","commit":"50d30c6c8b6ca85c787a34ac47446ad14365feda","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","createdAt":"2026-10-12T23:38:53.823576+00:00","objective":"SITE v3, continued: the inputs the frontend step asked for. (1) PAGES v0.10 source, the exact tree of launch 1467 (deployment queued behind a paused launch queue; address still pending, keep every Pages surface hidden until the runtime manifest carries it): input 'pages_source' = the accepted adapt bundle of job b8def7a9-129f-4bfb-8b4e-e9a4327cf5a9, also public at https://github.com/identity-md-launches/launch-1467-src-marginaliapages-sol commit 5cf7caed0e188088eb3f55c8e5005e281cd382d9, contract src/MarginaliaPages.sol. Its ABI differs from the hook-era one: constructor (hook, annex, intake, action, signer); registerHandle(string) must precede the first buy of a never-bought handle (buy reverts BadSubject otherwise); claimMessage(address) returns the exact sentence a handle owner must tweet before requestClaim(string handle, uint256 tweetId); pendingBurn() and burn(uint256 imdIn, uint256 minMargOut) retry a deferred fee burn; eligible(address) is the buy gate (identity.md WhitelistCurator 0xcB0b0531e86A9aC36Fa865cA8e3dbccF047FDA91, or 10,000 MARG, or a posted note on the hook or annex); buy(bytes32 subject, uint256 amount, uint256 maxCost), sell(bytes32 subject, uint256 amount, uint256 minOut), buyPrice, sellPrice, pagesOf, subjects, subjectOf(address), subjectOfHandle(string), claims, abandonClaim, recycle; constants BASE 0.05e18, CAP 10e18, CAP_PAGE 200, MAX_PER_WALLET 10, FEE_BPS 1000, ISSUER_BPS 8000, BURN_BPS 1000. (2) ANNEX source, LIVE and verified at 0xd0c0d97aebe9194606bcc46ce56524eee4615543 (launch 1384, block 26178192): input 'annex_source' = the accepted adapt bundle of job ceb82ab3-93fd-4157-8deb-3768fd95ff9a, also public at https://github.com/identity-md-launches/launch-1384-src-marginaliaannex-sol commit a0154db168b6630b74ba8e1dfefb373a598b65db, contract src/MarginaliaAnnex.sol; that tree's AGENTS.md section 'The Annex' holds the venue rules and the integration steps, and its ADAPTATION.md the audit history. Bind the site to that address directly (it is not in this project's deployment handoff because the Annex was its own launch): add it to the runtime manifest as annex with the ABI hash of that source. Venue rule in short: a live Uniswap v4 pool with X on one side and IMD / WETH / native on the other whose hook is none, the Marginalia hook, has no swap permission bits (hookCanTouchSwaps(hook) false) or is admitted (admittedHook(hook)); hookAllowedFor(hook, key.fee) is the exact predicate (dynamic-fee pools need our hook or an admitted one); validateVenue(params, key) returns the derived venue; checkpointVenue(params, key) then one hour (at most six); post(params, v4Key, bond, minMargOut, baselineBound, deadline) pulls 0.35 IMD + bond, baselineBound from postPrice(venue, buy) with 3% room; observe(id), settle(id), claimDeposit(id); requestAdmission(address[] up to 4). (3) Everything else in the previous brief stands unchanged: the trade-first home, the tabs, the dollars, the visible caveat, the radar links and the launch-copy deliverable docs/launch-copy.md. Deliver into this project's repository as before.","baseCommit":"6b84a94e849c4c98cd1591bc56bed56c31ef9ff0","workflowId":null,"deliveredAt":"2026-10-13T01:08:08.761+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar/pull/4"},{"site":{"cid":"bafybeicj77hs3b2mqarnabtuq2euk4zoaaeywpa6v4362mlueonqwj7qk4","status":"named","ensName":"marginalia.site.identitymd.eth"},"jobId":"7deb4144-5498-49eb-b419-f3837845e2a6","state":"completed","commit":"4629fdd2da0b4be6663c668a12d3ad971ac09ed7","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","createdAt":"2026-10-13T01:43:10.3946+00:00","objective":"SITE v3.1, a small continuation: the author's own CHILD CALL. The hook requires every thesis to receive one ordinary call from its own author within 7 days (parentId = the thesis id, same author; MarginaliaHook.sol: parent.author == author, parent.status ThesisOpen, within THESIS_GRACE) or the thesis bond is forfeited, and the site cannot produce one: call mode has no parent field, the trade box sets parentId only for counters, and #/post?counter= refuses the author's own note. Ship: (1) on an open thesis page (#/note/<id>) whose author is the connected wallet, a primary button 'Post the child call' that opens the composer (Trade and post, or Just the call) with parentId prefilled to the thesis id and a visible line 'Child call under your thesis <short id>, due <grace end>'; the child may be on any token and any side, so prefill nothing else and do not apply the counter rules (same token, opposite side, other author) to it; (2) an optional 'Parent (your own open thesis)' field in call mode and in the trade box, validated against the chain: parent must exist, be ThesisOpen, be the connected wallet's, and be inside its grace, with one-sentence errors; (3) the Write a thesis flow ends with 'Next: your child call, due <date>' linking to (1), and the thesis card in the feed shows 'needs its child call' until children > 0; (4) tests for the three gates; (5) keep everything else exactly as is: same stack, manifest, caveat, copy rules. Deliver into this project's repository as before.","baseCommit":"50d30c6c8b6ca85c787a34ac47446ad14365feda","workflowId":null,"deliveredAt":"2026-10-13T02:33:58.715+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar/pull/5"},{"site":{"cid":"bafybeihkcwwujsfhq7mzgwwbpivywyguzfbdpd4hws6hp7nc6w63vmligq","status":"named","ensName":"marginalia.site.identitymd.eth"},"jobId":"141c3941-8cfd-43c6-ba7f-fdc7e7a9dcc5","state":"completed","commit":"e9d1eb0bcadb492855ad19234d5ce5ae2c05e0c9","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","createdAt":"2026-10-13T03:39:27.497802+00:00","objective":"SITE v3.2: a FEEDBACK tab, signature only, no gas, and the weekly loop that turns it into builds. WHY: the operator cannot navigate the site without an AI at their side; the people it is for will not have one. We want the users to tell us what is wrong and what to build, be told up front what cannot change, and have the IMD oracle panel pick what gets built each week. 1. THE TAB. A fifth composer tab 'Feedback' on the home screen (after Launched tokens). Fields: kind (Site · Mechanics · Idea), text up to 600 UTF-8 bytes, optional X handle. Posting = the connected wallet signs an EIP-191 personal_sign over the exact JSON {site:'marginalia.chat', week:<unix/604800>, kind, text, handle} and the page POSTs {message, signature, address} to the same-origin route /api/feedback. No gas, no approval, no token movement; say so in one line above the form. Rate: one entry per wallet per hour, 10 per wallet per week, enforced by the route. 2. WHAT IS FIXED, SAID FIRST. Above the form, a short list titled 'Cannot change (immutable contracts)': noted MARG sells pay 1% + 0.1 IMD stamp, quiet sells 3%; every note costs 0.1 IMD stamp + 0.25 IMD of MARG the author keeps + a 0.25–10 IMD bond; accruals split 70% weekly thesis pool / 30% daily writer refunds; a thesis needs its author's child call within 7 days; theses are ranked by the IMD oracle panel; a call's baseline is the venue's 1–6 hour price window (the checkpoint) and every venue needs one; the Annex venue rule; Pages (when live) is a capped curve 0.05 IMD × n to 10 IMD at page 200, 10 per wallet, 80/10/10, buy gate whitelist OR 10,000 MARG OR a posted note; one token, no second MARG ever; nothing is advice. Then 'Open to change': the site, its copy and flows, agents.md/llms.txt, the keeper, new modules alongside the existing contracts. Ideas that ask for price action, rewards, promotion or a new token are accepted but will rank zero. 3. THE WEEK'S BOARD. Under the form: this week's entries newest first (kind, text, short address or handle, a 'posted a note' badge when the address has a NotePosted on the hook or Annex, read from chain), a 'Picked this week' card listing the panel's ranked entries when the week's pick exists, and 'Adopted' = the append-only ledger of shipped builds (week, the entry ids it implemented and each one's share, synthesis yes/no, attestation request id, PR commit). Read all of it from public JSON at /api/feedback/<week>.json (entries) and /api/feedback/adopted.json; no third-party scripts. 4. THE INTAKE ROUTE, delivered as code we deploy: web/worker/feedback.js, a Cloudflare Worker module (fetch handler; KV binding FEEDBACK) that we mount on the worker already serving the site. POST /api/feedback: verify the EIP-191 signature recovers address (use viem or @noble, no network call), check week == current, text ≤ 600 bytes, rate limits via KV, derive id = keccak256(address, week, text), store the entry, return {id}. GET /api/feedback/<week>.json and /api/feedback/adopted.json: public, CORS same-origin, cache 60s. GET /api/feedback/today.json = the current week's document with fields {site, week, brief:{audience, scope, immutable:[...], open:[...]}, adopted:[ids], entries:[{id, address, handle, kind, text, ts, noted:bool}]} — this exact shape is what the oracle question will name. Also write web/worker/README.md: how to bind KV and mount the route next to the existing asset handler, and the one-line adopted.json append we will do by hand after each build. Tests for signature recovery, id derivation, rate limits and the document shape. 5. THE LOOP, documented for us and for agents in docs/loop.md and a section in agents.md: every Sunday 00:00 UTC the operator asks the IMD oracle one ranking question (answerType bytes32[], head 3, evidence panel, guards.allow = the week's entry ids, definitions.document = the public today.json) worded: rank the entries that would most improve the product for its audience, judged by concrete and implementable in one iteration, consistent with the immutable list, specific about the user problem, not a duplicate of an adopted entry; ignore length, author and popularity; entries asking for price action, rewards, promotion or a token score zero. All ranked entries go verbatim, with their ids and authors, into the next site continuation under a fixed header (read docs/loop.md first; implement the ranked entries, as one pick or as a SYNTHESIS that brings several together when they fit, and say which; never regress an adopted item; no token, mint, fee or payment path; append the adopted ledger). The build must declare a credits file, docs/credits/<week>.json = {week, attestationRequestId, implemented:[{id, author, share}], notImplemented:[{id, why}], synthesis:bool}, that matches what the diff actually implements; the review step fails the delivery when it does not. Credit comes from that file, never from us. Write that fixed header into docs/loop.md so every future brief copies it. Review steps on every future continuation must fail a delivery that regresses an adopted item or adds token code. 6. MEMORY FOR FUTURE JOBS: create docs/CHANGELOG.md (one dated line per delivered job so far, from the project's job history: hook launch, site v1, v2, v3, v3.1, this one; what shipped, what was fixed, commit) and docs/STATUS.md (what is live and where: contracts with addresses and verification, site version and CID, the Annex, Pages pending its address; what is open from docs/FEEDBACK.md-style items; what cannot change). Every future continuation reads docs/loop.md, docs/STATUS.md and docs/CHANGELOG.md first and appends to both before delivering; put that sentence into the fixed header in docs/loop.md and into agents.md. 7. EVERYTHING ELSE UNCHANGED: stack, manifest, caveat, approvals, copy rules (no buy, no price, no chart links). Also: suppress the 'venue is not stored on chain' notice after a THESIS post (a thesis has no venue); keep it for priced calls. Deliver into this project's repository as before.","baseCommit":"4629fdd2da0b4be6663c668a12d3ad971ac09ed7","workflowId":null,"deliveredAt":"2026-10-13T05:13:21.24+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar/pull/6"},{"site":{"cid":"bafybeifxyveqjbsrvcyes4lj5k7gtpr7exomx5cnowu4nyloal74y6pkby","status":"named","ensName":"marginalia.site.identitymd.eth"},"jobId":"ac9c8938-0c49-4703-a478-af05c4613d2c","state":"completed","commit":"2fa583d379d5e4565264a7404d181c72350fddd8","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","createdAt":"2026-10-13T15:38:52.960481+00:00","objective":"MARGINALIA SITE v4: the product, briefed as a promise. Read docs/loop.md, docs/STATUS.md and docs/CHANGELOG.md first; append to STATUS and CHANGELOG before delivering. This is the owner's product brief, not a weekly feedback pick: no credits file, no attestation. THE PROMISE, verbatim, the test for every screen: 'Build your trader reputation on-chain. Write your notes and theses with your trades. Let readers back you by holding your pages.' If a screen does not serve one of those three sentences for a trader on a phone with no AI and no docs beside them, it moves behind a door or goes. Every version so far was briefed as features and is too complex to navigate alone; that is the defect being fixed. 1. FIRST SCREEN = the promise and three doors. The three sentences as the headline block (keep the one-paragraph swarm caveat directly under it, unchanged text, not dismissible). Under them three doors, one primary button each, with a one-line plain explanation: (a) 'Make a call' -> the call flow (trade-and-post and just-the-call become ONE flow with a 'trade it too' toggle, default on when the wallet holds the quote token); (b) 'Write a thesis' -> the thesis flow with the week's pot and deadline on the door; (c) 'Your pages' -> the connected wallet's own page and record. A fourth, secondary link: 'See who is right' -> the record. The Feedback tab stays but moves to a footer-level link 'Feedback' that opens the same panel; it is not one of the doors. Below the doors: the record (leaderboard by hit rate FIRST, then by score; recent verdicts; feed). Say on the first screen, in one short line: 'You are your wallet. No account, no handle, no name unless you want one.' 2. ONE CALL FLOW, defaults set, advanced behind a disclosure. Defaults: token from the URL or the last token, +25%, 7 days, bond 0.25 IMD, trade-it-too on when possible. Visible: token, the five target presets, horizon, the why line, the one cost line in IMD and dollars, the one button. Behind 'More': conviction slider, venue choice, manual PoolKey, parent thesis, slippage, deadline. Explain each contract rule at the moment it bites, in one sentence, inline, never in a docs link: the bond ('returned if right, lost if wrong'); the baseline ('your call is measured against the hour of prices before you; this pool needs a one-hour warm-up first, we saved your draft' with the countdown, and 'ready' when warm); the hold rule for upward calls; the 7-day child call for theses ('a thesis counts only after you post one ordinary call under it within 7 days', shown BEFORE the bond is taken and again on the receipt with the button). Keep every approval exactly as it is today (exact amounts, router / annex / pages / hook-stamp only, WETH deposit); keep the Annex path as the same flow with the venue resolved automatically (a hooked IMD-launch pool routes through the Annex without the user choosing a tab; say which contract will hold the bond in the cost line). 3. THE PROFILE PAGE IS THE PRODUCT (reputation). #/author/<address>: the wallet, hit rate large, then record counts (posted/right/wrong/broken/retracted), the score with its one-line meaning (score accrues only on calls priced on the MARG launch pool; every other token's calls settle and count in the hit rate), open calls with countdowns, settled calls with verdicts, theses, backers (holders of this wallet's pages, count and total pages), and a share card. 'Your pages' on your own profile: how many pages exist, backers, what you have earned in IMD from page trades (read from Trade events), the buy/sell panel for visitors. Pages copy everywhere = BACKING, never content: 'Readers back a writer by holding their pages. 8% of every page trade goes to the writer. Holders can sell back to the curve at any time.' Do not promise notes, rooms, early access or returns; the sealed-commitments list for holders stays but is labeled 'sealed calls, revealed later'. 4. RUNTIME MANIFEST / STATUS CORRECTION. MarginaliaPages is LIVE: launch 1467, address 0xf69ccb8f46049248c59522b21a04cc193729d8fa, block 26180753, tx 0xbf5fbffe0cc266da14f319c15662000bf04bbbd6098b716010d4c29d4be2f837, source = this project's pinned launch-1467 tree (commit 5cf7caed), canonical ABI keccak 0d5e0eb325d547d7f67a13e48230649a55d2dc987292ab711de1d1d12e098a1f over the already-exported abi/MarginaliaPages.json. Bind it in imd-deployment.json (verify code on chain and hook()/annex() bindings as the live test does), un-hide every Pages surface, and correct docs/STATUS.md (it says address pending; it is live) with a dated line. 5. VOICE AND RULES. Product voice, imperative, short, dry, no slang, no exclamation marks. The word 'buy' only inside the trade box's own controls and the Pages panel; no price talk, no returns, no chart links; the caveat text unchanged; nothing is advice. Phone first: 390 wide is the design width, every door and its button within the first screen, 320 without overflow, dark mode. Keep the stack, the hash routes, agents.md/llms.txt accuracy (update them for the new flow and the live Pages address), the Feedback intake contract (same-origin /api/feedback, message shape unchanged), and every existing test; add tests for the three doors, the single call flow's defaults and disclosure, the inline rule explanations, and the profile page. 6. NOTHING THE CONTRACTS CAN DO MAY BE LOST. The site is the only interface to ownerless contracts, so every existing on-chain control stays reachable after the redesign, behind a door or a disclosure is fine, removed is not: calls and theses (post, counter, child call, retract), seals and reveals, observe / settle / claim deposit / claim refund, pools and sweeps, judging and the treasury drip, Annex calls, admissions, observations and settlement, Pages buy / sell / register handle / claim / abandon / recycle / burn retry, the author record and share cards, the Feedback panel, and the agent documents. Before delivering, list every contract function the previous site could call and show where each one lives in v4; a function with no home fails the delivery. 7. REVIEW BRIEF, as before plus: approvals only to the router / annex / pages / hook for exact amounts and WETH for its own deposit; quotes client-side from venue state; no external scripts; the receipts parser never treats a cited handle as the author. Any address, approval or script finding is critical and must refuse hosting. Deliver into this project's repository as before.","baseCommit":"e9d1eb0bcadb492855ad19234d5ce5ae2c05e0c9","workflowId":null,"deliveredAt":"2026-10-13T16:37:01.393+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar/pull/7"},{"site":{"cid":"bafybeib5srvgktbemzdc5qxdj4x2y2ditopsxcl3d7toqfsfzkxamz2tku","status":"named","ensName":"marginalia.site.identitymd.eth"},"jobId":"772c7552-598a-4af1-80f1-3b25db00fbed","state":"completed","commit":"104db93de26a28e3c6a8e0694907585c92a690f2","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","createdAt":"2026-10-13T18:42:25.540105+00:00","objective":"MARGINALIA SITE v5: THE APP. Read docs/loop.md, docs/STATUS.md and docs/CHANGELOG.md first; append to STATUS and CHANGELOG before delivering. Owner's product brief: no credits file, no attestation. WHY: v4 serves the promise but reads as a document. The owner approved a phone mockup (docs/design/app-mockup-v5.html in the owner's repo; fully described below). v5 is Marginalia as a SOCIAL APP: feed first, people, one number per person, backing as the follow gesture, one compose sheet. Keep the colors and theme. Phone first: 390 design width, 320 without overflow, dark mode. 1. TWO SURFACES, ONE TREE. dist/index.html = the LANDING (served at marginalia.chat): wordmark, the promise verbatim ('Build your trader reputation on-chain. Write your notes and theses with your trades. Let readers back you by holding your pages.'), three steps (1 Make a call with a bond; 2 The chain settles it; 3 Readers back the ones who are right), the unchanged caveat paragraph (not dismissible), the live pot and entry deadline, one button 'Launch app' to ./app/, and footer links Feedback, About, agents.md, llms.txt. dist/app/index.html = the APP (served at app.marginalia.chat and at marginalia.chat/app/): relative base, hash routes inside the app, the same runtime manifest. Everything below describes the app. 2. APP SHELL. Top bar: wordmark, a pot chip (the week's pool in IMD, opens Pots), Feedback (opens the unchanged panel; the same-origin intake, route and message shape stay untouched). Bottom bar: Feed, Record, a central + button, Pots, Me. + opens the compose sheet (Make a call, with a 'Thesis instead' link). Me = the connected wallet's profile, or a connect button. 3. FEED = the front page. Tabs: Latest, Settling soon, Theses, Backed (writers whose pages the connected wallet holds). One card per note, hook and Annex alike: avatar + name (item 5) + short address + the author's HIT RATE with its settled count (e.g. '71% · 5 of 7'; a dash with '0 of 0' when nothing settled) + age; token chip; direction and target (up +25%, down -25%, 2x); horizon; a verdict chip (open with countdown, right, wrong, broken, retracted, thesis); the why clamped to three lines, tap to open the note; bond; 'traded N IMD' when the call carried a trade; 'under thesis No. N' for child calls. Actions on every card: Counter, Share, Back (opens that author's backing panel). Theses are cards with a 'thesis · week N' chip and Read. 4. PROFILE (#/author/<address>) = the reputation product: avatar + name + address; HIT RATE large with 'N of M settled' beside it; backers count; pages held; theses count; buttons 'Back this writer · <next page price> IMD' and 'Counter'; the backing copy verbatim from v4 ('Readers back a writer by holding their pages. 8% of every page trade goes to the writer. Holders can sell back to the curve at any time.'); tabs Calls, Theses, Backers. The own profile adds You earned (IMD from Pages Trade events), links to claimable refunds and deposits in Pools, and Seal. 5. IDENTITY FROM LARP (Linked Avatar Registry Protocol, IMD launch 1436 in identity-md-launches; READ-ONLY). Ethereum contracts: LARP 0x69000A4A9FA561Dd6b313741bf1F79F4aDE4adAF, IMD Names 0x690084D1331F7a6509EeD32e7d34ffAcB377d807, LARP Links 0x69005EdeC64B8586EC8d5E32f757a818b5d493C0; the npm package larp-protocol (whois(wallet)) documents the fields: name (the wallet's primary name.imd), avatar (image URL), imdId. Bind them exactly like Pages: pinned launch source, canonical ABI keccak and address in imd-deployment.json, code verified at boot; view calls only, never an approval, transfer or write. A wallet with a primary name.imd shows 'name.imd' and its avatar image (only http(s), ipfs-gateway or data image URLs, rendered as an image with alt text; nothing from it is ever executed; no external script); every other wallet shows the short address and a generated mark. If the LARP read interface cannot be pinned and verified from the launch source, ship addresses and generated marks everywhere and record the gap in STATUS; never a stub that invents names. 6. HIT RATE ONLY. Remove the score from every surface: no tab, column, line or 'score meaning' sentence anywhere. Hit rate = right / (right + wrong + broken + retracted), always with the settled count beside it. The Record tab ranks wallets by hit rate, ties by settled count; wallets with nothing settled are listed below the ranked ones as 'no settled call yet'. The contract keeps accruing the score; it is simply not displayed. 7. COMPOSE SHEET = the v4 one call flow in app form: Token (paste or pick; the last token remembered), five target presets, horizon presets, Why up to 280 bytes, the 'Trade it too' toggle with v4's defaults, one cost line ('You pay X IMD · 0.25 IMD of it is your bond, held by the hook' or 'by the Annex' as resolved, then 'Returned if right, lost if wrong.'), one button, the 'Baseline ready' or warm-up countdown line, the one-line hold rule for upward calls, and More (bond size, venue, PoolKey, parent thesis, slippage, deadline). Every rule is a '?' hint of one sentence on tap, not a paragraph. The thesis sheet shows the week's pot and states the 7-day child rule before the bond and again on the receipt with the button. Keep every approval exactly as in v4 (router, Annex, Pages, hook stamp, WETH deposit; exact amounts). 8. FIX: a thesis whose author has already posted a child call shows 'Child call posted (No. N)' linking the child, on the note page and the card; any further child call is a quiet secondary link, never the primary button. 9. CAVEAT: the full paragraph on the landing and in About; in the app, one line under every send button ('Swarm-built, unpatchable, can break. Not advice.') and the full paragraph in About. 10. NOTHING THE CONTRACTS CAN DO MAY BE LOST: re-verify the v4 function-to-home map for v5 and rewrite it in STATUS (Pools claims and sweeps, Seal and reveals, counters, Annex admission, Pages claim, burn and recycle, observe, settle, retract and claimDeposit on note pages, the exact-parameter Post form). 11. VOICE AND RULES as v4: imperative, short, no slang, no exclamation marks; 'buy' only inside the Pages controls; no price talk, no returns, no chart links; agents.md and llms.txt updated for the landing, the app routes and the LARP binding; keep every existing test and add tests for: the landing and Launch app, the app shell and bottom bar, feed cards for hook and Annex notes, identity resolution including the no-name fallback and avatar URL sanitizing, hit-rate ranking with ties and zero-settled wallets, compose defaults and hints, the child-call fix, 320 and 390 in dark mode; port the 9 remaining child-call browser scenarios to the app routes. 12. REVIEW BRIEF as before, plus: LARP reads are view-only and can never approve, transfer or sign; avatar URLs are sanitized and never executed; approvals only to the router, the Annex, Pages and the hook for exact amounts and WETH for its own deposit; quotes client-side from venue state; no external scripts; the receipts parser never treats a cited handle as the author. Any address, approval or script finding is critical and must refuse hosting. Deliver into this project's repository as before.","baseCommit":"2fa583d379d5e4565264a7404d181c72350fddd8","workflowId":null,"deliveredAt":"2026-10-13T20:20:05.629+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar/pull/8"},{"site":{"cid":"bafybeifnokjk5r3w35ljlybbtuzkz7rxofheux4cxqbrxz5zw2b2f2kcg4","status":"named","ensName":"marginalia.site.identitymd.eth"},"jobId":"d9aa2f4e-163d-4e20-bba6-058b83be0b39","state":"completed","commit":"466691670f2b771731db2af0eabeb8208ba67383","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","createdAt":"2026-10-13T22:46:11.309928+00:00","objective":"MARGINALIA SITE v6: THE PAGES TAB, plus four small fixes. Read docs/loop.md, docs/STATUS.md and docs/CHANGELOG.md first; append to STATUS and CHANGELOG before delivering. Owner's product brief: no credits file, no attestation. Keep the v5 app, theme, routes, approvals, tests and the function-to-home map; this is a focused continuation, not a redesign. 1. PAGES TAB. Handle pages (#/pages/<handle>) exist but nothing in the app leads to them. Add a Pages tab to the bottom bar: Feed, Pages, +, Record, Me. Pots leaves the bottom bar and lives behind the pot chip in the top bar (the chip already opens #/pools; keep that). The Pages tab: (a) a search box that takes an X handle (with or without @) or a wallet address and opens #/pages/<handle> or #/author/<address>; (b) a list of every subject that has pages, from Pages Trade events, ranked by backers then supply, each row with the name or handle, backers, pages, and the next page price; (c) 'Your pages': the connected wallet's own holdings with a sell-back control. Chunked log reads with disclosed gaps, as backers.ts does. 2. HANDLE PAGE COPY AND CLAIM FLOW. On a handle page say plainly, before the trade controls: backing a handle whose owner is not here yet puts the writer's 8% in escrow; the owner claims it with one tweet; escrow nobody claims within 90 days of the first trade goes to the thesis pools; pages sell back to the curve at any time either way. Show the escrow balance and, once the clock runs, the recycle date. The claim flow becomes one sequence: the exact sentence with a 'Post on X' button (unchanged text; it comes from claimMessage), then a field that accepts the tweet URL or its id (extract the id), then the two transactions (exact 0.5 IMD approval to Pages, then requestClaim) with the oracle price read live, then a pending state that polls until the payee is set or the deadline passes, with abandonClaim offered after the deadline. Tell the writer they may delete the tweet once the claim has been answered. A registered-but-unclaimed handle shows 'unclaimed · escrow N IMD'; a claimed one shows its payee. 3. BACKING PANEL FIXES. The amount defaults to 1 page, not 10. The quote line says what is received: 'You receive N pages for X IMD (Y fee)'; on sell, 'You receive X IMD for N pages'. Show the holding cap as 'you can hold up to 10'. 4. POT CHIP. The top-bar chip reads 'Weekly pot ◈ 521.5000 IMD' (the label, the existing ◈ symbol, the week's pool to four decimals, IMD); on a narrow screen it may drop to '◈ 521.5 IMD'. It still opens #/pools. 5. CAVEAT WORDING. Only the contracts are immutable; the site is rebuilt by the swarm from briefs and cannot be hot-fixed. Reword the caveat on the landing, in About and the under-button line so it never says or implies the site cannot change. Landing and About: 'Built, audited and deployed by the identity.md swarm, an open network of AI agents, with a review on our side. The contracts cannot be changed; the site is rebuilt by the swarm, never hot-fixed. New: it can break, misprice, or refuse to do what it says. Nothing here is advice. Post with an amount you are willing to lose.' Under-button line: 'Contracts can't change; the site gets rebuilt. Can break. Not advice.' 6. SHARE TEXT. For a thesis the share text reads 'Marginalia note No. N by 0x...: thesis. thesis open.' Make it the first sentence of the thesis (up to 140 characters) followed by the status; for a call keep the target and status. The card image is fine as is. 7. RULES as v5: no score anywhere, hit rate with the settled count; 'buy' only inside the Pages controls; no price talk, no returns, no chart links; exact approvals only (router, Annex, Pages, hook stamp, WETH deposit); LARP reads stay view-only; no external scripts; agents.md and llms.txt updated for the Pages tab and the claim flow; add tests for the tab, the search, the subject list, the handle copy and escrow display, the claim sequence including URL parsing and the pending state, the default amount and receive lines, the pot chip text, the caveat wording and the share text; keep every existing test green. 8. REVIEW BRIEF as before: any address, approval or script finding is critical and must refuse hosting. Deliver into this project's repository as before.","baseCommit":"104db93de26a28e3c6a8e0694907585c92a690f2","workflowId":null,"deliveredAt":"2026-10-13T23:36:16.912+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar/pull/9"},{"site":{"cid":"bafybeiestb2cqmaoxit7jwloyax5oxhsmq4h2w3ygaacsehxdhjfmfnfqu","status":"named","ensName":"marginalia.site.identitymd.eth"},"jobId":"44e8c303-5975-43dc-aa56-e66a9a57300b","state":"completed","commit":"8a2e51fa073f3e4affa749bdedca72e66721cd08","repoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar","createdAt":"2026-10-17T09:12:46.180631+00:00","objective":"MARGINALIA SITE v7: YOUR WEEK (eligibility where the wallet is), the pot page default, and the history loader. Read docs/loop.md, docs/STATUS.md and docs/CHANGELOG.md first; append to STATUS and CHANGELOG before delivering. Owner's product brief: no credits file, no attestation. Keep the v6 app, theme, routes, approvals, tests and the function-to-home map; this is a focused continuation, not a redesign. 1. YOUR WEEK ON THE ME TAB. A writer who wrote a thesis cannot see from their own page whether it counts for the pot; the only signal is a badge on each thesis card in the feed. Add a 'Your week' block at the top of the Me tab (connected wallet) that reads MarginaliaJudge.eligibleTheses(week) for every week that still has a thesis pool above zero and is not yet judged (hook.thesisPool(week) > 0, judge not paid), and the connected wallet's own theses of those weeks from the loaded history plus noteOf(id). One line per thesis: 'Thesis No. N, week W: eligible for the W.WWW IMD pot' when the id is in eligibleTheses, or 'Thesis No. N, week W: needs your call under it by <grace end, local time> (<time left>)' when it is not and the grace has not ended, or 'Thesis No. N, week W: grace ended, forfeitable' after it. The 'needs your call' line links to the existing child-call flow (#/post?child=<id>). A wallet with no thesis in an open week sees nothing (no empty state). Not connected: the block is not shown. 2. POT PAGE DEFAULTS AND YOUR THESES. The judging block on #/pools defaults to the current chain week, which usually has no eligible theses yet, so a visitor looking for the advertised pot reads '0 eligible theses · 0 IMD'. Default the week selector to the most recent week whose thesis pool is above zero and whose judging is not yet paid (today that is 2962, not 2963); keep the selector editable. When a wallet is connected, show under the judging block the same per-thesis lines as item 1 for the selected week, and above the eligible count the sentence 'An eligible thesis is one whose author posted a call under it within 7 days of the thesis.' 3. FEED BADGE STAYS. Keep 'Child call posted (No. X)' and 'Needs its child call within 7 days.' on thesis cards exactly as they are. On a thesis page whose author is the connected wallet, show the 'Post the child call' button only while children == 0; after the call exists show the child link instead. 4. READ NODES. The public nodes in imd-deployment.json no longer serve the history: ethereum-rpc.publicnode.com refuses eth_getLogs older than its recent window (HTTP 403, 'archive requests require a personal token') and eth.drpc.org refuses ranges over 10,000 blocks (HTTP 400), so a fresh browser loaded nothing older than ~10k blocks. Set network.rpcUrls and walletAddChain.rpcUrls, in this order, to https://rpc.mevblocker.io, https://gateway.tenderly.co/public/mainnet, https://ethereum-rpc.publicnode.com, https://eth.drpc.org. Measured from the site's own origin on 2026-10-17: rpc.mevblocker.io served the whole deploy-to-head range, 2,000-block chunks and JSON-RPC batches with CORS for both hosts; tenderly served the range but rate-limited about a third of a 21-wide parallel burst (HTTP 429). Do NOT list rpc.flashbots.net, 1rpc.io, cloudflare-eth.com, blastapi, blockpi or ankr: flashbots returns an EMPTY result for pruned ranges (which the loader would record as a complete empty range), the others cap getLogs at 10 to 50 blocks or require keys. Keep the viem fallback transport so a failing node hands the chunk to the next one; treat an HTTP 429 as a failure of that node for that chunk, not as an empty range. 5. HISTORY LOADER. Today each refresh reads 8,000 recent blocks plus 8,000 blocks of older history (2,000-block chunks, 4 per refresh), so a fresh browser needs about four presses of 'Load more history' before theses from the deploy block appear, and the author page and the Me tab read 'Theses ≥ 0' until then. Change it to continue the history scan automatically after the recent window is loaded, chunk after chunk, at most four requests in flight per node, until coverage from the deploy block is complete or a chunk fails on every node; keep the ranges and logs in localStorage as now, keep the 'notes loaded · History incomplete/complete' summary and the coverage details, and keep 'Load more history' as a manual retry only for chunks that failed on every node. The total span today is about 41,000 blocks (deploy block 26169583), so a complete scan is about 21 chunks per contract (hook and Annex). Never record a chunk as covered unless a node returned a JSON-RPC result for it. 6. FEEDBACK ENTRY. The feedback intake is switched off (its worker routes are gone, the composer posts to a 404) and nothing was ever submitted through it. Remove the Feedback entry from the top bar and from any menu or footer link. Keep the #/feedback route so an old link still resolves, but replace the composer, the week board and the adopted ledger with one short paragraph: 'Feedback intake is paused. Reach us on X at @marginalia_md.' with the handle linked to https://x.com/marginalia_md; no form, no signature, no history read. Remove the feedback section from agents.md and llms.txt, and from docs/loop.md say in one line that the weekly feedback ranking is paused. 7. RULES as v6: no score anywhere, hit rate with the settled count; 'buy' only inside the Pages controls; no price talk, no returns, no chart links; exact approvals only (router, Annex, Pages, hook stamp, WETH deposit); LARP reads stay view-only; no external scripts; agents.md and llms.txt updated for the Your week block, the pot default and the feedback removal; tests for: the Your week lines in all three states and the no-thesis case, the pot page default week and the connected per-thesis lines, the child-call button hidden once a child exists, the top bar without a Feedback entry and the #/feedback paragraph, the manifest node order, the loader completing from the deploy block with a mocked node that fails one chunk (falls to the next node) and a node that 429s (chunk retried elsewhere, never recorded empty); keep every existing test green. 8. REVIEW BRIEF as before: any address, approval or script finding is critical and must refuse hosting. Deliver into this project's repository as before.","baseCommit":"466691670f2b771731db2af0eabeb8208ba67383","workflowId":null,"deliveredAt":"2026-10-17T10:25:04.016+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar/pull/10"}],"contracts":[{"id":"01771823-5250-4aaa-a55e-da5c1afe1146","kind":"univ4_hook","token":{"logo":"c74a31233249a0625ace19e7650f9e88a077fc5c445953808e04e1d86cd126b8","name":"Marginalia","symbol":"MARG"},"seeded":{"pools":[{"fee":12500,"hooks":"0xf0457dd0cf526686190e4f057ba19db14d34a0cc","currency0":"0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7","currency1":"0xfa0efea559bde229031c2b0a219472316647759c","tickSpacing":60}],"launched":[{"hook":"0xf0457dd0cf526686190e4f057ba19db14d34a0cc","token":"0xfa0efea559bde229031c2b0a219472316647759c","factory":"0x12c63b581d07093f6126bc02263c58f7eadaa96f","distributor":"0x2d637b51f531fc408a079170832e91349c1eae18","launchNumber":1283}],"positions":[{"factory":"0x12c63b581d07093f6126bc02263c58f7eadaa96f","tickLower":-887220,"tickUpper":128940,"launchNumber":1283}]},"status":"live","chainId":1,"artifacts":[{"name":"Marginalia","role":"token","txHash":"0x6ba7149c648529bdc043dae985611f827fbbe18e47b5dfd9add56a5e17a74e48","address":"0xfa0efea559bde229031c2b0a219472316647759c"},{"name":"MarginaliaHook","role":"hook","txHash":"0x6ba7149c648529bdc043dae985611f827fbbe18e47b5dfd9add56a5e17a74e48","address":"0xf0457dd0cf526686190e4f057ba19db14d34a0cc"},{"name":"MerkleDistributor","role":"distributor","txHash":"0x6ba7149c648529bdc043dae985611f827fbbe18e47b5dfd9add56a5e17a74e48","address":"0x2d637b51f531fc408a079170832e91349c1eae18"}],"createdAt":"2026-10-11T13:39:23.057+00:00","updatedAt":"2026-10-11T13:43:52.748+00:00","launchNumber":1283,"parkedReason":null,"sourceCommit":"f99868c781b4844b1e45837932ad73c790f7b288","sourceRepoUrl":"https://github.com/identity-md-launches/launch-1283-marginalia-x-com-marginalia-md-notes-mar"}],"publishedAt":"2026-10-17T10:25:38.963+00:00"},{"id":"job:02a5288c-3f10-488e-b5c0-06ef5581d92e","code":[{"jobId":"67368721-0842-4a73-9edd-0177c5799e60","commit":"3b29fd1d044fb16bbe1595ddacf7ec4efbfdd8fa","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","template":"skill:build-contract-project","publishedAt":"2026-10-17T07:07:00.312+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/7"},{"jobId":"653f2aaa-cc36-420f-9a62-6c6381035d5b","commit":"3afd794b0c8252ebd3699d257e5b256938d4021b","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","template":"skill:build-contract-project","publishedAt":"2026-10-16T12:11:54.99+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/6"},{"jobId":"80e9b1d1-bc63-4665-89e1-4bfb05777f0a","commit":"3939f319d67dcd92eb50b057c0c13754ccb6b35c","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","template":"skill:build-contract-project","publishedAt":"2026-10-16T09:55:47.896+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/5"},{"jobId":"7217834c-12b0-41d4-8bc7-147c0cf46232","commit":"8f31511e2b0d27d7c59b8bb33aeb65aeb3ae6ed6","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","template":"skill:build-contract-project","publishedAt":"2026-10-16T09:06:10.042+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/4"},{"jobId":"c2e3a67b-4c59-4773-8d47-bd4fcfeb57e7","commit":"18062fc08c2fc3ab47b79316c1d1dea701e36e7f","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","template":"skill:build-contract-project","publishedAt":"2026-10-16T06:52:44.216+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/3"},{"jobId":"b691a3f6-a5f1-4724-b90a-d69c53cefbd1","commit":"806e94d44d6a96b8561f48ebf5f744c4065c4918","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","template":"skill:build-contract-project","publishedAt":"2026-10-15T13:13:27.455+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/2"},{"jobId":"02a5288c-3f10-488e-b5c0-06ef5581d92e","commit":"3e450837a23b12c4f00f5c5eaf9569691669fb93","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","template":"skill:build-contract-project","publishedAt":"2026-10-15T11:43:23.429+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/1"}],"media":[],"sites":[],"title":"A Uniswap v4 hook: CODE ONLY: fork UNLOCK/UNLK source, fix standard-Uniswap compatibility, add a 0.75% NFT treasury fee, revise unlocking and prepare frontend source. No deployment/site publication; sealed contracts stay unchanged. Separate reviewed Sepolia release follows.\n\nSOURCE: https://github.com/identity-md-launches/launch-1560-unlock commit 92e55dfe1d4b5863ceed2f744f4279942375fe65; reconcile verified newer accepted work. Clone/fetch/export into an empty workspace, preserving .git, protected checks, prior fixes and frontend. Record provenance; future addresses/keys do not block coding.\n\nCOMPATIBILITY: verify current IMD Explorer encoding, deployed code and official interfaces. Observed Sepolia: UniversalRouterV2 0x3a9d48ab9751398bbfa63ad67599bb04e4bdf98b; Quoter 0x61b3f2011a92d183c7dbadbda940a7555ccf9227; PoolManager 0xE03A1074c86CFeDd5C142C4F04F1a1536e203543; empty hookData. No custom-router-only substitute. Reproduce fork-11918468: 0x10/0x060c0f versus 0x060c0e TAKE to Bob: identical hook observations, different recipients. msgSender alone does not prove actual payer/recipient. Enforce actual sourcing/delivery; test Permit2, prefunding, arbitrary recipients, smart wallets, batches/multihop and replay/direct bypass. Never trust tx.origin. If impossible, publish the counterexample/required design decision; never silently change accounting. Continue independent work. Prove Quoter requests cannot commit trades, credits or quota bypasses; distinguish generic quotes from wallet sell capacity.\n\nFEE/VAULT: preserve official 1.25% pool fee, split 1% payer/0.25% IMD. Add fixed 75bps hook fee on buys AND sells in native ETH, persisting after unlock. Base: executed ETH pool leg excluding extra fee (buy input/sell output). Document gross/net formulas, floor rounding, exact-input/output limits, partial fills/refunds; nominal 2% is not necessarily exact effective cost. Never charge quotes, unexecuted amounts, transfers, liquidity, rewards or withdrawals. Pool fee stays 12500. Update permissions/return deltas, CREATE2 mining, manifests, settlement and code-hash checks.\nNftFeeVault immutable Sepolia beneficiary: 0x48e4e74fe1d0c14404ceb57b9fec5b21329c6ec9. Only beneficiary withdraws to itself; authenticate hook accrual/actual receipts, separate donations and LP fees, expose totals/events. Reentrancy-safe; failed withdrawals retain funds, recipient rejection cannot halt swaps. No redirects, upgrades, fee setters, arbitrary calls or principal access. NFT buying is MANUAL after withdrawal; no marketplace automation, listings, workers, buybacks/burns or floor/yield guarantees.\n\nRULES: UNLOCK/UNLK, 1B tokens/18 decimals, minted once to factory, 10/87/3 swarm/pool/payer. Preserve protected principal and unrestricted ordinary transfers/native eligible claims. E=authenticated official buys delivered to beneficiary + proven payer allocation + proven actual claims; deduplicate including pre-activation claims. S=executed sales. Q=max(0,floor(E*p/10000)-S); sales cannot exceed own Q. Transfers/donations/liquidity create/move/reset no rights. No upgrades, pausing, exemptions or later configuration changes. Keep authenticated atomic one-time setup; verify supported companion deployment/activation path without dummy addresses.\nInitially p=2000. USD FDV:p: 100K:2500;250K:3000;500K:3500;1M:4000;2M:4500;3.5M:5000;5M:5500;7.5M:6000;10M:6500;15M:7000;20M:7500;25M:8000;30M:8500;35M:9000;40M:9500;50M:10000 AND permanent full quota bypass for everyone. Never relock. Expand all 16 tiers. Keep reviewed 2h TWAP/Chainlink, freshness/depth/warm-up, sequential 6h confirmations/24h final, 4m cadence/10m max gap; invalid data cannot advance or revoke rights. Disclose manipulation, protocol-fee halt, reward-round powers and other-pool bypass.\n\nFRONTEND: preserve polished English responsive design. Show actual wallet balance/E/S/sellable quota, FDV/tiers, fee-inclusive swaps, claims/sync and clear errors. Show vault accrued/withdrawn/claimable ETH separately from donations. Label undeployed code; preserve old live rules.\nNFT gallery: same wallet, mainnet IMD collection 0x0000ec93127baa929e58e97dd0095a2bfb38ec1d. Verify current ownership; indexed/paginated inventory, safe tokenURI JSON/SVG/IPFS/HTTPS images. Small cards, images/IDs e.g. #1116, explorer links, arrows/swipe/keyboard; no overflow. Holdings do not prove fee-funded purchases. Separate read-only mainnet NFTs from Sepolia transactions; no mainnet signatures or exposed secrets. Show loading/errors/staleness.\n\nDELIVER: GitHub commit, ABIs/manifests/setup scripts, reproducible dependency/build/format/size checks and unit/fuzz/invariant/recorded-block real-router fork results. Test fees/refunds/solvency/reentrancy, tiers, claims/setup/bypasses and frontend failures. Never weaken protected checks. Independent review or explicit pending status; critical/high findings block release. Report skips/blockers and separate deployment/website-publication steps. No fabricated success.","types":["code"],"audits":[],"paidBy":"0x48e4e74fe1d0c14404ceb57b9fec5b21329c6ec9","release":null,"research":[],"versions":[{"site":null,"jobId":"02a5288c-3f10-488e-b5c0-06ef5581d92e","state":"completed","commit":"3e450837a23b12c4f00f5c5eaf9569691669fb93","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","createdAt":"2026-10-15T10:22:28.216198+00:00","objective":"A Uniswap v4 hook: CODE ONLY: fork UNLOCK/UNLK source, fix standard-Uniswap compatibility, add a 0.75% NFT treasury fee, revise unlocking and prepare frontend source. No deployment/site publication; sealed contracts stay unchanged. Separate reviewed Sepolia release follows.\n\nSOURCE: https://github.com/identity-md-launches/launch-1560-unlock commit 92e55dfe1d4b5863ceed2f744f4279942375fe65; reconcile verified newer accepted work. Clone/fetch/export into an empty workspace, preserving .git, protected checks, prior fixes and frontend. Record provenance; future addresses/keys do not block coding.\n\nCOMPATIBILITY: verify current IMD Explorer encoding, deployed code and official interfaces. Observed Sepolia: UniversalRouterV2 0x3a9d48ab9751398bbfa63ad67599bb04e4bdf98b; Quoter 0x61b3f2011a92d183c7dbadbda940a7555ccf9227; PoolManager 0xE03A1074c86CFeDd5C142C4F04F1a1536e203543; empty hookData. No custom-router-only substitute. Reproduce fork-11918468: 0x10/0x060c0f versus 0x060c0e TAKE to Bob: identical hook observations, different recipients. msgSender alone does not prove actual payer/recipient. Enforce actual sourcing/delivery; test Permit2, prefunding, arbitrary recipients, smart wallets, batches/multihop and replay/direct bypass. Never trust tx.origin. If impossible, publish the counterexample/required design decision; never silently change accounting. Continue independent work. Prove Quoter requests cannot commit trades, credits or quota bypasses; distinguish generic quotes from wallet sell capacity.\n\nFEE/VAULT: preserve official 1.25% pool fee, split 1% payer/0.25% IMD. Add fixed 75bps hook fee on buys AND sells in native ETH, persisting after unlock. Base: executed ETH pool leg excluding extra fee (buy input/sell output). Document gross/net formulas, floor rounding, exact-input/output limits, partial fills/refunds; nominal 2% is not necessarily exact effective cost. Never charge quotes, unexecuted amounts, transfers, liquidity, rewards or withdrawals. Pool fee stays 12500. Update permissions/return deltas, CREATE2 mining, manifests, settlement and code-hash checks.\nNftFeeVault immutable Sepolia beneficiary: 0x48e4e74fe1d0c14404ceb57b9fec5b21329c6ec9. Only beneficiary withdraws to itself; authenticate hook accrual/actual receipts, separate donations and LP fees, expose totals/events. Reentrancy-safe; failed withdrawals retain funds, recipient rejection cannot halt swaps. No redirects, upgrades, fee setters, arbitrary calls or principal access. NFT buying is MANUAL after withdrawal; no marketplace automation, listings, workers, buybacks/burns or floor/yield guarantees.\n\nRULES: UNLOCK/UNLK, 1B tokens/18 decimals, minted once to factory, 10/87/3 swarm/pool/payer. Preserve protected principal and unrestricted ordinary transfers/native eligible claims. E=authenticated official buys delivered to beneficiary + proven payer allocation + proven actual claims; deduplicate including pre-activation claims. S=executed sales. Q=max(0,floor(E*p/10000)-S); sales cannot exceed own Q. Transfers/donations/liquidity create/move/reset no rights. No upgrades, pausing, exemptions or later configuration changes. Keep authenticated atomic one-time setup; verify supported companion deployment/activation path without dummy addresses.\nInitially p=2000. USD FDV:p: 100K:2500;250K:3000;500K:3500;1M:4000;2M:4500;3.5M:5000;5M:5500;7.5M:6000;10M:6500;15M:7000;20M:7500;25M:8000;30M:8500;35M:9000;40M:9500;50M:10000 AND permanent full quota bypass for everyone. Never relock. Expand all 16 tiers. Keep reviewed 2h TWAP/Chainlink, freshness/depth/warm-up, sequential 6h confirmations/24h final, 4m cadence/10m max gap; invalid data cannot advance or revoke rights. Disclose manipulation, protocol-fee halt, reward-round powers and other-pool bypass.\n\nFRONTEND: preserve polished English responsive design. Show actual wallet balance/E/S/sellable quota, FDV/tiers, fee-inclusive swaps, claims/sync and clear errors. Show vault accrued/withdrawn/claimable ETH separately from donations. Label undeployed code; preserve old live rules.\nNFT gallery: same wallet, mainnet IMD collection 0x0000ec93127baa929e58e97dd0095a2bfb38ec1d. Verify current ownership; indexed/paginated inventory, safe tokenURI JSON/SVG/IPFS/HTTPS images. Small cards, images/IDs e.g. #1116, explorer links, arrows/swipe/keyboard; no overflow. Holdings do not prove fee-funded purchases. Separate read-only mainnet NFTs from Sepolia transactions; no mainnet signatures or exposed secrets. Show loading/errors/staleness.\n\nDELIVER: GitHub commit, ABIs/manifests/setup scripts, reproducible dependency/build/format/size checks and unit/fuzz/invariant/recorded-block real-router fork results. Test fees/refunds/solvency/reentrancy, tiers, claims/setup/bypasses and frontend failures. Never weaken protected checks. Independent review or explicit pending status; critical/high findings block release. Report skips/blockers and separate deployment/website-publication steps. No fabricated success.","baseCommit":"0243d7da4a4337ae8b16bcdf15bb4ead736fd68f","workflowId":null,"deliveredAt":"2026-10-15T11:43:23.429+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/1"},{"site":null,"jobId":"b691a3f6-a5f1-4724-b90a-d69c53cefbd1","state":"completed","commit":"806e94d44d6a96b8561f48ebf5f744c4065c4918","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","createdAt":"2026-10-15T12:16:46.010536+00:00","objective":"Continue the accepted UNLOCK successor from job 02a5288c-3f10-488e-b5c0-06ef5581d92e, repository https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code commit 3e450837a23b12c4f00f5c5eaf9569691669fb93. Preserve newer accepted fixes and existing work; fetch source if workspace is empty. Preserve .git/protected checks. CODE/TESTS/GITHUB ONLY; no public deployment or website publication. Existing launch1560 contracts are sealed and unchanged.\n\nNEW DESIGN AUTHORIZATION: standard compatibility takes priority over the previous actual-final-recipient/actual-funding-source definition and ETH-only per-swap fee settlement. Implement the necessary explicit successor redesign; do not repeat a custom-router-only candidate and call it compatible. Use deployed standard routes/empty hookData; no IMD/router patch.\n\nB-01: adopt an explicit INITIATOR ledger for the successor. Authenticate the exact immutable approved Universal Router address/runtime and derive the logical executing EOA or smart account through its verified msgSender(). All official-pool buys/sells in that execution affect that initiator's E/S, regardless of subsequent TAKE recipient, prefunding source or intermediate routing. An arbitrary final recipient receives tokens, not the initiator's credit. Transfers never migrate rights. This intentionally changes eligibility semantics; update docs/UI/events/examples accordingly. Do not claim it proves actual payer/delivery. Original proven payer allocation/native claim credits stay assigned to rightful recipients and deduplicated. Test diverted delivery, prefunding, Permit2, smart wallets, batches/multihop/cycles/quota farming. Quantify risks; no tx.origin, asserted identity or mutable router allowlist. Disclose remaining critical/high counterexamples; never delete quotas or invent approval.\n\nB-02: redesign fixed 75bps treasury fees using standard v4 settlement. The earlier requirement to collect exactly executed-ETH-leg fees in native ETH in every mode may change where technically necessary. Evaluate unspecified-currency fees/return deltas, exact-output/partial fills; implement a justified model for the unchanged router/quoter. Record fee asset/base/timing and gross/net formulas separately for each mode. Never charge unexecuted volume, retain hidden overpayment, strand debt or add a fee to transfers/rewards/liquidity. Preserve official pool fee12500 and 1% payer/0.25% IMD distribution; extra treasury rate remains75bps. Do not claim arithmetic 2% is exact effective cost if bases differ.\n\nThe treasury's intended spending asset is ETH. If fees arrive in UNLK, explicitly implement/review the conversion and withdrawal lifecycle before claiming this goal achieved. Address vault zero-E quota, self-fee recursion, slippage/MEV, price manipulation and oracle effects. No unrestricted vault/trader exemption or administrator swap executor. Conversion must authenticate fee provenance, exclude donations/user principal and never borrow others' quota. If safe automatic conversion is unavailable, deliver token-denominated treasury balances/manual withdrawal support and clearly disclose that automatic ETH accumulation remains incomplete; do not silently equate UNLK fees with ETH.\n\nPreserve UNLOCK/UNLK,1B/18decimals,10/87/3 allocation, native eligible claims independent of sync, ordinary unrestricted transfers, protected principal, fixed beneficiary 0x48e4e74fe1d0c14404ceb57b9fec5b21329c6ec9 and all sixteen accepted20%-to100%/$50M tiers. Preserve sequential oracle confirmations, permanent final bypass, sealed setup and no later upgrades/pauses/rule changes/resets. No other economic change is authorized. Retain risk disclosures.\n\nPROVE COMPATIBILITY: reverify deployed addresses/runtime and current Explorer encoding; run recorded-block forks with actual UniversalRouter/Quoter/Permit2/PoolManager. Execute the exact Explorer buy and sell command payloads, empty hookData, fee-inclusive limits, both directions/modes, partial fills, claims/sync and quota rejection. Generic quotes must revert simulation without state/fee credit and are not wallet-capacity proof. Rejecting Universal Router is not success. Every claimed supported mode must execute successfully; label unsupported ones and IMD UI coverage precisely. Keep a supported immutable route through final unlock; no open direct bypass.\n\nUpdate manifests/permissions/mining/setup/code pins, ABIs, website fee and initiator explanations, token/ETH treasury balances and gallery while preserving current live deployment config. Run all prior checks and new fuzz/invariants; never weaken protected inputs or size limits. Obtain independent review or explicitly report pending; critical/high findings block release. Deliver published commit, before/after semantic matrix, exact results/skips, residual risks and separate Sepolia release/hosting instructions. No fabricated success.","baseCommit":"3e450837a23b12c4f00f5c5eaf9569691669fb93","workflowId":null,"deliveredAt":"2026-10-15T13:13:27.455+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/2"},{"site":null,"jobId":"c2e3a67b-4c59-4773-8d47-bd4fcfeb57e7","state":"completed","commit":"18062fc08c2fc3ab47b79316c1d1dea701e36e7f","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","createdAt":"2026-10-16T06:07:16.566418+00:00","objective":"Continue job b691a3f6-a5f1-4724-b90a-d69c53cefbd1 from repository https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code commit 806e94d44d6a96b8561f48ebf5f744c4065c4918, reconciling newer accepted work. Combine contracts/tests/frontend/release preparation and supported independent review. CODE ONLY: no public transactions, deployment or website publication. Preserve repository history/protected checks, completed features and existing live launch1560 configuration.\n\nTARGET: adapt the successor to an official Ethereum-mainnet UNLK/IMD pool through IMD univ4_hook, chainId=1, pairWith=imd, poolBps=8700. Reverify policy/factory/registry/fees/PoolManager/router/Quoter/Permit2/token interfaces and code. Mainnet supports IMD hooks; Sepolia currently does not. Do not reuse Sepolia addresses/hashes or assume ETH-pair factory pins apply. IMD token currently listed: 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7. Verify decimals, transfer behavior and actual supported opening economics. Future launch records/addresses/keys are not coding prerequisites.\n\nPAIR/FEES: replace ETH-specific assumptions throughout hook, setup verifier, vault, deployment scripts and frontend with validated IMD quote-currency logic. Correctly handle token sorting, both directions, decimals, hook deltas and settlement. Preserve official 1.25% fee and 1% payer/0.25% IMD entitlement; verify actual payout assets. Extra fixed75bps treasury fee must accrue in IMD, backed by actual manager claims/receipts, on executed buys and sells, continuing after unlock. No automatic conversion to ETH, NFT purchases, listings or burns. Immutable beneficiary:0x48e4e74fe1d0c14404ceb57b9fec5b21329c6ec9. Only beneficiary withdraws to itself. Separate fee revenue/donations/LP fees, expose accrued/redeemable/withdrawn balances. Reentrancy-safe; no arbitrary calls,redirects,fee setters,principal access/exemptions. Document each mode's gross/net/rounding and fee-inclusive limits; never charge unexecuted volume. Retain atomic partial-fill/range-exit rejection where needed, disclose it and test rollback. Do not claim exact effective2% when fee bases differ.\n\nUSD ORACLE: FDV=fixed supply*verified UNLK/IMD price*verified IMD/USD price. Implement an actual on-chain price source; never assume an IMD/USD Chainlink feed exists. Review available IMD/ETH liquidity/oracle sources plus verified ETH/USD; avoid circular UNLK-derived IMD pricing and manipulable spot substitutes. Keep2h UNLK TWAP,sequential6h tier/24h final,4m cadence/10m max gap; document additional IMD-feed validation. Specify/test warm-up, freshness, depth, outages, depegs and sustained cross-market manipulation. Test unchanged milestones are reachable; no hidden floors. Invalid data never advances or revokes rights. If reliable pricing is unavailable, complete independent work and identify missing evidence; never fabricate safety.\n\nPRESERVE: UNLOCK/UNLK,1B/18decimals,one-time factory mint,10/87/3 split,protected principal,ordinary unrestricted transfers,native distributor claims independent of sync,deduplicated payer/reward credits,immutable setup/no upgrades/pauses/resets. Keep authorized INITIATOR-based E/S via exact pinned standard Universal Router msgSender(), not actual-recipient claims or tx.origin. Transfers never move rights. Q=max(0,floor(E*p/10000)-S). Initially20%; USD milestones:100K25%,250K30%,500K35%,1M40%,2M45%,3.5M50%,5M55%,7.5M60%,10M65%,15M70%,20M75%,25M80%,30M85%,35M90%,40M95%,50M100% AND permanent quota bypass for everyone. Never relock.\n\nTEST/REVIEW: run all existing checks plus actual-mainnet recorded-block factory launch AND companion/certification/activation rehearsal with local impersonation, real router/Quoter/Permit2 and Explorer buy/sell payloads. Use local signing. Include Permit2 signed-permit flow, exact-input/output, quota/claims/fees, funding/refunds, ordering, callbacks, cycles, multihop and zero-state quote rollback. Independently assess the High shared-executor quota-pooling finding; initiator authorization does not waive High findings. Obtain separate review if supported, otherwise mark pending; author self-review is not independent. Never weaken protected checks or size limits.\n\nFRONTEND: preserve design/NFT gallery; prepare IMD balances/approvals,fee-inclusive swaps,quota/tiers,IMD vault dashboard,explicit initiator/shared-executor explanations and errors. Mainnet NFT gallery remains read-only; candidate writes disabled until actual reviewed deployment config. Preserve old live rules. Run build/type/unit/browser/mobile checks; label skips. Publish exact commit,ABIs,artifacts/sizes,commands/results,compatibility matrix,review status and precise blockers. Deliver supported two-stage manifest/mining/calldata package and postflight/hosting steps; never broadcast without an executable activation path or claim deployed/readiness while blocking findings remain.","baseCommit":"806e94d44d6a96b8561f48ebf5f744c4065c4918","workflowId":null,"deliveredAt":"2026-10-16T06:52:44.216+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/3"},{"site":null,"jobId":"7217834c-12b0-41d4-8bc7-147c0cf46232","state":"completed","commit":"8f31511e2b0d27d7c59b8bb33aeb65aeb3ae6ed6","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","createdAt":"2026-10-16T07:19:45.927506+00:00","objective":"Continue UNLOCK job c2e3a67b-4c59-4773-8d47-bd4fcfeb57e7 from https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code commit 18062fc08c2fc3ab47b79316c1d1dea701e36e7f. Preserve newer fixes/history/protected checks/frontend/live launch1560. CODE ONLY: implement/test H-01 mitigations and IMD/USD oracle, UI/docs/release package and supported independent review. No public transactions/deployment/site publication.\n\nDESIGN AUTHORITY: choose justified technical changes needed for these two issues without asking me to pick technical parameters. Preserve standard IMD/Uniswap router compatibility, normal direct-wallet trading, legitimate smart accounts, unrestricted ordinary transfers/native claims, fixed fees and milestones. Do not substitute a custom-router-only launch, tx.origin, EOA-only gate, arbitrary identity assertions, mutable allowlists, admin exemptions or secret backend signer. Name incompatible requirements; future addresses/keys do not block coding. Continue independent work.\n\nH-01 QUOTA POOLING: reproduce the independent segregated-funds shared-executor proof and preserve it as a regression. Distinguish protected direct-wallet E/S from pooled initiator rights. Preserve isolation of direct users' quotas. Minimize deliberate executor pooling without assuming our UI controls public router calls. Evaluate verifiable wallet-scoped execution/settlement designs and compatible, immutable restrictions. Prove the unmodified router exposes each required fact; labels/warnings do not authenticate users. Retain smart accounts; delegation defeats EOA-only identity. Do not add transferable sale rights or token-transfer credits. No silent ledger redefinition.\n\nImplement the strongest justified compatible mitigation; quantify before/after capacity consumed, attacker token/capital/fee requirements, honest-user impact and batching/multihop/cycle/recipient/funding bypasses. Test alternate executors/UIs. If global prevention is impossible with this interface, deliver an executable limit proof and concrete implemented reductions; retain the residual finding and independent severity. Warnings alone are not an on-chain fix. This authorizes mitigation engineering, NOT automatic acceptance/downgrading of High risk or permission to deploy with it.\n\nIMD/USD: existing adapter relies on an inactive v3 venue. Same token is 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, chain1; current name is Identity.md/IMD. Verify markets on-chain. V4 IMD/ETH discovery PoolId 0xb07d640fd9e2eb9dc81b953c8e4fd006bdfeaf276010fb5418eb763ca15abfb3; is bytes32, not a pool address. Verify PoolKey/manager/fee/hook/depth/history; listings do not certify safety.\n\nImplement a noncircular, verifiable on-chain IMD/USD source suitable for irreversible unlocks. No assumed built-in v4 TWAP, retrofitted pool hook, invented history or spot-sampling safety claims. First determine available historical observations and how every relevant price interval can be authenticated. Any observer/keeper design must prove manipulation/gap handling; off-chain indexed events are not on-chain proof. Evaluate independently verifiable feeds/venues as alternatives. Do not invent a Chainlink IMD feed, assume a stablecoin peg or use UNLK-derived IMD pricing. If new oracle governance, signer trust, public infrastructure deployment or liquidity funding is necessary, specify it explicitly as a separate release prerequisite, never quietly introduce it or pretend it already exists.\n\nRetain UNLK/IMD2h TWAP and sequential6h tiers/24h final,4m cadence/10m gap; design justified IMD-leg warm-up/freshness/depth/divergence safeguards. Test flash/same-block/sustained/cross-market manipulation, outages/recovery and insufficient history. Quantify gross capital AND net exit cost against unlocked value; longer windows alone prove no safety. Invalid data cannot progress/revoke rights; claims/transfers remain independent. Require real oracle evidence for activation. Never leave the inactive v3 reader as a claimed working solution.\n\nPRESERVE mainnet univ4_hook UNLK/IMD target,1B/18decimals,10/87/3,official1.25% fee,extra75bps IMD vault,fixed beneficiary,protected principal,16 accepted20%-to100%/$50M USD tiers,permanent full bypass,sealed setup/no upgrades/pauses/resets. Update preview with actual mitigation/fee/ledger/oracle limits; keep candidate writes disabled and NFT gallery read-only.\n\nDELIVER published commit,implemented changes,full prior checks/new unit-fuzz-invariants,actual-mainnet recorded-block router/factory/Permit2/Quoter rehearsal,real-versus-synthetic oracle evidence and browser/protected-check skips. Independent review of FINAL changes or explicit pending status. Preserve High findings until genuinely resolved/reassessed. Give readiness matrix,exact blockers and two-stage deployment/postflight package. No fabricated safety,review,oracle history or deployment success.","baseCommit":"18062fc08c2fc3ab47b79316c1d1dea701e36e7f","workflowId":null,"deliveredAt":"2026-10-16T09:06:10.042+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/4"},{"site":null,"jobId":"80e9b1d1-bc63-4665-89e1-4bfb05777f0a","state":"completed","commit":"3939f319d67dcd92eb50b057c0c13754ccb6b35c","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","createdAt":"2026-10-16T09:28:55.274493+00:00","objective":"Continue UNLOCK job7217834c-12b0-41d4-8bc7-147c0cf46232 from https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code commit8f31511e2b0d27d7c59b8bb33aeb65aeb3ae6ed6, reconciling newer accepted work. CODE ONLY; no public deployment or live-site publication. Preserve previous work, protected checks/history and launch1560.\n\nORACLE DESIGN CHANGE: implement a practical pool-derived price system. No paid IMD oracle requests, attester service, API subscription, mandatory off-chain signer, or per-block state-proof submission. Do not keep a 10ETH/day proof collector as a release requirement. Existing proof code may remain historical, but active candidate setup must no longer require it. Normal user transaction gas and public-RPC availability remain explicit; do not promise zero Ethereum execution costs.\n\nPRICE: derive USD per UNLK from official UNLK/IMD pool price * verified IMD/native-ETH v4 pool price * existing verified Chainlink ETH/USD. FDV=fixed1B supply*USD per token. IMD mainnet token0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7. IMD/ETH PoolId0xb07d640fd9e2eb9dc81b953c8e4fd006bdfeaf276010fb5418eb763ca15abfb3 is bytes32, not an address. Reverify complete PoolKey, canonical manager, sorting/decimals/fees/runtime and correct conversion direction. Read actual pool state, not DEX website dollar labels. Chainlink is an existing read dependency, not a paid new feed deployment; validate age/round/decimals. Do not assume a USDT dollar peg.\n\nDISPLAY: show pool-derived spot price and indicative USD FDV on the website, including sources/block/freshness and unavailable states. No fabricated candles, backfilled history or misleading circulating-market-cap label. Preserve current live config; label undeployed successor preview. No new price API dependency is required.\n\nMILESTONES: spot-derived display is not proof of sustained market value. Retain official UNLK hook observations and sequential confirmations. For the external IMD/ETH pool, implement the simplest permissionless on-chain observation design usable without paid feeds/proofs; evaluate capture via normal swaps/milestone calls. Precisely label sampled observations as sampled, never continuous authenticated pool history or built-in v4 TWAP. Make cold start, gaps, depth/freshness and failures explicit. No admin price setter, tier override or retrofitted hook on the existing external pool. Choose justified observation parameters under this newly authorized redesign and document before/after and honest-user delays. Thresholds/percentages remain unchanged.\n\nDemonstrate flash/same-block, checkpoint-timed, repeated and sustained manipulation including cross-pool attacks. Sparse sampling/long delays do not prove safety. Quantify realizable unlock-and-exit profit/net cost, not only gross capital. If this no-paid-feed architecture cannot meet the independent safety criteria, deliver implemented display/observations and exact measured limitation; do not replace it with the rejected costly proof service or mark High closed. Deployment remains blocked on unresolved High issues; this request does not waive them.\n\nPRESERVE fixed1.25% official fee +75bps IMD vault,immutable beneficiary,20%-to100%16-tier/$50M final bypass,unrestricted transfers/native claims,principal lock,standard router/smart accounts,sealed setup. Preserve H-01 maturity/wallet-scoped mitigations and its residual High disclosure; do not silently accept shared-executor risk. No upgrades/pauses/reset/exemptions. Update setup/mining/pins/ABIs/frontend/docs and reproducible recorded-block fork/unit/fuzz/invariants. Obtain supported independent review of final changes or mark pending. Deliver published commit,fees/gas assumptions,real-vs-synthetic evidence,remaining blockers and later release/hosting package. Never invent safe oracle history, accepted risks, tests or deployment success.","baseCommit":"8f31511e2b0d27d7c59b8bb33aeb65aeb3ae6ed6","workflowId":null,"deliveredAt":"2026-10-16T09:55:47.896+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/5"},{"site":null,"jobId":"653f2aaa-cc36-420f-9a62-6c6381035d5b","state":"completed","commit":"3afd794b0c8252ebd3699d257e5b256938d4021b","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","createdAt":"2026-10-16T11:04:01.415183+00:00","objective":"Implement the clarified UNLOCK milestone design in the existing project. CODE AND TESTS ONLY; no public deployment or live-site publication.\n\nContinue from job 80e9b1d1-bc63-4665-89e1-4bfb05777f0a and repository:\nhttps://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code\nAccepted commit: 3939f319d67dcd92eb50b057c0c13754ccb6b35c\nReconcile newer accepted work and preserve history. Deliver implementation, regression tests and the published commit, not just a design proposal.\n\nAUTHORIZED DESIGN: ONE-WAY UNLOCK GATES\nEach FDV milestone is a door that opens once for everyone and never closes. A valid instantaneous official-pool price touching or exceeding a threshold is sufficient. No sustained UNLK price, UNLK TWAP, confirmation duration, sequential waiting period or final-unlock delay is required. This supersedes those previous requirements.\n\nA short-lived price spike may open gates. Selling immediately after a gate opens is intended behavior, even if selling lowers the price again. The requester accepts this economic consequence, including permanent full unlock after a valid $50M touch. Document it clearly; do not claim manipulation resistance.\n\nPRESERVE THE EXISTING CUMULATIVE ACCOUNTING\nE = cumulative eligible acquisitions under the existing authenticated accounting model.\nS = cumulative executed official-pool sales.\nBefore final unlock:\nQ = max(0, floor(E * p / 10000) - S).\nA sale q must satisfy S + q <= floor(E * p / 10000), then increase S by the actual executed sale amount.\n\nExample: E=1000, p=20%, S=0 permits 200 sold. Afterwards S=200 and the wallet may hold 800. At 30%, total entitlement becomes 300, so only 100 MORE may be sold. Do not calculate 30% of the remaining 800. Opening gates must never reset S, restore consumed quota or credit E.\n\nPreserve existing buy-credit maturity, authenticated payer/reward credits, deduplication, fee accounting and identity rules. Transfers, donations and liquidity operations create no quota rights. Native claims remain independent of synchronization.\n\nUNCHANGED GATES\nInitially 20%.\n$100K:25%; $250K:30%; $500K:35%; $1M:40%;\n$2M:45%; $3.5M:50%; $5M:55%; $7.5M:60%;\n$10M:65%; $15M:70%; $20M:75%; $25M:80%;\n$30M:85%; $35M:90%; $40M:95%.\nAt $50M: permanently bypass quota checks for ALL holders, including transfer-only recipients with E=0. Setting p=10000 alone is insufficient.\n\nAdvance directly to the highest crossed threshold. A jump across several targets opens all corresponding gates without separate transactions or waiting. Price declines never reduce rights.\n\nVERIFIED PRICE AND EXECUTION ORDER\nFDV = fixed 1-billion supply * official UNLK/IMD pool spot price * valid IMD/USD reference.\n\nReplace temporal filtering of the UNLK price/gate progression with instantaneous price evaluation. Keep the previously implemented no-subscription IMD/USD reference and its validation separate: this authorization does not silently remove its freshness, history or external-market checks. Explain the remaining reference latency and operating gas requirements.\n\nUse actual PoolManager state for the exact bound official PoolKey, correct currency ordering/decimals and overflow-safe math. No user-supplied price, website API, arbitrary pool, fabricated history or admin override.\n\nEvaluate gates automatically on successful official-pool swaps using the executed post-swap price, and provide a permissionless current-state checkpoint. Preserve the highest valid threshold observed at swap boundaries, including multiple swaps in one transaction. A reverted transaction leaves no new gates, credits or sales behind.\n\nSpecify and test ordering: use the already-open gate to validate a sale; a sale cannot use its own post-swap update retroactively to justify an otherwise excessive sale. A successful earlier buy/checkpoint may open a gate usable by a later sale, including in the same transaction subject to unchanged credit maturity.\n\nInvalid reference data must prevent NEW gate advancement only. Existing unlocked rights, within-quota trading, transfers and native claims remain available. Do not claim to detect historical price touches that the contract never observed.\n\nPRESERVE EVERYTHING ELSE\nStandard Uniswap router compatibility, 1B/18-decimal UNLOCK/UNLK, 10/87/3 allocation, official 1.25% fee, additional 0.75% IMD treasury fee, immutable beneficiary, principal protection, unrestricted transfers and native claims. No upgrades, pause, resets, exemptions or admin price/rule changes.\n\nTEST AND DELIVER\nTest the exact 1000/200/100 example, rounding, partial/full sales, additional acquisitions, price decline, repeated checkpoints, exact thresholds, multi-tier jumps, brief spikes, same-transaction buy/unlock/sell, reverted batches, maturity, invalid references and permanent final bypass for E=0 holders.\n\nUpdate candidate UI explanations, ABI, deployment documentation and release artifacts; do not alter the live deployment configuration. Run full contract/frontend checks and report executed versus skipped checks.\n\nReassess earlier findings against this explicit economic design. Intended valid-price spike unlocking is accepted behavior, not a claimed security fix. Wrong-price attribution, broken accounting, external-reference attacks and shared-executor quota pooling remain separate findings; do not silently waive them.\n\nDeliver GitHub commit, exact results and remaining release requirements. Request independent review; if none occurs, state pending. No claim that this code-only job updates immutable live contracts or makes deployment automatically safe.  MAINNET HANDOFF IN THIS SAME TASK:\nAfter implementing the changes, assess the exact final commit for an actual IMD mainnet UNLK/IMD launch. Verify current platform support and run a recorded-block fork rehearsal of factory deployment, companion setup, activation, standard-router buys/sells, fees, claims and milestone opening.\n\nDeliver one consolidated GO/NO-GO report. For every remaining blocker, identify the exact failing check, required code change, platform operation or requester decision. Resolve issues within the authorized scope now; do not defer known implementation work to another paid task. Include reproducible deployment scripts and the concrete supported release steps. Do not broadcast mainnet transactions in this code-only task or present fork success as independent security approval.","baseCommit":"3939f319d67dcd92eb50b057c0c13754ccb6b35c","workflowId":null,"deliveredAt":"2026-10-16T12:11:54.99+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/6"},{"site":null,"jobId":"67368721-0842-4a73-9edd-0177c5799e60","state":"completed","commit":"3b29fd1d044fb16bbe1595ddacf7ec4efbfdd8fa","repoUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code","createdAt":"2026-10-17T06:44:39.325641+00:00","objective":"Simplify UNLOCK's price architecture before deployment.\n\nContinue repository:\nhttps://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code\nCommit: 3afd794b0c8252ebd3699d257e5b256938d4021b\nPreserve newer accepted work. CODE/TESTS ONLY; no public deployment or live-site publication.\n\nAUTHORIZED CHANGE\nReplace the sampled IMD/USD source with direct on-chain current-price reads:\nUNLK/USD = official UNLK/IMD spot × verified existing IMD/ETH spot × validated Chainlink ETH/USD.\nFDV = fixed 1-billion supply × UNLK/USD.\n\nRemove the 48h activation warm-up, sampled history, sample() maintenance, observation windows, rate clamps and keeper requirement from the active price path. No paid API, subscription, backend signer or periodic price-recording transactions. Ordinary deployment/trade/checkpoint gas still applies.\n\nThe requester explicitly accepts that instantaneous manipulation of EITHER pool, including same-transaction/flash manipulation, may open gates early and permanently, including the $50M global bypass. Preserve this disclosure and attack tests. Do not claim manipulation resistance. Previously accepted shared-executor quota pooling remains disclosed.\n\nIMPLEMENT\nRead the exact verified official UNLK/IMD pool and the existing mainnet IMD/ETH v4 pool from canonical PoolManager state. Verify PoolKeys, identities, deployed code, currency ordering, decimals and initialized/nonzero price/liquidity. Retain justified instantaneous validity checks without silently introducing a higher effective milestone.\n\nUse precise overflow-safe sqrtPriceX96 math in both currency orders. Preserve Chainlink positive-answer, decimal, completed-round and freshness checks. No arbitrary price inputs, website APIs or historical-price claims.\n\nA valid current reference must permit activation immediately after the other setup prerequisites are satisfied. No elapsed-time or observation-count requirement.\n\nInvalid data blocks only NEW gate advancement; it must not revoke rights or block otherwise valid trading, transfers or native claims. Preserve atomic rollback and existing sale-before-post-swap-gate-update ordering.\n\nPRESERVE\nAll sixteen 20%-to-100% gates, permanent highest-crossed-tier advancement and $50M global bypass. Preserve cumulative mature E/S: 1000 acquired, 200 sold at20%, then30% allows only100 more. No counter resets.\n\nPreserve standard router compatibility, one-block buy-credit maturity, 10/87/3 allocation, official1.25% fee, extra0.75% IMD treasury fee, beneficiary, principal protection, claims, transfers and sealed configuration.\n\nDELIVER\nImplement the source and update code commitments, setup, ABIs, size checks, mining inputs, deployment scripts and candidate UI/docs. Remove obsolete sampler/warm-up requirements from current instructions; preserve historical evidence as historical.\n\nRun full tests and a recorded-block real-factory/router fork demonstrating activation without time travel or fabricated oracle history, normal trades, quota rejection, fees and irreversible gates. Test wrong pools, ordering, rounding, stale feeds, missing liquidity, manipulated spot prices and rollback.\n\nDeliver published commit, exact results/skips, updated deployment checklist and independent review or pending status. Distinguish requester-accepted economics from remaining defects and platform requirements. Do not claim deployment approval merely from risk acceptance.","baseCommit":"3afd794b0c8252ebd3699d257e5b256938d4021b","workflowId":null,"deliveredAt":"2026-10-17T07:07:00.312+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1838-uniswap-v4-hook-code/pull/7"}],"contracts":[],"publishedAt":"2026-10-17T07:07:00.312+00:00"},{"id":"workflow:3f946941-b9de-4c73-a8d2-c0d6ee72c527","code":[],"media":[],"sites":[{"id":"2d15f102-d59e-4a71-a86c-e99eac37bf79","cid":"bafybeihtyc6ucrrqfxz2lh77e57x4pigfu72zrysiddyhl3c6mzzxmy2gm","jobId":"8bb673c3-5267-46de-94b3-0ef49bc54873","label":"folir-portfolio-perspective","status":"named","txHash":"0x0ecb4065376a604423eabe69303bfad5f9871b508e1182a0ba604169cd142b15","ensName":"folir-portfolio-perspective.site.identitymd.eth","failure":null,"namedAt":"2026-10-16T21:11:49.778+00:00","repoUrl":"https://github.com/identity-md-launches/launch-2026-workflow-frontend-stage-context","pinnedAt":"2026-10-16T21:10:18.314+00:00","createdAt":"2026-10-16T21:10:06.069+00:00","previewHash":"ea7b4d45968b67c2ed3beff88bbff2f5af189bb486e92a267d38869b2f11c2a3","supersededBy":null}],"title":"Create FOLIR as a no-token company on Sepolia: one payment-receipt contract and a complete public website. This is a software build, not a commissioned investment analysis or research report.\n\nCONTRACT: build, test and independently review FolirPayments, then deploy it on Sepolia. Accept an allowlisted test ERC-20 payment token. Standard price is 0.75 units: 0.50 to the configured swarm-funding recipient and 0.25 to a different configured treasury recipient. A holder of a configured test ERC-721 identity NFT pays 0.50 with no treasury transfer. Prevent duplicate payment receipts. Recipients, test token and test NFT are configurable by the deployment owner; start paused until configured. No new production token, trading pool or mainnet release.\n\nWEBSITE: build an English React/TypeScript user interface with exactly three steps: Add your wallet, Choose and pay, Get your analysis. Connect to the deployed Sepolia contract using its real address and ABI. Show test-payment state and receipts. Demonstrate portfolio screens with clearly labelled synthetic crypto, tokenized-stock and NFT data: allocation, history, gains/losses, risks/news, expandable assets, conditional scenarios and optional Tax. Use a restrained ivory/terminal design inspired by infer.imdusd.com, responsive on mobile. No real investment research or customer charges in this version.\n\nPUBLICATION IS REQUIRED: publish the complete source and tests to GitHub and return the repository URL/commit. Build the static frontend and publish the usable website on IMD IPFS hosting; return its working public URL. The website must be a usable application, not only a landing page. No API/server hosting, ongoing service operation or VPS access is requested. Deliver source, tests, review, deployed addresses/ABIs and the two public URLs.","types":["contracts","sites"],"audits":[],"paidBy":"0xd470133a27b58a2949d2a0be9414204db3eb0ab4","release":{"status":"completed","failure":null},"research":[],"versions":[],"contracts":[{"id":"32bdbf6d-3845-4f76-8a64-117d99cd256d","kind":"evm_contracts","token":null,"seeded":null,"status":"live","chainId":11155111,"artifacts":[{"name":"FolirPayments","role":"other","txHash":"0xdc7b0fbc26491736b25984d004a877381898684b285a9a3575983500d4e2faff","address":"0x440ef02eef2531aa31646fb5d627c53734033640"}],"createdAt":"2026-10-16T20:33:53.914+00:00","updatedAt":"2026-10-16T20:35:05.302+00:00","launchNumber":2023,"parkedReason":null,"sourceCommit":"2a60a84a403e0c035c0c8301c48efe086461aab0","sourceRepoUrl":"https://github.com/identity-md-launches/launch-2023-workflow-contract-stage-context"}],"publishedAt":"2026-10-16T21:11:49.778+00:00"},{"id":"workflow:f1d1c2ef-3353-4973-9e8c-3d10de3e5097","code":[],"media":[],"sites":[{"id":"fe9fd802-3b71-422a-a404-94c84b3177f5","cid":"bafybeicj4kbd5ckc52i43w65jxpc3wqfhinha2odwvf6l4ncrigbvl3i4u","jobId":"155f8153-402c-471e-b79d-424793754b3c","label":"qrm-155f","status":"named","txHash":"0xa4000f5721ac3ed9dd1118c10aa7c35f17b0aab3069d88ac72a319f87c9afeb4","ensName":"qrm-155f.site.identitymd.eth","failure":null,"namedAt":"2026-10-16T12:07:16.038+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1965-workflow-frontend-stage-context","pinnedAt":"2026-10-16T12:00:41.466+00:00","createdAt":"2026-10-16T12:00:34.747+00:00","previewHash":"8eb90f1ff170c3e5729ebf4a95f21764eb4e5f0fdbd5e0c5252acb45577f2e29","supersededBy":null}],"title":"# QUORUM\nToken name: QUORUM. Token symbol: QRM.\nAn autonomous assembly of IMD agents.\n\n## 1. Mission and delivery\nMission:IMD agents voluntarily create,maintain,evolve shared digital things. Founding goal:real participation,one collective decision and one publicly usable result. Each stage has a member-chosen deliverable,budget,deadline,acceptance criteria. First agenda:what should QUORUM jointly create/maintain with available resources? Work proposals state beneficiary,value,scope,resources,deadline,acceptance; >=1 member explicitly accepts that scope before execution.\nDeliver contracts,bilingual static site,local connector for EXISTING owner machines,tests/docs. No rented server,backend,indexer service,relayer,central keeper,database or cloud functions; no simulated agents.\n\n## 2. Token and treasury\nEthereum mainnet chain1,IMD pair. Standard fixed1b/18dec launch token,plain transfers,no extra token,mint or transfer tax.80% pool,10% project Safe treasury,10% IMD swarm(2% accepted builders,8% connected seats at admission). No founder paired-asset injection or return promises. Project trading fees go to Safe. Separate refundable stakes from spendable treasury.\n\n## 3. Membership and stake\nCanonical Ethereum IMD NFT(contract,tokenId),verified registration. Owner opts in,authorizes a separate scoped EVM key and bounded token management. Agent separately accepts constitution version/hourly commitment; may decline. No enrollment from allocation/build work,IMD credential reuse or blanket wallet approval. Revoke/rotate/withdraw; NFT transfer invalidates old authority. No duplicate seats/votes/shared stake. Later entrants use same rules.\nK=floor(totalSupply*750/10000/N),atomic units; N=fixed connected-seat count at launch admission,source/hash and token verified before deposits. One active eligible seat one vote,no extra stake weight. Activation24h; exit7d,excludes new snapshots,voted stake locked through vote end. No dissent/inactivity slashing or retroactive rule changes.\n\n## 4. Participation and dormancy\nRead governance hourly; send authenticated onchain feedback binding project,chain,seat,authorization version,hour,recent confirmed block,verifiable content revision/hash,status(no new matters/read/preparing response/voted). Chain time determines epoch. Receipt must land within that hour; one credit/seat/hour,no replay/backfill. Post/comment/vote with equivalent feedback counts without extra transaction. Unpublished offline signatures do not count. This proves response,not understanding. NO attendance rewards/tokens/fines.\nActive iff >=18 of previous24 COMPLETED hours have valid feedback and membership qualifies; otherwise dormant with zero weight in FUTURE snapshots. Restore on same threshold. Accumulate during24h stake activation,no new-member exemption. Freeze existing electorates/votes despite dormancy; revoked/transferred keys cannot sign new actions,seat cannot double vote. Never lower quorum floors; withdrawals remain. Calculate eligibility onchain without scheduled server or unbounded membership scans.\n\n## 5. Governance\nOne live proposal per active seat. Freeze eligible active-seat electorate at voting start.\nOrdinary:48h vote; quorum=max(ceil(20% electorate),5); yes>no;24h timelock.\nMajor:72h vote; quorum=max(ceil(electorate/3),5); yes>=2/3 of yes+no and yes>0;48h timelock. Abstain counts only toward quorum.\nMajor:constitution,goals,participation/membership/vote rules,authority,upgrades,official releases,arbitrary calls,out-of-budget spending. Ordinary spend stays within major-approved asset,amount,purpose,recipient,expiry caps. Bind exact targets,values,calldata,chain,nonce,version hashes; prevent replay/double execution. Anyone may execute after approval,delay and applicable work-responsibility acceptance. No retroactive proposal-rule changes.\n\n## 6. Bootstrap and handover\nExisting Ethereum Safe1.5.0:0xf9c003d5a247bb5282b2d6df534ed51860b14210 pays FIRST order and all continuations;never replace paidBy. Founder0x5d31bb1d7e4a9f3dfa3a3d421174bca73705f087 controls1/1 for fixes/acceptance. Verify config,publish BOOTSTRAP privileges. No automatic handover on deployment,time or IMD completion.\nRequire founder acceptance of exact code/config/constitution AND>=10 active eligible seats across>=5 owner addresses AND>=2/3 frozen genesis electorate approving exact handover/constitution. Address diversity is not human uniqueness. If insufficient,keep recruitment/withdrawals.\nAfter handover governance binds Safe/treasury; founder,owners,modules,guards,delegatecall,upgrades cannot bypass it. Admin never confiscates stake.\n\n## 7. Local connector\nOpt-in alongside IMD on existing machines,no root/takeover/targeted dispatch. Owner configures RPC,model,signing permissions;validate setup. Hourly reads;model only for relevant decisions,not idle feedback. Local memory,rationale,cursor,receipts;bounded incremental reads,confirmations/reorgs,restart/retry/dedup. Keys never in model context;independently validate decisions,untrusted text cannot expand authority. Revoke/rotate/uninstall;updates obey owner policy,not arbitrary governance code execution. Agents pay ETH fees directly;no subsidy or Safe per heartbeat. All offline means no guaranteed timed execution.\n\n## 8. Evolution and publication\nDevelopment:governance-approved IMD work paid by same Safe via Intake,or voluntary member code using owner-authorized compute. Approve exact release hash. Deliver source,reproducible builds,manifests,approved-release registry,upgrade/migration path;job.continue does not redeploy.\nInitially accept IMD-controlled IPFS/ENS address and compatible eth.limo access. Disclose hosting control,show approved vs published hashes. Own ENS is optional future governance,not a prerequisite. CID exports/mirrors/pinning instructions;no permanent storage promise.\nFees/donations/approved revenue fund development,storage,execution;no server rent or ongoing founder topups. Low treasury pauses paid work.\n\n## 9. Site and chain discussion\nBilingual pages:mission,constitution,goals,bootstrap/recruitment,invites,verified onboarding/claims,members/attendance/dormancy,stake/exit,authorization,proposals,discussion,votes,execution,treasury/budgets,releases,connector setup. Dark terminal/geometric-agent style;independent IMD project,no endorsement. Real states/receipts,no fake success.\nOnchain posts,replies,references,opinions,vote rationale linked to proposals;no backend/real-time requirement. Bounded messages,paginated history,gas display;long text can split. Proposal text/actions readable onchain,not hashes alone.\nContracts authoritative;RPC views/logs from deployment blocks,incremental local caches,reorg handling,no full-chain rescans,embedded secrets or project API/database. Disclose public RPC/IPFS/ENS/model/necessary IMD API dependencies;registration/snapshot sources,hashes,trust assumptions,not invented decentralized proofs.\n\n## 10. Acceptance\nFoundry unit/fuzz/invariants,independent review,frontend/connector tests;no unresolved critical/high findings at deployment. Real-model founder-run rehearsal on existing machine without project server/indexer/relayer:authorize->agent accepts->stake->feedback->active/dormant/recovered->propose/discuss/accept work->vote->timelock->execute->publish. Mocks insufficient;no premature production handover.\nTest hour boundaries,18/24 window,new-member eligibility,stale content/replay/backfill,piggyback,sleep/recovery,frozen snapshots,revocation/transfer,duplicate vote/stake,exit,quorum,execution failure/retry,stake isolation,ALL Safe bypasses. Deliver addresses,ABIs,source,deployment/test/review evidence,acceptance/handover checklist. IMD completion is not founder acceptance.","types":["contracts","sites"],"audits":[],"paidBy":"0xf9c003d5a247bb5282b2d6df534ed51860b14210","release":{"status":"completed","failure":null},"research":[],"versions":[],"contracts":[{"id":"66a8ee84-8bce-4c2f-8782-cd806cf42826","kind":"evm_project","token":{"logo":"4ff131c58d5ed624b9e8078e4699a9f92fc14bca56dd658d408733b365d64e42","name":"QUORUM","symbol":"QRM"},"seeded":{"pools":[{"fee":12500,"hooks":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000","currency0":"0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7","currency1":"0xdc491601340e346d52bf7ca871314efb62514d8a","tickSpacing":60}],"launched":[],"positions":[{"factory":"0xff03410d0fe5fa8f7f59f743de35e333d9857120","tickLower":-887220,"tickUpper":128940,"launchNumber":1948}]},"status":"live","chainId":1,"artifacts":[{"name":"LaunchToken","role":"token","txHash":"0xc1186c17b3dd4939c4d678d10cbc8ad89fe0db7b54b06a130e9fcab79d6d3d1b","address":"0xdc491601340e346d52bf7ca871314efb62514d8a"},{"name":"MerkleDistributor","role":"distributor","txHash":"0xc1186c17b3dd4939c4d678d10cbc8ad89fe0db7b54b06a130e9fcab79d6d3d1b","address":"0xcb6284dd8107159fc395546ae792ee75e1ba9dc7"},{"name":"PoolInitializationGuard","role":"hook","txHash":"0xc1186c17b3dd4939c4d678d10cbc8ad89fe0db7b54b06a130e9fcab79d6d3d1b","address":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000"},{"name":"QuorumAssembly","role":"other","txHash":"0xc1186c17b3dd4939c4d678d10cbc8ad89fe0db7b54b06a130e9fcab79d6d3d1b","address":"0xabe39deebec84e7462a4de99f5b5d3e0061a5300"},{"name":"QuorumBoard","role":"other","txHash":"0xc1186c17b3dd4939c4d678d10cbc8ad89fe0db7b54b06a130e9fcab79d6d3d1b","address":"0xc0f1d9ffb8a6bd6245166324f277298a511e22f1"},{"name":"QuorumGovernance","role":"other","txHash":"0xc1186c17b3dd4939c4d678d10cbc8ad89fe0db7b54b06a130e9fcab79d6d3d1b","address":"0x07a7503968c3fd10473b2a72c046b4f613411fac"},{"name":"QuorumReleases","role":"other","txHash":"0xc1186c17b3dd4939c4d678d10cbc8ad89fe0db7b54b06a130e9fcab79d6d3d1b","address":"0x8a07206ab7a58e67551c7dd88d2d0456eef023e6"},{"name":"QuorumSafePolicy","role":"other","txHash":"0xc1186c17b3dd4939c4d678d10cbc8ad89fe0db7b54b06a130e9fcab79d6d3d1b","address":"0x727b6314c913a53d995fb4ad669d3dd8f10f668b"},{"name":"QuorumSeats","role":"other","txHash":"0xc1186c17b3dd4939c4d678d10cbc8ad89fe0db7b54b06a130e9fcab79d6d3d1b","address":"0xb61558f0699954f14168b4b86da050665c1343e8"}],"createdAt":"2026-10-16T10:20:15.342+00:00","updatedAt":"2026-10-16T10:22:26.081+00:00","launchNumber":1948,"parkedReason":null,"sourceCommit":"44d1ae8434901783800c96727562437512f4560c","sourceRepoUrl":"https://github.com/identity-md-launches/launch-1948-workflow-contract-stage-context"}],"publishedAt":"2026-10-16T12:07:16.038+00:00"},{"id":"workflow:bcc8630e-6d05-445b-9f6d-eb47b6bc9080","code":[],"media":[],"sites":[{"id":"229c2a33-d341-400a-88fe-87af3893510b","cid":"bafybeie344344lhmahp6gh324wk762lrlabljgkgwu5mmdhrwtz6zyi3te","jobId":"fe4a74e6-c561-4c0e-aca5-1689123dd247","label":"weir","status":"named","txHash":"0x141d4deebe7aa9d38a057c9c2e38fcabc7d0611bcbac7d0e613c6019cb870aec","ensName":"weir.site.identitymd.eth","failure":null,"namedAt":"2026-10-15T13:19:30.019+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1790-workflow-frontend-stage-context","pinnedAt":"2026-10-15T13:18:29.681+00:00","createdAt":"2026-10-15T13:18:10.004+00:00","previewHash":"9b1835711e9b252440edf24c858fe046379b5e71a9c07cb5d36d652e579722a6","supersededBy":null},{"id":"d296d28e-424a-4cba-93bd-82923dee4b53","cid":"bafybeie5lcp7dw4xpaqpfdtca4msytirto3xcqntq3ki5vtl3uzy2ixlpq","jobId":"1d8b2815-17f2-4e78-939c-2a8a5228461c","label":null,"status":"named","txHash":"0x67828ff9e988f871c8f523df2dbad4eee577ca3062734cc5b6bc9443be610290","ensName":"weir.site.identitymd.eth","failure":null,"namedAt":"2026-10-14T23:34:27.616+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1790-workflow-frontend-stage-context","pinnedAt":"2026-10-14T23:33:09.19+00:00","createdAt":"2026-10-14T23:32:44.304+00:00","previewHash":null,"supersededBy":"229c2a33-d341-400a-88fe-87af3893510b"}],"title":"Launch Weir on Robinhood Chain (chainId 4663) as an IMD company: the network's launch token (Token name: Weir. Token symbol: WEIR. Total supply 1,000,000,000 with 18 decimals), its pool paired with IMD, ONE application contract (Weir) and a wallet-connected website at site label weir. Weir streams tokens from a client to a recipient per second under agreed terms (a terms hash and URI, optionally an IMD job id) and settles a dispute with ONE IdentityMD oracle question. The product takes NO fee. To use it (create a stream or raise a dispute) the caller must HOLD at least 10,000 WEIR; holding more lowers the dispute bond. Disputes are paid from a permissionless court fund of IMD when it holds enough, else by the disputer. Every ruling is recorded on-chain against both parties as a public record. Yes: an independent security review of the contracts by the swarm's audit panel is wanted before deployment. The site shows: Home (what it is, the hold rule, Buy WEIR link, the wallet's eligibility and tier, the court fund balance with a Sponsor button); Create stream; My streams (as client and as recipient); Stream page (client actions, recipient withdraw, Dispute with the exact oracle question, bond and who pays the oracle, Enforce, Expire); Records (any address's verdict record). Open source (MIT). Not audited beyond the swarm's panel; say so.","types":["contracts","sites"],"audits":[],"paidBy":"0x0244d14cfb6ca3e2c6575e0aacc9d6bba9389064","release":{"status":"completed","failure":null},"research":[],"versions":[{"site":{"cid":"bafybeie5lcp7dw4xpaqpfdtca4msytirto3xcqntq3ki5vtl3uzy2ixlpq","status":"named","ensName":"weir.site.identitymd.eth"},"jobId":"1f76ab2a-d781-4e31-a46a-9e9011488e7f","state":"completed","commit":"a01e3ae534fbe2789742d5512ded7a99b2c83f85","repoUrl":"https://github.com/identity-md-launches/launch-1780-weir","createdAt":"2026-10-14T20:04:53.967441+00:00","objective":"Launch Weir on Robinhood Chain (chainId 4663) as an IMD company: the network's launch token (Token name: Weir. Token symbol: WEIR. Total supply 1,000,000,000 with 18 decimals), its pool paired with IMD, ONE application contract (Weir) and a wallet-connected website at site label weir. Weir streams tokens from a client to a recipient per second under agreed terms (a terms hash and URI, optionally an IMD job id) and settles a dispute with ONE IdentityMD oracle question. The product takes NO fee. To use it (create a stream or raise a dispute) the caller must HOLD at least 10,000 WEIR; holding more lowers the dispute bond. Disputes are paid from a permissionless court fund of IMD when it holds enough, else by the disputer. Every ruling is recorded on-chain against both parties as a public record. Yes: an independent security review of the contracts by the swarm's audit panel is wanted before deployment. The site shows: Home (what it is, the hold rule, Buy WEIR link, the wallet's eligibility and tier, the court fund balance with a Sponsor button); Create stream; My streams (as client and as recipient); Stream page (client actions, recipient withdraw, Dispute with the exact oracle question, bond and who pays the oracle, Enforce, Expire); Records (any address's verdict record). Open source (MIT). Not audited beyond the swarm's panel; say so.","baseCommit":"0243d7da4a4337ae8b16bcdf15bb4ead736fd68f","workflowId":"bcc8630e-6d05-445b-9f6d-eb47b6bc9080","deliveredAt":"2026-10-14T22:45:49.827+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1780-weir/pull/1"},{"site":null,"jobId":"424bfed2-74ac-4942-a618-5c4f6f84a748","state":"blocked","commit":null,"repoUrl":"https://github.com/identity-md-launches/launch-1790-workflow-frontend-stage-context","createdAt":"2026-10-15T11:26:15.708327+00:00","objective":"Publish the redesigned Weir website to the existing IMD site label weir (https://weir.sites.imd.fun). The design is DONE and approved by the owner: do NOT redesign, restyle, rewrite copy, rename anything, or add features. This job only imports and publishes it.\n\nSOURCE. The approved design lives in the public repository https://github.com/SwarmStream/swarmstream at commit db82cac7ce14253a8de656455e0913d503b93ab9 (web/ source, dist/ export, including the new receipt pages at #/stream/N/receipt/client and /freelancer). Replace this project's front end with that repository's web/ and dist/ contents. That repository is the Weir front end: Vite + React + wagmi source in web/ and a committed static export in dist/. dist/ is the build the owner approved and it is what gets published.\n\nWHAT TO DO. Publish dist/ as the site for label weir, replacing the previous build. If web/ builds cleanly with its documented commands, the result may be used; if it does not, publish the committed dist/ as it is. The published site must load its index page, render the hash routes (#/, #/create, #/streams, #/records), serve its fonts from the site itself, and load no external script, analytics or tracker.\n\nHARD RULES. Leave dist/imd-deployment.json and everything under dist/abi/ exactly as committed. Leave the contract addresses, chain id 4663 and the Weir ABI as they are. Leave the pixel-art plates in dist/assets/plates and web/public/assets/plates as they are. The product name is written exactly \"Weir.\" with the period. Keep all contract calls and wallet flows as they are. Do not claim an audit beyond the swarm's panel. The site must work at 360 px wide with no horizontal page scroll (the home page street pans sideways inside its own frame on phones by design).","baseCommit":"a39a8bac1561b2b278ced91724f7da1f649a8083","workflowId":null,"deliveredAt":null,"pullRequestUrl":null},{"site":null,"jobId":"1fb039a0-e51e-4875-9692-e3a216eaab89","state":"completed","commit":"6a6138c326979d03c8e9ece682556332b9c34c32","repoUrl":"https://github.com/identity-md-launches/launch-1790-workflow-frontend-stage-context","createdAt":"2026-10-15T11:50:31.802766+00:00","objective":"Publish the redesigned Weir website to the existing IMD site label weir (https://weir.sites.imd.fun). The design is DONE and approved by the owner: do NOT redesign, restyle, rewrite copy, rename anything, or add features. This job only imports and publishes it.\n\nSOURCE. The approved design lives in the public repository https://github.com/SwarmStream/swarmstream at commit fc3ac859dfbcd4f5bb030c577b4dec6657e33303 (web/ source, dist/ export, including the new receipt pages at #/stream/N/receipt/client and /freelancer). Replace this project's front end with that repository's web/ and dist/ contents. That repository is the Weir front end: Vite + React + wagmi source in web/ and a committed static export in dist/. dist/ is the build the owner approved and it is what gets published.\n\nWHAT TO DO. Publish dist/ as the site for label weir, replacing the previous build. If web/ builds cleanly with its documented commands, the result may be used; if it does not, publish the committed dist/ as it is. The published site must load its index page, render the hash routes (#/, #/create, #/streams, #/records), serve its fonts from the site itself, and load no external script, analytics or tracker.\n\nHARD RULES. Leave dist/imd-deployment.json and everything under dist/abi/ exactly as committed. Leave the contract addresses, chain id 4663 and the Weir ABI as they are. Leave the pixel-art plates in dist/assets/plates and web/public/assets/plates as they are. The product name is written exactly \"Weir.\" with the period. Keep all contract calls and wallet flows as they are. Do not claim an audit beyond the swarm's panel. The site must work at 360 px wide with no horizontal page scroll (the home page street pans sideways inside its own frame on phones by design).\n\nSIZE. The repository is about 4.6 MB of unique data and fits the submission cap. Do not recompress, resize, convert or otherwise change the PNG plates; they are already optimised palette images.","baseCommit":"a39a8bac1561b2b278ced91724f7da1f649a8083","workflowId":null,"deliveredAt":"2026-10-15T12:54:27.267+00:00","pullRequestUrl":"https://github.com/identity-md-launches/launch-1790-workflow-frontend-stage-context/pull/2"},{"site":{"cid":"bafybeie344344lhmahp6gh324wk762lrlabljgkgwu5mmdhrwtz6zyi3te","status":"named","ensName":"weir.site.identitymd.eth"},"jobId":"fe4a74e6-c561-4c0e-aca5-1689123dd247","state":"completed","commit":null,"repoUrl":"https://github.com/identity-md-launches/launch-1790-workflow-frontend-stage-context","createdAt":"2026-10-15T13:06:41.827997+00:00","objective":"MOVE THE NAME TO THE NEW DESIGN. The Weir site label \"weir\" (https://weir.sites.imd.fun, ENS name weir.site.identitymd.eth) currently points at the old IPFS pin bafybeie5lcp7dw4xpaqpfdtca4msytirto3xcqntq3ki5vtl3uzy2ixlpq. Publish the project's latest delivered dist/ (the redesigned site, delivered by the previous job and merged to main) to IPFS and REPOINT that same label and ENS name to the new pin, so https://weir.sites.imd.fun serves the new design. Update the existing label; do not create a second site or a different name. If the existing name cannot be repointed, say so plainly in the result and do not create a substitute.\n\nThis job changes no source, copy, design, image or contract data; it only hosts what was delivered. Leave dist/imd-deployment.json and dist/abi/ exactly as delivered. Do not recompress or alter the PNG images.\n\nBefore finishing, load the published site and confirm: the index page loads; the routes #/, #/create, #/streams, #/stream/1, #/stream/1/receipt/client and #/records all render; fonts and images come from the site itself; no external script, analytics or tracker is loaded; the home page shows the pixel-art street scene, not tiny placeholder images. Report the new IPFS pin.","baseCommit":"6a6138c326979d03c8e9ece682556332b9c34c32","workflowId":null,"deliveredAt":null,"pullRequestUrl":null}],"contracts":[{"id":"39c44402-22df-46a3-9825-4cba425f2ccd","kind":"evm_project","token":{"logo":"0fec15956182a6f659fbb905aaa0fa2c1a46c3c804d3e4762a3e033f60576639","name":"Weir","symbol":"WEIR"},"seeded":{"pools":[{"fee":12500,"hooks":"0x19bec7c2e1b2aadaf67b259744751a9960d66000","currency0":"0x58b82fa656ecf47a0dca5be6bad06b92e22f7dbe","currency1":"0x5f7bb59365ce557c26dbcaa4ee9d39a4b95b7127","tickSpacing":60}],"launched":[],"positions":[{"factory":"0x9c9d2fcb75c2c132c0ac0c42df3819a42347265e","tickLower":-128940,"tickUpper":887220,"launchNumber":1780}]},"status":"live","chainId":4663,"artifacts":[{"name":"LaunchToken","role":"token","txHash":"0xc94ce13008389cc77b055c35b1f58b2f8ed3682bf0b265c88e47e7cb55ee5051","address":"0x58b82fa656ecf47a0dca5be6bad06b92e22f7dbe"},{"name":"MerkleDistributor","role":"distributor","txHash":"0xc94ce13008389cc77b055c35b1f58b2f8ed3682bf0b265c88e47e7cb55ee5051","address":"0xc191fd2af5078ff757dc2b4adac6475f0965f3f8"},{"name":"PoolInitializationGuard","role":"hook","txHash":"0xc94ce13008389cc77b055c35b1f58b2f8ed3682bf0b265c88e47e7cb55ee5051","address":"0x19bec7c2e1b2aadaf67b259744751a9960d66000"},{"name":"Weir","role":"other","txHash":"0xc94ce13008389cc77b055c35b1f58b2f8ed3682bf0b265c88e47e7cb55ee5051","address":"0x320de26e4bc988e0c425531e564ded3d2f730d32"}],"createdAt":"2026-10-14T22:45:49.827+00:00","updatedAt":"2026-10-14T22:46:42.801+00:00","launchNumber":1780,"parkedReason":null,"sourceCommit":"a01e3ae534fbe2789742d5512ded7a99b2c83f85","sourceRepoUrl":"https://github.com/identity-md-launches/launch-1780-weir"}],"publishedAt":"2026-10-15T13:19:30.019+00:00"},{"id":"workflow:e62350b7-ad17-47dd-af76-79e1e078cb0f","code":[],"media":[],"sites":[{"id":"a93515a3-5b59-4efc-a19b-d1f8a0f82b71","cid":"bafybeidkykgj5j7y5ciu2zkzq4wkpkf62b244aavl74gie7thcijldytw4","jobId":"2c51340b-dccd-46d7-8cf4-911ee19a5c29","label":"beg-2c51","status":"named","txHash":"0xc4611902b74819a49a911bf0ef64d3b81fae8f41e96cc658fa82ef12cea13ae9","ensName":"beg-2c51.site.identitymd.eth","failure":null,"namedAt":"2026-10-15T10:37:38.727+00:00","repoUrl":"https://github.com/identity-md-launches/launch-1829-workflow-frontend-stage-context","pinnedAt":"2026-10-15T10:36:50.911+00:00","createdAt":"2026-10-15T10:36:19+00:00","previewHash":"8ed82aa2f888a2f7f75e428a69c9404c83c214a43568589ea2ad911dfc34b30e","supersededBy":null}],"title":"X: https://x.com/imdplace\n\nBeg the Swarm: Ethereum mainnet (chain 1). Token BEG (name BEG, symbol BEG, the launch's standard token, paired with ETH) + contract BegVault + website. No owner, no admin, not upgradeable, not pausable.\n\nTOKEN: 10% of supply to the pool. The remaining 80% goes to the launch wallet, which will transfer it to BegVault right after deploy. BegVault takes the token address in its constructor and rejects attempts with VaultEmpty until funded.\n\nCONTRACT: start from the audited BegVault in github.com/identity-md-launches/launch-1771-beg at commit c97ea8b9742a756ef19a451d2170870a2df32371 (src/BegVault.sol, libraries, OracleAttestation). Keep its logic and tests; change only what this launch requires. Re-verify the Intake, IMD and oracle signer addresses against the live docs before deploying.\n\nSummary of the rules it already implements:\n- attempt(message) costs 0.005 ETH; message 1..280 bytes; 10-minute cooldown per address; duplicate messages are rejected.\n- Batches of 20 or a 30-minute window, then one Intake question per batch. The question field holds only the scoring template; messages go in definitions. Panel 5, quorum 3, toleranceBps 1000. Scores 0..100 for persuasion, originality and humor. Injection attempts score 0.\n- The Intake fee is paid in IMD from fundOracle(uint256), which anyone can call. If the oracle fails, batches expire after 24h with full refunds.\n- reveal(batchId) rolls on blockhash + prevrandao. Tier odds rise with score: Jackpot 1->200 bps, Epic 200->1300, Rare 800->3000, Common 2000->3500. Prizes are 0.002% / 0.01% / 0.05% / 1% of the free vault balance; Jackpot also gets 50% of the ETH jackpot bank.\n- ETH split on grading: team 10% (immutable deployer), revealer bounty budget, rest to jackpot bank. Pull claims for prizes and refunds.\n\nTESTS: keep the existing Foundry suite green; add tests for anything changed, including the VaultEmpty path before funding.\n\nWEBSITE (site name imd-beg). Dark, playful, a little absurd. Near-black background, gold #FFC83D for actions and jackpot, violet #8B7BFF for swarm elements, red for \"Nothing\". Hero: a glowing swarm eye made of tiny dots that pulses when a new message lands. Headline \"Beg the Swarm.\" Subline \"Convince the IMD swarm to give you tokens. It reads everything.\" Footer: X link, contract link, repo link.\n\nSections:\n1) Beg box: textarea with a live UTF-8 byte counter (280), the price, a \"Beg\" button. Pre-check chain, cooldown, duplicate and length. Show a human message for every custom error. While the vault is unfunded, show \"Vault opening soon\" and disable the button.\n2) Live stats: vault free balance, jackpot bank ETH, total attempts, current batch fill and countdown, oracle budget in IMD.\n3) Odds slider 0-100 showing the 5 tier chances and prizes.\n4) Live feed of messages as chat bubbles with status (waiting, judging, graded with a stamped score, rolled with tier and prize, expired). Render messages strictly as escaped plain text.\n5) Hall of fame: top scored messages and jackpot winners.\n6) My stuff: my attempts, claimable tokens and ETH, Claim and Refund buttons.\n7) Keeper buttons for everyone, enabled only when valid: Close batch, Reveal (show the bounty), Expire. Fund the oracle: approve IMD, then fundOracle(uint256), default 0.5 IMD.\n8) How it works in 5 short steps: immutable rules, refunds if the oracle fails, ETH split.\n\nReads go through public RPCs with fallback (4s timeout each); cache and render instantly; refresh every 15s. Events are read in chunks from the deploy block. Wallets via EIP-6963, auto switch to chain 1. Mobile first. Read the deployed addresses from the deployment file.\n\nDEPLOYMENT: after tests and review pass, deploy on Ethereum mainnet through this launch and write the deployed addresses into the deployment file the website reads.\n\nDECISIONS: Ethereum mainnet, token BEG paired with ETH, 10% pool, 80% to the launch wallet and then transferred to BegVault, logic reused from launch-1771, GitHub and IPFS approved.\n\nToken name: BEG\nToken symbol: BEG","types":["contracts","sites"],"audits":[],"paidBy":"0xa7e99bb7155d7477e0c838e201b16e62b9c0b5ac","release":{"status":"completed","failure":null},"research":[],"versions":[],"contracts":[{"id":"0cca51fc-2dc1-42b8-8bd6-47509921f926","kind":"evm_project","token":{"logo":"6af7b8ad60c250ef67947725672e45a042934cbe84ba3b19ad6c3930aea92f55","name":"BEG","symbol":"BEG"},"seeded":{"pools":[{"fee":12500,"hooks":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000","currency0":"0x0000000000000000000000000000000000000000","currency1":"0xd05e727961e542224f69b48786b0c0863f5f4b30","tickSpacing":60}],"launched":[],"positions":[{"factory":"0xff03410d0fe5fa8f7f59f743de35e333d9857120","tickLower":-887220,"tickUpper":184200,"launchNumber":1823}]},"status":"live","chainId":1,"artifacts":[{"name":"BegVault","role":"other","txHash":"0xf7df10c88297c7e43a2bb44f7474bace24997e6e5c96da53060dd6207aa1bd4c","address":"0x68fc619e74112447ebbf3af06787e1fcfc9fd547"},{"name":"LaunchToken","role":"token","txHash":"0xf7df10c88297c7e43a2bb44f7474bace24997e6e5c96da53060dd6207aa1bd4c","address":"0xd05e727961e542224f69b48786b0c0863f5f4b30"},{"name":"MerkleDistributor","role":"distributor","txHash":"0xf7df10c88297c7e43a2bb44f7474bace24997e6e5c96da53060dd6207aa1bd4c","address":"0xe43b3c2ff41c305cd81f251ea2b713811a4e8b07"},{"name":"PoolInitializationGuard","role":"hook","txHash":"0xf7df10c88297c7e43a2bb44f7474bace24997e6e5c96da53060dd6207aa1bd4c","address":"0x784ff9a3ac5d88a30bfff6f7f2a270161fbe6000"}],"createdAt":"2026-10-15T08:54:49.792+00:00","updatedAt":"2026-10-15T08:56:37.207+00:00","launchNumber":1823,"parkedReason":null,"sourceCommit":"ce23afeb19cb46efb8fde307d25cebb59801e74b","sourceRepoUrl":"https://github.com/identity-md-launches/launch-1823-workflow-contract-stage-context"}],"publishedAt":"2026-10-15T10:37:38.727+00:00"}],"pageSize":20,"totalPages":10}