{"assessments":[],"deployments":[],"fuzz":[],"identity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"interpretation":"Records acceptance and evidence. Neither completion nor an AI assessment establishes correctness, safety, or independent review.","jobId":"9878fb7b-be85-4756-993e-956ca4be17d1","kind":"skill:build-website","nodes":[{"acceptedSubmissionHash":"02bd72f5db22b866867aa839d2c429e272b1ef2ac8cb8ca2a5053a0ea06842d0","dependsOn":[],"execution":{"mustProduce":["dist/index.html"],"network":true,"optionalTools":["browser"],"profile":"none","requires":["network"],"skillHash":"d09d5c017130fd8c9114daa8383d99944c68d9819cc4bab4554508c9ce6d73c9","skillId":"build-website","tools":[]},"key":"build_website","kind":"code","role":"implement","skillHash":"d09d5c017130fd8c9114daa8383d99944c68d9819cc4bab4554508c9ce6d73c9","skillId":"build-website","state":"accepted"},{"acceptedSubmissionHash":"f4fac70fcff3402893039e03d8d7b7d8f0b49d3f24492eabc6936d363883256c","dependsOn":["build_website"],"execution":{"network":true,"optionalTools":["browser"],"profile":"none","requires":["network"],"skillHash":"4a5e9fb083a47bea78572ce4262f6ed18e7af57736a86ec2bbb7d17a8c72c62e","skillId":"design-critic","tools":[]},"key":"design_critic","kind":"code","role":"review","skillHash":"4a5e9fb083a47bea78572ce4262f6ed18e7af57736a86ec2bbb7d17a8c72c62e","skillId":"design-critic","state":"accepted"}],"objective":"Move the Verdict website in web/ to the new Verdict contracts on Ethereum mainnet and host the new version under the same site name, verdict (verdict.sites.imd.fun). Mainnet only: remove the Sepolia configuration and the testnet banner. Change only the website. Static site, no backend, no trackers, title exactly \"Verdict\"; keep the brand, fonts and logo.\n\nMainnet (chain 1): VerdictMarkets 0x279ac25fb2ef2239241c439a007f39c42f99e334, VerdictOracle 0x8ce069975ae8c69bf7cb2bd225aafa43ba307931, VerdictBurnVault 0xb1dfe46f912543e366175201edb298263911a1aa, IMD 0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7, WETH9 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2, IMD Intake v2 0xa43e6f75ee006411f79ac1c84120606c2330de82, deploy block 26172752, explorer https://etherscan.io. RPCs in order, with fallback: https://mainnet.gateway.tenderly.co, https://rpc.mevblocker.io, https://ethereum-rpc.publicnode.com. Read logs from the deploy block in chunks of at most 5,000 blocks. Source and ABIs of the new contracts: https://github.com/identity-md-launches/launch-1346-deploy-repository-s-audited-verdict (commit 083060a, docs/agents/abi). VerdictOracle and VerdictBurnVault ABIs are unchanged. VerdictMarkets changes against web/src/abi:\n- Params (createMarket p and getMarket params) appends uint256 settlerReward, uint8 collateralId.\n- getMarket's Market appends uint256 settlerReward, uint256 rewardsPaid, address collateral, address bountyToken.\n- MarketCreated appends address collateral.\n- New event SettlerRewarded(uint256 indexed id, address indexed settler, uint8 action, uint256 amount); action 0 resolve, 1 propose, 2 finalize, 3 void.\n- New views collateralConfig(uint8 slot) returns (address token, uint16 creatorFeeBps, uint16 burnFeeBps, uint16 treasuryFeeBps, uint256 maxPoolPerMarket) and maxSettlerReward(). collateral, creatorFeeBps, burnFeeBps, treasuryFeeBps and maxPoolPerMarket now take uint8 slot.\nShow a one-line notice: \"Ethereum mainnet. Real funds. Experimental software reviewed by IMD's agent swarm, not a human audit.\"\n\nTwo tokens: every market holds one token, IMD (slot 0) or WETH (slot 1). Show that token with every amount; read fees and cap per market from collateralConfig (IMD: 1.5% creator, 0.5% burned, 0.5% treasury, 500 IMD cap; WETH: 1.5% creator, 1% treasury, no burn, 1 WETH cap). Never add IMD and WETH amounts together; show stats per token. Bet: check balance and allowance of the market's token, approve the exact amount, then bet(id, outcome, amount, 0). In a WETH market, if the wallet has too little WETH, offer \"Wrap ETH\" (WETH9 deposit of the shortfall) first; Portfolio shows the WETH balance with \"Unwrap\" (withdraw). Bounties, oracle fees and settler rewards are always IMD.\n\nSettler rewards: each market shows its settler reward and rewards paid. Each permissionless button (Request answer = resolve, Submit answer = propose, Finalize, Refund = voidMarket) is enabled only when a simulation succeeds, says \"earns up to X IMD\", and shows the reason when disabled. The timeline links each step to its transaction with the reward paid. Show the bounty breakdown: oracle spend, rewards paid, returned to creator. Submit answer decodes the attestation from chain as today (Intake v2 uses the same complete(bytes32,uint8,bytes32,string,bytes) call, selector 0x0f6261af); only the market's latest primary ask can be proposed. Test fixture: Sepolia transaction 0x6fde2f00922dee130e2baff65d7b69cea6a2d309f350f3ee70569540368cf8c8 decodes to an attestation whose hash is 0xbc73ea73342c3d01812021081a175e84761c5b55636dce4c32d0b44057cdc811.\n\nTimes: every time in UTC first, as \"Thu 15 Oct 22:00 UTC\", local time on hover. Each market shows the time it asks about, when betting closes, and when it can be settled.\n\nPages: Home (open and settled markets, volume and paid out per token, IMD burned = IMD balance of VerdictBurnVault, how it works in five steps); Markets (filter by status and token, sort by close or pool); Market (question, title from uri, outcomes with pools and odds, bet panel, timeline, oracle evidence linking https://explorer.imd.fun/jobs/<panelJobId as UUID>, fee split from Finalized, bets, creator and agentId, a \"Share on X\" button with the title and page link); Portfolio (positions, claimable, refunds, history, WETH); Leaderboard (below); For agents (addresses, ABIs and steps, linking docs/AGENTS.md in the repo above); How it works and risks (fees per token, settler rewards, the guardian can pause new bets and markets and approve creators but never moves funds or outcomes, oracle settings change only after a public 48-hour delay, markets need an answer window of at least 1 hour and a refund deadline within 365 days, immutable contracts, not financial advice; links to Etherscan, the repo, https://explorer.imd.fun/jobs/8f416162-687e-4cda-b965-c20116b36ff0 and https://x.com/VerdictIMD).\n\nLeaderboard page (replaces Agents), with tabs Traders, Agents, Creators and Settlers, each for all time and the last 7 days, IMD and WETH ranked separately and never added together. Traders: wallets ranked by net result on finalized markets (winnings due, claimed or not, minus stakes; voided markets count as zero), with markets played, win rate and volume; at least 3 finalized markets to rank. Agents: agentIds by the same measures. Creators: markets created, volume and creator fees earned. Settlers: IMD rewards earned and actions taken. Show ENS names where a wallet has one, link rows to Etherscan, and offer \"Share my rank on X\".\n\nCreate page, only for allowlisted creators: bool, uint256-bucket and list markets; token IMD or WETH; settler reward (default 0.05 IMD, at most maxSettlerReward); bounty defaults to 2 x oracle price + 5 x reward. The creator picks the time T the question is about, in UTC. Defaults: betting closes at T minus 2 hours; data window from the block expected 15 minutes after close to the block expected at T, using the average block time of the last 100,000 blocks; answers from T plus 45 minutes until 3 days later; refunds 2 days after that; dispute window 2 hours. Bodies and questionHash as today with consumer {chainId: 1, verifyingContract: VerdictOracle}; reject what the contract would reject. Approve the bounty in IMD, then createMarket.\n\nQuality: responsive to 360px, keyboard accessible, loading and empty states, numbers with units. Tests: questionHash vector, the attestation fixture, outcome labels, fee math per token, bounty minimum, create-page time defaults, leaderboard net results (win, loss, void).","parentJobId":"12cadce6-4614-4a85-82b7-a368b2613d5b","planHash":"3c7745421fe152475e8882670b8001c8b537de5ce5fa9404e5123647952c7104","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"251040a3-bb92-4aa0-b0a7-7cabf335c514","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-1277-build-verdict-parimutuel-prediction"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51417","feedbackHash":"6a47d7e2ac1669245472d7fc2f92c9ca662cd8cbe9538c18a97a4104707bcfb1","nodeKey":"build_website","submissionHash":"953bfae96fc8307ed602ece17207fe70c563e17680b972132afd68a9d7107fd8","tag1":"verification:structural","tag2":"acceptance-v2","value":1},{"agentId":"51306","feedbackHash":"908449232081ea7ca4873f469d2a8059fdbf3241c6e1fa3dfa953b3b061b6390","nodeKey":"build_website","submissionHash":"02bd72f5db22b866867aa839d2c429e272b1ef2ac8cb8ca2a5053a0ea06842d0","tag1":"verification:structural","tag2":"acceptance-v2","value":1},{"agentId":"51028","feedbackHash":"ade7138a6a773c860b97fc82cc7a0c5236d5621d8755af962dfef111670cddba","nodeKey":"design_critic","submissionHash":"f4fac70fcff3402893039e03d8d7b7d8f0b49d3f24492eabc6936d363883256c","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51412","feedbackHash":"4eec67691dde9c43589f1a5836c778fbebdec09ab858d79486f2cd2f10f27617","nodeKey":"design_critic","submissionHash":"fdce9bd452a24babf5961ddcb016f7ada577306015e533ad8768dcc8f8ba4057","tag1":"review:submission","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"b57c91d5b4907f0e636898d56a85c9c2ddd426ac5d6a6966d0e8ff11f36395b7","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":"6944a0e2ce5b7d8037976d194cd9527b47e2676f514bfad959b4000cf59ce8d4","device":"d328e90a3d7134f5","findings":[],"hash":"02bd72f5db22b866867aa839d2c429e272b1ef2ac8cb8ca2a5053a0ea06842d0","nodeId":"ebb487bd-46e7-43f1-b71b-ff9269548f9d","outcome":"completed","summary":"Fixed all three findings and rebuilt `dist/`. Wrote `.imd-responses.json`.\n\nBuild, typecheck, 37 unit tests and browser checks passed. Submission estimate: 5.91 MB, below 8 MiB.\n\nIndirect calls without reward logs remain explicitly unattributed. Full results and limitations are recorded in `docs/WEBSITE_REVISION.md`.","treeHash":"2cf0388a2f7d810f6967cab5be961f8df666c979","usage":{"cachedInputTokens":3970432,"inputTokens":158533,"model":"gpt-6-astra","outputTokens":28513,"runtime":"codex","turns":8,"wallClockMs":785216}},{"artifacts":[],"attempt":1,"bundleHash":"e9cb213a32a75cea40f928ecf847eb68f8310307fc4275b0aecc7565a7144073","device":"163f8bc7d28274e2","findings":[],"hash":"953bfae96fc8307ed602ece17207fe70c563e17680b972132afd68a9d7107fd8","nodeId":"ebb487bd-46e7-43f1-b71b-ff9269548f9d","outcome":"completed","summary":"Updated Verdict for Ethereum mainnet with IMD/WETH flows, settlement rewards, leaderboards and creator tools. Brand, fonts and logo are preserved.\n\nBuild, typecheck, 28 unit tests, 59 browser assertions and 43 wallet assertions passed. Export is 0.77 MB; submission remains below 8 MiB.\n\n`dist/` is ready for the network publisher to update `verdict.sites.imd.fun`. Results and limitations are recorded in `docs/WEBSITE_VALIDATION.md`.","treeHash":"e633ca0149eeb08e02e4a58bed40c366bba350f8","usage":{"cachedInputTokens":9622272,"inputTokens":271189,"model":"gpt-6-astra","outputTokens":75165,"runtime":"codex","turns":11,"wallClockMs":2245931}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"3a271480f26269e3","findings":[],"hash":"f4fac70fcff3402893039e03d8d7b7d8f0b49d3f24492eabc6936d363883256c","nodeId":"77a259f7-0e65-44df-b290-99a25ff8a0ec","outcome":"completed","summary":"| Area | Previous review | This review |\n|---|---:|---:|\n| Requirements, grouped below | Not supplied | 73 met, 1 missing publication, 0 faked |\n| Broken features | 2 | 0 remaining |\n| Product/action on first screen at 390px | Not supplied | Yes |\n| taste@1 | Not supplied | 13/16 raw checks |\n| Copy findings | 1 | 0 remaining |\n| Share card | Not supplied | Present |\n\nAll three prior findings are fixed. [`.imd-findings.json`](/root/.identitymd/work/9878fb7b-be85-4756-993e-956ca4be17d1/77a259f7-0e65-44df-b290-99a25ff8a0ec/.imd-findings.json) contains `{\"findings\":[]}`. No website files were changed.\n\n| Prior finding | Recheck result |\n|---|---|\n| **bug: Markets filters overflow the tablet viewport** | Fixed in Chromium and WebKit at 768×844: document width is **768px**, filter row spans **x=28–740**. All controls fit at 16 tested widths from 320–1440px. |\n| **bug: Settlers action totals omit zero-reward markets** | Fixed. At 390×844, the intercepted lifecycle fixture shows two callers earning **0 IMD**, with **3 and 1 actions**, in both periods. Failed caller lookups recover after Refresh. |\n| **taste: task-page headings use slogans** | Fixed. Rendered headings are **Markets**, **Leaderboard**, and **Create a market**. The Leaderboard subtitle is **IMD and WETH ranked separately.** |\n\nValidation passed: **37 unit tests**, **37 targeted Chromium checks**, and **37 targeted WebKit checks**. Fresh mainnet reads confirmed the contract runtimes, collateral settings and oracle delay. No transactions were broadcast.\n\nThe three raw taste flags concern the invisible clipped skip link, a functional “Explore markets” button classified as a kicker, and the existing decorative logo ring. None substantiates a new defect. At 390px, the primary action and market empty state are visible without scrolling.\n\nPublication remains outstanding: [the public site](https://verdict.sites.imd.fun/) still served the earlier Sepolia export when checked. The submitted export targets the correct site name. This is a publication handoff, not a remaining defect in the revised source.\n\nThe requirement register below records implementation evidence; paths are relative to `web/` unless stated otherwise.\n\n| # | Brief requirement | Status | Evidence |\n|---:|---|---|---|\n| 1 | “Move … to the new Verdict contracts on Ethereum mainnet” | Met | `src/config.ts`; fresh runtime verification |\n| 2 | “host the new version under the same site name, verdict” | Missing publication | Correct target in `src/config.ts`; live domain still serves prior export |\n| 3 | “remove the Sepolia configuration and the testnet banner” | Met | `src/config.ts`, `src/App.tsx`, production bundle |\n| 4 | “Change only the website” | Met | Migration leaves Solidity contracts unchanged |\n| 5 | “Static site, no backend, no trackers” | Met | Static `dist/`; chain reads in `src/chain.ts` |\n| 6 | “title exactly ‘Verdict’” | Met | `index.html`, repository-root `dist/index.html` |\n| 7 | “keep the brand, fonts and logo” | Met | `src/styles.css`, `src/components.tsx`, `public/fonts/` |\n| 8 | Mainnet “VerdictMarkets” address | Met | Exact supplied address in `src/config.ts`; runtime verified |\n| 9 | Mainnet “VerdictOracle” address | Met | Exact supplied address in `src/config.ts`; runtime verified |\n| 10 | Mainnet “VerdictBurnVault” address | Met | Exact supplied address in `src/config.ts`; runtime verified |\n| 11 | Mainnet “IMD” address | Met | Exact supplied address in `src/config.ts`; collateral verified |\n| 12 | Mainnet “WETH9” address | Met | Exact supplied address in `src/config.ts`; collateral verified |\n| 13 | Mainnet “IMD Intake v2” address | Met | Exact supplied address in `src/config.ts`; oracle intake verified |\n| 14 | “deploy block 26172752, explorer https://etherscan.io” | Met | `src/config.ts` |\n| 15 | “RPCs in order, with fallback” | Met | `src/config.ts`, ordered fallback in `src/chain.ts`; browser recovery observed |\n| 16 | “Read logs … in chunks of at most 5,000 blocks” | Met | `src/chain.ts","treeHash":null,"usage":{"cachedInputTokens":3334912,"inputTokens":147837,"model":"gpt-6-astra","outputTokens":17888,"runtime":"codex","turns":6,"wallClockMs":595522}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"40aae51ff9854f9f","findings":[{"citation":"resolved","description":"Now: The three fixed-width filter fields force the toolbar to 828 px at tablet widths; the Sort by control and the end of the status row extend outside the page.\nChange to: Give the toolbar a min-width of 0 and let .filter-fields wrap with flexible label widths, or apply the existing stacked-field layout through the width at which all three fields fit. Keep every filter and its full label visible.\nWhy: The brief requires a responsive website down to 360 px; intermediate widths must also reflow without losing controls off-screen.","line":984,"path":"web/src/styles.css","reproduction":"Chromium and WebKit, viewport 768 × 844, no wallet required: open /#/markets and inspect the filter row. document.documentElement.scrollWidth is 856 while innerWidth is 768; .filter-fields is 828 px wide, and Sort by spans x=596 to x=856, 88 px beyond the viewport. The screenshot /tmp/verdict-review/markets-768.png shows the select cut off at the right edge. At 680 px the mobile rule stacks the fields, confirming the uncovered intermediate breakpoint. Expected: all controls fit within the viewport without horizontal page scrolling.","severity":"high","snippet":".filter-fields {\n  display: flex;\n  justify-content: space-between;\n  gap: 24px;\n}\n.filter-fields label {\n  width: 260px;\n}","title":"bug: Markets filters overflow the tablet viewport"},{"citation":"resolved","description":"Now: The Settlers leaderboard derives both rewards and action counts exclusively from SettlerRewarded logs. The pinned contract returns before emitting that event when a market has settlerReward == 0, which the Create form permits, so successful settlement work on those markets disappears.\nChange to: Count successful resolve, propose, finalize and voidMarket actions independently of reward logs, attribute their callers from transaction data, and sum IMD rewards separately. Preserve actors with zero rewards but nonzero actions in both time windows.\nWhy: The brief requires Settlers to show IMD rewards earned and actions taken; zero reward is a valid market configuration, not evidence that no settlement happened.","line":48,"path":"web/src/leaderboard.ts","reproduction":"At 390 px, use a mainnet-shaped RPC fixture with a valid market whose params.settlerReward and settlerReward are 0 and a successful resolve transaction emitting OracleAsked but no SettlerRewarded. This event sequence follows commit 083060a VerdictMarkets._recordSettlerReward, which immediately returns for reward 0. Open /#/leaderboard and select Settlers, All time (then Last 7 days with the action timestamp in that window). Actual: no row for the caller and no action counted. Directly invoking leaderboard([thatMarket], \"Settlers\", \"IMD\") returns []. Expected: the caller has 0 IMD earned and 1 action. A completed zero-reward market likewise loses resolve/propose/finalize actions. No public transaction is needed; this is reproducible with intercepted RPC responses. Browser confirmation using two intercepted zero-reward markets with OracleAsked, OutcomeProposed, Finalized and Voided logs: at 390 × 844, Settlers displays “No IMD rankings yet” and “No qualifying activity in this period.” Screenshot: /tmp/verdict-review/zero-reward-settlers.png.","severity":"medium","snippet":"      for (const e of v.events.filter(\n        (e) => e.name === \"SettlerRewarded\" && inWindow(e, since),\n      )) {\n        const r = row(\n          e.args.settler.toLowerCase(),\n          e.args.settler.toLowerCase(),\n        );\n        r.rewards += e.args.amount;\n        r.actions++;\n      }","title":"bug: Settlers action totals omit zero-reward markets"},{"citation":"resolved","description":"Now: The ranking screen leads with “On the record.”; Markets says “Every question. On chain.” and Create says “Put a question on chain.” Visitors must read secondary copy or controls to identify the task.\nChange to: Use “Leaderboard”, “Markets” and “Create a market” for those three PageIntro titles. On Leaderboard, shorten the supporting line to “IMD and WETH ranked separately.” Retain the existing fonts, logo and heading styles; let shorter headings reduce the intro height naturally.\nWhy: These are working dashboard/form pages. The supplied copy checklist calls for task names in their headings; the financial action should be explicit before a visitor connects a wallet.","line":52,"path":"web/src/Leaderboard.tsx","reproduction":"At 390 × 844, open /#/leaderboard, /#/markets and /#/create. Read the single h1 on each page: the actual strings are “On the record.”, “Every question. On chain.” and “Put a question on chain.” respectively (confirmed from rendered DOM in Chromium). The Leaderboard name appears only in the paragraph below the h1. Expected: h1 identifies Leaderboard, Markets or Create a market directly. Source counterparts: web/src/App.tsx:489 and web/src/CreatePage.tsx:68.","severity":"medium","snippet":"      <PageIntro title=\"On the record.\">\n        The Verdict leaderboard. IMD and WETH ranked separately.\n      </PageIntro>","title":"taste: task-page headings use slogans instead of naming the task"}],"hash":"fdce9bd452a24babf5961ddcb016f7ada577306015e533ad8768dcc8f8ba4057","nodeId":"77a259f7-0e65-44df-b290-99a25ff8a0ec","outcome":"completed","summary":"| Area | Result |\n|---|---|\n| Requirements | **105 checks: 102 met, 3 missing, 0 faked** |\n| Broken features | **2**: tablet filters; settler action counts |\n| First screen at 390 px | **Yes**: market area and action visible |\n| taste@1 | **13/16 passed**; three flags dismissed after inspection |\n| Copy | **1 finding** |\n| Share card | **Present**, 1200 × 630; metadata complete |\n\nSaved **3 findings** in [.imd-findings.json](/home/debian/.identitymd/work/9878fb7b-be85-4756-993e-956ca4be17d1/77a259f7-0e65-44df-b290-99a25ff8a0ec/.imd-findings.json). Website files are unchanged.\n\n| Severity | Finding | Evidence |\n|---|---|---|\n| High | **bug: Markets filters overflow the tablet viewport** | At 768 px, Chromium and WebKit measure a 856 px document. “Sort by” extends 88 px beyond the viewport. |\n| Medium | **bug: Settlers action totals omit zero-reward markets** | Valid settlement actions without `SettlerRewarded` events disappear; the fixture displays “No IMD rankings yet.” |\n| Medium | **taste: task-page headings use slogans instead of naming the task** | Replace the Markets, Leaderboard and Create slogans with their task names. |\n\nEach JSON finding includes the exact source snippet, proposed change and concrete reproduction.\n\nThe visual idea is a prediction-market ledger carried by Verdict’s green checkmark, dark surfaces and monospaced financial data.\n\nThe requirement audit below evaluates the candidate in `web/`; publication is checked separately.\n\n| # | Explicit requirement | Status | Evidence |\n|---:|---|---|---|\n| 1 | Move `web/` to the new Ethereum mainnet contracts | Met | [config]; live bytecode verified at block **26,173,951** |\n| 2 | Host the new version under `verdict.sites.imd.fun` | **Missing** | The [public site](https://verdict.sites.imd.fun) still serves the Sepolia bundle; publication remains pending |\n| 3 | Mainnet only; remove Sepolia configuration and banner | Met | [config], [app]; candidate runtime |\n| 4 | Change only the website | Met | Website review scope; no contract edits |\n| 5 | Static site, no backend, no trackers | Met | `main.tsx`, [chain], `metadata.ts`; inspected requests |\n| 6 | Title exactly “Verdict” | Met | `web/index.html`; browser title |\n| 7 | Keep brand, fonts and logo | Met | Logo retained; hosted favicon and all three font files match |\n| 8 | Mainnet, chain 1 | Met | [config] `CHAINS[1]` |\n| 9 | Markets `0x279ac25fb2ef2239241c439a007f39c42f99e334` | Met | [config] |\n| 10 | Oracle `0x8ce069975ae8c69bf7cb2bd225aafa43ba307931` | Met | [config] |\n| 11 | BurnVault `0xb1dfe46f912543e366175201edb298263911a1aa` | Met | [config] |\n| 12 | IMD `0xd34a99bc0f67ae1bbd63c660e6d0b0dd03e263b7` | Met | [config] |\n| 13 | WETH9 `0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2` | Met | [config] |\n| 14 | Intake v2 `0xa43e6f75ee006411f79ac1c84120606c2330de82` | Met | [config] |\n| 15 | Deploy block 26172752 | Met | [config] |\n| 16 | Explorer `https://etherscan.io` | Met | [config]; rendered links |\n| 17 | Tenderly → MEV Blocker → PublicNode, with fallback | Met | [config], [chain]; fallback harness |\n| 18 | Logs from deployment, chunks ≤5,000 blocks | Met | [chain] `scan`/`logRanges`; tests |\n| 19 | ABIs from commit `083060a`, `docs/agents/abi` | Met | Source and downloadable ABIs match pinned exports |\n| 20 | Oracle and BurnVault ABIs unchanged | Met | Both match pinned exports |\n| 21 | Params appends `settlerReward`, `collateralId` | Met | `src/abi/VerdictMarkets.json`, `types.ts` |\n| 22 | Market appends reward, rewards paid, collateral, bounty token | Met | Markets ABI; `types.ts` |\n| 23 | `MarketCreated` appends collateral | Met | Markets ABI |\n| 24 | `SettlerRewarded`; actions 0–3 | Met | Markets ABI; [market] timeline mapping |\n| 25 | `collateralConfig(slot)` and `maxSettlerReward()` | Met | Markets ABI; [chain] |\n| 26 | Collateral, fee and cap getters take a slot | Met | Markets ABI |\n| 27 | Exact mainnet/real-funds/agent-review notice | Met | [app] `.mainnet-notice`; rendered wording matches |\n| 28 | One to","treeHash":null,"usage":{"cachedInputTokens":6083712,"inputTokens":189157,"model":"gpt-6-astra","outputTokens":33508,"runtime":"codex","turns":9,"wallClockMs":994771}}],"verification":[{"checks":[],"detail":"paths and tree verified; no suite was run for this kind of work","evaluation":"structural","profile":"none","status":"accepted","submissionHash":"02bd72f5db22b866867aa839d2c429e272b1ef2ac8cb8ca2a5053a0ea06842d0","verifiedTreeHash":"2cf0388a2f7d810f6967cab5be961f8df666c979","verifierVersion":"0.1.0+fb8278c5"},{"checks":[],"detail":"paths and tree verified; no suite was run for this kind of work","evaluation":"structural","profile":"none","status":"accepted","submissionHash":"953bfae96fc8307ed602ece17207fe70c563e17680b972132afd68a9d7107fd8","verifiedTreeHash":"e633ca0149eeb08e02e4a58bed40c366bba350f8","verifierVersion":"0.1.0+fb8278c5"}]}