{"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":"9aaf9962-0b2c-4c62-9ad2-d6ea6cd1f177","kind":"shape:chain","nodes":[{"acceptedSubmissionHash":"389ceb1a842f938a13bc6374ad48e38c23a4d2e08907429c7c5f286e7fd38738","dependsOn":[],"execution":{"mustProduce":["dist/index.html"],"network":true,"optionalTools":["browser"],"profile":"none","requires":["network"],"skillHash":"a60bc8b42446c13d993341179fe13c712a5addb118fc532fb2d15e71f912efc8","skillId":"build-website","tools":[]},"key":"build_website","kind":"code","role":"implement","skillHash":"a60bc8b42446c13d993341179fe13c712a5addb118fc532fb2d15e71f912efc8","skillId":"build-website","state":"accepted"},{"acceptedSubmissionHash":"0848e43eb46b38452d28d1ff1250237992d6422935616e59fc20077a9d947d1e","dependsOn":["build_website"],"execution":{"network":true,"optionalTools":["browser"],"profile":"none","requires":["network"],"skillHash":"fd33b6741366d364a55a4c0ba2bc4f5d329cec0b62f27a83289dc5b30ab03575","skillId":"design-critic","tools":[]},"key":"design_critic","kind":"code","role":"review","skillHash":"fd33b6741366d364a55a4c0ba2bc4f5d329cec0b62f27a83289dc5b30ab03575","skillId":"design-critic","state":"accepted"},{"acceptedSubmissionHash":"220a93e70d3f54fc6cb0ccec61dc87d1ff47837274a7b42bb7a61cfafbe7fcd7","dependsOn":["build_website"],"execution":{"network":false,"profile":"foundry","requires":[],"skillHash":"8189a3059fc9bb774ad7dcee66b87f32e25d781025f0e9f82a4c75182fe0ef19","skillId":"site-content-check","tools":[]},"key":"site_content_check","kind":"code","role":"review","skillHash":"8189a3059fc9bb774ad7dcee66b87f32e25d781025f0e9f82a4c75182fe0ef19","skillId":"site-content-check","state":"accepted"}],"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.","parentJobId":"ba64e70a-158b-4558-837d-a29fb55e1ef4","planHash":"dc1685efbd6df82606fc181a77ebeec523aeff0959123362056252139533b3b8","previousHash":"0000000000000000000000000000000000000000000000000000000000000000","projectId":"4f2565af-3ba6-4fde-9444-473ed6b1ee68","publication":{"commit":null,"deliveredAt":null,"repoUrl":"https://github.com/identity-md-launches/launch-2412-workflow-frontend-stage-context"},"receiptIdentity":{"adapter":"0xde152afb7db5373f34876e1499fbd893a82dd336","chainId":1,"collection":"0x0000ec93127baa929e58e97dd0095a2bfb38ec1d","registry":"0x8004a169fb4a3325136eb29fa0ceb6d2e539a432"},"registry":"0xb6d0a187b050fa5bb0b87033a203f37becf4a775","research":[],"schema":"identitymd-work-v1","signals":[{"agentId":"51082","feedbackHash":"5ef002a88932f30772ce2382b742a18b8a26011f2e0c2604bfe333948911e75e","nodeKey":"build_website","submissionHash":"389ceb1a842f938a13bc6374ad48e38c23a4d2e08907429c7c5f286e7fd38738","tag1":"verification:structural","tag2":"acceptance-v2","value":1},{"agentId":"51530","feedbackHash":"10acd490e5cb1a0e3a49f383d5d2771f4f0d2e65e06242ee5e72bb712333eb38","nodeKey":"design_critic","submissionHash":"0848e43eb46b38452d28d1ff1250237992d6422935616e59fc20077a9d947d1e","tag1":"review:submission","tag2":"acceptance-v2","value":1},{"agentId":"51733","feedbackHash":"c77c342151ceb70f7c0164b44d94f1adecd6acab4e281bafc268ce516ca9e320","nodeKey":"site_content_check","submissionHash":"220a93e70d3f54fc6cb0ccec61dc87d1ff47837274a7b42bb7a61cfafbe7fcd7","tag1":"review:submission","tag2":"acceptance-v2","value":1}],"site":null,"snapshotHash":"d9fe7b2a87f04689a7378286dbe12e16833f14dafe5155bd3878443c08456c80","state":"completed","submissions":[{"artifacts":[],"attempt":1,"bundleHash":null,"device":"5ded77c3c883b7b0","findings":[{"citation":"resolved","description":"Now: the last commit (eb5e026) changes only web/ source and web/public/art/full-house.svg. dist/ is the export from the previous job (7d28038): it loads index-D27utQ_k.js, which has no Multicall batching or 6-request queue, none of the new intros, still prints W_LIFE/W_JUDGED/W_FIRST1000/W_DEPLOY, has no Step 03 'Example' choice, still says 'Clear journal' and 'Pay with', and dist/art/full-house.svg does not exist. Change to: run the web build (including scripts/generate-art.mjs) and commit the new dist/, so dist/art/full-house.svg and a new index-*.js bundle are present. Why: the brief says 'rebuild and commit the static export in dist/ so the same site name serves it'; as it stands the served site meets none of the 13 items.","line":20,"path":"dist/index.html","reproduction":"Any width. In the repository root: `git show --stat HEAD` lists no dist/ path. `grep -c 'Look up any wallet' dist/assets/index-D27utQ_k.js` -> 0; 'Mint your Sworn card, then' -> 0; 'Your own rule' -> 0; 'Stored: listed wallets can apply it for gas only' -> 0; 'MAX_IN_FLIGHT'/'full-house' -> 0; 'Clear journal' -> 1; 'Pay with' -> 1; `grep -o 'W_[A-Z0-9]*' dist/assets/index-D27utQ_k.js` -> W_LIFE x9, W_JUDGED x2, W_FIRST1000 x2, W_DEPLOY x2; `ls dist/art/full-house.svg` -> No such file. Expected: each new string present and each removed string at 0. Probe screenshot at 390 (taste.mjs on dist/): the header still shows the green favicon hexagon beside SWORN, and the menu still lists 'Fact vs artifact' and 'WhitelistCurator', which items 11, 12 and 13 remove.","severity":"high","snippet":"    <script type=\"module\" crossorigin src=\"./assets/index-D27utQ_k.js\"></script>","title":"fidelity: dist/ was not rebuilt, so the served site has none of items 1-13"},{"citation":"resolved","description":"Now: <h1>Wallet</h1> goes straight to the connect prompt or the 'Claimed facts' section; the brief's sentence is nowhere in web/src. Explorer (pages.tsx:409) and Mint (claim.tsx:1129) got theirs. Change to: add right after the h1, with the same element Explorer uses, <p className=\"prose\">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.</p>, shown whether or not a wallet is connected. Why: item 2, '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.\\''.","line":240,"path":"web/src/wallet-facts.tsx","reproduction":"Any width, #/wallet, with or without a wallet. `grep -rn \"Sworn record\" web/src` -> no match. The page shows 'Wallet' then 'Connect a wallet to see its facts.' with no intro line. Expected: the quoted sentence under the title.","severity":"high","snippet":"      <h1>Wallet</h1>","title":"fidelity: the Wallet page has no intro under its title (item 2)"},{"citation":"resolved","description":"Now: each row is '<id> / <name>' followed directly by how it was proven (Direct · frozen at mint..., or Panel-sworn, evidence window, oracle request); there is no plain-words meaning, and .fact-history (styles.css:914-918) caps the list at max-width: 80ch, so at 1440 it does not use the full width. wallet-facts.tsx was not touched by the last commit. Change to: in each li, after the strong '{row.id} / {row.name}', add a line with the fact's meaning, the catalog rule from TRAITS (t.rule) for catalog ids and a sentence built from the community spec (the same text the Catalog/Step 03 preview uses) for spec ids, then the proof spans; drop max-width: 80ch from .fact-history and lay each li out as a two-column grid (id, name and meaning | how proven) at desktop, one column under the site's phone breakpoint. Why: item 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.'","line":270,"path":"web/src/wallet-facts.tsx","reproduction":"1440 wide, #/wallet with a connected wallet that holds a fact (fake EIP-1193 wallet in web/tests). The row reads '101 / <name>' then 'Direct · frozen at the card's mint, block ...' with no rule text; the list ends at 80ch, leaving the right side of the main column empty. Source: `grep -n \"rule\\|meaning\" web/src/wallet-facts.tsx` finds no rule rendered in the row; styles.css:917 'max-width: 80ch;'.","severity":"high","snippet":"              <ul className=\"fact-history\">","title":"fidelity: Wallet's claimed facts keep an 80ch column and never say what a fact means (item 10)"}],"hash":"0848e43eb46b38452d28d1ff1250237992d6422935616e59fc20077a9d947d1e","nodeId":"f013902c-72e8-4d9a-94ab-34d3cf2aac87","outcome":"completed","summary":"The site isn't ready to ship: `dist/` was never rebuilt, so the site people would visit has none of the 13 items. Two items are also missing from the source itself. I wrote three high findings to `.imd-findings.json` and changed no other file.\n\n| Area | Count |\n|---|---|\n| Brief requirements | 15: 9 met in source but not served, 3 missing, 0 faked, 3 not checked |\n| Broken features | 0 found |\n| Product on the first screen at 390 | yes (the wallet input and \"Explore wallet\" button) |\n| taste@1 checks passed | 14 / 16, measured on the stale `dist/` |\n| Copy findings | 0 |\n| Share card | yes (`og:title`, `og:image ./share.png`, favicon) |\n\nThe 15 requirements are the 13 items plus \"rebuild dist\" and \"static, no key\". The 3 not checked are the request counts (which need a live run), item 5 and item 11. Item 5 has only CSS evidence: `.picker-row .rule .accent { display: inline }` and the label sits inside the rule line. For item 11 I only checked the redirect and the footer link.\n\n**Requirements**\n- **Rebuild and commit `dist/`:** missing. The last commit (eb5e026) changes only `web/`. `dist/index.html` still loads the old `index-D27utQ_k.js`, and `dist/art/full-house.svg` doesn't exist.\n- **(1) Multicall3 and at most 6 requests at a time:** met in source (`chain.ts:89`, `chain.ts:105`, `rpc.mjs:29` `MAX_IN_FLIGHT = 6`). The served bundle doesn't have the queue.\n- **(2) Intros:** Explorer (`pages.tsx:409`) and Mint (`claim.tsx:1129`) are met in source. **Wallet is missing:** `wallet-facts.tsx:240` has no intro, and the sentence appears nowhere in `web/src`.\n- **(3) No window code names:** met in source (`data.ts:55–106`). The served bundle still prints W_LIFE 9 times and W_JUDGED, W_FIRST1000 and W_DEPLOY twice each.\n- **(4) Step 03 examples:** met in source (`spec-examples.mjs`, `claim.tsx:668`, with \"Your own rule\" first).\n- **(5) Row label inline after \" · \":** not checked beyond the CSS noted above.\n- **(6) Card preview border:** met (`styles.css`: `border: 1px solid var(--rule)`, the same colour as `button:disabled`).\n- **(7) No stale preparation; \"Close\":** met in source (`transactions.tsx:79`, `:686`, `:1034`). The served bundle still says \"Clear journal\".\n- **(8) \"Transaction steps\" shown only when something is prepared or saved:** met (`transactions.tsx:761`).\n- **(9) 1201 row trimmed:** met in source (`claim.tsx:410–419`). The served bundle still shows \"Pay with\".\n- **(10) Wallet rows full width, with each fact's meaning:** missing. The list is still capped at `max-width: 80ch`, and rows show no rule or sentence for what the fact means.\n- **(11) Fact vs artifact inside Integrate:** met in source (`pages.tsx:557`, `App.tsx:30`, footer link `App.tsx:238`). The served menu still lists it.\n- **(12) WhitelistCurator inside About:** met in source (`App.tsx:36`, `pages.tsx:789`). The served menu still lists it.\n- **(13) Full-house logo:** met in source (`App.tsx:205`, `generate-art.mjs`, `web/public/art/full-house.svg`). The served header still shows the favicon.\n- **Static: no server, key or analytics:** met.\n\n**Findings** (all high)\n1. **The export is stale.** The site visitors get has none of items 1–13. The probe screenshot at 390 still shows the favicon logo and the \"Fact vs artifact\" and \"WhitelistCurator\" menu entries. Fix: rebuild, including `generate-art.mjs`, and commit `dist/`.\n2. **Wallet has no intro.** Fix: add the brief's sentence as `<p className=\"prose\">` right after the `<h1>` in `wallet-facts.tsx:240`.\n3. **Wallet rows don't follow item 10.** Fix: under each row's id and name, show the catalog rule (or a sentence built from the community spec), then how it was proven. Remove `max-width: 80ch` and use one column on phones.\n\n**Probe:** it ran (I installed Playwright in `/tmp`) and measured only the landing page of the old export. It flagged two all-caps section names and monospace prose. `DESIGN.md` keeps both on purpose, so neither is a finding. I didn't test in WebKit or count requests against a live chain.\n\n","treeHash":null,"usage":{"cachedInputTokens":1206295,"inputTokens":51,"model":"claude-opus-5-5","outputTokens":12176,"runtime":"claude","turns":28,"wallClockMs":214447}},{"artifacts":[],"attempt":1,"bundleHash":null,"device":"6a7dea7fd5378a40","findings":[{"citation":"resolved","description":"The current commit changes only web/ files; dist/ is byte-for-byte unchanged from its parent. Rebuilding the parent source with the locked dependencies reproduces all three committed JavaScript files and the stylesheet byte-for-byte, confirming this is the old export. Thus the hosted entry point omits the implemented changes for items 1–9 and 11–13. In Chromium the delivered Mint sends 85 RPC requests (73 eth_call, none to Multicall3), with 33 in flight, against deterministic fake RPC. The same fixture on a disposable rebuild sends 23 requests and peaks at 3. The export still has no Explorer/Mint intro, exposes all four W_* window codes and the old 601 window, offers no Example chooser (T4 signature is empty), puts labels/proven text on separate lines, uses green preview borders, restores unsent preparations, always shows Transaction steps, and retains the verbose 1201 price/attempt/payment copy. Fact vs artifact and WhitelistCurator remain separate pages/menu entries, the footer uses the old destination, and the header remains the 32px favicon; full-house.svg is absent. Rebuild and commit dist and its manifest after fixing the source findings. These are acceptance defects, not prohibited hosting content.","line":20,"path":"dist/index.html","reproduction":"Serve the committed dist/ over HTTP and open #/mint in Chromium. With web/tests/fake-chain.mjs, connect Browser wallet 0x2000000000000000000000000000000000000001, retain nextSpecId=10001, and delay each fake RPC 40ms: 85 requests, 73 eth_call, peak 33, zero Multicall3 calls. Select T4 in step 03: no Example control and an empty signature. Inspect #pick-1201, #pick-701, and #transaction-steps for the old copy/layout/green border/empty journal. Prepare Mint card without acknowledging or signing, reload, and click Review transaction steps: the unsent preparation is restored and Clear journal remains. Open #/catalog for W_* codes; #/explorer and #/mint for missing intros; #/integrate and #/about for absent moved sections; old #/fact-vs-artifact and #/whitelistcurator still open standalone pages. Header img uses favicon.svg at 32px and /art/full-house.svg returns 404. Expected the thirteen-item update in the hosted export. git diff HEAD^ HEAD -- dist is empty.","severity":"medium","snippet":"    <script type=\"module\" crossorigin src=\"./assets/index-D27utQ_k.js\"></script>","title":"The committed static export still serves the previous implementation"},{"citation":"resolved","description":"useTransactions now returns close() instead of clear(), but the payment radio handler still invokes clear(). The source fails its typecheck (TS2339). A production rebuild succeeds without typechecking, then selecting ETH or IMD throws a TypeError and leaves the previous prepared payment journal in place. This regression remains after rebuilding dist; update the caller to the supported journal-clearing operation.","line":1272,"path":"web/src/claim.tsx","reproduction":"Run npm run typecheck from web/: claim.tsx:1272 reports Property clear does not exist. Build a disposable copy and open #/mint with the supplied fake EIP-1193 wallet and fake RPC. Prepare Mint card with IMD without confirming any wallet step, dismiss with the top Close payment dialog button, then select ETH. Chromium reports r.clear is not a function and Transaction steps still holds the old IMD preparation. Expected changing payment to clear that preparation without any JavaScript error. No signature or transaction is needed.","severity":"medium","snippet":"                  journal.clear();","title":"Payment currency changes call the removed journal.clear method"},{"citation":"resolved","description":"Item 10 is unimplemented in both the committed export and the current source: Row contains only id/name/community/proof and the UI goes directly from id/name to provenance, without a catalog rule or sentence derived from the community spec. web/src/styles.css:917 still caps .fact-history at 80ch. In Chromium at 1280px the claimed-fact list is only 640px wide inside a 1200px content area. Rebuilding alone does not fix this.","line":274,"path":"web/src/wallet-facts.tsx","reproduction":"Serve dist/ (or a disposable rebuild), connect fake wallet 0x2000000000000000000000000000000000000001, make fake Registry traitsOf return [101] and tokenOf return 0, and open #/wallet at 1280px. The row reads 101 / Spawned followed by Direct · read live; no card minted, with no Joined WhitelistCurator.sol meaning. The list border spans 640px instead of the available 1200px. With a verified community id, the same rendering supplies only its name and proof, no spec meaning. Expected full-width rows containing a plain-language meaning before the proof, stacking into one column on phones.","severity":"medium","snippet":"                      {row.id} / {row.name}","title":"Wallet still omits fact meanings and uses the old narrow history layout"},{"citation":"resolved","description":"The new Close handler clears only when lock.current is false, but that lock is also held by read-only simulation. Pressing Close during a slow simulation hides the dialog while retaining its unsent plan and journal; once the response arrives, the old preparation can be reopened. Item 7 permits retaining a journal for a pending transaction, not an unsent simulation.","line":690,"path":"web/src/transactions.tsx","reproduction":"In a disposable rebuild, use the fake EIP-1193 wallet and fake RPC with a 1.5-second delay for eth_call requests containing from. Open #/mint, connect the fake Browser wallet, click Mint card, and check the dialog acknowledgement. While Approve exactly 0.10 IMD to Registry says simulating, press the bottom Close button. Wait for the delayed response. Transaction steps remains, and Review transaction steps reopens the same plan with the step simulated. localStorage still contains plan and steps, no hash, and the fake wallet signing-call list is empty. Expected the unsent journal to be cleared and Transaction steps to disappear.","severity":"medium","snippet":"        !lock.current &&","title":"Close retains an unsent preparation while its simulation is running"},{"citation":"resolved","description":"Unlike the new Explorer and Mint source, Wallet still goes directly from its title to the connection or Claimed facts section. The exact Wallet introduction required by item 2 is absent from source as well as dist.","line":240,"path":"web/src/wallet-facts.tsx","reproduction":"Open #/wallet with no connected wallet: Wallet is followed immediately by Connect a wallet to see its facts. Connect the fake wallet and reload: the next heading is Claimed facts. Expected the specified Your wallet's Sworn record: every fact it holds... introduction directly under the title in both states.","severity":"low","snippet":"      <h1>Wallet</h1>","title":"The Wallet page has no requested introductory paragraph"},{"citation":"resolved","description":"The simplified 1201 row adds Request pending. in shared-details but also renders its disable reason A request is already pending. in row-detail. This leaves two pending-status lines rather than the one short line required by item 9, even after rebuilding the export.","line":456,"path":"web/src/claim.tsx","reproduction":"In the fake RPC, return a nonzero Registry sharedPending(1201) and zero sharedFact(1201), with the corresponding TraitRequested event for claimant address(0). Connect the fake wallet and open #/mint. Row #pick-1201 reads rule/window/Shared, then Request pending., then A request is already pending., then the disabled Mint this fact button. Expected a single short pending line.","severity":"low","snippet":"        {(error || status || (reason && reason !== \"Already proven\")) && (","title":"Pending 1201 still displays two status lines"}],"hash":"220a93e70d3f54fc6cb0ccec61dc87d1ff47837274a7b42bb7a61cfafbe7fcd7","nodeId":"893d9101-b682-4071-bc22-54b23f2c6c88","outcome":"completed","summary":"Saved **6 findings: 4 medium, 2 low** in [.imd-findings.json](/home/imd/.identitymd-5/work/9aaf9962-0b2c-4c62-9ad2-d6ea6cd1f177/893d9101-b682-4071-bc22-54b23f2c6c88/.imd-findings.json). No critical or high hosting blockers found.\n\n**The committed `dist/` still serves the previous version.** I checked it in Chromium and rebuilt a separate copy under `/tmp` to distinguish export omissions from source defects.\n\n| Item | Check and result |\n|---|---|\n| 1 | Counted RPC traffic: committed Mint makes 85 requests, peaking at 33 concurrent. Rebuilt copy makes 23, peaking at 3; queue stress test caps concurrency at 6. |\n| 2 | Inspected introductions. Export lacks the requested additions; rebuilt Wallet still lacks its intro. |\n| 3 | Checked window text. Export retains codes; rebuilt copy uses readable names and preserves block numbers. |\n| 4 | Exercised all 12 examples and template defaults. Correct in rebuilt copy; absent from export. |\n| 5 | Inspected proven rows. Rebuilt labels follow rule/window inline; export retains separate lines. |\n| 6 | Measured preview borders. Export is green; rebuilt copy uses the disabled-button hairline colour. |\n| 7 | Tested preparation, reload, receipts and Close. Rebuilt copy retains unsent preparation when closed during simulation. Currency changes also throw because `journal.clear()` was removed. |\n| 8 | Checked fresh and prepared states. Export always shows Transaction steps; rebuilt copy gates it correctly. |\n| 9 | Tested 1201 states. Export retains verbose copy; rebuilt pending state still displays two status lines. |\n| 10 | Inspected desktop/mobile Wallet facts. Meanings remain absent; desktop rows remain capped at 640px. |\n| 11 | Tested Integrate, footer and legacy anchor. Correct after rebuilding; export retains the standalone page. |\n| 12 | Tested About content order and legacy anchors. Correct after rebuilding; export retains the standalone page. |\n| 13 | Checked logo dimensions and regenerated artwork from mainnet. Source SVG matches exactly; export lacks it and uses the 32px favicon. |\n\nReviewed hosted pages, scripts, styles and assets. ABI hashes and export integrity pass; 18 targeted tests pass. Typecheck fails on `journal.clear()`. Separate browser mainnet reads succeeded. Nothing was signed or sent; repository site files remain unchanged.","treeHash":null,"usage":{"cachedInputTokens":4965504,"inputTokens":223544,"model":"gpt-6-astra","outputTokens":22259,"runtime":"codex","turns":7,"wallClockMs":749152}},{"artifacts":[],"attempt":1,"bundleHash":"809465367031cec03d65ae2b2fc5db229fdb191a3ffe1ccba1b0eb2a61b89265","device":"f47f953f8e35921e","findings":[],"hash":"389ceb1a842f938a13bc6374ad48e38c23a4d2e08907429c7c5f286e7fd38738","nodeId":"5680df2a-8172-4e6a-8b12-80639bdc69f7","outcome":"completed","summary":"","treeHash":"7d80d5bbc050ec4b355291037549ef8dd4909bbd","usage":{"cachedInputTokens":5175358,"inputTokens":104,"model":"claude-opus-5-5","outputTokens":32112,"runtime":"claude","turns":53,"wallClockMs":450131}}],"verification":[{"checks":[],"detail":"paths and tree verified; no suite was run for this kind of work","evaluation":"structural","profile":"none","status":"accepted","submissionHash":"389ceb1a842f938a13bc6374ad48e38c23a4d2e08907429c7c5f286e7fd38738","verifiedTreeHash":"7d80d5bbc050ec4b355291037549ef8dd4909bbd","verifierVersion":"0.1.0+ead9012e"}]}