{"id":"c27ae883-5aad-4078-8f77-cb74fa4a873d","kind":"codai.resolve.attestation.v0","repo_url":"https://github.com/dragoscv/resolve-smoke-statslib","base_commit":"52fa52e194c085e816c48d79b9bbb9172624722f","patch":"diff --git a/.axiom/applied/a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc.json b/.axiom/applied/a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc.json\nnew file mode 100644\nindex 0000000..5ac99d1\n--- /dev/null\n+++ b/.axiom/applied/a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc.json\n@@ -0,0 +1 @@\n+{\"apiVersion\":\"axiom.dev/v2\",\"kind\":\"ApplyResult\",\"manifestDigest\":\"sha256:a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc\",\"mode\":\"fs\",\"status\":\"applied\",\"root\":\"/tmp/task-ws-lAJDBk/repo\",\"files\":[{\"path\":\"statslib/__init__.py\",\"op\":\"overwrite\",\"status\":\"written\",\"digest\":{\"sha256\":\"e2a7f3716de0d88a97314a55bee2141d850c42af2314b013dce2d846cfa838dd\"}}],\"journal\":\"/tmp/task-ws-lAJDBk/repo/.axiom/journal/a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc.json\"}\n\\ No newline at end of file\ndiff --git a/.axiom/backup/a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc/statslib/__init__.py b/.axiom/backup/a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc/statslib/__init__.py\nnew file mode 100644\nindex 0000000..55f2fff\n--- /dev/null\n+++ b/.axiom/backup/a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc/statslib/__init__.py\n@@ -0,0 +1,8 @@\n+def median(values):\n+    \"\"\"Return the median of a non-empty list of numbers.\"\"\"\n+    s = sorted(values)\n+    n = len(s)\n+    mid = n // 2\n+    # BUG: for even-length inputs this returns the upper-middle element\n+    # instead of the average of the two middle elements.\n+    return s[mid]\ndiff --git a/.axiom/journal/a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc.json b/.axiom/journal/a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc.json\nnew file mode 100644\nindex 0000000..5870d78\n--- /dev/null\n+++ b/.axiom/journal/a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc.json\n@@ -0,0 +1 @@\n+{\"manifestDigest\":\"sha256:a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc\",\"phase\":\"committed\",\"steps\":[{\"path\":\"statslib/__init__.py\",\"op\":\"overwrite\",\"done\":true,\"backup\":\".axiom/backup/a3da06f6174a7acb4d4b0c607a0ae240cd4ae0b012b7b661153bb657aa5c51cc/statslib/__init__.py\"}],\"startedAt\":\"2026-09-27T02:43:28.457Z\",\"pid\":1}\n\\ No newline at end of file\ndiff --git a/statslib/__init__.py b/statslib/__init__.py\nindex 55f2fff..b67113e 100644\n--- a/statslib/__init__.py\n+++ b/statslib/__init__.py\n@@ -3,6 +3,6 @@ def median(values):\n     s = sorted(values)\n     n = len(s)\n     mid = n // 2\n-    # BUG: for even-length inputs this returns the upper-middle element\n-    # instead of the average of the two middle elements.\n+    if n % 2 == 0:\n+        return (s[mid - 1] + s[mid]) / 2\n     return s[mid]\n","repro_test":{"path":"codai_repro_test.py","content":"import pytest\n\nfrom statslib import median\n\n\ndef test_median_even_length_averages_two_middle_values():\n    assert median([1, 2, 3, 4]) == pytest.approx(2.5)\n\n\ndef test_median_even_length_unsorted_input():\n    assert median([4, 1, 3, 2]) == pytest.approx(2.5)\n\n\ndef test_median_even_length_two_elements():\n    assert median([10, 20]) == pytest.approx(15)\n\n\ndef test_median_odd_length_still_works():\n    assert median([3, 1, 2]) == 2"},"test_command":"python -m pytest -q codai_repro_test.py","regression_command":"python -m pytest -q --deselect codai_repro_test.py --ignore=codai_repro_test.py","test_output_before":"FFF.                                                                     [100%]\n=================================== FAILURES ===================================\n______________ test_median_even_length_averages_two_middle_values ______________\n\n    def test_median_even_length_averages_two_middle_values():\n>       assert median([1, 2, 3, 4]) == pytest.approx(2.5)\nE       assert 3 == 2.5 ± 2.5e-06\nE         \nE         comparison failed\nE         Obtained: 3\nE         Expected: 2.5 ± 2.5e-06\n\ncodai_repro_test.py:7: AssertionError\n____________________ test_median_even_length_unsorted_input ____________________\n\n    def test_median_even_length_unsorted_input():\n>       assert median([4, 1, 3, 2]) == pytest.approx(2.5)\nE       assert 3 == 2.5 ± 2.5e-06\nE         \nE         comparison failed\nE         Obtained: 3\nE         Expected: 2.5 ± 2.5e-06\n\ncodai_repro_test.py:11: AssertionError\n_____________________ test_median_even_length_two_elements _____________________\n\n    def test_median_even_length_two_elements():\n>       assert median([10, 20]) == pytest.approx(15)\nE       assert 20 == 15 ± 1.5e-05\nE         \nE         comparison failed\nE         Obtained: 20\nE         Expected: 15 ± 1.5e-05\n\ncodai_repro_test.py:15: AssertionError\n=========================== short test summary info ============================\nFAILED codai_repro_test.py::test_median_even_length_averages_two_middle_values - assert 3 == 2.5 ± 2.5e-06\n  \n  comparison failed\n  Obtained: 3\n  Expected: 2.5 ± 2.5e-06\nFAILED codai_repro_test.py::test_median_even_length_unsorted_input - assert 3 == 2.5 ± 2.5e-06\n  \n  comparison failed\n  Obtained: 3\n  Expected: 2.5 ± 2.5e-06\nFAILED codai_repro_test.py::test_median_even_length_two_elements - assert 20 == 15 ± 1.5e-05\n  \n  comparison failed\n  Obtained: 20\n  Expected: 15 ± 1.5e-05\n3 failed, 1 passed in 1.34s\n","test_output_after":"....                                                                     [100%]\n4 passed in 1.27s\n","regression_output":".                                                                        [100%]\n1 passed in 0.93s\n","runner_image_digest":"4d87d171","started_at":"2026-09-27T02:41:45.634Z","verified_at":"2026-09-27T02:44:32.975Z","signature":null}