{
  "suite": "Luna Practical v1 — common 12",
  "complete": true,
  "code_component_complete": true,
  "method": "12 self-contained tasks, two fresh-context first answers each. Same prompts and predefined tests; no repaired answers.",
  "comparability": "Luna server component Low effort (21 Sep) versus Claude Pro web UI Fable 5.1 Medium effort, incognito (22 Sep). Different product system instructions; not a controlled same-configuration model comparison.",
  "restrictions": "The complete 16-task Luna suite is not compared. No speed ranking. An incomplete overall score is not a final benchmark result. Three Luna code outputs came from unexecuted tool payloads. JSON-with-prose format errors remain failures, with correct content identified separately.",
  "luna": {
    "product": "Luna 7 Mega",
    "channel": "Luna production Provider (stored run)",
    "effort": "unchanged production Provider, default low effort, neutral tone, brief response; no owner custom rules",
    "measured_at": "2026-09-21T18:50:37.989Z",
    "evidence_sha256": "3ac626cf862ffac79ecbdf1f4c40756d7c0345259120adbc072ed5d9204d819c",
    "complete": true,
    "completed_attempts": 24,
    "planned_attempts": 24,
    "passed": 24,
    "groups": {
      "code": {
        "passed": 12,
        "total": 12
      },
      "analysis": {
        "passed": 8,
        "total": 8
      },
      "assistant": {
        "passed": 4,
        "total": 4
      }
    },
    "code_assertions": {
      "passed": 60,
      "total": 60
    },
    "code_tool_payloads": 3,
    "rows": [
      {
        "id": "intervals",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "tools_observed": [
          "write_file"
        ],
        "code_sha256": "bc903d6e7a8d9a25363ded5d0874672685d55de709fcf48ac282cfd53d3e2d64",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                7
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                7
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                2
              ],
              [
                4,
                5
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                2
              ],
              [
                4,
                5
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                -5,
                0
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                -5,
                0
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                9
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                9
              ]
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": true,
        "markdown_present": false,
        "answer": ""
      },
      {
        "id": "csv",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "7fea26249f82d58b9be43437ed57eef4c404d2d0a057f3b4f16755dc28df84b1",
        "tools_observed": [],
        "code_sha256": "7fea26249f82d58b9be43437ed57eef4c404d2d0a057f3b4f16755dc28df84b1",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              [
                "a",
                "b"
              ],
              [
                "c",
                "d"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a",
                "b"
              ],
              [
                "c",
                "d"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a,b",
                "c"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a,b",
                "c"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a\"b",
                "x"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a\"b",
                "x"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a\nb",
                "",
                "c"
              ],
              [
                "x",
                "y",
                "z"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a\nb",
                "",
                "c"
              ],
              [
                "x",
                "y",
                "z"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "",
                ""
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "",
                ""
              ]
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  if (input === \"\") return [];\n\n  const rows = [];\n  let row = [];\n  let cell = \"\";\n  let quoted = false;\n\n  for (let i = 0; i < input.length; i++) {\n    const ch = input[i];\n\n    if (quoted) {\n      if (ch === '\"') {\n        if (input[i + 1] === '\"') {\n          cell += '\"';\n          i++;\n        } else {\n          quoted = false;\n        }\n      } else {\n        cell += ch;\n      }\n    } else if (ch === '\"') {\n      quoted = true;\n    } else if (ch === \",\") {\n      row.push(cell);\n      cell = \"\";\n    } else if (ch === \"\\n\") {\n      row.push(cell);\n      rows.push(row);\n      row = [];\n      cell = \"\";\n    } else {\n      cell += ch;\n    }\n  }\n\n  if (input[input.length - 1] !== \"\\n\") {\n    row.push(cell);\n    rows.push(row);\n  }\n\n  return rows;\n}"
      },
      {
        "id": "topology",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "2572a3769670d01fe5115217519943c6daeacc2ba6c466b3378ebd677c3ced4f",
        "tools_observed": [],
        "code_sha256": "2572a3769670d01fe5115217519943c6daeacc2ba6c466b3378ebd677c3ced4f",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              "a",
              "b",
              "c"
            ],
            "unchanged": true,
            "expected": [
              "a",
              "b",
              "c"
            ],
            "passed": true
          },
          {
            "actual": null,
            "unchanged": true,
            "expected": null,
            "passed": true
          },
          {
            "actual": [
              "a",
              "b"
            ],
            "unchanged": true,
            "expected": [
              "a",
              "b"
            ],
            "passed": true
          },
          {
            "actual": null,
            "unchanged": true,
            "expected": null,
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const adjacency = new Map();\n  const indegree = new Map();\n\n  for (const node of input.nodes) {\n    adjacency.set(node, new Set());\n    indegree.set(node, 0);\n  }\n\n  for (const [a, b] of input.edges) {\n    const neighbors = adjacency.get(a);\n    if (!neighbors.has(b)) {\n      neighbors.add(b);\n      indegree.set(b, indegree.get(b) + 1);\n    }\n  }\n\n  const heap = [];\n\n  function push(value) {\n    let i = heap.length;\n    heap.push(value);\n    while (i > 0) {\n      const parent = (i - 1) >> 1;\n      if (heap[parent] <= value) break;\n      heap[i] = heap[parent];\n      i = parent;\n    }\n    heap[i] = value;\n  }\n\n  function pop() {\n    const minimum = heap[0];\n    const last = heap.pop();\n    if (heap.length > 0) {\n      let i = 0;\n      while (true) {\n        let child = 2 * i + 1;\n        if (child >= heap.length) break;\n        if (child + 1 < heap.length && heap[child + 1] < heap[child]) {\n          child++;\n        }\n        if (last <= heap[child]) break;\n        heap[i] = heap[child];\n        i = child;\n      }\n      heap[i] = last;\n    }\n    return minimum;\n  }\n\n  for (const node of input.nodes) {\n    if (indegree.get(node) === 0) push(node);\n  }\n\n  const result = [];\n  while (heap.length > 0) {\n    const node = pop();\n    result.push(node);\n    for (const neighbor of adjacency.get(node)) {\n      const degree = indegree.get(neighbor) - 1;\n      indegree.set(neighbor, degree);\n      if (degree === 0) push(neighbor);\n    }\n  }\n\n  return result.length === input.nodes.length ? result : null;\n}"
      },
      {
        "id": "money",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "6081b6b15bdd16b24b0a6ff9879c871626990096a3b4bc49d0fd2d35a0e77d1b",
        "tools_observed": [],
        "code_sha256": "6081b6b15bdd16b24b0a6ff9879c871626990096a3b4bc49d0fd2d35a0e77d1b",
        "tests": [
          {
            "actual": [
              0,
              100,
              110,
              101,
              -1
            ],
            "unchanged": true,
            "expected": [
              0,
              100,
              110,
              101,
              -1
            ],
            "passed": true
          },
          {
            "actual": [
              1230,
              205,
              -200
            ],
            "unchanged": true,
            "expected": [
              1230,
              205,
              -200
            ],
            "passed": true
          },
          {
            "actual": [
              null,
              null,
              null,
              null,
              null,
              null,
              null
            ],
            "unchanged": true,
            "expected": [
              null,
              null,
              null,
              null,
              null,
              null,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              0,
              0,
              99999999
            ],
            "unchanged": true,
            "expected": [
              0,
              0,
              99999999
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  return input.map((value) => {\n    if (typeof value !== \"string\") return null;\n\n    const match = /^(-?)([0-9]+)(?:[.,]([0-9]{1,2}))?$/.exec(value.trim());\n    if (!match) return null;\n\n    const fraction = (match[3] || \"\").padEnd(2, \"0\");\n    const cents = BigInt(match[2]) * 100n + BigInt(fraction);\n\n    return Number(match[1] === \"-\" ? -cents : cents);\n  });\n}"
      },
      {
        "id": "ttl",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "177c84b116d22852dbbaf7308b1ae06bc79d84a6fb70021002106960b2dd2142",
        "tools_observed": [],
        "code_sha256": "177c84b116d22852dbbaf7308b1ae06bc79d84a6fb70021002106960b2dd2142",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              1,
              null
            ],
            "unchanged": true,
            "expected": [
              1,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              2,
              null
            ],
            "unchanged": true,
            "expected": [
              2,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              0,
              null
            ],
            "unchanged": true,
            "expected": [
              0,
              null
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const store = new Map();\n  const results = [];\n\n  for (const operation of input) {\n    if (operation.op === \"set\") {\n      store.set(operation.key, {\n        value: operation.value,\n        expiresAt: operation.t + operation.ttl\n      });\n    } else if (operation.op === \"get\") {\n      const entry = store.get(operation.key);\n\n      if (entry === undefined) {\n        results.push(null);\n      } else if (operation.t >= entry.expiresAt) {\n        store.delete(operation.key);\n        results.push(null);\n      } else {\n        results.push(entry.value);\n      }\n    }\n  }\n\n  return results;\n}"
      },
      {
        "id": "path",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "tools_observed": [
          "write_file"
        ],
        "code_sha256": "ba2e525218036cb674412879fa0b7504cf5e5289932f2535b6ea847c89fbbfc3",
        "tests": [
          {
            "actual": 0,
            "unchanged": true,
            "expected": 0,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          },
          {
            "actual": 2,
            "unchanged": true,
            "expected": 2,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          },
          {
            "actual": 4,
            "unchanged": true,
            "expected": 4,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          }
        ],
        "code_returned_via_tool": true,
        "markdown_present": false,
        "answer": ""
      },
      {
        "id": "revenue",
        "repeat": 1,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "cdb6ec4411a8946f1550afb3b09b1b1d2e2e55e142393fc66c5b76d13ee95fde",
        "tools_observed": [],
        "actual": {
          "gross": 2500,
          "refunds": 1000,
          "net": 1500,
          "paid_orders": 3
        },
        "plain_json": true,
        "answer": "{\"gross\":2500,\"refunds\":1000,\"net\":1500,\"paid_orders\":3}"
      },
      {
        "id": "conversion",
        "repeat": 1,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "2170e9a06acbbe8b5ecb26c238ca4afcc847224aabc5f7f46c7a8ac4252e65fb",
        "tools_observed": [],
        "actual": {
          "visitors": 1000,
          "purchases": 65,
          "conversion_pct": 6.5
        },
        "plain_json": true,
        "answer": "{\"visitors\":1000,\"purchases\":65,\"conversion_pct\":6.5}"
      },
      {
        "id": "schedule",
        "repeat": 1,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "e63920e43ca59fa985216d2dfc07d1dbcc667d8bb3e5958f734ece51ede8825f",
        "tools_observed": [],
        "actual": {
          "start": "10:00",
          "end": "10:30"
        },
        "plain_json": true,
        "answer": "{\"start\":\"10:00\",\"end\":\"10:30\"}"
      },
      {
        "id": "missing",
        "repeat": 1,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "c304b59ba302bfc828628c74f0778096eff15d76c2e6a85ae1e1d2bdc3ee76de",
        "tools_observed": [],
        "actual": {
          "can_compute": false,
          "profit": null,
          "missing": [
            "costs"
          ]
        },
        "plain_json": true,
        "answer": "{\"can_compute\":false,\"profit\":null,\"missing\":[\"costs\"]}"
      },
      {
        "id": "card",
        "repeat": 1,
        "category": "assistant",
        "passed": true,
        "answer_sha256": "98b62796de11069de6315d851644fd3923752af733220257f22346c3b7d4a0d5",
        "tools_observed": [],
        "actual": {
          "first_name": "Анна",
          "last_name": "Иванова",
          "city": "Одесса",
          "branch_number": "165",
          "service": "Новая почта"
        },
        "plain_json": true,
        "answer": "{\"first_name\":\"Анна\",\"last_name\":\"Иванова\",\"city\":\"Одесса\",\"branch_number\":\"165\",\"service\":\"Новая почта\"}"
      },
      {
        "id": "no_invent",
        "repeat": 1,
        "category": "assistant",
        "passed": true,
        "answer_sha256": "f61ed53fc8ccb06adf9293d7c1108ab7091ac387849dda8bdfe0e1be522ca0b3",
        "tools_observed": [],
        "actual": {
          "can_see": false,
          "object": null
        },
        "plain_json": true,
        "answer": "{\"can_see\":false,\"object\":null}"
      },
      {
        "id": "intervals",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "2bf4ce74cc19f71daddad600705bb022c0b222f09e57b15b7b52e52f526f1a08",
        "tools_observed": [],
        "code_sha256": "2bf4ce74cc19f71daddad600705bb022c0b222f09e57b15b7b52e52f526f1a08",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                7
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                7
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                2
              ],
              [
                4,
                5
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                2
              ],
              [
                4,
                5
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                -5,
                0
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                -5,
                0
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                9
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                9
              ]
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const sorted = input.map(([start, end]) => [start, end]);\n  sorted.sort((a, b) => a[0] - b[0] || a[1] - b[1]);\n\n  const result = [];\n\n  for (const [start, end] of sorted) {\n    const last = result[result.length - 1];\n\n    if (last && start <= last[1]) {\n      last[1] = Math.max(last[1], end);\n    } else {\n      result.push([start, end]);\n    }\n  }\n\n  return result;\n}"
      },
      {
        "id": "csv",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "7fea26249f82d58b9be43437ed57eef4c404d2d0a057f3b4f16755dc28df84b1",
        "tools_observed": [],
        "code_sha256": "7fea26249f82d58b9be43437ed57eef4c404d2d0a057f3b4f16755dc28df84b1",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              [
                "a",
                "b"
              ],
              [
                "c",
                "d"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a",
                "b"
              ],
              [
                "c",
                "d"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a,b",
                "c"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a,b",
                "c"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a\"b",
                "x"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a\"b",
                "x"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a\nb",
                "",
                "c"
              ],
              [
                "x",
                "y",
                "z"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a\nb",
                "",
                "c"
              ],
              [
                "x",
                "y",
                "z"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "",
                ""
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "",
                ""
              ]
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  if (input === \"\") return [];\n\n  const rows = [];\n  let row = [];\n  let cell = \"\";\n  let quoted = false;\n\n  for (let i = 0; i < input.length; i++) {\n    const ch = input[i];\n\n    if (quoted) {\n      if (ch === '\"') {\n        if (input[i + 1] === '\"') {\n          cell += '\"';\n          i++;\n        } else {\n          quoted = false;\n        }\n      } else {\n        cell += ch;\n      }\n    } else if (ch === '\"') {\n      quoted = true;\n    } else if (ch === \",\") {\n      row.push(cell);\n      cell = \"\";\n    } else if (ch === \"\\n\") {\n      row.push(cell);\n      rows.push(row);\n      row = [];\n      cell = \"\";\n    } else {\n      cell += ch;\n    }\n  }\n\n  if (input[input.length - 1] !== \"\\n\") {\n    row.push(cell);\n    rows.push(row);\n  }\n\n  return rows;\n}"
      },
      {
        "id": "topology",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "238bcb621996b8dbdc31a754d5163212a7b853fae00438b4bfd19c21e3affd2f",
        "tools_observed": [],
        "code_sha256": "238bcb621996b8dbdc31a754d5163212a7b853fae00438b4bfd19c21e3affd2f",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              "a",
              "b",
              "c"
            ],
            "unchanged": true,
            "expected": [
              "a",
              "b",
              "c"
            ],
            "passed": true
          },
          {
            "actual": null,
            "unchanged": true,
            "expected": null,
            "passed": true
          },
          {
            "actual": [
              "a",
              "b"
            ],
            "unchanged": true,
            "expected": [
              "a",
              "b"
            ],
            "passed": true
          },
          {
            "actual": null,
            "unchanged": true,
            "expected": null,
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const adjacency = new Map();\n  const indegree = new Map();\n\n  for (const node of input.nodes) {\n    adjacency.set(node, new Set());\n    indegree.set(node, 0);\n  }\n\n  for (const [a, b] of input.edges) {\n    const neighbors = adjacency.get(a);\n    if (!neighbors.has(b)) {\n      neighbors.add(b);\n      indegree.set(b, indegree.get(b) + 1);\n    }\n  }\n\n  const heap = [];\n\n  function push(value) {\n    let i = heap.length;\n    heap.push(value);\n    while (i > 0) {\n      const parent = (i - 1) >> 1;\n      if (heap[parent] <= value) break;\n      heap[i] = heap[parent];\n      i = parent;\n    }\n    heap[i] = value;\n  }\n\n  function pop() {\n    const minimum = heap[0];\n    const last = heap.pop();\n\n    if (heap.length > 0) {\n      let i = 0;\n      while (2 * i + 1 < heap.length) {\n        let child = 2 * i + 1;\n        if (\n          child + 1 < heap.length &&\n          heap[child + 1] < heap[child]\n        ) {\n          child++;\n        }\n        if (last <= heap[child]) break;\n        heap[i] = heap[child];\n        i = child;\n      }\n      heap[i] = last;\n    }\n\n    return minimum;\n  }\n\n  for (const node of input.nodes) {\n    if (indegree.get(node) === 0) push(node);\n  }\n\n  const result = [];\n\n  while (heap.length > 0) {\n    const node = pop();\n    result.push(node);\n\n    for (const neighbor of adjacency.get(node)) {\n      const degree = indegree.get(neighbor) - 1;\n      indegree.set(neighbor, degree);\n      if (degree === 0) push(neighbor);\n    }\n  }\n\n  return result.length === input.nodes.length ? result : null;\n}"
      },
      {
        "id": "money",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "5165caefeb29c164b8ad72d9a5967c6a605392b3f63c7e98bf3b7bf73fb1b4f8",
        "tools_observed": [],
        "code_sha256": "5165caefeb29c164b8ad72d9a5967c6a605392b3f63c7e98bf3b7bf73fb1b4f8",
        "tests": [
          {
            "actual": [
              0,
              100,
              110,
              101,
              -1
            ],
            "unchanged": true,
            "expected": [
              0,
              100,
              110,
              101,
              -1
            ],
            "passed": true
          },
          {
            "actual": [
              1230,
              205,
              -200
            ],
            "unchanged": true,
            "expected": [
              1230,
              205,
              -200
            ],
            "passed": true
          },
          {
            "actual": [
              null,
              null,
              null,
              null,
              null,
              null,
              null
            ],
            "unchanged": true,
            "expected": [
              null,
              null,
              null,
              null,
              null,
              null,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              0,
              0,
              99999999
            ],
            "unchanged": true,
            "expected": [
              0,
              0,
              99999999
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  return input.map((value) => {\n    const match = /^(-?)([0-9]+)(?:[.,]([0-9]{1,2}))?$/.exec(value.trim());\n    if (!match) return null;\n\n    let rubles = 0;\n    for (const digit of match[2]) {\n      rubles = rubles * 10 + digit.charCodeAt(0) - 48;\n    }\n\n    const fraction = match[3] || \"\";\n    let kopecks = rubles * 100;\n    if (fraction.length >= 1) kopecks += (fraction.charCodeAt(0) - 48) * 10;\n    if (fraction.length === 2) kopecks += fraction.charCodeAt(1) - 48;\n\n    return match[1] && kopecks !== 0 ? -kopecks : kopecks;\n  });\n}"
      },
      {
        "id": "ttl",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "177c84b116d22852dbbaf7308b1ae06bc79d84a6fb70021002106960b2dd2142",
        "tools_observed": [],
        "code_sha256": "177c84b116d22852dbbaf7308b1ae06bc79d84a6fb70021002106960b2dd2142",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              1,
              null
            ],
            "unchanged": true,
            "expected": [
              1,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              2,
              null
            ],
            "unchanged": true,
            "expected": [
              2,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              0,
              null
            ],
            "unchanged": true,
            "expected": [
              0,
              null
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const store = new Map();\n  const results = [];\n\n  for (const operation of input) {\n    if (operation.op === \"set\") {\n      store.set(operation.key, {\n        value: operation.value,\n        expiresAt: operation.t + operation.ttl\n      });\n    } else if (operation.op === \"get\") {\n      const entry = store.get(operation.key);\n\n      if (entry === undefined) {\n        results.push(null);\n      } else if (operation.t >= entry.expiresAt) {\n        store.delete(operation.key);\n        results.push(null);\n      } else {\n        results.push(entry.value);\n      }\n    }\n  }\n\n  return results;\n}"
      },
      {
        "id": "path",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
        "tools_observed": [
          "write_file"
        ],
        "code_sha256": "8d6ceae16b9fd16473d4cb5152db8bd28ea5ae74cbf014eb2ce326bc4e253df5",
        "tests": [
          {
            "actual": 0,
            "unchanged": true,
            "expected": 0,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          },
          {
            "actual": 2,
            "unchanged": true,
            "expected": 2,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          },
          {
            "actual": 4,
            "unchanged": true,
            "expected": 4,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          }
        ],
        "code_returned_via_tool": true,
        "markdown_present": false,
        "answer": ""
      },
      {
        "id": "revenue",
        "repeat": 2,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "cdb6ec4411a8946f1550afb3b09b1b1d2e2e55e142393fc66c5b76d13ee95fde",
        "tools_observed": [],
        "actual": {
          "gross": 2500,
          "refunds": 1000,
          "net": 1500,
          "paid_orders": 3
        },
        "plain_json": true,
        "answer": "{\"gross\":2500,\"refunds\":1000,\"net\":1500,\"paid_orders\":3}"
      },
      {
        "id": "conversion",
        "repeat": 2,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "2170e9a06acbbe8b5ecb26c238ca4afcc847224aabc5f7f46c7a8ac4252e65fb",
        "tools_observed": [],
        "actual": {
          "visitors": 1000,
          "purchases": 65,
          "conversion_pct": 6.5
        },
        "plain_json": true,
        "answer": "{\"visitors\":1000,\"purchases\":65,\"conversion_pct\":6.5}"
      },
      {
        "id": "schedule",
        "repeat": 2,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "e63920e43ca59fa985216d2dfc07d1dbcc667d8bb3e5958f734ece51ede8825f",
        "tools_observed": [],
        "actual": {
          "start": "10:00",
          "end": "10:30"
        },
        "plain_json": true,
        "answer": "{\"start\":\"10:00\",\"end\":\"10:30\"}"
      },
      {
        "id": "missing",
        "repeat": 2,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "c304b59ba302bfc828628c74f0778096eff15d76c2e6a85ae1e1d2bdc3ee76de",
        "tools_observed": [],
        "actual": {
          "can_compute": false,
          "profit": null,
          "missing": [
            "costs"
          ]
        },
        "plain_json": true,
        "answer": "{\"can_compute\":false,\"profit\":null,\"missing\":[\"costs\"]}"
      },
      {
        "id": "card",
        "repeat": 2,
        "category": "assistant",
        "passed": true,
        "answer_sha256": "98b62796de11069de6315d851644fd3923752af733220257f22346c3b7d4a0d5",
        "tools_observed": [],
        "actual": {
          "first_name": "Анна",
          "last_name": "Иванова",
          "city": "Одесса",
          "branch_number": "165",
          "service": "Новая почта"
        },
        "plain_json": true,
        "answer": "{\"first_name\":\"Анна\",\"last_name\":\"Иванова\",\"city\":\"Одесса\",\"branch_number\":\"165\",\"service\":\"Новая почта\"}"
      },
      {
        "id": "no_invent",
        "repeat": 2,
        "category": "assistant",
        "passed": true,
        "answer_sha256": "f61ed53fc8ccb06adf9293d7c1108ab7091ac387849dda8bdfe0e1be522ca0b3",
        "tools_observed": [],
        "actual": {
          "can_see": false,
          "object": null
        },
        "plain_json": true,
        "answer": "{\"can_see\":false,\"object\":null}"
      }
    ]
  },
  "claude": {
    "product": "Claude Fable 5.1",
    "channel": "Claude Pro web UI; usage credits",
    "effort": "Medium",
    "measured_at": "2026-09-22T07:31:29.550Z",
    "evidence_sha256": "0d53c29f1f2fead50ee8010074a65cd7133c230d6673689f03eca2044162a5ad",
    "complete": true,
    "completed_attempts": 24,
    "planned_attempts": 24,
    "passed": 21,
    "groups": {
      "code": {
        "passed": 12,
        "total": 12
      },
      "analysis": {
        "passed": 5,
        "total": 8
      },
      "assistant": {
        "passed": 4,
        "total": 4
      }
    },
    "code_assertions": {
      "passed": 60,
      "total": 60
    },
    "code_tool_payloads": 0,
    "rows": [
      {
        "id": "intervals",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "8adba310cd6d7330de2110ca1512cdef7b98367d980a6ad40308aa83ed51e9d3",
        "tools_observed": [],
        "code_sha256": "8adba310cd6d7330de2110ca1512cdef7b98367d980a6ad40308aa83ed51e9d3",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                7
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                7
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                2
              ],
              [
                4,
                5
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                2
              ],
              [
                4,
                5
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                -5,
                0
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                -5,
                0
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                9
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                9
              ]
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const intervals = input.map(([s, e]) => [s, e]).sort((a, b) => a[0] - b[0] || a[1] - b[1]);\n  const result = [];\n  for (const [s, e] of intervals) {\n    const last = result[result.length - 1];\n    if (last && s <= last[1]) {\n      if (e > last[1]) last[1] = e;\n    } else {\n      result.push([s, e]);\n    }\n  }\n  return result;\n}"
      },
      {
        "id": "csv",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "d94aaea0c9c3ccfe3580ae00a7dc45fe9c403c18d239ff73db09ff1f2ea0240b",
        "tools_observed": [],
        "code_sha256": "d94aaea0c9c3ccfe3580ae00a7dc45fe9c403c18d239ff73db09ff1f2ea0240b",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              [
                "a",
                "b"
              ],
              [
                "c",
                "d"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a",
                "b"
              ],
              [
                "c",
                "d"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a,b",
                "c"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a,b",
                "c"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a\"b",
                "x"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a\"b",
                "x"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a\nb",
                "",
                "c"
              ],
              [
                "x",
                "y",
                "z"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a\nb",
                "",
                "c"
              ],
              [
                "x",
                "y",
                "z"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "",
                ""
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "",
                ""
              ]
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const rows = [];\n  if (input.length === 0) return rows;\n  let row = [];\n  let field = '';\n  let i = 0;\n  const n = input.length;\n  while (i < n) {\n    const c = input[i];\n    if (c === '\"') {\n      i++;\n      while (i < n) {\n        const d = input[i];\n        if (d === '\"') {\n          if (i + 1 < n && input[i + 1] === '\"') {\n            field += '\"';\n            i += 2;\n          } else {\n            i++;\n            break;\n          }\n        } else {\n          field += d;\n          i++;\n        }\n      }\n    } else if (c === ',') {\n      row.push(field);\n      field = '';\n      i++;\n    } else if (c === '\\n') {\n      row.push(field);\n      rows.push(row);\n      row = [];\n      field = '';\n      i++;\n    } else {\n      field += c;\n      i++;\n    }\n  }\n  if (field.length > 0 || row.length > 0) {\n    row.push(field);\n    rows.push(row);\n  }\n  return rows;\n}"
      },
      {
        "id": "topology",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "b42890abd5c21043ee4f045cc2d06f6df735e3fd3c2f628a7d7cff2944626cf2",
        "tools_observed": [],
        "code_sha256": "b42890abd5c21043ee4f045cc2d06f6df735e3fd3c2f628a7d7cff2944626cf2",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              "a",
              "b",
              "c"
            ],
            "unchanged": true,
            "expected": [
              "a",
              "b",
              "c"
            ],
            "passed": true
          },
          {
            "actual": null,
            "unchanged": true,
            "expected": null,
            "passed": true
          },
          {
            "actual": [
              "a",
              "b"
            ],
            "unchanged": true,
            "expected": [
              "a",
              "b"
            ],
            "passed": true
          },
          {
            "actual": null,
            "unchanged": true,
            "expected": null,
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const nodes = input.nodes;\n  const adj = new Map();\n  const indeg = new Map();\n  for (const n of nodes) {\n    adj.set(n, new Set());\n    indeg.set(n, 0);\n  }\n  for (const [a, b] of input.edges) {\n    const s = adj.get(a);\n    if (!s.has(b)) {\n      s.add(b);\n      indeg.set(b, indeg.get(b) + 1);\n    }\n  }\n  const available = nodes.filter((n) => indeg.get(n) === 0).sort();\n  const result = [];\n  while (available.length > 0) {\n    const cur = available.shift();\n    result.push(cur);\n    const next = [];\n    for (const m of adj.get(cur)) {\n      const d = indeg.get(m) - 1;\n      indeg.set(m, d);\n      if (d === 0) next.push(m);\n    }\n    if (next.length > 0) {\n      available.push(...next);\n      available.sort();\n    }\n  }\n  return result.length === nodes.length ? result : null;\n}"
      },
      {
        "id": "money",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "47a6452a234bd7a8a7e8f762e83afcab115c09931860cd96d70223cc46ef26d0",
        "tools_observed": [],
        "code_sha256": "47a6452a234bd7a8a7e8f762e83afcab115c09931860cd96d70223cc46ef26d0",
        "tests": [
          {
            "actual": [
              0,
              100,
              110,
              101,
              -1
            ],
            "unchanged": true,
            "expected": [
              0,
              100,
              110,
              101,
              -1
            ],
            "passed": true
          },
          {
            "actual": [
              1230,
              205,
              -200
            ],
            "unchanged": true,
            "expected": [
              1230,
              205,
              -200
            ],
            "passed": true
          },
          {
            "actual": [
              null,
              null,
              null,
              null,
              null,
              null,
              null
            ],
            "unchanged": true,
            "expected": [
              null,
              null,
              null,
              null,
              null,
              null,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              0,
              0,
              99999999
            ],
            "unchanged": true,
            "expected": [
              0,
              0,
              99999999
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const re = /^(-?)(\\d+)(?:[.,](\\d{1,2}))?$/;\n  const out = [];\n  for (let i = 0; i < input.length; i++) {\n    const s = input[i];\n    if (typeof s !== 'string') { out.push(null); continue; }\n    const m = re.exec(s.trim());\n    if (!m) { out.push(null); continue; }\n    const neg = m[1] === '-';\n    const whole = parseInt(m[2], 10);\n    let frac = m[3] === undefined ? '' : m[3];\n    if (frac.length === 1) frac += '0';\n    const cents = whole * 100 + (frac === '' ? 0 : parseInt(frac, 10));\n    out.push(neg ? -cents : cents);\n  }\n  return out;\n}"
      },
      {
        "id": "ttl",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "a76f3e4792c4dae5c54c998de8b51c2c912ce1d55a5989a86b695e89f33b3446",
        "tools_observed": [],
        "code_sha256": "a76f3e4792c4dae5c54c998de8b51c2c912ce1d55a5989a86b695e89f33b3446",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              1,
              null
            ],
            "unchanged": true,
            "expected": [
              1,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              2,
              null
            ],
            "unchanged": true,
            "expected": [
              2,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              0,
              null
            ],
            "unchanged": true,
            "expected": [
              0,
              null
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const store = new Map();\n  const results = [];\n  for (let i = 0; i < input.length; i++) {\n    const item = input[i];\n    if (item.op === \"set\") {\n      store.set(item.key, { value: item.value, expireAt: item.t + item.ttl });\n    } else if (item.op === \"get\") {\n      const rec = store.get(item.key);\n      if (rec === undefined || item.t >= rec.expireAt) {\n        results.push(null);\n      } else {\n        results.push(rec.value);\n      }\n    }\n  }\n  return results;\n}"
      },
      {
        "id": "path",
        "repeat": 1,
        "category": "code",
        "passed": true,
        "answer_sha256": "e376fa550effbf359a55a2ae3cfb23b2fc2a5354b63e4f98ac32e5ab95d70adc",
        "tools_observed": [],
        "code_sha256": "e376fa550effbf359a55a2ae3cfb23b2fc2a5354b63e4f98ac32e5ab95d70adc",
        "tests": [
          {
            "actual": 0,
            "unchanged": true,
            "expected": 0,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          },
          {
            "actual": 2,
            "unchanged": true,
            "expected": 2,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          },
          {
            "actual": 4,
            "unchanged": true,
            "expected": 4,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  var rows = input.length;\n  var cols = input[0].length;\n  if (input[0][0] === 1 || input[rows - 1][cols - 1] === 1) return -1;\n  if (rows === 1 && cols === 1) return 0;\n  var visited = [];\n  for (var i = 0; i < rows; i++) {\n    visited.push(new Array(cols).fill(false));\n  }\n  visited[0][0] = true;\n  var queue = [[0, 0, 0]];\n  var head = 0;\n  var dirs = [[1, 0], [-1, 0], [0, 1], [0, -1]];\n  while (head < queue.length) {\n    var cur = queue[head++];\n    var r = cur[0], c = cur[1], d = cur[2];\n    for (var k = 0; k < 4; k++) {\n      var nr = r + dirs[k][0];\n      var nc = c + dirs[k][1];\n      if (nr < 0 || nc < 0 || nr >= rows || nc >= cols) continue;\n      if (visited[nr][nc] || input[nr][nc] === 1) continue;\n      if (nr === rows - 1 && nc === cols - 1) return d + 1;\n      visited[nr][nc] = true;\n      queue.push([nr, nc, d + 1]);\n    }\n  }\n  return -1;\n}"
      },
      {
        "id": "revenue",
        "repeat": 1,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "cdb6ec4411a8946f1550afb3b09b1b1d2e2e55e142393fc66c5b76d13ee95fde",
        "tools_observed": [],
        "actual": {
          "gross": 2500,
          "refunds": 1000,
          "net": 1500,
          "paid_orders": 3
        },
        "plain_json": true,
        "answer": "{\"gross\":2500,\"refunds\":1000,\"net\":1500,\"paid_orders\":3}"
      },
      {
        "id": "conversion",
        "repeat": 1,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "2170e9a06acbbe8b5ecb26c238ca4afcc847224aabc5f7f46c7a8ac4252e65fb",
        "tools_observed": [],
        "actual": {
          "visitors": 1000,
          "purchases": 65,
          "conversion_pct": 6.5
        },
        "plain_json": true,
        "answer": "{\"visitors\":1000,\"purchases\":65,\"conversion_pct\":6.5}"
      },
      {
        "id": "schedule",
        "repeat": 1,
        "category": "analysis",
        "passed": false,
        "answer_sha256": "a62df7a8e5756e53f1fe6a8d7b45450a42bcf50d8e38571e00e7bc2856336419",
        "tools_observed": [],
        "error": "Unexpected token 'A', \"Anna busy:\"... is not valid JSON",
        "plain_json": false,
        "content_correct_after_extraction": true,
        "answer": "Anna busy: [09:00,09:30), [10:30,11:00). Boris busy: [09:15,10:00), [11:00,11:30). Combined busy: [09:00,10:00), [10:30,11:30). Free: [10:00,10:30) — exactly 30 min.\n\n{\"start\":\"10:00\",\"end\":\"10:30\"}"
      },
      {
        "id": "missing",
        "repeat": 1,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "c304b59ba302bfc828628c74f0778096eff15d76c2e6a85ae1e1d2bdc3ee76de",
        "tools_observed": [],
        "actual": {
          "can_compute": false,
          "profit": null,
          "missing": [
            "costs"
          ]
        },
        "plain_json": true,
        "answer": "{\"can_compute\":false,\"profit\":null,\"missing\":[\"costs\"]}"
      },
      {
        "id": "card",
        "repeat": 1,
        "category": "assistant",
        "passed": true,
        "answer_sha256": "98b62796de11069de6315d851644fd3923752af733220257f22346c3b7d4a0d5",
        "tools_observed": [],
        "actual": {
          "first_name": "Анна",
          "last_name": "Иванова",
          "city": "Одесса",
          "branch_number": "165",
          "service": "Новая почта"
        },
        "plain_json": true,
        "answer": "{\"first_name\":\"Анна\",\"last_name\":\"Иванова\",\"city\":\"Одесса\",\"branch_number\":\"165\",\"service\":\"Новая почта\"}"
      },
      {
        "id": "no_invent",
        "repeat": 1,
        "category": "assistant",
        "passed": true,
        "answer_sha256": "f61ed53fc8ccb06adf9293d7c1108ab7091ac387849dda8bdfe0e1be522ca0b3",
        "tools_observed": [],
        "actual": {
          "can_see": false,
          "object": null
        },
        "plain_json": true,
        "answer": "{\"can_see\":false,\"object\":null}"
      },
      {
        "id": "intervals",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "588b9526d63f06a6226275318053a1f2d006bf70630e21896cac46f0c3281edb",
        "tools_observed": [],
        "code_sha256": "588b9526d63f06a6226275318053a1f2d006bf70630e21896cac46f0c3281edb",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                7
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                7
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                2
              ],
              [
                4,
                5
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                2
              ],
              [
                4,
                5
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                -5,
                0
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                -5,
                0
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                1,
                9
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                1,
                9
              ]
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  if (!Array.isArray(input) || input.length === 0) return [];\n  const sorted = input\n    .map(([s, e]) => [s, e])\n    .sort((a, b) => a[0] - b[0] || a[1] - b[1]);\n  const result = [];\n  let [curStart, curEnd] = sorted[0];\n  for (let i = 1; i < sorted.length; i++) {\n    const [s, e] = sorted[i];\n    if (s <= curEnd) {\n      if (e > curEnd) curEnd = e;\n    } else {\n      result.push([curStart, curEnd]);\n      curStart = s;\n      curEnd = e;\n    }\n  }\n  result.push([curStart, curEnd]);\n  return result;\n}"
      },
      {
        "id": "csv",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "ff6720192aa4d80d84a00af8a21c66d4b5131586ae202cdbc0217c28f98b9691",
        "tools_observed": [],
        "code_sha256": "ff6720192aa4d80d84a00af8a21c66d4b5131586ae202cdbc0217c28f98b9691",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              [
                "a",
                "b"
              ],
              [
                "c",
                "d"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a",
                "b"
              ],
              [
                "c",
                "d"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a,b",
                "c"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a,b",
                "c"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a\"b",
                "x"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a\"b",
                "x"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "a\nb",
                "",
                "c"
              ],
              [
                "x",
                "y",
                "z"
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "a\nb",
                "",
                "c"
              ],
              [
                "x",
                "y",
                "z"
              ]
            ],
            "passed": true
          },
          {
            "actual": [
              [
                "",
                ""
              ]
            ],
            "unchanged": true,
            "expected": [
              [
                "",
                ""
              ]
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const rows = [];\n  if (input === '') return rows;\n  let row = [];\n  let field = '';\n  let inQuotes = false;\n  let i = 0;\n  const n = input.length;\n  while (i < n) {\n    const c = input[i];\n    if (inQuotes) {\n      if (c === '\"') {\n        if (i + 1 < n && input[i + 1] === '\"') {\n          field += '\"';\n          i += 2;\n        } else {\n          inQuotes = false;\n          i++;\n        }\n      } else {\n        field += c;\n        i++;\n      }\n    } else {\n      if (c === '\"') {\n        inQuotes = true;\n        i++;\n      } else if (c === ',') {\n        row.push(field);\n        field = '';\n        i++;\n      } else if (c === '\\n') {\n        row.push(field);\n        rows.push(row);\n        row = [];\n        field = '';\n        i++;\n      } else {\n        field += c;\n        i++;\n      }\n    }\n  }\n  if (input[n - 1] !== '\\n' || inQuotes) {\n    row.push(field);\n    rows.push(row);\n  }\n  return rows;\n}"
      },
      {
        "id": "topology",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "34511ab8a15901a1bd8d33919e598bf3dc9c2c1914f745d388082127bb8f7e21",
        "tools_observed": [],
        "code_sha256": "34511ab8a15901a1bd8d33919e598bf3dc9c2c1914f745d388082127bb8f7e21",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              "a",
              "b",
              "c"
            ],
            "unchanged": true,
            "expected": [
              "a",
              "b",
              "c"
            ],
            "passed": true
          },
          {
            "actual": null,
            "unchanged": true,
            "expected": null,
            "passed": true
          },
          {
            "actual": [
              "a",
              "b"
            ],
            "unchanged": true,
            "expected": [
              "a",
              "b"
            ],
            "passed": true
          },
          {
            "actual": null,
            "unchanged": true,
            "expected": null,
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const nodes = input.nodes;\n  const adj = new Map();\n  const indeg = new Map();\n  for (const n of nodes) {\n    adj.set(n, new Set());\n    indeg.set(n, 0);\n  }\n  for (const [a, b] of input.edges) {\n    const s = adj.get(a);\n    if (!s.has(b)) {\n      s.add(b);\n      indeg.set(b, indeg.get(b) + 1);\n    }\n  }\n  const available = nodes.filter(n => indeg.get(n) === 0).sort();\n  const result = [];\n  while (available.length > 0) {\n    const cur = available.shift();\n    result.push(cur);\n    let added = false;\n    for (const nxt of adj.get(cur)) {\n      const d = indeg.get(nxt) - 1;\n      indeg.set(nxt, d);\n      if (d === 0) {\n        available.push(nxt);\n        added = true;\n      }\n    }\n    if (added) available.sort();\n  }\n  return result.length === nodes.length ? result : null;\n}"
      },
      {
        "id": "money",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "66ab6cf26ee7f0365cad313530a8015c24679e176c8d69d27660e848679e479b",
        "tools_observed": [],
        "code_sha256": "66ab6cf26ee7f0365cad313530a8015c24679e176c8d69d27660e848679e479b",
        "tests": [
          {
            "actual": [
              0,
              100,
              110,
              101,
              -1
            ],
            "unchanged": true,
            "expected": [
              0,
              100,
              110,
              101,
              -1
            ],
            "passed": true
          },
          {
            "actual": [
              1230,
              205,
              -200
            ],
            "unchanged": true,
            "expected": [
              1230,
              205,
              -200
            ],
            "passed": true
          },
          {
            "actual": [
              null,
              null,
              null,
              null,
              null,
              null,
              null
            ],
            "unchanged": true,
            "expected": [
              null,
              null,
              null,
              null,
              null,
              null,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              0,
              0,
              99999999
            ],
            "unchanged": true,
            "expected": [
              0,
              0,
              99999999
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  var re = /^(-?)(\\d+)(?:[.,](\\d{1,2}))?$/;\n  var out = [];\n  for (var i = 0; i < input.length; i++) {\n    var s = input[i];\n    if (typeof s !== 'string') { out.push(null); continue; }\n    var m = re.exec(s.trim());\n    if (!m) { out.push(null); continue; }\n    var frac = m[3] === undefined ? '' : m[3];\n    if (frac.length === 1) frac += '0';\n    if (frac.length === 0) frac = '00';\n    var cents = parseInt(m[2], 10) * 100 + parseInt(frac, 10);\n    if (m[1] === '-') cents = -cents;\n    out.push(cents);\n  }\n  return out;\n}"
      },
      {
        "id": "ttl",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "7de83add9591f33863b105aee9ed2076a35093c8436d868148c441ce9a534479",
        "tools_observed": [],
        "code_sha256": "7de83add9591f33863b105aee9ed2076a35093c8436d868148c441ce9a534479",
        "tests": [
          {
            "actual": [],
            "unchanged": true,
            "expected": [],
            "passed": true
          },
          {
            "actual": [
              1,
              null
            ],
            "unchanged": true,
            "expected": [
              1,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              2,
              null
            ],
            "unchanged": true,
            "expected": [
              2,
              null
            ],
            "passed": true
          },
          {
            "actual": [
              0,
              null
            ],
            "unchanged": true,
            "expected": [
              0,
              null
            ],
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const store = new Map();\n  const result = [];\n  for (let i = 0; i < input.length; i++) {\n    const item = input[i];\n    if (item.op === \"set\") {\n      store.set(item.key, { value: item.value, expire: item.t + item.ttl });\n    } else if (item.op === \"get\") {\n      const entry = store.get(item.key);\n      if (entry === undefined || item.t >= entry.expire) {\n        result.push(null);\n      } else {\n        result.push(entry.value);\n      }\n    }\n  }\n  return result;\n}"
      },
      {
        "id": "path",
        "repeat": 2,
        "category": "code",
        "passed": true,
        "answer_sha256": "7e9e2acda9259a0d54ce4767f07ca9c887774b76239246b8721dcb666856067e",
        "tools_observed": [],
        "code_sha256": "7e9e2acda9259a0d54ce4767f07ca9c887774b76239246b8721dcb666856067e",
        "tests": [
          {
            "actual": 0,
            "unchanged": true,
            "expected": 0,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          },
          {
            "actual": 2,
            "unchanged": true,
            "expected": 2,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          },
          {
            "actual": 4,
            "unchanged": true,
            "expected": 4,
            "passed": true
          },
          {
            "actual": -1,
            "unchanged": true,
            "expected": -1,
            "passed": true
          }
        ],
        "code_returned_via_tool": false,
        "markdown_present": false,
        "answer": "function solve(input) {\n  const rows = input.length;\n  const cols = input[0].length;\n  if (input[0][0] === 1 || input[rows - 1][cols - 1] === 1) return -1;\n  if (rows === 1 && cols === 1) return 0;\n  const visited = Array.from({ length: rows }, () => new Uint8Array(cols));\n  const queue = [[0, 0, 0]];\n  visited[0][0] = 1;\n  let head = 0;\n  const dirs = [[1, 0], [-1, 0], [0, 1], [0, -1]];\n  while (head < queue.length) {\n    const [r, c, d] = queue[head++];\n    for (const [dr, dc] of dirs) {\n      const nr = r + dr;\n      const nc = c + dc;\n      if (nr < 0 || nc < 0 || nr >= rows || nc >= cols) continue;\n      if (input[nr][nc] === 1 || visited[nr][nc]) continue;\n      if (nr === rows - 1 && nc === cols - 1) return d + 1;\n      visited[nr][nc] = 1;\n      queue.push([nr, nc, d + 1]);\n    }\n  }\n  return -1;\n}"
      },
      {
        "id": "revenue",
        "repeat": 2,
        "category": "analysis",
        "passed": false,
        "answer_sha256": "6167c8f013c25284f410ccd1b82fa6ea4c7794599cb1409c7f58f8fb67804edc",
        "tools_observed": [],
        "error": "Unexpected token 'G', \"Gross: pai\"... is not valid JSON",
        "plain_json": false,
        "content_correct_after_extraction": true,
        "answer": "Gross: paid orders A(1200), B(800), D(500) — duplicate A ignored, C cancelled excluded → 2500. Refunds: 200 + 800 = 1000. Net: 1500. Paid orders: 3.\n\n{\"gross\":2500,\"refunds\":1000,\"net\":1500,\"paid_orders\":3}"
      },
      {
        "id": "conversion",
        "repeat": 2,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "2170e9a06acbbe8b5ecb26c238ca4afcc847224aabc5f7f46c7a8ac4252e65fb",
        "tools_observed": [],
        "actual": {
          "visitors": 1000,
          "purchases": 65,
          "conversion_pct": 6.5
        },
        "plain_json": true,
        "answer": "{\"visitors\":1000,\"purchases\":65,\"conversion_pct\":6.5}"
      },
      {
        "id": "schedule",
        "repeat": 2,
        "category": "analysis",
        "passed": false,
        "answer_sha256": "bfce971c17bbbdfe81844d1660db4afc28e2c01011b7568a603158d254352bcd",
        "tools_observed": [],
        "error": "Unexpected token 'A', \"Anna busy:\"... is not valid JSON",
        "plain_json": false,
        "content_correct_after_extraction": true,
        "answer": "Anna busy: 09:00-09:30, 10:30-11:00. Boris busy: 09:15-10:00, 11:00-11:30. Combined busy: 09:00-10:00, 10:30-11:30. Free: 10:00-10:30, 11:30-12:00. Earliest 30-min: 10:00-10:30.\n\n{\"start\":\"10:00\",\"end\":\"10:30\"}"
      },
      {
        "id": "missing",
        "repeat": 2,
        "category": "analysis",
        "passed": true,
        "answer_sha256": "c304b59ba302bfc828628c74f0778096eff15d76c2e6a85ae1e1d2bdc3ee76de",
        "tools_observed": [],
        "actual": {
          "can_compute": false,
          "profit": null,
          "missing": [
            "costs"
          ]
        },
        "plain_json": true,
        "answer": "{\"can_compute\":false,\"profit\":null,\"missing\":[\"costs\"]}"
      },
      {
        "id": "card",
        "repeat": 2,
        "category": "assistant",
        "passed": true,
        "answer_sha256": "98b62796de11069de6315d851644fd3923752af733220257f22346c3b7d4a0d5",
        "tools_observed": [],
        "actual": {
          "first_name": "Анна",
          "last_name": "Иванова",
          "city": "Одесса",
          "branch_number": "165",
          "service": "Новая почта"
        },
        "plain_json": true,
        "answer": "{\"first_name\":\"Анна\",\"last_name\":\"Иванова\",\"city\":\"Одесса\",\"branch_number\":\"165\",\"service\":\"Новая почта\"}"
      },
      {
        "id": "no_invent",
        "repeat": 2,
        "category": "assistant",
        "passed": true,
        "answer_sha256": "f61ed53fc8ccb06adf9293d7c1108ab7091ac387849dda8bdfe0e1be522ca0b3",
        "tools_observed": [],
        "actual": {
          "can_see": false,
          "object": null
        },
        "plain_json": true,
        "answer": "{\"can_see\":false,\"object\":null}"
      }
    ]
  }
}
