{
  "exercise": "first-task-v1",
  "checkedAt": "2026-09-08",
  "executor": "Codex local reference authoring; no MonkeyCode product run",
  "python": "3.14.7",
  "platform": "macOS-26.6.2-arm64-arm-64bit-Mach-O",
  "records": [
    {
      "stage": "baseline",
      "exitCode": 1,
      "tests": 8,
      "output": "test_empty (test_intervals.IntervalTests.test_empty) ... ok\ntest_reversed (test_intervals.IntervalTests.test_reversed) ... ok\ntest_separated (test_intervals.IntervalTests.test_separated) ... ok\ntest_shared_interior (test_intervals.IntervalTests.test_shared_interior) ... ok\ntest_touching_is_not_overlap (test_intervals.IntervalTests.test_touching_is_not_overlap) ... FAIL\ntest_budget (test_retry.RetryTests.test_budget) ... ok\ntest_success (test_retry.RetryTests.test_success) ... ok\ntest_transient (test_retry.RetryTests.test_transient) ... ok\n\n======================================================================\nFAIL: test_touching_is_not_overlap (test_intervals.IntervalTests.test_touching_is_not_overlap)\n----------------------------------------------------------------------\nTraceback (most recent call last):\n  File \"/private/var/folders/gx/612x0v_54m916qq7mbst_bnr0000gn/T/first-task-v1-51duho54/work/test_intervals.py\", line 10, in test_touching_is_not_overlap\n    self.assertFalse(overlaps((1, 3), (3, 5)))\n    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^\nAssertionError: True is not false\n\n----------------------------------------------------------------------\nRan 8 tests in 0.001s\n\nFAILED (failures=1)\n"
    },
    {
      "stage": "bug",
      "exitCode": 0,
      "tests": 8,
      "output": "test_empty (test_intervals.IntervalTests.test_empty) ... ok\ntest_reversed (test_intervals.IntervalTests.test_reversed) ... ok\ntest_separated (test_intervals.IntervalTests.test_separated) ... ok\ntest_shared_interior (test_intervals.IntervalTests.test_shared_interior) ... ok\ntest_touching_is_not_overlap (test_intervals.IntervalTests.test_touching_is_not_overlap) ... ok\ntest_budget (test_retry.RetryTests.test_budget) ... ok\ntest_success (test_retry.RetryTests.test_success) ... ok\ntest_transient (test_retry.RetryTests.test_transient) ... ok\n\n----------------------------------------------------------------------\nRan 8 tests in 0.000s\n\nOK\n"
    },
    {
      "stage": "tests",
      "exitCode": 0,
      "tests": 12,
      "output": "test_empty (test_intervals.IntervalTests.test_empty) ... ok\ntest_reversed (test_intervals.IntervalTests.test_reversed) ... ok\ntest_separated (test_intervals.IntervalTests.test_separated) ... ok\ntest_shared_interior (test_intervals.IntervalTests.test_shared_interior) ... ok\ntest_touching_is_not_overlap (test_intervals.IntervalTests.test_touching_is_not_overlap) ... ok\ntest_before_budget (test_retry.AddedRetryTests.test_before_budget) ... ok\ntest_invalid_attempts (test_retry.AddedRetryTests.test_invalid_attempts) ... ok\ntest_permanent_error (test_retry.AddedRetryTests.test_permanent_error) ... ok\ntest_rate_limit (test_retry.AddedRetryTests.test_rate_limit) ... ok\ntest_budget (test_retry.RetryTests.test_budget) ... ok\ntest_success (test_retry.RetryTests.test_success) ... ok\ntest_transient (test_retry.RetryTests.test_transient) ... ok\n\n----------------------------------------------------------------------\nRan 12 tests in 0.000s\n\nOK\n"
    },
    {
      "stage": "docs",
      "exitCode": 0,
      "tests": 12,
      "output": "test_empty (test_intervals.IntervalTests.test_empty) ... ok\ntest_reversed (test_intervals.IntervalTests.test_reversed) ... ok\ntest_separated (test_intervals.IntervalTests.test_separated) ... ok\ntest_shared_interior (test_intervals.IntervalTests.test_shared_interior) ... ok\ntest_touching_is_not_overlap (test_intervals.IntervalTests.test_touching_is_not_overlap) ... ok\ntest_before_budget (test_retry.AddedRetryTests.test_before_budget) ... ok\ntest_invalid_attempts (test_retry.AddedRetryTests.test_invalid_attempts) ... ok\ntest_permanent_error (test_retry.AddedRetryTests.test_permanent_error) ... ok\ntest_rate_limit (test_retry.AddedRetryTests.test_rate_limit) ... ok\ntest_budget (test_retry.RetryTests.test_budget) ... ok\ntest_success (test_retry.RetryTests.test_success) ... ok\ntest_transient (test_retry.RetryTests.test_transient) ... ok\n\n----------------------------------------------------------------------\nRan 12 tests in 0.000s\n\nOK\n"
    },
    {
      "stage": "mutation-permanent-error",
      "exitCode": 1,
      "tests": 12,
      "output": "test_empty (test_intervals.IntervalTests.test_empty) ... ok\ntest_reversed (test_intervals.IntervalTests.test_reversed) ... ok\ntest_separated (test_intervals.IntervalTests.test_separated) ... ok\ntest_shared_interior (test_intervals.IntervalTests.test_shared_interior) ... ok\ntest_touching_is_not_overlap (test_intervals.IntervalTests.test_touching_is_not_overlap) ... ok\ntest_before_budget (test_retry.AddedRetryTests.test_before_budget) ... ok\ntest_invalid_attempts (test_retry.AddedRetryTests.test_invalid_attempts) ... ok\ntest_permanent_error (test_retry.AddedRetryTests.test_permanent_error) ... FAIL\ntest_rate_limit (test_retry.AddedRetryTests.test_rate_limit) ... ok\ntest_budget (test_retry.RetryTests.test_budget) ... ok\ntest_success (test_retry.RetryTests.test_success) ... ok\ntest_transient (test_retry.RetryTests.test_transient) ... ok\n\n======================================================================\nFAIL: test_permanent_error (test_retry.AddedRetryTests.test_permanent_error)\n----------------------------------------------------------------------\nTraceback (most recent call last):\n  File \"/private/var/folders/gx/612x0v_54m916qq7mbst_bnr0000gn/T/first-task-v1-51duho54/work/test_retry.py\", line 16, in test_permanent_error\n    self.assertFalse(should_retry(400, 1))\n    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^\nAssertionError: True is not false\n\n----------------------------------------------------------------------\nRan 12 tests in 0.001s\n\nFAILED (failures=1)\n"
    }
  ],
  "hashes": {
    "starter/README.md": "76aa09a3485845129f1322c737cbffa9adaf8aa91ca27496a1217520895e5523",
    "starter/TASKS.md": "4a2f6b63d2488f7883a3d4d3cf57e3f9a3f7010a27c581d8bc7e1a2432efa64f",
    "starter/intervals.py": "78ae5a548a61bfb73c08ba602085ac97dfc3a68259123d094c4ba0cfe7aaee4f",
    "starter/retry.py": "0ea919d226d44f26bb6c9f5c76acd690ba670a9023939b7584085b6eab5098e4",
    "starter/test_intervals.py": "5811c5189e93040d9c29ab308b2419b1c4d766856d1159c06306d8b2ffe96e91",
    "starter/test_retry.py": "8c8450f64b1d0c17de87fc987c491f91ce58f5a4fa9c147669afd03d404af494",
    "reference/README.md": "afb99f64f183a69f4bd8424b32f2710925fac7fac0359272751303d14e480928",
    "reference/TASKS.md": "4a2f6b63d2488f7883a3d4d3cf57e3f9a3f7010a27c581d8bc7e1a2432efa64f",
    "reference/intervals.py": "68f25935ef76f6c4b18b300ef9f07fdfa80c3bde0ea477412b33751f44a3142c",
    "reference/retry.py": "0ea919d226d44f26bb6c9f5c76acd690ba670a9023939b7584085b6eab5098e4",
    "reference/test_intervals.py": "5811c5189e93040d9c29ab308b2419b1c4d766856d1159c06306d8b2ffe96e91",
    "reference/test_retry.py": "dd7a6de28f97c51e707a18865827db2b0318ed8158792326e6a4d90a3006287c"
  }
}
