skill:oracle-assess
Answer this question about chain 1 over blocks 26051648 to 26051946 (closing hash 0x7205ca49a730e2d01f5f3b18a1881ebe8ba071627e3d42361a0c392e32a03ceb), exactly as .imd/reads/oracle.json pins it: What air temperature, in whole degrees Celsius, did the last routine METAR for KBIL (Billings Logan International Airport, Billings, Montana) issued at or before 17:00 UTC on 23 September 2026 (1:00 PM Eastern Daylight Time) report? Answer type: uint256. Evidence: panel. Definitions the requester fixed: - answer: the temperature in whole degrees Celsius as a non-negative whole number, taken from the temperature/dew-point group in the body of that METAR (for example 26 from "26/20"), not the tenths in the T-group remarks and not converted to Fahrenheit - subject: The weather observation at KBIL (Montana) on 23 September 2026. "The last routine METAR issued at or before 17:00 UTC" means the report of type METAR (not SPECI) whose observation time (the DDHHMMZ group) is the latest at or before 231700Z, typically about 1651Z-1656Z. The pinned chain and window of this request only timestamp it; the answer is a recorded weather observation, not a reading taken at the pinned block. - source: Answer from the archived METAR text itself, read from a public archive (aviationweather.gov data API, Iowa Environmental Mesonet ASOS archive, Ogimet, or NOAA/NWS observation history), quote the raw report in your notes, and name the source. - missing: If you cannot find that report, report that; do not estimate from a forecast, a nearby station, or an hourly summary. Three steps: (1) read one or two sources that state the fact and note which; (2) write artifacts/answer.json with recipe kind "panel" and the source; (3) run node .imd/reads/skills/oracle-assess/scripts/check-answer.mjs and fix what it prints. Nothing else needs reading first: the brief above is in .imd/reads/oracle.json, and .imd/reads/skills/oracle-assess/REFERENCE.md lists the recipe's fields if the checker asks for one.
VERDICT: paths and tree verified; no suite was run for this kind of work
Recorded **17°C** from the archived report `METAR KBIL 231653Z ... 17/12 ...`. The source and raw report are in [artifacts/answer.json](/home/levi/imd/p8/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). [Aviation Weather Center Data API](https://aviationweather.gov/api/data/metar?ids=KBIL&format=raw&date=202609231700&hours=1) The required checker printed `ok`.
The archived 231653Z routine METAR reports `17/12`, so the answer is **17°C**. I recorded the raw report and Aviation Weather Center API source in [answer.json](/home/debian/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). The required checker prints `ok`.
Wrote [artifacts/answer.json](/home/worker/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with **18°C**, based on the archived 231700Z report. The checker printed `ok`.
Wrote [artifacts/answer.json](/home/levi/imd/p6/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with answer **17°C**. The raw report is `METAR KBIL 231653Z ... 17/12 ...`; the body temperature is 17. Retrieved from the [Aviation Weather Center archive API](https://aviationweather.gov/api/data/metar?ids=KBIL&date=2026-09-24T00%3A00%3A00Z&hours=24&format=raw). The required checker printed `ok`.
Created [artifacts/answer.json](/home/imd/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with answer **18°C**, from the IEM archive’s 231655Z routine report (`18/12`). The required checker prints `ok`.
The recorded temperature is **17°C**. I saved the panel answer with the raw METAR and archive URL in [answer.json](/home/imd-worker/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). The checker printed `ok`.
Checker prints `ok` and `git status --porcelain` shows no stray files (artifacts/ is untracked output, not committed). Answer: **17°C**, from the routine METAR `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` (aviationweather.gov Data API), which is the last routine METAR at or before 231700Z. Written to `artifacts/answer.json` and verified by the checker.
The report was `METAR KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $`; its body temperature group reports **17°C**. Source: [Aviation Weather Center METAR API](https://aviationweather.gov/api/data/metar?ids=KBIL&format=raw&date=2026-09-23T17%3A00%3A00Z&hours=1.5). Wrote [artifacts/answer.json](/home/levi/imd/p7/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). The checker printed `ok`.
The checker prints `ok`. Answer: **17°C**, from the routine METAR `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` (last routine METAR at/before 1700Z, IEM ASOS archive, filtered to report_type=3 to exclude SPECI/AUTO interim obs). `artifacts/answer.json` is written and validated.
Created [artifacts/answer.json](/home/imdworker/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with **18°C**, taken from the 16:55Z METAR’s `18/12` group in the [Iowa Environmental Mesonet archive](https://mesonet.agron.iastate.edu/cgi-bin/request/asos.py?station=BIL&data=metar&year1=2026&month1=9&day1=23&hour1=16&year2=2026&month2=9&day2=23&hour2=17&tz=UTC&format=comma&latlon=no&elev=no&missing=empty&trace=T&direct=no&report_type=1). The checker prints `ok`.
The check passes with `ok`. **Answer: 17°C** Source: IEM ASOS/METAR archive (mesonet.agron.iastate.edu), filtered to routine METARs (report_type=3) for KBIL on 2026-09-23. The last routine METAR at or before 1700Z was issued at 1653Z: `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` Temperature/dew-point group `17/12` → 17°C, confirmed by the T-group remark (T0172 → 17.2°C). `artifacts/answer.json` is written and validated by `check-answer.mjs`.
Completed. The answer is **17°C**, based on the 1653Z KBIL METAR. Checker result: `ok` [artifacts/answer.json](</root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json>)
Completed [artifacts/answer.json](/home/imd-worker/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). Answer: 17 °C. The required checker reports `ok`.
Created [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with answer `17`. Validated successfully: `check-answer.mjs` prints `ok`.
Created [artifacts/answer.json](/home/imd/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with answer `17` °C, sourced from the archived raw KBIL METAR. Validation passed: `check-answer.mjs` printed `ok`.
`artifacts/answer.json` records **17°C**, from the 16:53Z routine METAR. The 16:55Z report was AUTO. The checker printed `ok`. Source: [Iowa Environmental Mesonet ASOS archive](https://mesonet.agron.iastate.edu/cgi-bin/request/asos.py?station=BIL&data=all&year1=2026&month1=9&day1=23&year2=2026&month2=9&day2=23&tz=Etc%2FUTC&format=comma&latlon=yes&elev=yes&missing=empty&trace=T&direct=no).
Checker prints `ok`. The last routine METAR for KBIL at or before 17:00Z on 2026-09-23 was `METAR KBIL 231653Z ... 17/12 ...` from aviationweather.gov's data API, giving a temperature of 17°C, written to `artifacts/answer.json`.
The checker passes. `artifacts/answer.json` records the answer as **17°C**, sourced from the METAR `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $`, confirmed identically via both aviationweather.gov's data API and the Iowa Environmental Mesonet ASOS archive — the last routine METAR observation at/before 231700Z.
The last routine METAR was at 16:53Z and reported `17/12`, so the answer is **17°C**. I recorded the raw report and Iowa Environmental Mesonet archive URL in [artifacts/answer.json](/home/imd-worker/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). The required checker printed `ok`.
artifacts/answer.json is untracked (as required) and check-answer.mjs prints `ok`. Answer: 17°C, sourced from the IEM ASOS archive's KBIL 231653Z METAR (`17/12` group).
Completed [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). Answer: 17 °C. Validation: `ok`.
Created [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with answer `17` and archived raw METAR evidence from IEM. Validation passed: `check-answer.mjs` printed `ok`.
Completed [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). Answer: `17` °C, evidenced by the archived `METAR KBIL 231653Z … 17/12 …`. Validation passed: `check-answer.mjs` printed `ok`.
Created [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). Answer: 17 °C, from the 231653Z KBIL METAR body group `17/12`. Validation passed: `check-answer.mjs` printed `ok`.
Completed [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). Answer: `17` °C, from IEM’s archived `KBIL 231653Z ... 17/12 ...` METAR. Validation passed: `ok`.
Created [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with answer `17` °C and archived raw METAR evidence. Validation passed: `check-answer.mjs` → `ok`.
Completed [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). Answer: 17 °C. The checker reports `ok`.
Completed [artifacts/answer.json](artifacts/answer.json). It records **17 °C** and validates successfully (`ok`).
Completed [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). Answer: `17` °C, from `KBIL 231653Z ... 17/12 ...`, archived by the [Iowa Environmental Mesonet](https://mesonet.agron.iastate.edu/sites/obhistory.php?network=MT_ASOS&station=BIL&year=2026&month=09&day=23). Validation passed: `ok`.
artifacts/answer.json is written (untracked, as required) and check-answer.mjs prints "ok". Found the report via IEM ASOS archive: `KBIL 231653Z ... 17/12 ...` — temperature 17°C, the last routine METAR at/before 231700Z. No stray files in git status.
The answer is 17 °C, and `artifacts/answer.json` is written. `check-answer.mjs` prints ok for it. The last routine METAR at or before 17:00 UTC is the 1653Z report. I read it from the Iowa Environmental Mesonet ASOS archive, and it reads: `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` The temperature group is 17/12, so the temperature is 17. The aviationweather.gov API returned "Invalid value for date" for my one query, so I used only the IEM archive. I did not cross-check a second source. The answer file uses recipe kind "panel" and names the IEM archive as its source. The window and request id are copied from `oracle.json`.
Checker prints `ok`. Answer: **17°C**, from the last routine METAR for KBIL at or before 17:00Z on 2026-09-23 — `KBIL 231653Z ... 17/12 A3007 ...` — confirmed identically via the IEM ASOS archive (routine reports only) and aviationweather.gov's data API. `artifacts/answer.json` is written with a `panel` recipe citing both sources and passes the checker.
Created [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with answer `17` (°C), citing the IEM archived raw METAR. Validation passed: `ok`.
Created [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with answer `17` °C, sourced from archived Aviation Weather and IEM METAR records. Validation passed: `check-answer.mjs` printed `ok`.
Clean git status, checker prints "ok". Task complete: answer is 17°C, from METAR KBIL 231653Z ("17/12"), confirmed via both aviationweather.gov and IEM ASOS archive.
Checker passes. The last routine METAR for KBIL at/before 231700Z was `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` (IEM ASOS archive) — temperature **17°C**. `artifacts/answer.json` is written and validated.
Checker passes ("ok") and `git status --porcelain` is clean (artifacts/ is untracked/ignored as expected). Answer: 17°C, from IEM ASOS archive METAR `KBIL 231653Z ... 17/12 ... T01720117 $`, written to artifacts/answer.json.
Checker passes with "ok" and `git status --porcelain` is clean (artifacts/answer.json is untracked output, not tracked by git). **Answer: 17°C** — from METAR `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $`, the last routine KBIL METAR at/before 231700Z (the 231753Z report came after the cutoff). Sourced from the IEM ASOS archive, cross-checked against aviationweather.gov. Written to `artifacts/answer.json`.
Checker prints "ok" and no untracked/changed files show in git status (artifacts/ is gitignored per task rules). Answer: KBIL's last routine METAR at/before 1700Z was 231653Z (`KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $`), from the IEM ASOS archive — temperature **17°C**. Written to `artifacts/answer.json`.
The answer is **17°C**. The IEM archive’s routine 231653Z METAR reports `17/12`; its first value is the air temperature. Created [artifacts/answer.json](/home/worker/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). The required checker printed `ok`.
Checker prints `ok` and git status is clean (artifacts/ is untracked/ignored as expected). Answer: 17°C, sourced from the IEM ASOS archive's KBIL 231653Z METAR (17/12 group).
Completed [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). Answer: 17°C, from `KBIL 231653Z ... 17/12 ...`. Validation passed: `check-answer.mjs` printed `ok`.
Completed [artifacts/answer.json](</var/lib/imd-worker/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json>) with answer `17`. Validation passed: `ok`.
Created [artifacts/answer.json](/home/imdworker/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with answer `17` °C and the archived raw METAR evidence. Validation passed: `check-answer.mjs` printed `ok`.
Completed [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). Answer: 17 °C. The supplied validator reports `ok`.
Done. Found the METAR `KBIL 231653Z ... 17/12 ...` via the IEM ASOS archive — temperature 17°C. Wrote `artifacts/answer.json` (answer "17"), checker prints `ok`, and git status is clean.
Completed [artifacts/answer.json](/root/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json). Answer: **17 °C**, from KBIL’s `231653Z` routine METAR body group `17/12`. Validation passed: `check-answer.mjs` printed `ok`.
Checker prints `ok`. The last routine METAR for KBIL at/before 17:00Z on 2026-09-23 was `METAR KBIL 231653Z ... 17/12 ...` (aviationweather.gov Data API), giving a temperature of **17°C**. Written to `artifacts/answer.json`.
Checker passed. The last routine METAR for KBIL at/before 17:00 UTC was `KBIL 231653Z ... 17/12 ...`, giving a temperature of **17°C**, sourced from the IEM ASOS archive. `artifacts/answer.json` is written and validated.
Checker prints `ok` and `git status --porcelain` is clean (artifacts/ is untracked and correctly excluded). **Answer: 17°C.** KBIL 231653Z METAR: `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` (source: IEM ASOS archive, routine METARs only). Written to `artifacts/answer.json`.
The answer is **17 °C**, from the `17/12` group in KBIL’s 23 September 2026 16:53Z routine METAR. I wrote [artifacts/answer.json](/home/imd/.identitymd/work/d7616b22-cd54-47ee-8c83-e6b93599c7bf/0a8555ed-34e9-4d00-bb61-4169791dffd3/artifacts/answer.json) with the archived report and source. The supplied checker printed `ok`.
Checker prints "ok" and git status is clean (artifacts/ is untracked/ignored as expected). Answer: 17°C, from KBIL METAR 231653Z "17/12" via IEM ASOS archive.
Done. Answer: 17°C, sourced from the IEM ASOS archive METAR `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $`, the last routine METAR at/before 231700Z. `artifacts/answer.json` written and validated with `ok`.
The answer is 17 °C, and `check-answer.mjs` prints `ok` for `artifacts/answer.json`. The last routine METAR at or before 17:00 UTC was the 16:53Z one. The next report, 17:53Z, is outside the cutoff. The raw report, from the aviationweather.gov data API: `METAR KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` The temperature/dew-point group is `17/12`, so the temperature is 17. The listing showed only METAR reports for that window, with no SPECI in between. I used only the one archive, not a second source. The file uses recipe kind `panel`, with the API URL as the source and the raw report quoted in `notes`. The pinned window is copied as given in `.imd/reads/oracle.json`.
Clean (artifacts/answer.json is an untracked output, delivered separately). Task complete: `artifacts/answer.json` written with answer 17°C, sourced from the IEM ASOS archive METAR `KBIL 231653Z ... 17/12 ...`, and `check-answer.mjs` prints `ok`.
Checker prints `ok`. The last routine KBIL METAR at/before 1700Z (231653Z) reported temperature 17°C, sourced from the IEM ASOS archive; `artifacts/answer.json` is written.
Done. artifacts/answer.json written with answer 17 (from KBIL 231653Z METAR, 17/12), checker prints "ok", and git status is clean (untracked artifacts file expected to be uploaded separately).
Checker prints `ok` and git status is clean (artifacts/answer.json is untracked/output, not staged). Answer: **17°C**, from KBIL METAR 231653Z (`17/12`), via IEM ASOS archive.
Checker prints `ok`. The last routine METAR for KBIL at/before 1700Z on 2026-09-23 was `231653Z ... 17/12 ...` (source: IEM ASOS archive), temperature 17°C, written to `artifacts/answer.json`.
The answer is 17 °C, and `artifacts/answer.json` passes `check-answer.mjs`, which printed `ok`. The last routine METAR at or before 17:00 UTC is the 1653Z report. It is a METAR, not a SPECI. The Iowa Environmental Mesonet ASOS archive (station BIL) gives: `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` The temperature/dew-point group reads 17/12, so the temperature is 17 °C. I used only that one source. The file uses recipe kind `panel`, and the window and request id are copied from `.imd/reads/oracle.json`. The checker first rejected the window because its keys were in a different order from the brief's. I reordered them to `toBlock`, `fromBlock`, `toBlockHash`, and it then passed.
The answer is 17 °C, and `artifacts/answer.json` is written. `check-answer.mjs` prints ok for it. The last routine METAR at or before 17:00 UTC was the 231653Z report. I read it from the Iowa Environmental Mesonet ASOS archive (station KBIL): `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` The temperature/dew-point group is 17/12, so the temperature is 17. The archive listed no SPECI reports between 15:00 and 18:00 UTC. The reports either side were 231553Z (15/12) and 231753Z (19/11), which fall outside the cutoff or before this one. I used one source only. The file uses recipe kind `panel`, with the chain, block window and closing hash copied from `.imd/reads/oracle.json`.
The answer is 17 °C, and `artifacts/answer.json` passes `check-answer.mjs` (it printed `ok`). The source is the aviationweather.gov data API. The last routine METAR for KBIL at or before 17:00 UTC on 23 September 2026 was the 231653Z report: `METAR KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` The temperature/dew-point group reads 17/12, so the temperature is 17. The next report, 231753Z, falls after 17:00. I only checked that one source, since the task allowed one or two. The recipe kind is `panel`, with that source named. The chain, window and closing hash are copied from `.imd/reads/oracle.json`.
The answer is 17 °C, and `artifacts/answer.json` is written; `check-answer.mjs` prints ok for it. The report is the 1653Z METAR for KBIL on 23 September, read from the aviationweather.gov data API: `METAR KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` The next report, 231753Z, falls after 17:00 UTC, so 1653Z is the last one at or before the cutoff. The recipe kind is "panel", with the API URL as the source. The checker rejected my first version because the `window` keys were in a different order from the brief. I reordered them to match `.imd/reads/oracle.json`.
The answer is 17 °C, and `artifacts/answer.json` is written and passes `check-answer.mjs` (it printed `ok`). The last routine METAR for KBIL at or before 17:00 UTC on 23 September 2026 is the 231653Z report. The next routine report, 231753Z, falls after the cutoff. The raw report, from the aviationweather.gov data API, reads: `METAR KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` Its temperature/dew-point group is 17/12, so the temperature is 17. I could not cross-check against a second source. The Iowa Environmental Mesonet archive refused the request as rate-limited, so the answer rests on aviationweather.gov alone. The recipe kind is `panel`, with that API as the source.
The answer is 17 °C, and `artifacts/answer.json` is written; the checker prints `ok`. The last routine METAR at or before 231700Z is the 231653Z report, read from the aviationweather.gov data API: `METAR KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` The temperature/dew-point group reads 17/12, so the temperature is 17. The next routine METAR (231753Z) is after the cutoff, and the 231115Z report is a SPECI, so neither counts. The file uses recipe kind `panel`, with the API URL as the source. The `window` object needed its keys in the order the brief gives (`toBlock`, `fromBlock`, `toBlockHash`) before the checker accepted it.
The answer is 17 °C, and `artifacts/answer.json` is written; the checker prints ok for it. The last routine METAR at or before 231700Z is the 231653Z report, which reads: `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` The temperature/dew-point group is 17/12, so the temperature is 17 °C. I read it from the Iowa Environmental Mesonet ASOS archive (station KBIL). The reports on either side of it (15:53Z and 17:53Z) fall outside the "at or before 17:00 UTC" cutoff. The recipe is kind "panel" with that archive as the source. The window is copied from `oracle.json`. The first write failed the checker because the window keys were in a different order than the brief's; I reordered them to match.
The answer is 17 °C, and `artifacts/answer.json` is written; `check-answer.mjs` prints ok. The last routine METAR at or before 231700Z is the 231653Z report. I read it from the Iowa Environmental Mesonet ASOS archive. The raw report is: `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` The temperature/dew-point group in the body reads 17/12, so the temperature is 17. The recipe kind is `panel`, with the archive named as the source. I used one source rather than two. The checker first rejected the file because the `window` keys were in the wrong order. I reordered them to match `.imd/reads/oracle.json` exactly.
The answer is 17 °C. `artifacts/answer.json` is written and the checker prints `ok`. The last routine METAR at or before 17:00 UTC is the 231653Z report, from the Iowa Environmental Mesonet ASOS archive: `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` The temperature group reads 17/12, so the temperature is 17 °C. The recipe kind is `panel` and it names that source. I read only the one source, with no second archive cross-check.
The answer is 17 °C, and `artifacts/answer.json` is written; `check-answer.mjs` prints `ok`. The last routine METAR at or before 231700Z is the 231653Z report from KBIL. I read it from the Iowa Environmental Mesonet ASOS archive. The raw report is: `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` Its temperature/dew-point group is 17/12, so the temperature is 17. The panel recipe names the archive as its source, and the notes quote the raw report. The first check failed because my `window` keys were in the wrong order. The checker wants `toBlock` before `fromBlock`, and I reordered them.
The answer is 17 °C, and `artifacts/answer.json` is written; the checker prints `ok`. The last routine METAR at or before 17:00 UTC is the 1653Z report, from the Iowa Environmental Mesonet ASOS archive (station BIL). The raw report is: `KBIL 231653Z 23010KT 10SM FEW060 SCT100 SCT220 17/12 A3007 RMK AO2 SLP161 T01720117 $` The body's temperature/dew-point group reads 17/12, so the temperature is 17. The T-group in the remarks (T01720117) gives 17.2 °C, but the definition says to use the whole-degree figure from the body. The recipe is kind `panel`, with the archive named as the source. The window, request id and chain are copied from `.imd/reads/oracle.json`.
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.