{"receipt_id":"base-1","seq":1,"branch_id":"base","kind":"command","cmd":"python -c 'import base64; from pathlib import Path; Path('\"'\"'/tmp/receipts-neogeny__tatsu-320-test.patch'\"'\"').write_bytes(base64.b64decode('\"'\"'ZGlmZiAtLWdpdCBhL3Rlc3QvZ3JhbW1hci9hbGVydHNfdGVzdC5weSBiL3Rlc3QvZ3JhbW1hci9hbGVydHNfdGVzdC5weQppbmRleCAyNjM3MTFkLi5lNTgzZTU4IDEwMDY0NAotLS0gYS90ZXN0L2dyYW1tYXIvYWxlcnRzX3Rlc3QucHkKKysrIGIvdGVzdC9ncmFtbWFyL2FsZXJ0c190ZXN0LnB5CkBAIC05LDQgKzksNSBAQCBkZWYgdGVzdF9hbGVydF9pbnRlcnBvbGF0aW9uKCk6CiAgICAgICAgICAgICBzdGFydCA9IGE6bnVtYmVyIGI6IG51bWJlciBpOl5gInNlZW46IHthfSwge2J9ImAgJCA7CiAgICAgICAgICAgICBudW1iZXIgPSAvXGQrLyA7CiAgICAgJycnCi0gICAgYXNzZXJ0IHBhcnNlKGdyYW1tYXIsIGlucHV0KSA9PSB7J2EnOiAnNDInLCAnYic6ICc2OScsICdpJzogJ3NlZW46IDQyLCA2OSd9CisgICAgYXN0ID0gcGFyc2UoZ3JhbW1hciwgaW5wdXQpCisgICAgYXNzZXJ0IGFzdCA9PSB7J2EnOiAnNDInLCAnYic6ICc2OScsICdpJzogJ3NlZW46IDQyLCA2OSd9CmRpZmYgLS1naXQgYS90ZXN0L2dyYW1tYXIvY29uc3RhbnRzX3Rlc3QucHkgYi90ZXN0L2dyYW1tYXIvY29uc3RhbnRzX3Rlc3QucHkKaW5kZXggNWU0MTY4Ni4uMzJkMzZmNCAxMDA2NDQKLS0tIGEvdGVzdC9ncmFtbWFyL2NvbnN0YW50c190ZXN0LnB5CisrKyBiL3Rlc3QvZ3JhbW1hci9jb25zdGFudHNfdGVzdC5weQpAQCAtMzYsMyArMzYsMTggQEAgZGVmIHRlc3RfY29uc3RhbnRfaW50ZXJwb2xhdGlvbl9tdWx0aWxpbmUoKToKICAgICByZXN1bHQgPSBwYXJzZShncmFtbWFyLCBpbnB1dCkKICAgICBwcmludChyZXN1bHQpCiAgICAgYXNzZXJ0IHJlc3VsdCA9PSB7J2EnOiAnNDInLCAnYic6ICc2OScsICdpJzogJ3NlZW46XG40MlxuNjlcbid9CisKKworZGVmIHRlc3RfZXZhbHVhdGVfY29uc3RhbnQoKToKKyAgICBncmFtbWFyID0gJycnCisgICAgICAgIEBAZ3JhbW1hciA6OiBjb25zdGFudHMKKyAgICAgICAgc3RhcnQgPSBpbnQgYm9vbCBzdHIgbnVsbCAnYScgJDsKKworICAgICAgICBpbnQgPSBgNDJgIDsKKyAgICAgICAgYm9vbCA9IGBUcnVlYCA7CisgICAgICAgIHN0ciA9IGBTb21ldGhpbmdgIDsKKyAgICAgICAgbnVsbCA9IGBOb25lYCA7CisgICAgJycnCisKKyAgICBhc3QgPSBwYXJzZShncmFtbWFyLCAnYScpCisgICAgYXNzZXJ0IGFzdCA9PSAoNDIsIFRydWUsICdTb21ldGhpbmcnLCBOb25lLCAnYScpCg=='\"'\"'))'","path":null,"exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","log_path":"~/dev/nebius-hackathon/pilot/v2-P/neogeny__tatsu-320/runs/pilot-neogeny__tatsu-320-7ec7104015/logs/base/base-1.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T17:48:31.431471Z","duration_s":0.023494,"timed_out":false,"image_before":"b3e22a68-6112-36a3-a190-54ea401ff707","image_after":"5777b738-c00a-493e-85d2-10b70c91d8fd","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-2","seq":2,"branch_id":"base","kind":"command","cmd":"git apply /tmp/receipts-neogeny__tatsu-320-test.patch","path":null,"exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","log_path":"~/dev/nebius-hackathon/pilot/v2-P/neogeny__tatsu-320/runs/pilot-neogeny__tatsu-320-7ec7104015/logs/base/base-2.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T17:48:33.292694Z","duration_s":0.003728,"timed_out":false,"image_before":"5777b738-c00a-493e-85d2-10b70c91d8fd","image_after":"052e5315-c4b8-4253-b15c-0b30d0223a7c","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-3","seq":3,"branch_id":"base","kind":"command","cmd":"/opt/receipts-934a453788a249d29198e0ce54d78af2/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-934a453788a249d29198e0ce54d78af2/receipts_pytest.py --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning test/grammar/alerts_test.py test/grammar/constants_test.py -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/base-3.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\ncollected 5 items\n\ntest/grammar/alerts_test.py .                                            [ 20%]\ntest/grammar/constants_test.py ...F                                      [100%]\n\n=================================== FAILURES ===================================\nE   AssertionError: assert 'a' == (42, True, 'Something', None, 'a')\n/TatSu/test/grammar/constants_test.py:53: AssertionError: assert 'a' == (42, True, 'Something', None, 'a')\n==================================== PASSES ====================================\n____________________ test_constant_interpolation_multiline _____________________\n----------------------------- Captured stdout call -----------------------------\n{'a': '42', 'b': '69', 'i': 'seen:\\n42\\n69\\n'}\n------------- generated xml file: /opt/receipts/reports/base-3.xml -------------\n=========================== short test summary info ============================\nPASSED test/grammar/alerts_test.py::test_alert_interpolation\nPASSED test/grammar/constants_test.py::test_constant_interpolation\nPASSED test/grammar/constants_test.py::test_constant_interpolation_free\nPASSED test/grammar/constants_test.py::test_constant_interpolation_multiline\nFAILED test/grammar/constants_test.py::test_evaluate_constant - AssertionErro...\n========================= 1 failed, 4 passed in 0.17s ==========================\n","stderr_tail":"","stdout_sha256":"3843802d4341432e6db9724c4a83e62f8a03de4af3675302517b22df2503ce8d","log_path":"~/dev/nebius-hackathon/pilot/v2-P/neogeny__tatsu-320/runs/pilot-neogeny__tatsu-320-7ec7104015/logs/base/base-3.log","tree_digest":"d3e31a7cdd7e8e39e379ae85c5c94d275fd12070868b71c0ae7c6bf45118a100","tree_download_s":2.5281854160130024,"started_at":"2026-10-03T17:48:35.157283Z","duration_s":0.678157,"timed_out":false,"image_before":"052e5315-c4b8-4253-b15c-0b30d0223a7c","image_after":"38aa847b-7224-464b-aa51-54f6d9dfe7b3","junit":{"passed":["test/grammar/alerts_test.py::test_alert_interpolation","test/grammar/constants_test.py::test_constant_interpolation","test/grammar/constants_test.py::test_constant_interpolation_free","test/grammar/constants_test.py::test_constant_interpolation_multiline"],"failed":["test/grammar/constants_test.py::test_evaluate_constant"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"test/grammar/constants_test.py::test_evaluate_constant":"AssertionError: assert 'a' == (42, True, 'Something', None, 'a')\nE   AssertionError: assert 'a' == (42, True, 'Something', None, 'a')"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-4","seq":4,"branch_id":"base","kind":"command","cmd":"/opt/receipts-9ce2e9c0c2f5479d85f681f015ba1109/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-9ce2e9c0c2f5479d85f681f015ba1109/receipts_pytest.py --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning test/grammar/alerts_test.py test/grammar/constants_test.py -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/base-4.xml","path":null,"exit_code":1,"stdout_tail":"============================= test session starts ==============================\ncollected 5 items\n\ntest/grammar/alerts_test.py .                                            [ 20%]\ntest/grammar/constants_test.py ...F                                      [100%]\n\n=================================== FAILURES ===================================\nE   AssertionError: assert 'a' == (42, True, 'Something', None, 'a')\n/TatSu/test/grammar/constants_test.py:53: AssertionError: assert 'a' == (42, True, 'Something', None, 'a')\n==================================== PASSES ====================================\n____________________ test_constant_interpolation_multiline _____________________\n----------------------------- Captured stdout call -----------------------------\n{'a': '42', 'b': '69', 'i': 'seen:\\n42\\n69\\n'}\n------------- generated xml file: /opt/receipts/reports/base-4.xml -------------\n=========================== short test summary info ============================\nPASSED test/grammar/alerts_test.py::test_alert_interpolation\nPASSED test/grammar/constants_test.py::test_constant_interpolation\nPASSED test/grammar/constants_test.py::test_constant_interpolation_free\nPASSED test/grammar/constants_test.py::test_constant_interpolation_multiline\nFAILED test/grammar/constants_test.py::test_evaluate_constant - AssertionErro...\n========================= 1 failed, 4 passed in 0.16s ==========================\n","stderr_tail":"","stdout_sha256":"124e8f823f4998b4b3dce7bd06fe7d30f38ee375bd78326a2afe0912f3a6fb39","log_path":"~/dev/nebius-hackathon/pilot/v2-P/neogeny__tatsu-320/runs/pilot-neogeny__tatsu-320-7ec7104015/logs/base/base-4.log","tree_digest":"d3e31a7cdd7e8e39e379ae85c5c94d275fd12070868b71c0ae7c6bf45118a100","tree_download_s":1.7211921669077128,"started_at":"2026-10-03T17:48:40.830748Z","duration_s":0.616458,"timed_out":false,"image_before":"38aa847b-7224-464b-aa51-54f6d9dfe7b3","image_after":"25a90a38-16f1-4902-9a9f-3a9ee0a77b57","junit":{"passed":["test/grammar/alerts_test.py::test_alert_interpolation","test/grammar/constants_test.py::test_constant_interpolation","test/grammar/constants_test.py::test_constant_interpolation_free","test/grammar/constants_test.py::test_constant_interpolation_multiline"],"failed":["test/grammar/constants_test.py::test_evaluate_constant"],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{"test/grammar/constants_test.py::test_evaluate_constant":"AssertionError: assert 'a' == (42, True, 'Something', None, 'a')\nE   AssertionError: assert 'a' == (42, True, 'Something', None, 'a')"}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-5","seq":5,"branch_id":"base","kind":"command","cmd":"python -c 'import base64\nimport hashlib\nimport json\nimport os\nfrom pathlib import Path\n\npayload = json.loads(base64.b64decode('\"'\"'eyJ0ZXN0X2ZpbGVzIjpbInRlc3QvZ3JhbW1hci9jb25zdGFudHNfdGVzdC5weSJdLCJ0ZXN0X3Jvb3RzIjpbInRlc3QvZ3JhbW1hciJdLCJjb25maWdfbmFtZXMiOlsiLnB5dGVzdC50b21sIiwiY29uZnRlc3QucHkiLCJweXByb2plY3QudG9tbCIsInB5dGVzdC5pbmkiLCJweXRlc3QudG9tbCIsInNldHVwLmNmZyIsInRveC5pbmkiXX0='\"'\"'))\nexcluded = {'\"'\"'.git'\"'\"', '\"'\"'.venv'\"'\"', '\"'\"'__pycache__'\"'\"', '\"'\"'site-packages'\"'\"'}\n\ndef digest(path):\n    return hashlib.sha256(path.read_bytes()).hexdigest()\n\ntests = {}\nfor item in payload['\"'\"'test_files'\"'\"']:\n    path = Path(item)\n    if path.is_file():\n        tests[path.as_posix()] = digest(path)\nfor item in payload['\"'\"'test_roots'\"'\"']:\n    root = Path(item)\n    if not root.is_dir():\n        continue\n    for directory, names, filenames in os.walk(root, followlinks=False):\n        names[:] = sorted(name for name in names if name not in excluded)\n        for filename in sorted(filenames):\n            path = Path(directory, filename)\n            if path.is_file():\n                tests[path.as_posix()] = digest(path)\n\nconfigs = {}\nfor directory, names, filenames in os.walk('\"'\"'.'\"'\"', followlinks=False):\n    names[:] = sorted(name for name in names if name not in excluded)\n    for filename in sorted(filenames):\n        if filename not in payload['\"'\"'config_names'\"'\"']:\n            continue\n        path = Path(directory, filename)\n        rendered = path.as_posix()\n        rendered = rendered[2:] if rendered.startswith('\"'\"'./'\"'\"') else rendered\n        configs[rendered] = digest(path)\n\nprint(json.dumps({'\"'\"'test_digests'\"'\"': tests, '\"'\"'pytest_config_digests'\"'\"': configs}, sort_keys=True))\n'","path":null,"exit_code":0,"stdout_tail":"{\"pytest_config_digests\": {\"pyproject.toml\": \"6478c6109fd6478783f11c807bb780482d1ea55dc887fd6bad0dc38718a37309\", \"tox.ini\": \"6c898fd900ca1789a855cce372b15dfd3b5a1d6d179eeffdfe857f49e80c3827\"}, \"test_digests\": {\"test/grammar/__init__.py\": \"8b084a9f378124b2b1a51563bf3c22444eb7ff33692017da28b2136ae56987ed\", \"test/grammar/alerts_test.py\": \"9ac5cc9f9f02db52e4c2a75e77a0f4f208ed4e0274e0cbb565553dab422d49da\", \"test/grammar/constants_test.py\": \"36516cfe3a6ee10edc6d9a1f1ef2d9c76bc5a4161483f8b37687622d99712d18\", \"test/grammar/defines_test.py\": \"7aff3c153f1b3b4d51a3f10d47ab12c1f716840b7c0124520825d315dd6ae485\", \"test/grammar/directive_test.py\": \"7833bead8ddd0963f212334397ae93888252b8c12cc87e68d59d3b5dd874b80c\", \"test/grammar/error_test.py\": \"d63b62c84ac330987c8e08f96f4c752acd3145cee30ef15fd6e44e20332283bf\", \"test/grammar/firstfollow_test.py\": \"d03cd15ad719834d21864160e6f42143c01a242043fbcb533c5b572e39ac3602\", \"test/grammar/join_test.py\": \"ee1aa274bd1bea63a7e36fceeb51899e358c9da0c50b07b4226caa469e41e53a\", \"test/grammar/keyword_test.py\": \"066af4313b8b57ec6a445bc76c1d176dcca3b5aeed9c0297d8b932e216c6356b\", \"test/grammar/left_recursion_test.py\": \"cda8c9b99846fa81c03d1d83f946d0673c613eaadde5efce53a58d4b2b1ca3df\", \"test/grammar/lookahead_test.py\": \"276e6e3bf0fe613c4e64aa44d7c28413389517a3eb3d8e8c272dcd7ede223102\", \"test/grammar/parameter_test.py\": \"784a277077be2f4c0a98ae4b892c1cbb72cf5cca3551dc329fde568337008e1b\", \"test/grammar/pattern_test.py\": \"09b60995f79ab1dcb99a10900715e019d2b74fb287e98cc1da087c9a69daf6a5\", \"test/grammar/pretty_test.py\": \"600f258804d3c4eb326dc823a71e2e8ca03f99e0afbc9c1e884622f0bcf7a6e5\", \"test/grammar/semantics_test.py\": \"0fb3cf318d89b5e332896f8292a46280cb438489976a462af59244bab558edec\", \"test/grammar/stateful_test.py\": \"eaabd310eef59c163531ba89abd0343f386b925b7ba12a0809e7aab457add171\", \"test/grammar/syntax_test.py\": \"a05dc0e9199db6d576cf6f9022947b47083251b3fd3c4829cb7d6cfac7193e6f\"}}\n","stderr_tail":"","stdout_sha256":"0c856a3351380c9f0fe3ec23a83547d44d020853895a53c5118aa848f7b5db6f","log_path":"~/dev/nebius-hackathon/pilot/v2-P/neogeny__tatsu-320/runs/pilot-neogeny__tatsu-320-7ec7104015/logs/base/base-5.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T17:48:45.027779Z","duration_s":0.030955999999999997,"timed_out":false,"image_before":"25a90a38-16f1-4902-9a9f-3a9ee0a77b57","image_after":"1081b661-5531-47d5-b878-2dbc7392882c","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-6","seq":6,"branch_id":"base","kind":"command","cmd":"python -c '# Runs inside the task sandbox, so it must work on Python 3.7.\npackages = set()\ntry:\n    import importlib.metadata as metadata\nexcept ImportError:\n    import pkg_resources\n\n    for dist in pkg_resources.working_set:\n        packages.add(dist.project_name + \"==\" + dist.version)\nelse:\n    for distribution in metadata.distributions():\n        name = distribution.metadata.get(\"Name\")\n        if name:\n            packages.add(name + \"==\" + distribution.version)\nprint(\"\\n\".join(sorted(packages, key=str.casefold)))\n'","path":null,"exit_code":0,"stdout_tail":"exceptiongroup==1.3.1\niniconfig==2.3.0\npackaging==25.0\npip==25.3\npluggy==1.6.0\nPygments==2.19.2\npytest==9.0.2\nsetuptools==80.9.0\nTatSu==5.9.0b1\ntomli==2.3.0\ntyping_extensions==4.15.0\nwheel==0.45.1\n","stderr_tail":"","stdout_sha256":"a9f3d4632e1d7dbacead8e777bc40f810931347ab6cf762501e6e2e021f0b0cf","log_path":"~/dev/nebius-hackathon/pilot/v2-P/neogeny__tatsu-320/runs/pilot-neogeny__tatsu-320-7ec7104015/logs/base/base-6.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T17:48:46.174767Z","duration_s":0.050597,"timed_out":false,"image_before":"1081b661-5531-47d5-b878-2dbc7392882c","image_after":"e6e1b2d6-83fa-440c-b332-4e2daadb6b97","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-7","seq":7,"branch_id":"base","kind":"command","cmd":"git add -A && git -c user.name=receipts -c user.email=receipts@localhost commit -q --allow-empty -m \"receipts snapshot\" && git rev-parse HEAD","path":null,"exit_code":0,"stdout_tail":"2cb5e05d0b2f02df73686a4264befb68ba358271\n","stderr_tail":"","stdout_sha256":"52d9d3896709c81f231fb139813777ea2006ef11d5008da75a9a1194e6486758","log_path":"~/dev/nebius-hackathon/pilot/v2-P/neogeny__tatsu-320/runs/pilot-neogeny__tatsu-320-7ec7104015/logs/base/base-7.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T17:48:47.983502Z","duration_s":0.020539,"timed_out":false,"image_before":"e6e1b2d6-83fa-440c-b332-4e2daadb6b97","image_after":"2cf01edd-ca03-465a-8ea4-261ebe35f330","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":"2cb5e05d0b2f02df73686a4264befb68ba358271"}
{"receipt_id":"base-8","seq":8,"branch_id":"base","kind":"command","cmd":"git -c core.quotePath=false ls-tree -z --name-only 2cb5e05d0b2f02df73686a4264befb68ba358271","path":null,"exit_code":0,"stdout_tail":".github\u0000.gitignore\u0000.pylintrc\u0000LICENSE.txt\u0000MANIFEST.in\u0000Makefile\u0000README.rst\u0000docs\u0000etc\u0000examples\u0000grammar\u0000media\u0000mypy.ini\u0000pyproject.toml\u0000readthedocs.yaml\u0000requirements-dev.txt\u0000requirements-test.txt\u0000tatsu\u0000test\u0000tox.ini\u0000","stderr_tail":"","stdout_sha256":"0ac7eb68f98887a5151d2bf6903dfc4f863b7cc732d8ddc36333c6e488699b8c","log_path":"~/dev/nebius-hackathon/pilot/v2-P/neogeny__tatsu-320/runs/pilot-neogeny__tatsu-320-7ec7104015/logs/base/base-8.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T17:48:49.133101Z","duration_s":0.00401,"timed_out":false,"image_before":"2cf01edd-ca03-465a-8ea4-261ebe35f330","image_after":"817f0124-9a5d-49ad-960b-d1dbec19815a","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"base-9","seq":9,"branch_id":"base","kind":"command","cmd":"git -c core.quotePath=false ls-tree -z --name-only 2cb5e05d0b2f02df73686a4264befb68ba358271:src","path":null,"exit_code":128,"stdout_tail":"","stderr_tail":"fatal: Not a valid object name 2cb5e05d0b2f02df73686a4264befb68ba358271:src\n","stdout_sha256":"5666b7af98bfdd7e5d13aed669c8e77a9da0bd34152487f318385411bd81bb97","log_path":"~/dev/nebius-hackathon/pilot/v2-P/neogeny__tatsu-320/runs/pilot-neogeny__tatsu-320-7ec7104015/logs/base/base-9.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T17:48:50.281110Z","duration_s":0.003881,"timed_out":false,"image_before":"817f0124-9a5d-49ad-960b-d1dbec19815a","image_after":"2e7333a5-f8cb-4c9e-b1c9-24a9b6e83444","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
