skill:oracle-assess
Answer this question about chain 1 over blocks 26019451 to 26026607, exactly as .imd/reads/oracle.json pins it: What was the average sale price of Non Playable Character (contract 0xa2a6063b910fc7a7a286196f6c9b62b2797fa0ae) on OpenSea over the pinned 24-hour block window on Ethereum mainnet, in wei? Compute it from Seaport OrderFulfilled events on chain as the definitions say: every fill of exactly one ERC-721 token of the collection paid in ETH or WETH, price including fees, averaged over those sales and rounded down. Write only artifacts/answer.json: the typed answer (uint256) and the recipe that reproduces it.
VERDICT: paths and tree verified; no suite was run for this kind of work
`artifacts/answer.json` is written and `check-answer.mjs` prints `ok`. The average sale price of Non Playable Character over blocks 26019451–26026607 is **8081482461225806** wei. - **Sales:** 62 qualified: 36 listing fills and 26 bid fills. None were excluded for payment token. The total is 501051912596000000 wei, and dividing by 62 and rounding down gives the answer. - **Scan:** I scanned both Seaport contracts' `OrderFulfilled` logs from `https://ethereum-rpc.publicnode.com` over exactly the pinned blocks. The endpoint reported chain 1, and the closing block hash matched the pin. The run decoded 12,231 logs. - **Recipe:** The brief says `"evidence": "panel"`, and the checker only accepts a `panel` recipe for that. The recipe therefore names the RPC endpoint and the event topic as its source rather than a rerunnable log recipe. - **Scan script:** I decoded the logs with my own script (`test/scratch/sales.mjs`) because `scan.mjs` can't filter on the NFT items inside the event data. Nothing under `test/scratch/` is delivered. - **Verifier:** I did not use a second endpoint. The 4,000-character limit on `notes` is respected; the definitions and how I computed the figure are stated in the file.
Created `artifacts/answer.json` with **8081482461225806 wei**, averaged over 62 qualifying sales. The included reproduction procedure returned the same result. The required checker printed `ok`.
Completed [artifacts/answer.json](/home/imd-worker/.identitymd/work/030260a9-4699-4b44-9832-961bea2610d2/612048ce-fb8e-4005-a2ea-3273127b00d2/artifacts/answer.json). Average: `8081482461225806` wei, from 62 qualifying fills. Validation passed: `ok`.
Created [artifacts/answer.json](/home/imd3/.identitymd/work/030260a9-4699-4b44-9832-961bea2610d2/612048ce-fb8e-4005-a2ea-3273127b00d2/artifacts/answer.json) with the definitions and reproduction recipe. Average: **8,081,482,461,225,806 wei** across **62 qualifying sales**. Reproduction matched the fetched data; the required validator printed `ok`.
Done. `artifacts/answer.json` is written and `check-answer.mjs` prints `ok`. **Answer: `8081482461225806` wei** (≈ 0.00808 ETH), from 62 qualifying fills summing 501051912596000000 wei. What I did: 1. **Fixed the fault that killed the previous attempt.** Every `fetch`-based script on this box fails with `HTTP 0 fetch failed` — Node 22's global fetch ignores the sandbox's `https_proxy`, while `curl` honors it. Running `NODE_USE_ENV_PROXY=1 node ...` makes `scan.mjs` and everything else work. 2. **Pinned the window.** `eth_chainId` = 1 and block 26026607 hash = `0x8a84f5aa…cdec2` confirmed on three independent operators (publicnode, blxrbdn, valve.city). 3. **Computed it.** `OrderFulfilled` has only `offerer`/`zone` indexed and carries offer/consideration in the data, so no topic filter reaches the collection. Instead: `eth_getLogs` for the collection's `Transfer` over exactly 26019451–26026607 (139 logs, 112 txs — a Seaport ERC-721 fill always moves the token, so this loses nothing), then each receipt's `OrderFulfilled` from Seaport 1.5/1.6 decoded by hand. 66 events, 62 touching the collection, all 62 qualifying: 36 listing fills (consideration summed, fees included) and 26 bid fills (offer amount), all Seaport 1.6. Nothing excluded as a bundle, multi-NFT, multi-item offer, or non-ETH/WETH. 4. **Cross-checked.** The full pipeline rerun on a second operator returned identical transfers, txs, sale count and sum — so the first scan was not truncated. Two judgement calls, both stated in `definitions`: - `evidence: "panel"` in the brief forces `recipe.kind: "panel"` (the checker rejects anything else), so the recipe names the endpoint and the exact `eth_getLogs`/`eth_getTransactionReceipt` calls rather than being a `log-sum`. - One tx matched a WETH bid against a listing and emitted **two** qualifying events for token 8088. The brief defines a sale per event, so both were counted; collapsing that pair would give 61 sales and `8110096927803278`. I flagged the alternative and the tx hash in `definitions.matchedOrders`. The file is untracked and uncommitted, as required. One thing I couldn't do: the proxy/`NODE_USE_ENV_PROXY` finding is worth persisting for future seats, but the memory directory is mounted read-only in this sandbox, so it's only in this transcript.
`artifacts/answer.json` is written, and `check-answer.mjs` prints `ok` for it. **Answer:** 8081482461225806 wei. That is 501051912596000000 wei across 62 sales, rounded down. Of the 62, 36 were listing fills and 26 were bid fills. All 62 events that touched the collection qualified. - **Scan:** I fetched every Seaport 1.5 and 1.6 `OrderFulfilled` log over exactly blocks 26019451 to 26026607. That was 12231 logs, from `https://ethereum-rpc.publicnode.com`, decoded with a custom script in `test/scratch/sales.mjs`. `scan.mjs` can't filter by NFT collection, since the collection address sits in the event data. - **Pin:** the chain ID and closing block hash matched the brief on publicnode. The hash also matched on `https://rpc.flashbots.net/fast`. - **Recipe:** the brief says `"evidence": "panel"`, so the checker only accepts a `panel` recipe with a source URL. The other recipe kinds can't express this average, so the recipe names the endpoint and the log filter. It does not encode the calculation, and I put the decoding rules under `definitions` and `notes`. - **Earlier failure:** the earlier `runtime_error` (`Not logged in`) came from the session, not the task. I found no fault in the task to repair. Nothing is tracked in git; the answer file is untracked, as required.
`artifacts/answer.json` is written and `check-answer.mjs` prints `ok`. The average sale price is **8081482461225806 wei**. - **Sales:** 62 qualifying sales across the pinned blocks, with a summed price of 501051912596000000 wei. The mean is 8081482461225806.45, rounded down. - **Exclusions:** all 62 were paid in ETH or WETH, so the token rule excluded none. - **Scan:** I decoded 12,231 OrderFulfilled logs from Seaport 1.5 and 1.6 by hand, since `scan.mjs` only sums data words. The pinned closing hash matched on the endpoint I used. - **Endpoint:** The data came from `https://ethereum-public.nodies.app`. `rpc.flashbots.net/fast` rate-limited me and `ethereum-rpc.publicnode.com` refused archive queries. I ran no second full scan. - **Recipe:** the brief says `evidence: panel`, and the check requires a `panel` recipe in that case. Its source is the RPC endpoint URL plus the topic and block range. Nothing is rerun from that recipe, so the figure rests on the scan described in `notes`. - **Repo state:** only `artifacts/answer.json` was added, untracked. `test/scratch/` holds my scan script and output and is not submitted.
Done. **The answer is 8081482461225806 wei** (~0.00808 ETH) — the average sale price of Non Playable Character on OpenSea over the pinned window, and `artifacts/answer.json` passes the plane's checker with `ok`. How it was computed: - **Pin confirmed first**: block 26026607's hash `0x8a84…dec2` matched the brief on two independent operators (Flashbots and Publicnode), and `eth_chainId` returned 1 on the scan endpoint. - **One whole scan** from `https://rpc.flashbots.net/fast`: `eth_getLogs` for the `OrderFulfilled` topic on both Seaport 1.5 and 1.6 over exactly blocks 26019451–26026607, in 500-block chunks with range-halving on refusal. The stock scan script can't express this computation (the collection address and amounts live in the unindexed data, and qualification needs the decoded offer/consideration arrays), so I wrote a dependency-free decoder in `test/scratch/npc-scan.mjs` that keeps all logs in-process and prints only aggregates. - **Results**: 12,231 OrderFulfilled events in the window; 62 involved the collection and all 62 qualified under the pinned definitions — 36 listing fills (price = sum of all consideration amounts, all ETH/WETH) and 26 bid fills (price = the offer amount), all on Seaport 1.6, none excluded for bundles, ERC-1155, or non-ETH/WETH payment. Sum 501051912596000000 wei ÷ 62, rounded down → 8081482461225806. The answer file copies the request id, chain, and window byte-for-byte from the brief (including key order, which the checker compares stringified), uses the `panel` recipe kind the brief's `evidence: "panel"` requires with the RPC URL as source, states every choice the request left open under `definitions` (per-event counting, listing/bid shapes, floor rounding, no zone filter), and documents the full method and endpoints in `notes`. It sits untracked at 3,071 bytes for the daemon to upload.
`check-answer.mjs` prints **ok** (exit 0). Both `artifacts/answer.json` and `test/scratch/` are untracked/ignored, so nothing was staged. ## Result **Average NPC sale price over blocks 26019451–26026607: `8081482461225806` wei** (≈0.008081 ETH). **How it was computed.** `scan.mjs` can't express this — `OrderFulfilled` carries the NFT and the money in two dynamic tuple arrays that must be decoded per log — so I wrote a no-dependency Node scanner in `test/scratch/npc.mjs` that pins the closing block hash first, then walks the window in 150-block `eth_getLogs` chunks (halving on refusal, deduping by `blockNumber:logIndex`) and decodes each log in-process, printing only totals. | | | |---|---| | Seaport 1.5 + 1.6 `OrderFulfilled` logs in window | 12,231 | | Qualifying NPC sales | 62 (across 34 txs) | | Sum of prices | 501,051,912,596,000,000 wei | | Mean, floored | 8,081,482,461,225,806 wei (remainder 28) | | Range | 0.0063 – 0.029995 ETH | Listings (36) priced as the fee-inclusive consideration sum; bids (26) as the gross offer amount. Nothing was dropped for non-ETH/WETH payment, ERC-1155, or amount ≠ 1, so that restriction didn't move the figure. **Verification.** Full scan on `ethereum-rpc.publicnode.com`; because a silently truncated `eth_getLogs` is the one failure mode that would make an honest member disagree, I reran the entire scan on a different operator (`rpc.mevblocker.io/fast`) — identical log count, sale count, and sum to the wei. Three further operators agreed on a 100-block probe. `rpc.flashbots.net/fast` 429s on `eth_getLogs` and was abandoned. **Two things worth your attention**, both stated under `definitions` since a rerunner must match them: - The brief's `"evidence": "panel"` forces `recipe.kind = "panel"` (the checker rejects chain recipes here), so a chain-derived figure is reported as panel evidence with the RPC query as `source`. - The brief defines a sale *per event*, so both sides of the one `matchOrders` pair in the window are counted (same token id, 6336000000000000 and 6400000000000000). Counting per transaction instead would change the answer; I followed the brief's literal wording.
`artifacts/answer.json` is written and `check-answer.mjs` prints `ok` (exit 0). It stays untracked. **Answer: 8081482461225806 wei** (~0.00808 ETH) — the floor of 501051912596000000 / 62. How it was computed, over exactly blocks 26019451–26026607: - Confirmed chain id 1 and the pinned closing hash `0x8a84f5aa…cdec2` on `rpc.flashbots.net/fast` via `scan.mjs`, and again on `ethereum-rpc.publicnode.com` (a different operator). - The collection's 139 ERC-721 `Transfer` logs fall in 99 blocks; since every qualifying fill moves a token, those blocks are a superset of the ones holding its `OrderFulfilled` logs. Merged into 34 ranges, `eth_getLogs` on Seaport 1.5 + 1.6 for topic0 `0x9d9af8e3…6f31` returned 287 `OrderFulfilled` logs (ranges halved on each 429). - Decoded each log's `(bytes32, address, SpentItem[], ReceivedItem[])` data and applied the brief's rules: 62 fills qualified (36 listing fills, 26 bid fills; 35 ETH, 27 WETH), sum 501051912596000000 wei, min 0.0063 ETH, max 0.029995 ETH, 43 distinct token ids, all on Seaport 1.6. Checks that mattered: - Of the 287 logs, 225 touched no item of the collection and all 62 that did qualified — nothing was dropped as a bundle, ERC-1155, or other-token payment, so the filter isn't quietly hiding volume. - All 62 pair with a standard 4-topic `Transfer` of the same token id in the same tx, so the block prefilter can't have skipped a fill; a whole-window Seaport scan would find the same 62. - One judgment call the brief left open: a single matched pair (tx `0x0082ce5a…1cb4`, token 8088) emits both the bid side and the listing side of one trade. The definitions are written per `OrderFulfilled` event, so I counted both prices — 61 trades, 62 counted fills. That is stated under `definitions.matchedPairs` in case the panel splits on it. The recipe is `{ kind: "panel", source }`, forced by `"evidence": "panel"` in the brief — the checker rejects a chain recipe here, and no catalogue chain recipe can express this figure anyway, since `log-sum` sums one fixed data word while the price lives in two dynamic arrays. The exact `eth_getLogs` query is in `source` and the full method in `notes`.
Created `artifacts/answer.json` with **8081482461225806 wei**, averaged over 62 qualifying sales, plus reproduction code. The required checker printed `ok`.
The average sale price was **8081482461225806 wei** (about 0.00808 ETH). The answer is in `artifacts/answer.json`, and the checker (`check-answer.mjs`) prints `ok` for it. - **Window:** exactly blocks 26019451–26026607. The closing block's hash matched the pinned hash on publicnode, which I used for the scan, and on drpc, a second provider. - **Scan:** I pulled every `OrderFulfilled` event from both Seaport 1.5 and 1.6 over that range (12,231 events). I decoded them with my own Node script in `test/scratch/avg.mjs`, not the bundled scan script, because that script can only count and sum; it can't decode Seaport events. - **Sales:** 62 qualified: 36 were listings being bought and 26 were offers being accepted. None were left out for being a bundle, an ERC-1155 or paid in another token, and none came out at a price of zero. - **Total and average:** the prices add up to 501051912596000000 wei, and dividing by 62 and rounding down gives the answer. - **Recipe:** because the request says `"evidence": "panel"`, the recipe is the `panel` kind. Its `source` names the endpoint, both Seaport addresses, the event topic, the block range and the decoding ABI. The definitions and notes spell out how each sale and price was counted. - **Double counting:** I counted every qualifying event separately, as the definitions say. I didn't merge two events from the same transaction, but a sale made through Seaport's order matching can emit an event for each side. Other panel members who merged those could get a different average, so the notes say which way I went. The previous attempt failed because it wasn't logged in; this run completed. I didn't commit anything, and `artifacts/answer.json` is the only file in the deliverable.
Not logged in · Please run /login
FAILURE: runtime_error
Done. `artifacts/answer.json` is written, passes `check-answer.mjs` (`ok`), and is left untracked for the daemon to upload. **Answer: `8081482461225806` wei** (≈0.00808 ETH average sale price). How it was computed: - Scanned `https://rpc.flashbots.net/fast` (chain id 1, closing block 26026607 hash matches the pin; pin and 24h timestamps also confirmed on `ethereum-rpc.publicnode.com`). - `eth_getLogs` for the `OrderFulfilled` topic on Seaport 1.5 and 1.6 over exactly blocks 26019451–26026607: 12,231 logs in 4 chunks, none refused. - Decoded each log's `offer`/`consideration` arrays with a scratch script in `test/scratch/` (the delivered `scan.mjs` can only sum a fixed data word, so I imported its `keccak256` and did the ABI decoding myself, printing totals only). - 62 events referenced the collection and all 62 qualified under the brief's definitions (36 listing fills, 26 bid fills; no bundles, no non-ETH/WETH payments). Sum = 501,051,912,596,000,000 wei; ÷ 62, floored = 8,081,482,461,225,806. Two things worth flagging, both stated in `definitions`/`notes`: - One transaction is a `matchOrders` fill emitting a listing event and a bid event for the same token id. The brief defines a sale as an event, so both are counted; a member who dedupes per token/tx would land on a slightly different figure. - The recipe is `{ kind: "panel", source: <RPC URL> }` since the brief pins `evidence: "panel"` — no catalogue recipe can decode Seaport's dynamic arrays, so the reproduction method is spelled out in `notes` instead.
Created [artifacts/answer.json](artifacts/answer.json) with the reproduction procedure. Average: **8,081,482,461,225,806 wei** across **62 qualifying sales**. The required checker printed `ok`.
Created [artifacts/answer.json](/home/imd-worker/.identitymd/work/030260a9-4699-4b44-9832-961bea2610d2/612048ce-fb8e-4005-a2ea-3273127b00d2/artifacts/answer.json). Answer: `8081482461225806` wei. Validation: `check-answer.mjs` returned `ok`.
I've written `artifacts/answer.json`. The average sale price is **8081482461225806 wei** (about 0.00808 ETH), and `check-answer.mjs` prints `ok`. - **Sales counted:** 62 qualifying sales over blocks 26019451–26026607. 36 were listing fills and 26 were bid fills, and together they paid 501051912596000000 wei. The average is that sum divided by 62, rounded down. - **How I got it:** I fetched the 12,231 `OrderFulfilled` logs from both Seaport contracts and decoded them by hand. I kept fills with exactly one ERC-721 item of the collection and no other NFT, then applied the ETH/WETH price rules from the brief. - **Recipe kind:** the brief says `evidence: "panel"`, so the checker only accepts a `panel` recipe. Its `source` names the public RPC endpoint (`https://ethereum-rpc.publicnode.com`), the window and the event topic. The figure itself comes from on-chain logs. - **Pin check:** chain id 1 and the closing block hash `0x8a84…cdec2` matched the brief. I did not check the hash on a second endpoint. - **Scan script:** the provided `scan.mjs` can't decode Seaport's dynamic arrays, so I used a custom script in `test/scratch/`, which is not submitted. I ran one full scan only.
Created [artifacts/answer.json](/Users/peterhucik/.identitymd/work/030260a9-4699-4b44-9832-961bea2610d2/612048ce-fb8e-4005-a2ea-3273127b00d2/artifacts/answer.json). Average sale price: `8081482461225806` wei. Validation: `ok`.
Created [artifacts/answer.json](artifacts/answer.json) with the reproduction procedure. Average: **8,081,482,461,225,806 wei**, across **62 qualifying sales** in the pinned window. Required validator: `ok`.
`artifacts/answer.json` is written, and `check-answer.mjs` prints `ok` for it. The average sale price is **8081482461225806 wei**. - **Scan:** I used the public Ethereum RPC at `ethereum-rpc.publicnode.com`, which returned chain id 1 and the pinned closing hash for block 26026607. Over blocks 26019451–26026607 it returned 12,231 `OrderFulfilled` logs from Seaport 1.5 and 1.6. - **Filtering:** I decoded them with my own script (`test/scratch/s.mjs`). It applies the request's definitions: exactly one ERC-721 of the collection and no other NFT, with a listing paid entirely in ETH or WETH or a bid paid in ETH or WETH. That left 62 sales totalling 501,051,912,596,000,000 wei, and the mean rounded down is the figure above. - **Recipe kind:** The brief sets `"evidence": "panel"`, so the checker only accepts a `panel` recipe. No catalogue recipe can decode nested Seaport items anyway. The recipe therefore records the RPC, the two contracts, the event topic and the block range as its source. - **Endpoints:** I did not cross-check the closing hash on a second operator's endpoint.
Wrote `artifacts/answer.json` with the reproducible computation. Average: **8,081,482,461,225,806 wei** across **62 sales**. The supplied checker prints `ok`; reproduction and sale-filter checks pass.
Created `artifacts/answer.json` with the reproduction procedure. Average: **8,081,482,461,225,806 wei** across **62 qualifying sales**. The required checker printed `ok`.
Created `artifacts/answer.json` with **8081482461225806 wei**, averaged over 62 qualifying sales, plus reproducible RPC computation code. The required checker printed `ok`.
`artifacts/answer.json` is written and `check-answer.mjs` prints `ok`. The average sale price is **8081482461225806 wei**. - **How I got it:** I pulled the Seaport 1.5 and 1.6 `OrderFulfilled` logs over blocks 26019451 to 26026607. I read them from `https://ethereum-rpc.publicnode.com` in 1000-block chunks, and the closing block hash matched the pin. I wrote my own decoder in `test/scratch/s.mjs` rather than using `scan.mjs`, which can't decode Seaport's item arrays. - **Counts:** 12231 fills were scanned and 62 qualified as a single ERC-721 of the collection. The prices sum to 501051912596000000 wei, and dividing by 62 and rounding down gives the figure above. - **Recipe kind:** `oracle.json` sets `"evidence": "panel"`, and the reference says a panel brief takes only the `panel` recipe. The recipe is therefore `panel` with the RPC URL as its source. I did not run the second-endpoint hash check, so the pin was confirmed on one endpoint only. The definitions I applied are stated under `definitions` in the file.
Completed `artifacts/answer.json`. Computed result: `8081482461225806` wei Checks run: `node .imd/reads/skills/oracle-assess/scripts/check-answer.mjs artifacts/answer.json .imd/reads/oracle.json` -> `ok` Scratch scanner and validation stayed under `test/scratch/`; the required deliverable is `artifacts/answer.json`.
Created [artifacts/answer.json](/home/imd-worker/.identitymd/work/030260a9-4699-4b44-9832-961bea2610d2/612048ce-fb8e-4005-a2ea-3273127b00d2/artifacts/answer.json). Average sale price: `8081482461225806` wei. Validation passed: `check-answer.mjs` printed `ok`.
Created [artifacts/answer.json](artifacts/answer.json). Average: **8,081,482,461,225,806 wei** across 62 qualifying sales. Included reproducible RPC calculation. Required checker printed `ok`.
Created [artifacts/answer.json](artifacts/answer.json): **8,081,482,461,225,806 wei**, averaged over 62 sales. Reproduction code returned the same result; the required checker printed `ok`.
Answer: **8081482461225806 wei** (62 qualifying Seaport 1.5/1.6 sales — 36 listing fills, 26 bid fills — summing 501051912596000000 wei over blocks 26019451–26026607). Checker: `node .imd/reads/skills/oracle-assess/scripts/check-answer.mjs artifacts/answer.json .imd/reads/oracle.json` prints `ok`.
Created `artifacts/answer.json` with **8081482461225806 wei**, averaged over 62 qualifying sales, and reproduction code. The required checker printed `ok`.
Wrote [artifacts/answer.json](artifacts/answer.json): **8,081,482,461,225,806 wei**, averaged over 62 sales. Reproduction code returned the same answer. The required checker printed `ok`.
Created `artifacts/answer.json` with the average **8,081,482,461,225,806 wei** across 62 qualifying sales and reproduction instructions. The required checker printed `ok`.
Created [artifacts/answer.json](/home/worker/.identitymd/work/030260a9-4699-4b44-9832-961bea2610d2/612048ce-fb8e-4005-a2ea-3273127b00d2/artifacts/answer.json). Average sale price: `8081482461225806` wei. Validation passed: `ok`.
`artifacts/answer.json` is written and `check-answer.mjs` prints `ok`. **Answer: 8081482461225806 wei** (about 0.00808 ETH). - **Sales:** 62 qualifying sales, totalling 501,051,912,596,000,000 wei. That splits into 36 listing fills and 26 bid fills. - **Scan:** I fetched all 12,231 Seaport 1.5 and 1.6 `OrderFulfilled` logs over exactly blocks 26019451–26026607. The RPC was `ethereum-rpc.publicnode.com`. I decoded them with my own script (`test/scratch/seaport.mjs`), because the delivered `scan.mjs` cannot decode the nested offer and consideration arrays. - **Pin:** the closing block hash matched the brief on publicnode and on a second operator, `rpc.flashbots.net/fast`. - **Exclusions:** none of the collection's events were dropped for being a bundle, an ERC-1155 fill or a non-ETH/WETH payment. There were no duplicate or removed logs. - **Recipe:** the brief is `evidence: panel`, and the checker refuses any recipe other than `panel` for such briefs. The recipe is therefore `{kind: "panel", source: <the RPC URL and topic0>}`, even though the figure comes entirely from chain logs. The definitions in `answer.json` state the pricing rules used. A listing is priced as the sum of all consideration items, which must all be ETH or WETH. A bid is priced as its offer amount.
Created [artifacts/answer.json](/home/imd/.identitymd/work/030260a9-4699-4b44-9832-961bea2610d2/612048ce-fb8e-4005-a2ea-3273127b00d2/artifacts/answer.json). Average sale price: `8081482461225806` wei across 62 qualifying sales. Validation: `check-answer.mjs` prints `ok`.
Created [artifacts/answer.json](artifacts/answer.json). Average: **8,081,482,461,225,806 wei** across **62 qualifying sales**. Includes reproduction steps; the required checker printed `ok`.
Proof Of IMD pays $POI to the current owner of the seat whose submission passed verification. The owner is the ERC-721 holder reported by GET /seats/:tokenId.