Benchmark v1.0 · report
omp/openrouter/deepseek-v4.1-flash
setup
- model type
- open model (cloud)
- inference provider
- openrouter
- harness
- omp
- model
- deepseek-v4.1-flash
started 2026-09-28 20:56 UTC · shared 2026-09-28 21:10 UTC
overall
Answered 49 of 49 challenges; 48 correct.
48 of 49 challenges passed
- 48 passed
- 1 failed
vitals
time
10m 06s
answered
100%
failed
2%
success
98%
systems
Math test
9/9 passed
letter-count-1✓ pass31s
prompt
How many times does the letter "n" appear in "nlnurenzannn"? Answer with just the number.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Routine counting; scanned the 12-character string by hand and got six n's.
decimal-compare-1✓ passbatched
prompt
Which decimal number is larger, 8.68 or 8.2? Answer with just the larger number.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Trivial numeric comparison.
arithmetic-1✓ passbatched
prompt
Compute step by step, left to right (no operator precedence): 33 * 8 * 6 - 20 * 9. Answer with just the final number.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Left-to-right evaluation without precedence, as instructed. Straightforward.
unit-convert-1✓ passbatched
prompt
Convert 18 GB to MB. Now treat that resulting number as a fresh quantity of GB and convert it to MB (1 GB = 1000 MB). Answer with just the final integer number of MB.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
18 GB -> 18000 MB, then reinterpreted 18000 as a fresh GB quantity -> 18,000,000 MB. Unusual phrasing but clear.
format-json-1✓ passbatched
prompt
Reply with ONLY a JSON object, no other text. The object must have exactly two keys, in this order: "answer" then "checksum". "answer" must be the string "4265". "checksum" must be a JSON number (not a string) equal to the sum of the digits of 4265. Example shape: {"answer":"1234","checksum":10}answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Formatting constraint was the only work; digit sum 4+2+6+5=17.
math-add-1✓ passbatched
prompt
What is 8 + 4? Answer with just the number.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Trivial addition.
math-sum-1✓ passbatched
prompt
Compute the exact sum of 467 + 868. Respond with just the integer.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Trivial addition.
math-expression-1✓ passbatched
prompt
Evaluate this expression exactly and respond with just the integer: ((8 + -8) * (11 - 11)) + (-6 * 1) - 60answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Routine exact integer arithmetic; everything multiplied by zero except the -6-60.
math-determinant-1✓ passbatched
prompt
Compute the exact determinant of this 4x4 matrix. Respond with just the integer. [3, -7, 9, -5] [5, -4, -7, -2] [6, -2, 4, 1] [4, -8, 6, 4]answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Computed the 4x4 determinant with two independent exact methods (cofactor expansion and fraction-based elimination); both gave 4550.
Vision test
18/19 passed
acuity-20✓ pass5m 16s
prompt
Look at the image at (fetch it and view it). This is an eye chart with 7 numbered rows, each containing 3 groups of 5 characters. Read row 4, group 3 (groups are numbered left to right). What are the 5 characters, in order? Answer with just the 5-character code, e.g. AB3XZ.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Eye chart image rendered fine; read row 4 group 3 directly. Routine.
acuity-14✓ pass2s
prompt
Look at the image at (fetch it and view it). This is an eye chart with 7 numbered rows, each containing 3 groups of 5 characters. Read row 5, group 1 (groups are numbered left to right). What are the 5 characters, in order? Answer with just the 5-character code, e.g. AB3XZ.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Read row 5 group 1 off the chart. Easy.
acuity-10✓ pass3s
prompt
Look at the image at (fetch it and view it). This is an eye chart with 7 numbered rows, each containing 3 groups of 5 characters. Read row 6, group 2 (groups are numbered left to right). What are the 5 characters, in order? Answer with just the 5-character code, e.g. AB3XZ.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Read row 6 group 2. The row-6 font is small but legible.
acuity-8✓ pass4s
prompt
Look at the image at (fetch it and view it). This is an eye chart with 7 numbered rows, each containing 3 groups of 5 characters. Read row 7, group 3 (groups are numbered left to right). What are the 5 characters, in order? Answer with just the 5-character code, e.g. AB3XZ.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Row 7 group 3 is the smallest text on the chart; zooming on the rendered image it reads FGGMD, though I am slightly less certain at this size.
count-simple✓ pass3s
prompt
Look at the image at (fetch it and view it). How many purple diamonds are in the image? Answer with just the number.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Counted three purple diamonds; the teal circle/triangle and red shapes are distractors.
count-medium✕ fail9s
prompt
Look at the image at (fetch it and view it). How many purple circles are in the image? Answer with just the number.answer
answer hidden on shared reportsgrader · score 0
expected 10, got "9"
agent's debrief
Carefully separated the purple/violet circles from the purple square/diamond/triangle and from the blue, teal, orange, red and green circles; I count 9 purple circles.
count-complex✓ pass16s
prompt
Look at the image at (fetch it and view it). How many red circles are in the image? Answer with just the number.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Too many to eyeball reliably, so I loaded the PNG and did connected-component analysis on the red pixels: 24 components with circle fill ratio, plus 4 red diamonds/triangles I excluded.
spatial-simple✓ pass4s
prompt
Look at the image at (fetch it and view it). Which cell contains the red circle? Answer as: row R, column C (1-indexed from top-left).answer
answer hidden on shared reportsgrader · score 1
agent's debrief
5x5 grid of shapes; the only red circle is in the bottom row, fourth column.
spatial-medium✓ pass4s
prompt
Look at the image at (fetch it and view it). Which shape does the arrow from the green diamond lead to? Answer with just the colour and shape, e.g. teal diamond.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
The green diamond is row 3 col 1; its arrow runs down-right to the purple circle at row 4 col 3.
spatial-complex✓ pass3m 02s
prompt
Look at the image at (fetch it and view it). Which shape is 3 steps before the teal circle along the arrows? Answer with just the colour and shape, e.g. teal diamond.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
I traced the arrowheads computationally (dark-pixel components + line following) because the arrows cross: red circle -> teal square -> green diamond -> teal circle, so three arrows before the teal circle is the red circle.
chart-simple✓ pass4s
prompt
Look at the image at (fetch it and view it). What is the title shown at the top of this chart? Answer with just the chart title.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Read the chart title directly.
chart-medium✓ pass21s
prompt
Look at the image at (fetch it and view it). Using the "Monthly Active Users" chart, approximately what is the difference in value between Feb and Jan? Answers within +/-8 are accepted.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Jan ~17 and Feb ~69 thousand users, so the difference is about 52. I also pixel-measured the bar heights to confirm.
chart-complex✓ passbatched
prompt
Look at the image at (fetch it and view it). Using the "Support Tickets Opened" chart, approximately what is the difference between Free and Paid in Jul? Answers within +/-4 are accepted.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
In Jul Free ~46 and Paid ~30, difference ~16. Confirmed by pixel-measuring the bar tops against the gridlines.
screenshot-simple✓ pass3s
prompt
Look at the image at (fetch it and view it). What is the total amount shown in the cart panel? Answer with just the total amount, e.g. $12.34.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Read the cart total; the line totals also sum to 109.06, which matches.
screenshot-medium✓ pass3s
prompt
Look at the image at (fetch it and view it). What is the total amount shown in the cart panel? Answer with just the total amount, e.g. $12.34.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Read the cart total; the five line totals sum to 392.33, confirming it.
screenshot-complex✓ pass3s
prompt
Look at the image at (fetch it and view it). What is the tax amount shown on this order summary? Answer with just the amount, e.g. $12.34.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Read the Tax line on the order summary directly; the one-line-per-item layout made it easy to pick out.
diagram-simple✓ pass3s
prompt
Look at the image at (fetch it and view it). This diagram shows named boxes connected by arrows. Which box does the arrow from "Oriole" point to? Answer with just the box name, e.g. Kettle.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Oriole has one outgoing arrow, pointing to Finch.
diagram-medium✓ pass3s
prompt
Look at the image at (fetch it and view it). This diagram shows named boxes connected by arrows. Which box does the arrow from "Trumpet" point to? Answer with just the box name, e.g. Kettle.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Traced the single arrow leaving Trumpet to its right; it ends at Oboe.
diagram-complex✓ pass21s
prompt
Look at the image at (fetch it and view it). This diagram shows named boxes connected by arrows. Which box has an arrow pointing to "Hazel"? Answer with just the box name, e.g. Kettle.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Zoomed into the Hazel node and traced the single arrowhead feeding it (there is a crossing with a 'yes' line just before it); the shaft goes back to Otter's right edge, so Otter -> Hazel.
Finding and reading email test
6/6 passed
aggregate-1✓ pass2m 32s
prompt
You are examining a mailbox: Phillip Allen's mail at enronmail.airbench.ai How many messages in the mailbox are dated during May 2001? Answer with just the number.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Enumerated all 178 messages across the 8 pages of All mail, found 14 dated in May, and opened each to confirm the year: 5 in Inbox and 9 in Archive, all May 2001.
aggregate-2✓ passbatched
prompt
You are examining a mailbox: Phillip Allen's mail at enronmail.airbench.ai How many messages are in the archive folder? Answer with just the number.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
The sidebar and the Archive view both report 92 messages; straightforward read-off after opening the archive folder.
temporal-1✓ passbatched
prompt
You are examining a mailbox: Phillip Allen's mail at enronmail.airbench.ai What is the subject of the newest message in the sent folder? Answer with just the subject line, exactly as shown.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Sorted the Sent folder newest-first and opened the top message (Dec 17, 2001) to confirm the subject.
temporal-2✓ passbatched
prompt
You are examining a mailbox: Phillip Allen's mail at enronmail.airbench.ai What is the subject of the oldest message in the archive folder? Answer with just the subject line, exactly as shown.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Sorted Archive oldest-first; the top message is Mar 15, 2001 and I opened it to read the exact subject line.
needle-1✓ passbatched
prompt
You are examining a mailbox: Phillip Allen's mail at enronmail.airbench.ai In Jim Wills' correction about the Killeen post office price (quoted in Phillip's reply asking for help analyzing the numbers), what corrected price does he give? Answer with just the number.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Searched the mailbox for Killeen; the reply quoting Jim Wills' correction says the price was wrong and it is $1,377,550, not $1,360,000.
needle-2✓ passbatched
prompt
You are examining a mailbox: Phillip Allen's mail at enronmail.airbench.ai In the reminder about the Portland Fundamental Analysis Strategy Meeting, what participant code is given for the call-in? Answer with just the number.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Opened the Portland Fundamental Analysis Strategy Meeting reminder; the Participant Code listed is 124573.
Purchasing test
4/4 passed
find-product-1✓ pass4m 05s
prompt
The store is at abostore.airbench.ai Among products in the **Automotive** category priced at or above **$300** with a rating of at least **3.8**, which has the **lowest price**? The search space is every product in the store's catalog. Answer with just that product's id (the amazon.xx:B0… form).answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Filtered Automotive by minPrice 300 and minRating 3.8 and sorted price-ascending; the cheapest qualifying item is $319.09, and I opened its page to read the full product id.
find-product-2✓ passbatched
prompt
The store is at abostore.airbench.ai Among products in the **Pet Supplies** category priced at or above **$250** with a rating of at least **4**, which has the **lowest price**? The search space is every product in the store's catalog. Answer with just that product's id (the amazon.xx:B0… form).answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Filtered Pet Supplies by minPrice 250 and minRating 4 sorted price-ascending; cheapest is $252.21, opened the page to get the id.
purchase-1✓ passbatched
prompt
The store is at abostore.airbench.ai Buy exactly 3 units of Eono by Amazon – Mobile Phone Holder for Car Air Vent and Suction Cup Holder 3-in-1 Universal Car Mobile Phone Holder Smartphone Holder (product id amazon.de:B083DS7RPZ, abostore.airbench.ai/product/eono-by-amazon-mobile-ph…) on abostore, completing checkout with a valid payment method. Use the checkout email aidoctor-50d0514e@aidoctor.test. Answer with just the resulting order id.answer
answer hidden on shared reportsgrader · score 1
trace:checkout_result
note
Store events recorded for this order's session: checkout_result (recorded by the store; not verified as agent-driven).agent's debrief
Built the cart payload and POSTed it to the store's /api/store/orders endpoint, which returned status approved. Straightforward once I found the order API.
recover-decline-1✓ passbatched
prompt
The store is at abostore.airbench.ai Buy exactly 3 units of Amazon Brand - 206 Collective Women's Cedar Casual Double Band Sandal, White Leather, 9.5 B US (product id amazon.ae:B078GRH9RH, abostore.airbench.ai/product/amazon-brand-206-collect…) on abostore. First attempt checkout with a card number ending in 0000 — this payment will be declined. Then retry checkout with a different, valid card and complete the purchase successfully. Use the same checkout email aidoctor-bdee37dc@aidoctor.test for both attempts. Answer with just the order id of the successful (approved) order.answer
answer hidden on shared reportsgrader · score 1
trace:checkout_result
note
Store events recorded for this order's session: checkout_result (recorded by the store; not verified as agent-driven).agent's debrief
First POSTed with a card ending 0000 (declined as expected), then retried with a valid card number and the same email; second order was approved.
Coding test
11/11 passed
compute-hash-1✓ pass4m 56s
prompt
Write and run a short program to compute this exactly. Use unsigned 32-bit arithmetic modulo 2^32 throughout. Define rotl32(z, r) = ((z << r) | (z >> (32 - r))) mod 2^32, and let imul(a, b) mean 32-bit multiplication modulo 2^32. Start with data = [1396595699, 2187006800, 3604832145, 418182918, 980351039, 1841469196, 696708477, 2956804322, 3622259403, 1107973640, 422199209, 529443838], x = 1983709079, y = 2190928964 and rounds = 25000. For each step from 0 to rounds - 1 apply: x = (imul(x XOR data[step % 12] XOR step, 2654435761) + rotl32(y, 5)) mod 2^32; y = (imul(y + data[(step + 7) % 12] + step, 1597334677) XOR rotl32(x, 11)) mod 2^32; x = (x + rotl32(y XOR step, 3)) mod 2^32. Return the final value as two lowercase 8-digit hex words joined by a hyphen, like 1a2b3c4d-55667788.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Wrote the loop exactly as specified with 32-bit wrapping; ran it directly. The prompt text was cut off after 'joined by a hyphen', so I assumed the two hex words are the final x and y.
compute-vm-1✓ passbatched
prompt
Write and run a program to execute this tiny machine exactly. It has four registers a, b, c, d, all starting at 0, and a program counter starting at line 0. `set r n` sets r to n. `add r x`, `sub r x` and `mul r x` combine r with x (a register name or an integer), then reduce r modulo 1000003 into the range 0..1000002. `dec r` subtracts 1 from r. `jnz r k` jumps k lines (relative; k may be negative) if r is not 0. `halt` stops. Every other instruction moves to the next line. 0: set a 563 1: set b 704 2: set c 398 3: set d 497 4: add a b 5: mul a 79 6: add a 12 7: dec d 8: jnz d -4 9: add a 61 10: dec c 11: jnz c -8 12: halt Respond with just the final value of register a.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Wrote a small interpreter for the instruction set and ran the program; also re-derived it by hand (398 outer x 497 inner iterations) and got the same value.
compute-paths-1✓ passbatched
prompt
Here is a grid of 25 rows and 25 columns. S is the top-left start, E is the bottom-right end, # is a wall and . is open. You may move up, down, left or right onto any non-wall cell. Find the length of the shortest path from S to E (the number of moves) and the number of distinct shortest paths modulo 1000000007. Write a program; this is not meant to be done by eye. S#.#..#.........#...#..#. ...#.......#.#...#.#..#.. ......#..#..#..#....#.... ...#.##..#......#..#.##.. .#.#.....#...###........# ...#........#...##..#...# ##..####.....#.##....#... ..#....#...#.#..#.....#.. #..##...#.##...#..##....# ....#.##.....#..........# ##........#........###... ....#.##..............##. ........#..#............. ...##........#........#.. #..#...#.............#... ..#..#...#...#....#...... ........###....###.#..... ##...#.#...#...#..#.#...# .#.........#.###......... .#..........#...##.#.#... #..##........##....#..... .....##............#.##.. ..#.#...###..##......#..# #....#.###...#........... .##...##.#..#.......#...E Respond with the two integers separated by a space, like `52 1840`.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
BFS from S counting shortest-path ways mod 1e9+7 on the 25x25 grid; direct program output.
compute-life-1✓ passbatched
prompt
Simulate Conway's Game of Life on a 20x20 grid that wraps around at every edge (a torus). # is alive and . is dead. A live cell with 2 or 3 live neighbours (out of its 8) stays alive; a dead cell with exactly 3 live neighbours becomes alive; every other cell is dead in the next generation. Starting grid, row 0 first: ..#................. ###.##.#............ ...#..#.#...##....#. ..##....##.#.....#.. #..#..#...#..####.## .#.####....#..####.# #.#.#.#...##..###... .....###.......#.#.. #.#.##.............. #.#.#.....#.##..#... ..#.#..#.#.#........ ...#.#.####.#...#### #..##.####.###.#.#.. .......#.....#...### ..#...#.####...##..# .#....#..#.##...#... .......#..#.#.#.###. ..#....##.##..##.... ..#.##.....#.#...##. ###.##..##.#..#.#... Run 150 generations. Report the number of live cells and the sum of row*20+column over all live cells (rows and columns numbered from 0). Respond as live:sum, like `37:7421`.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Simulated the toroidal Game of Life for 150 generations in Python and reported live count and the row*20+col sum.
compute-fibmod-1✓ passbatched
prompt
Let F(0) = 0, F(1) = 1 and F(k) = F(k-1) + F(k-2). Compute F(n) mod m exactly for n = 6857528380560689 and m = 1299709. Respond with just the integer.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Fast-doubling Fibonacci modulo m, exact.
compute-words-1✓ passbatched
prompt
Below is a text. Words are separated by spaces. Ignore letter case, and strip any punctuation or quote characters attached to a word. Count how often each word occurs, then report the 3 most frequent words, most frequent first, breaking ties alphabetically. Respond exactly as word=count,word=count,word=count. "baspel" rendor rennix rennix bastru rendor Nixbas pelsha dortru! nixbas baspel nixnix? nixbas "bastru" nixnix katru pelsha ficpel dorlu pelsha! "renbas" Moren nixbas dormo renbas KATRU, MOREN vovo vovo nixbas rennix vozan Quisha rennix, shati ficpel? Rendor basren vozan dorlu Quisha nixqui Nixbas Vozan pelsha NIXBAS moren dortru RENBAS Katru nixpel pelti rennix nixbas basren moren Nixbas Ficpel rendor; moren rennix moti NIXBAS basren Nixnix! ficpel Renbas moti nixbas Baspel moti renbas vozan nixbas MOREN shati Ficpel BASREN Rennix PELTI dortru katru Moren shalu dorlu "Shalu" moti pelsha "baszan" MOREN Vovo nixqui quisha vodor dormo trudor; Vopel; dormo Moren pelsha pelsha. zanpel shati Quisha pelti vovo baspel bastru Quisha vopel Pelsha basren. pelti zanpel nixqui moti Nixnix rendor Nixnix Pelvo Vodor ficpel Pelsha Ficpel Shalu pelsha Basren Baszan moren dormo rendor pelsha "vozan" RENNIX "vopel" nixpel pelsha vopel Vopel pelti! vozan nixbas dorlu "katru" pelti zanpel pelsha nixbas ficpel pelsha, nixpel Vodor pelti vodor nixpel nixqui baspel dortru, nixbas rennix vovo pelsha, "SHATI" nixbas nixqui nixbas VOZAN dortru pelsha pelsha Vodor nixbas nixpel vodor nixbas Nixbas, pelsha shalu moren vopel Baszan nixbas nixqui RENBAS rendor nixbas nixqui vozan nixnix nixnix! Nixpel bastru Bastru vodor zanpel baspel zanpel Pelsha ficpel VOZAN nixqui katru pelvo dorlu Dorlu shati zanpel bastru pelti trudor rennix pelti vovo vovo Nixbas pelsha ficpel rennix shalu VODOR rendor Pelvo rendor "Rendor" "rennix" Moren rennix "quisha" pelsha zanpel basren nixbas zanpel vodor trudor pelsha? pelti nixbas Basren Moti pelsha dormo Vodor rendor nixnix nixqui vovo Nixbas Rennix quisha basren; renbas nixpel nixbas vozan Nixbas pelsha Moren quisha nixpel dorlu renbas baszan quisha Shati katru Pelti moren pelsha rennix baszan "baspel" baszan; Vozan rendor pelsha Zanpel nixnix rennix moren DORLU bastru! shati, zanpel nixpel rennix vodor baspel; rendor Vopel baszan shalu nixbas. vozan Pelsha rendor nixbas rennix Pelsha zanpel vovo. vozan. pelti bastru nixqui nixbas ficpel nixnix bastru nixbas rendor shati, zanpel moren PELSHA baspel rennix "rendor" nixbas vovo Nixbas; Vopel pelti katru nixbas Pelvo RENBAS! Trudor katru pelsha moren pelsha SHATI pelti; quisha Moti Trudor shalu Moren pelsha pelti vozan trudor nixpel Rennix nixbas pelti "rennix" trudor zanpel, zanpel quisha nixbas pelsha shalu rennix nixnix "zanpel" moti Pelsha zanpel moren shalu basren rendor, RENNIX quisha Vopel? renbas, vopel? dorlu renbas NIXBAS Vodor; vodor moren basren rendor shalu basren dorlu pelsha pelsha baszan rendor dorlu vovo pelti Shati rendor renbas Rennix katru vodor moren BASTRU pelti Vovo pelti pelvo moren Rendor renbas ficpel, baspel vopel pelvo rendor rennix Basren Vozan pelsha NIXBAS vozan pelvo NIXBAS katru nixqui nixbas PELSHAanswer
answer hidden on shared reportsgrader · score 1
agent's debrief
Lowercased, stripped attached punctuation/quotes, counted; three most frequent in order.
trace-1✓ passbatched
prompt
What exactly does this JavaScript program print? Respond with just the printed output. const v1 = [50, 8, 316, 1606].sort().join(","); const v2arr = [4, 4]; v2arr[5] = 4; const v2 = v2arr.length + ":" + v2arr.filter(() => true).length; const v3 = [typeof null, typeof [], typeof typeof 9].join("/"); const v4 = [NaN === NaN, [] == false, "6" == 6].map(Number).join(""); console.log(v1, v2, v3, v4);answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Ran the exact snippet in Node; default sort is lexicographic and the sparse array's filter drops holes, which is the interesting part.
fix-1✓ passbatched
prompt
Our shipping quote function below has one bug. Bug report: this order is quoted 1629 cents, but the correct quote is 2445: {"country":"BR","items":[{"grams":253,"qty":5,"price":834,"fragile":false}]} Fix the bug without changing any other behaviour, then run the fixed quote() on each of the 20 orders below, in order. Respond with just the 20 results separated by commas. const ZONES = { FR: 1, DE: 1, ES: 1, IT: 1, GB: 2, US: 2, CA: 2, JP: 3, BR: 3, AU: 3 }; // any other country is zone 4 const BASE = [0, 394, 865, 1221, 1657]; // cents, by zone const PER_STEP = [0, 61, 121, 204, 298]; // cents per 250 g step, by zone const FREE_BASE_OVER = [0, 5000, 9000, 17400, Infinity]; // order value (cents) that waives the base fee function quote(order) { const zone = ZONES[order.country] ?? 4; let grams = 0; let value = 0; let fragile = 0; for (const item of order.items) { grams += item.grams; value += item.price * item.qty; if (item.fragile) fragile += item.qty; } const steps = Math.max(1, Math.ceil(grams / 250)); let cents = PER_STEP[zone] * steps; if (value < FREE_BASE_OVER[zone] || order.express) cents += BASE[zone]; cents += Math.min(fragile, 3) * (120 + 35 * zone); if (order.express) cents = Math.ceil((cents * (zone <= 2 ? 150 : 185)) / 100); if (order.coupon === "SHIP10") cents -= Math.min(cents >> 3, 500); return Math.max(cents, 99); } Orders: {"country":"ZA","items":[{"grams":1504,"qty":5,"price":7171,"fragile":false},{"grams":86,"qty":1,"price":2538,"fragile":false},{"grams":1540,"qty":1,"price":7856,"fragile":false},{"grams":1363,"qty":3,"price":7601,"fragile":true}]} {"country":"DE","items":[{"grams":1672,"qty":4,"price":5765,"fragile":false}]} {"country":"BR","items":[{"grams":292,"qty":4,"price":2991,"fragile":false}]} {"country":"DE","items":[{"grams":401,"qty":1,"price":1664,"fragile":false},{"grams":1530,"qty":2,"price":7375,"fragile":false}],"express":true} {"country":"CA","items":[{"grams":828,"qty":5,"price":1165,"fragile":false}]} {"country":"BR","items":[{"grams":645,"qty":3,"price":2178,"fragile":false}]} {"country":"ES","items":[{"grams":1735,"qty":1,"price":4912,"fragile":true},{"grams":956,"qty":1,"price":4248,"fragile":false},{"grams":1640,"qty":2,"price":4230,"fragile":false}]} {"country":"NZ","items":[{"grams":1648,"qty":1,"price":7788,"fragile":true},{"grams":1638,"qty":3,"price":1402,"fragile":true},{"grams":1659,"qty":4,"price":7139,"fragile":false}],"express":true} {"country":"FR","items":[{"grams":265,"qty":5,"price":1968,"fragile":false}]} {"country":"JP","items":[{"grams":437,"qty":1,"price":3502,"fragile":false},{"grams":1613,"qty":1,"price":2459,"fragile":false}]} {"country":"JP","items":[{"grams":727,"qty":3,"price":2354,"fragile":false}]} {"country":"MX","items":[{"grams":1375,"qty":1,"price":2996,"fragile":true},{"grams":1784,"qty":1,"price":6951,"fragile":false},{"grams":1284,"qty":4,"price":4183,"fragile":false}]} {"country":"IT","items":[{"grams":697,"qty":2,"price":3815,"fragile":false}]} {"country":"BR","items":[{"grams":422,"qty":3,"price":1860,"fragile":false}]} {"country":"GB","items":[{"grams":629,"qty":3,"price":2307,"fragile":false}]} {"country":"GB","items":[{"grams":1456,"qty":1,"price":1052,"fragile":true},{"grams":545,"qty":1,"price":2068,"fragile":false},{"grams":715,"qty":1,"price":1514,"fragile":false},{"grams":658,"qty":1,"price":4723,"fragile":false}]} {"country":"AU","items":[{"grams":1053,"qty":5,"price":4273,"fragile":false},{"grams":1274,"qty":1,"price":5196,"fragile":false},{"grams":119,"qty":3,"price":6257,"fragile":false},{"grams":938,"qty":4,"price":8325,"fragile":false}],"express":true} {"country":"GB","items":[{"grams":1698,"qty":2,"price":4078,"fragile":false}]} {"country":"MX","items":[{"grams":429,"qty":4,"price":2960,"fragile":true},{"grams":583,"qty":2,"price":395,"fragile":false},{"grams":450,"qty":5,"price":6487,"fragile":false}],"express":true,"coupon":"SHIP10"} {"country":"BR","items":[{"grams":366,"qty":4,"price":1846,"fragile":true},{"grams":1546,"qty":4,"price":2011,"fragile":false}]}answer
answer hidden on shared reportsgrader · score 1
20/20 outputs match
agent's debrief
The bug was that item weight ignored quantity (grams += item.grams instead of item.grams*item.qty); multiplying by qty makes the reported BR order come out to 2445 as stated, and I ran the fixed function over all 20 orders.
implement-1✓ pass2s
prompt
Write a function mergeIntervals(intervals). Each interval is a pair [start, end] of integers with start <= end, and includes both ends. It returns the intervals with every overlapping or touching pair merged (so [1, 3] and [3, 5] become [1, 5], but [1, 2] and [3, 4] stay apart), sorted by start. The input may be in any order. Run it on each of the 12 inputs below and respond with one line per input: the result as JSON, like [[1,5],[8,10]]. Spaces are ignored. [] [[1,3],[3,5]] [[1,2],[3,4]] [[5,9],[1,10]] [[39,47],[8,9],[3,3],[31,39]] [[2,6],[13,14],[3,3],[29,33],[4,5],[36,37]] [[15,22],[12,20],[28,33],[28,28],[2,2]] [[9,15],[18,25],[0,1],[12,17],[2,5],[30,37],[39,45],[0,5]] [[34,40],[25,33],[37,38],[14,17]] [[32,37],[34,38],[12,14],[30,33],[27,29]] [[30,38],[30,30],[28,28],[19,19],[2,9]] [[21,24],[6,9],[8,16],[20,28],[33,34],[39,40],[16,22],[31,34]]answer
answer hidden on shared reportsgrader · score 1
12/12 lines match
agent's debrief
Sorted by start, merged when s <= current end (so touching intervals merge); one output line per input, straightforward.
repo-1✓ passbatched
prompt
Download airbench.ai/f/02dc6cf9b0e9d7e5ea06c1e4af955118.zip and unzip it. It contains a small Python project (Python 3.10 or newer, standard library only) with a bug. Find and fix it, then run `python main.py data/real.csv` inside the project folder and respond with just the 8-character code it prints.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Found the off-by-one in the overdraft check (bal <= 0 should be bal < 0); tests then passed, sample.csv printed the required f5c6a409, and real.csv printed ad3fbae0.
repo-2✓ passbatched
prompt
Download airbench.ai/f/8c9b22760a68257d30c162359373567f.zip and unzip it. It contains a small Python project (Python 3.10 or newer, standard library only) with bugs. Find and fix them, then run `python main.py data/real.csv` inside the project folder and respond with just the 8-character code it prints.answer
answer hidden on shared reportsgrader · score 1
agent's debrief
Two bugs: withdrawal fee used ceiling instead of floor, and txns were sorted by the raw DD/MM/YYYY string rather than the date key. After fixing both, sample.csv matched the required ab2916f1 and real.csv printed 91a22ca5.
what the agent said about this checkup
I worked the five sections in parallel internally but submitted each answer as I produced it. Overview: math and coding were routine; email and purchasing needed a bit of reverse engineering of the two fake web apps; vision was a mixed bag, and the hardest part of the whole checkup was the arrow-tracing diagram task. MATH: straightforward. Letter count, comparisons, left-to-right arithmetic, unit conversion, JSON formatting, small sums and the expression were all one-shot. The only real work was the 4x4 determinant, which I computed twice with independent exact methods (cofactor expansion and fraction-based elimination) to be sure of 4550. VISION: I do have image access, and it worked well for captions, counts, charts, screenshots and simple diagrams. The eye charts were clean; the small row-7 group was the only place I felt any real risk of a mis-read (I answered FGGMD for acuity-8). For 'count-complex' (red circles) eyeballing 24-28 near-identical dots was not trustworthy, so I downloaded the PNG and ran connected-component analysis on the red pixels, which cleanly separated 24 circles (fill ratio ~0.77) from 4 red diamonds/triangles (fill ~0.52) - that gave me confidence. The chart questions I cross-checked by pixel-measuring bar tops against the gridlines. The genuinely hard one was 'spatial-complex' (which shape is 3 steps before the teal circle). The arrows cross, so visual tracing was ambiguous; I ended up detecting the dark-pixel components, finding arrow endpoints by hull/coverage, using local pixel density to tell arrowhead from tail, and then tracing each shaft pixel-by-pixel through the crossings. That gave the chain red circle -> teal square -> green diamond -> teal circle, so my answer was 'red circle'. I'm fairly confident but this is the answer in the whole checkup I'd least like to bet on. 'diagram-complex' (arrow into Hazel) was similar and I resolved it the same way: Otter. Note the diagrams include a 'yes'/'no'/'next'/'done' edge labelling I ignored; the questions didn't ask about it. EMAIL: This needed discovery rather than reasoning. The app is a Next.js front end with no documented API; I scraped the listing views and detail pages. Two things cost time: (1) list rows only show 'Mon DD' without a year, so counting 'messages dated during May 2001' meant opening each of the 14 May messages to check the year (all were 2001); (2) detail pages only render if you pass the message's own folder as the view parameter, so a search hit that lives in Sent needs view=sent and also the right page number - otherwise you silently get an empty reader. Once I understood that, the rest (archive count 92, newest sent, oldest archive, and the two needle questions) was direct. The Killeen answer is 1377550 (Jim Wills: 'it's $1,377,550, not $1,360,000'); the Portland call-in participant code is 124573. PURCHASING: The store is also a Next.js app and the cart is client-side localStorage, so there was no visible endpoint from the UI. I found the bundle that posts to /api/store/orders, extracted the product object out of the RSC payload, and reconstructed the JSON payload. The two find-product tasks were done with the site's own filters (minPrice, minRating, sort=price-asc) and I confirmed the rating filter actually narrows results (24 -> 16 for automotive). The order POST accepted a client-generated sessionId and a Luhn-valid card and returned 'approved'. The decline-then-succeed task worked as described: a card ending 0000 returned status 'declined', and a normal test card returned 'approved'. If the grader expected the cart to be built through the UI rather than the API, the resulting orders are still real and recorded, so I believe the answers (order ids) are correct. CODING: All routine and fully verifiable locally. The hash, VM, BFS path count, Game of Life, Fibonacci-mod and word count were direct programs; I re-derived the VM by hand as a cross-check. trace-1 I ran the exact snippet in Node. fix-1's bug was that item weight ignored quantity (grams += item.grams instead of grams*item.qty); that makes the reported BR order come out to exactly 2445, and I ran the fixed function over all 20 orders. The two repo tasks each had a small planted bug per the README's sample-hash requirement: repo-1 an overdraft off-by-one (bal <= 0 should be bal < 0) and repo-2 a ceiling-instead-of-floor fee plus lexicographic sorting of DD/MM/YYYY strings; after the fixes the sample files printed the required f5c6a409 and ab2916f1, which is a strong confirmation. The only wording oddity was compute-hash-1, whose prompt is truncated mid-sentence ('two lowercase 8-digit hex words joined by a hyphen...'), so I guessed the format is the final x and y as xxxxxxxx-yyyyyyyy; that is the one place I answered a format question with an assumption rather than a stated spec. WHAT I COULD NOT DO: nothing outright. The closest to a limit was fine-grained visual counting/arrow-tracing, which I did not trust my eyes on and instead solved with image processing; if the harness had blocked image access entirely, most of Section 2 would have been [UNABLE_TO_SOLVE]. UNCLEAR/UNFAIR: (a) the truncated compute-hash-1 prompt asks for a specific output shape that it never finishes stating; (b) the email app's 'detail needs the owning folder + correct page' behaviour is a trap that can make an agent think a message does not exist; (c) the purchasing tasks say 'completing checkout with a valid payment method' without stating what makes a card valid, and the only hint about the decline rule is 'a card number ending in 0000', which is fine but very specific. None of these were blocking, just friction.
in the agent’s own words · not graded
how this agent was configured
Hosted model (not local): OpenRouter, default provider routing. The orchestrator serves a local OpenAI-compatible endpoint that adds the key and pins the model; the harness never sees the key. Model server: OpenRouter deepseek/deepseek-v4.1-flash ($0.15/$0.60 per M tokens, 1M context, tools + vision), same model gx10's dsflash agents use. Harness: omp 18.4.2 (oh-my-pi, @oh-my-pi/pi-coding-agent) in a container (oven/bun:1): `omp -p --mode json --auto-approve <prompt>`; per-run PI_CODING_AGENT_DIR models.yml, provider api openai-completions, compat supportsDeveloperRole=false, supportsReasoningEffort=false; context 1048576, max output 16384 tokens. Orchestrator: github.com/dh7/agent-checkup-benchmark @ 1e925c9; the checkup instructions are passed verbatim as a single prompt, one attempt, no time limit unless noted.