{"receipt_id":"agent1-1","seq":1,"branch_id":"agent1","kind":"command","cmd":"git ls-files -z","path":null,"exit_code":0,"stdout_tail":"igrations/0002_b_many_to_many.py\u0000tests/test_project/app_add_manytomany_field/migrations/__init__.py\u0000tests/test_project/app_add_manytomany_field/models.py\u0000tests/test_project/app_add_not_null_column/__init__.py\u0000tests/test_project/app_add_not_null_column/migrations/0001_create_table.py\u0000tests/test_project/app_add_not_null_column/migrations/0002_add_new_not_null_field.py\u0000tests/test_project/app_add_not_null_column/migrations/__init__.py\u0000tests/test_project/app_add_not_null_column/models.py\u0000tests/test_project/app_add_not_null_column_followed_by_default/__init__.py\u0000tests/test_project/app_add_not_null_column_followed_by_default/migrations/0001_initial.py\u0000tests/test_project/app_add_not_null_column_followed_by_default/migrations/0002_a_not_null_field.py\u0000tests/test_project/app_add_not_null_column_followed_by_default/migrations/__init__.py\u0000tests/test_project/app_add_not_null_column_followed_by_default/models.py\u0000tests/test_project/app_alter_column/__init__.py\u0000tests/test_project/app_alter_column/migrations/0001_initial.py\u0000tests/test_project/app_alter_column/migrations/0002_auto_20190414_1456.py\u0000tests/test_project/app_alter_column/migrations/__init__.py\u0000tests/test_project/app_alter_column/models.py\u0000tests/test_project/app_alter_column_drop_not_null/__init__.py\u0000tests/test_project/app_alter_column_drop_not_null/migrations/0001_create_table.py\u0000tests/test_project/app_alter_column_drop_not_null/migrations/0002_drop_not_null.py\u0000tests/test_project/app_alter_column_drop_not_null/migrations/__init__.py\u0000tests/test_project/app_alter_column_drop_not_null/models.py\u0000tests/test_project/app_correct/__init__.py\u0000tests/test_project/app_correct/migrations/0001_initial.py\u0000tests/test_project/app_correct/migrations/0002_foo.py\u0000tests/test_project/app_correct/migrations/__init__.py\u0000tests/test_project/app_correct/models.py\u0000tests/test_project/app_create_table_with_not_null_column/__init__.py\u0000tests/test_project/app_create_table_with_not_null_column/migrations/0001_initial.py\u0000tests/test_project/app_create_table_with_not_null_column/migrations/__init__.py\u0000tests/test_project/app_create_table_with_not_null_column/models.py\u0000tests/test_project/app_data_migrations/__init__.py\u0000tests/test_project/app_data_migrations/migrations/0001_initial.py\u0000tests/test_project/app_data_migrations/migrations/0002_missing_reverse.py\u0000tests/test_project/app_data_migrations/migrations/0003_incorrect_arguments.py\u0000tests/test_project/app_data_migrations/migrations/__init__.py\u0000tests/test_project/app_data_migrations/models.py\u0000tests/test_project/app_drop_column/__init__.py\u0000tests/test_project/app_drop_column/migrations/0001_initial.py\u0000tests/test_project/app_drop_column/migrations/0002_remove_a_field_b.py\u0000tests/test_project/app_drop_column/migrations/__init__.py\u0000tests/test_project/app_drop_column/models.py\u0000tests/test_project/app_drop_table/__init__.py\u0000tests/test_project/app_drop_table/migrations/0001_initial.py\u0000tests/test_project/app_drop_table/migrations/0002_delete_a.py\u0000tests/test_project/app_drop_table/migrations/__init__.py\u0000tests/test_project/app_drop_table/models.py\u0000tests/test_project/app_ignore_migration/__init__.py\u0000tests/test_project/app_ignore_migration/migrations/0001_initial.py\u0000tests/test_project/app_ignore_migration/migrations/0002_ignore_migration.py\u0000tests/test_project/app_ignore_migration/migrations/__init__.py\u0000tests/test_project/app_ignore_migration/models.py\u0000tests/test_project/app_make_not_null_with_django_default/__init__.py\u0000tests/test_project/app_make_not_null_with_django_default/migrations/0001_initial.py\u0000tests/test_project/app_make_not_null_with_django_default/migrations/0002_make_not_null_with_django_default.py\u0000tests/test_project/app_make_not_null_with_django_default/migrations/__init__.py\u0000tests/test_project/app_make_not_null_with_django_default/models.py\u0000tests/test_project/app_make_not_null_with_lib_default/__init__.py\u0000tests/test_project/app_make_not_null_with_lib_default/migrations/0001_initial.py\u0000tests/test_project/app_make_not_null_with_lib_default/migrations/0002_make_not_null_with_lib_default.py\u0000tests/test_project/app_make_not_null_with_lib_default/migrations/__init__.py\u0000tests/test_project/app_make_not_null_with_lib_default/models.py\u0000tests/test_project/app_rename_column/__init__.py\u0000tests/test_project/app_rename_column/migrations/0001_initial.py\u0000tests/test_project/app_rename_column/migrations/0002_auto_20190414_1502.py\u0000tests/test_project/app_rename_column/migrations/__init__.py\u0000tests/test_project/app_rename_column/models.py\u0000tests/test_project/app_rename_table/__init__.py\u0000tests/test_project/app_rename_table/migrations/0001_initial.py\u0000tests/test_project/app_rename_table/migrations/0002_auto_20190414_1500.py\u0000tests/test_project/app_rename_table/migrations/__init__.py\u0000tests/test_project/app_rename_table/models.py\u0000tests/test_project/app_unique_together/__init__.py\u0000tests/test_project/app_unique_together/migrations/0001_initial.py\u0000tests/test_project/app_unique_together/migrations/0002_auto_20190729_2122.py\u0000tests/test_project/app_unique_together/migrations/0003_auto_20190729_2122.py\u0000tests/test_project/app_unique_together/migrations/__init__.py\u0000tests/test_project/app_unique_together/models.py\u0000tests/test_project/makemigrations_backward_incompatible_migration_missing/__init__.py\u0000tests/test_project/makemigrations_backward_incompatible_migration_missing/migrations/0001_initial.py\u0000tests/test_project/makemigrations_backward_incompatible_migration_missing/migrations/__init__.py\u0000tests/test_project/makemigrations_backward_incompatible_migration_missing/models.py\u0000tests/test_project/makemigrations_correct_migration_missing/__init__.py\u0000tests/test_project/makemigrations_correct_migration_missing/migrations/0001_initial.py\u0000tests/test_project/makemigrations_correct_migration_missing/migrations/__init__.py\u0000tests/test_project/makemigrations_correct_migration_missing/models.py\u0000tests/test_project/settings.py\u0000tests/test_project/urls.py\u0000tests/test_project/wsgi.py\u0000tests/unit/__init__.py\u0000tests/unit/test_linter.py\u0000tests/unit/test_sql_analyser.py\u0000tests/unit/test_utils.py\u0000tox.ini\u0000","stderr_tail":"","stdout_sha256":"f097e825790b4752ae220b73bd7cf557cd54c5fbb1b50f6c4c5716a0922bf619","log_path":"~/dev/nebius-hackathon/pilot/v2-arm-lightning/3yourmind__django-migration-linter-258/runs/pilot-3yourmind__django-migration-linter-258-d6cf0553fa/logs/agent1/agent1-1.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T21:43:14.363528Z","duration_s":0.003823,"timed_out":false,"image_before":"2e8d50ac-e6d7-4484-8606-16b6ed215893","image_after":"50bd938d-24cc-4182-9e8c-a7fb351c7270","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-2","seq":2,"branch_id":"agent1","kind":"write","cmd":"/opt/receipts-bef3d62daa014f5e96f174f837f8a101/bin/busybox sh -c 'mkdir -p /django-migration-linter/django_migration_linter/sql_analyser && cp /opt/receipts-bef3d62daa014f5e96f174f837f8a101/incoming/efe7a39f87fef06b9c16de4eb8b8aa6f252983b3be67159ea1a4118ffe86a24b /django-migration-linter/django_migration_linter/sql_analyser/base.py'","path":"django_migration_linter/sql_analyser/base.py","exit_code":0,"stdout_tail":"","stderr_tail":"","stdout_sha256":"efe7a39f87fef06b9c16de4eb8b8aa6f252983b3be67159ea1a4118ffe86a24b","log_path":"~/dev/nebius-hackathon/pilot/v2-arm-lightning/3yourmind__django-migration-linter-258/runs/pilot-3yourmind__django-migration-linter-258-d6cf0553fa/logs/agent1/agent1-2.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T21:43:24.421205Z","duration_s":0.00484,"timed_out":false,"image_before":"50bd938d-24cc-4182-9e8c-a7fb351c7270","image_after":"2b7582b3-a29b-4f02-80b8-4784194b260f","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-3","seq":3,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-de5353af5ad54a6c9f7dd3f614e67689/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-de5353af5ad54a6c9f7dd3f614e67689/receipts_pytest.py tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_concurrently_where -v -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-3.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /django-migration-linter\ncollecting ... collected 1 item\n\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_concurrently_where PASSED [100%]\n\n==================================== PASSES ====================================\n------------ generated xml file: /opt/receipts/reports/agent1-3.xml ------------\n=========================== short test summary info ============================\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_concurrently_where\n============================== 1 passed in 0.44s ===============================\n","stderr_tail":"","stdout_sha256":"788fce648a06b39e14dd9d700f2b4b92c40c00130520238dfe3badae2e7a9d5b","log_path":"~/dev/nebius-hackathon/pilot/v2-arm-lightning/3yourmind__django-migration-linter-258/runs/pilot-3yourmind__django-migration-linter-258-d6cf0553fa/logs/agent1/agent1-3.log","tree_digest":"776d83735fea31d90d421d50188c19037b047309d20a814742b163258dc5c1e2","tree_download_s":2.7512879169080406,"started_at":"2026-10-03T21:43:27.859208Z","duration_s":0.826948,"timed_out":false,"image_before":"2b7582b3-a29b-4f02-80b8-4784194b260f","image_after":"4503b3f9-1087-4aa8-8cf3-cc9c62d0dbf9","junit":{"passed":["tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_concurrently_where"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-4","seq":4,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-742d376f571b4d0fa59f456f425451ba/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-742d376f571b4d0fa59f456f425451ba/receipts_pytest.py tests/unit/test_sql_analyser.py -v -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-4.xml","path":null,"exit_code":0,"stdout_tail":"Case::test_rename_table PASSED [ 43%]\ntests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_unique_index PASSED [ 45%]\ntests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_unique_together PASSED [ 48%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_add_many_to_many_field PASSED [ 51%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_alter_column PASSED [ 54%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_concurrently PASSED [ 56%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_concurrently_where PASSED [ 59%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_non_concurrently PASSED [ 62%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_non_concurrently_with_table_creation PASSED [ 64%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_drop_index_concurrently PASSED [ 67%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_drop_index_non_concurrently PASSED [ 70%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_drop_not_null PASSED [ 72%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_field_to_not_null_with_dropped_default PASSED [ 75%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_make_column_not_null_with_django_default PASSED [ 78%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_make_column_not_null_with_lib_default PASSED [ 81%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_not_null_followed_by_default PASSED [ 83%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_onetoonefield_to_not_null PASSED [ 86%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_reindex PASSED [ 89%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_unique_index PASSED [ 91%]\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_unique_together PASSED [ 94%]\ntests/unit/test_sql_analyser.py::SqlUtilsTestCase::test_unknown_analyser_string PASSED [ 97%]\ntests/unit/test_sql_analyser.py::SqlUtilsTestCase::test_unsupported_db_vendor PASSED [100%]\n\n==================================== PASSES ====================================\n------------ generated xml file: /opt/receipts/reports/agent1-4.xml ------------\n=========================== short test summary info ============================\nPASSED tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_add_many_to_many_field\nPASSED tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_add_not_null\nPASSED tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_add_not_null_followed_by_default\nPASSED tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_alter_column\nPASSED tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_drop_not_null\nPASSED tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_make_column_not_null_with_django_default\nPASSED tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_make_column_not_null_with_lib_default\nPASSED tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_unique_index\nPASSED tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_unique_together\nPASSED tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_add_many_to_many_field\nPASSED tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_add_not_null\nPASSED tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_alter_column\nPASSED tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_alter_column_after_django22\nPASSED tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_create_table_with_not_null\nPASSED tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_drop_not_null\nPASSED tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_rename_table\nPASSED tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_unique_index\nPASSED tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_unique_together\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_add_many_to_many_field\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_alter_column\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_concurrently\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_concurrently_where\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_non_concurrently\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_non_concurrently_with_table_creation\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_drop_index_concurrently\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_drop_index_non_concurrently\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_drop_not_null\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_field_to_not_null_with_dropped_default\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_make_column_not_null_with_django_default\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_make_column_not_null_with_lib_default\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_not_null_followed_by_default\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_onetoonefield_to_not_null\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_reindex\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_unique_index\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_unique_together\nPASSED tests/unit/test_sql_analyser.py::SqlUtilsTestCase::test_unknown_analyser_string\nPASSED tests/unit/test_sql_analyser.py::SqlUtilsTestCase::test_unsupported_db_vendor\n============================== 37 passed in 0.48s ==============================\n","stderr_tail":"","stdout_sha256":"6b79d7224ce3cd2c1725235a0e4d5725516c89df67d3c996b6adaa16f21f3c35","log_path":"~/dev/nebius-hackathon/pilot/v2-arm-lightning/3yourmind__django-migration-linter-258/runs/pilot-3yourmind__django-migration-linter-258-d6cf0553fa/logs/agent1/agent1-4.log","tree_digest":"776d83735fea31d90d421d50188c19037b047309d20a814742b163258dc5c1e2","tree_download_s":2.720123790903017,"started_at":"2026-10-03T21:43:34.850237Z","duration_s":0.861562,"timed_out":false,"image_before":"4503b3f9-1087-4aa8-8cf3-cc9c62d0dbf9","image_after":"42019401-fb2f-4bb7-8c77-bfe1bbc682a3","junit":{"passed":["tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_add_many_to_many_field","tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_add_not_null","tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_add_not_null_followed_by_default","tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_alter_column","tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_drop_not_null","tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_make_column_not_null_with_django_default","tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_make_column_not_null_with_lib_default","tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_unique_index","tests/unit/test_sql_analyser.py::MySqlAnalyserTestCase::test_unique_together","tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_add_many_to_many_field","tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_add_not_null","tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_alter_column","tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_alter_column_after_django22","tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_create_table_with_not_null","tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_drop_not_null","tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_rename_table","tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_unique_index","tests/unit/test_sql_analyser.py::SqliteAnalyserTestCase::test_unique_together","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_add_many_to_many_field","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_alter_column","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_concurrently","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_concurrently_where","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_non_concurrently","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_create_index_non_concurrently_with_table_creation","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_drop_index_concurrently","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_drop_index_non_concurrently","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_drop_not_null","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_field_to_not_null_with_dropped_default","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_make_column_not_null_with_django_default","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_make_column_not_null_with_lib_default","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_not_null_followed_by_default","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_onetoonefield_to_not_null","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_reindex","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_unique_index","tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_unique_together","tests/unit/test_sql_analyser.py::SqlUtilsTestCase::test_unknown_analyser_string","tests/unit/test_sql_analyser.py::SqlUtilsTestCase::test_unsupported_db_vendor"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-5","seq":5,"branch_id":"agent1","kind":"command","cmd":"cd /django-migration-linter && python -c \"\nfrom django_migration_linter.sql_analyser import analyse_sql_statements, get_sql_analyser_class\n\nsql = '''CREATE INDEX CONCURRENTLY \\\"delete_data_after_idx\\\" ON \\\"models_prediction\\\" (\\\"delete_data_after\\\") WHERE (\\\"data_deleted_at\\\" IS NULL AND \\\"delete_data_after\\\" IS NOT NULL);'''\n\nresult = analyse_sql_statements(\n    get_sql_analyser_class('postgresql'),\n    sql_statements=[sql]\n)\n\nerrors = [e for e in result if hasattr(e, 'code') and e.code == 'NOT_NULL']\nprint(f'NOT_NULL errors: {len(errors)}')\nfor e in errors:\n    print(f'  - {e.message}')\n\nwarnings = [e for e in result if hasattr(e, 'code') and e.code == 'ADD_UNIQUE']\nprint(f'ADD_UNIQUE warnings: {len(warnings)}')\n\nprint('SUCCESS: No NOT_NULL error detected for CREATE INDEX with WHERE IS NOT NULL' if len(errors) == 0 else 'FAILURE')\n\"","path":null,"exit_code":0,"stdout_tail":"NOT_NULL errors: 0\nADD_UNIQUE warnings: 0\nSUCCESS: No NOT_NULL error detected for CREATE INDEX with WHERE IS NOT NULL\n","stderr_tail":"","stdout_sha256":"a4e712fa57946e3b526c8a9bf75678266147788b1fb83954512e8f2d8f83acb8","log_path":"~/dev/nebius-hackathon/pilot/v2-arm-lightning/3yourmind__django-migration-linter-258/runs/pilot-3yourmind__django-migration-linter-258-d6cf0553fa/logs/agent1/agent1-5.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T21:43:42.923392Z","duration_s":0.156348,"timed_out":false,"image_before":"42019401-fb2f-4bb7-8c77-bfe1bbc682a3","image_after":"e7ca6df5-af61-4fc7-ae80-880f19fa9266","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-6","seq":6,"branch_id":"agent1","kind":"command","cmd":"cd /django-migration-linter && python -c \"\nfrom django_migration_linter.sql_analyser import analyse_sql_statements, get_sql_analyser_class\n\n# Test 1: Actual ALTER TABLE SET NOT NULL should still be detected\nsql1 = '''ALTER TABLE \\\"app_test\\\" ALTER COLUMN \\\"field\\\" SET NOT NULL;'''\nresult1 = analyse_sql_statements(\n    get_sql_analyser_class('postgresql'),\n    sql_statements=[sql1]\n)\nerrors1 = [e for e in result1 if hasattr(e, 'code') and e.code == 'NOT_NULL']\nprint(f'Test 1 - ALTER TABLE SET NOT NULL: {len(errors1)} error(s) (expected 1)')\nfor e in errors1:\n    print(f'  - {e.message}')\n\n# Test 2: CREATE TABLE with NOT NULL should still be allowed (excluded by design)\nsql2 = 'CREATE TABLE \\\"app_test\\\" (\\\"id\\\" integer NOT NULL);'\nresult2 = analyse_sql_statements(\n    get_sql_analyser_class('postgresql'),\n    sql_statements=[sql2]\n)\nerrors2 = [e for e in result2 if hasattr(e, 'code') and e.code == 'NOT_NULL']\nprint(f'Test 2 - CREATE TABLE NOT NULL: {len(errors2)} error(s) (expected 0 - CREATE TABLE is excluded)')\n\n# Test 3: Regular CREATE INDEX without WHERE should be allowed  \nsql3 = 'CREATE INDEX \\\"idx_name\\\" ON \\\"table\\\" (\\\"col\\\");'\nresult3 = analyse_sql_statements(\n    get_sql_analyser_class('postgresql'),\n    sql_statements=[sql3]\n)\nerrors3 = [e for e in result3 if hasattr(e, 'code') and e.code == 'NOT_NULL']\nprint(f'Test 3 - CREATE INDEX (no WHERE): {len(errors3)} error(s) (expected 0)')\n\n# Test 4: CREATE UNIQUE INDEX should still be detected as ADD_UNIQUE\nsql4 = 'CREATE UNIQUE INDEX \\\"idx_name\\\" ON \\\"table\\\" (\\\"col\\\");'\nresult4 = analyse_sql_statements(\n    get_sql_analyser_class('postgresql'),\n    sql_statements=[sql4]\n)\nerrors4 = [e for e in result4 if hasattr(e, 'code') and e.code == 'ADD_UNIQUE']\nwarnings4 = [e for e in result4 if hasattr(e, 'code') and e.code == 'WARNING']\nprint(f'Test 4 - CREATE UNIQUE INDEX: {len(errors4)} error(s), {len(warnings4)} warning(s) (expected 1 ADD_UNIQUE)')\n\"","path":null,"exit_code":0,"stdout_tail":"Test 1 - ALTER TABLE SET NOT NULL: 0 error(s) (expected 1)\nTest 2 - CREATE TABLE NOT NULL: 0 error(s) (expected 0 - CREATE TABLE is excluded)\nTest 3 - CREATE INDEX (no WHERE): 0 error(s) (expected 0)\nTest 4 - CREATE UNIQUE INDEX: 0 error(s), 0 warning(s) (expected 1 ADD_UNIQUE)\n","stderr_tail":"","stdout_sha256":"2b0a2ff5a9d82d3d4cdf5a05892a35b6cf8ca8235dab6cb94b09426109d66028","log_path":"~/dev/nebius-hackathon/pilot/v2-arm-lightning/3yourmind__django-migration-linter-258/runs/pilot-3yourmind__django-migration-linter-258-d6cf0553fa/logs/agent1/agent1-6.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T21:43:49.032778Z","duration_s":0.142188,"timed_out":false,"image_before":"e7ca6df5-af61-4fc7-ae80-880f19fa9266","image_after":"3066fd3d-1ef9-4af4-ac3b-30be31280e21","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-7","seq":7,"branch_id":"agent1","kind":"command","cmd":"cd /django-migration-linter && python -c \"\nfrom django_migration_linter.sql_analyser import analyse_sql_statements, get_sql_analyser_class\n\n# Test 1: Actual ALTER TABLE SET NOT NULL should still be detected\nsql1 = 'ALTER TABLE \\\"app_test\\\" ALTER COLUMN \\\"field\\\" SET NOT NULL;'\nresult1 = analyse_sql_statements(\n    get_sql_analyser_class('postgresql'),\n    sql_statements=[sql1]\n)\nerrors1 = [e for e in result1 if hasattr(e, 'code') and e.code == 'NOT_NULL']\nprint(f'Test 1 - ALTER TABLE SET NOT NULL: {len(errors1)} error(s) (expected 1)')\nfor e in errors1:\n    print(f'  - {e.message}')\n\n# Test 2: CREATE TABLE with NOT NULL should still be allowed (excluded by design)\nsql2 = 'CREATE TABLE \\\"app_test\\\" (\\\"id\\\" integer NOT NULL);'\nresult2 = analyse_sql_statements(\n    get_sql_analyser_class('postgresql'),\n    sql_statements=[sql2]\n)\nerrors2 = [e for e in result2 if hasattr(e, 'code') and e.code == 'NOT_NULL']\nprint(f'Test 2 - CREATE TABLE NOT NULL: {len(errors2)} error(s) (expected 0 - CREATE TABLE is excluded)')\n\n# Test 3: Regular CREATE INDEX without WHERE should be allowed  \nsql3 = 'CREATE INDEX \\\"idx_name\\\" ON \\\"table\\\" (\\\"col\\\");'\nresult3 = analyse_sql_statements(\n    get_sql_analyser_class('postgresql'),\n    sql_statements=[sql3]\n)\nerrors3 = [e for e in result3 if hasattr(e, 'code') and e.code == 'NOT_NULL']\nprint(f'Test 3 - CREATE INDEX (no WHERE): {len(errors3)} error(s) (expected 0)')\n\n# Test 4: CREATE UNIQUE INDEX should still be detected as ADD_UNIQUE\nsql4 = 'CREATE UNIQUE INDEX \\\"idx_name\\\" ON \\\"table\\\" (\\\"col\\\");'\nresult4 = analyse_sql_statements(\n    get_sql_analyser_class('postgresql'),\n    sql_statements=[sql4]\n)\nerrors4 = [e for e in result4 if hasattr(e, 'code') and e.code == 'ADD_UNIQUE']\nwarnings4 = [e for e in result4 if hasattr(e, 'code') and e.code == 'WARNING']\nprint(f'Test 4 - CREATE UNIQUE INDEX: {len(errors4)} error(s), {len(warnings4)} warning(s) (expected 1 ADD_UNIQUE)')\n\"","path":null,"exit_code":0,"stdout_tail":"Test 1 - ALTER TABLE SET NOT NULL: 0 error(s) (expected 1)\nTest 2 - CREATE TABLE NOT NULL: 0 error(s) (expected 0 - CREATE TABLE is excluded)\nTest 3 - CREATE INDEX (no WHERE): 0 error(s) (expected 0)\nTest 4 - CREATE UNIQUE INDEX: 0 error(s), 0 warning(s) (expected 1 ADD_UNIQUE)\n","stderr_tail":"","stdout_sha256":"2b0a2ff5a9d82d3d4cdf5a05892a35b6cf8ca8235dab6cb94b09426109d66028","log_path":"~/dev/nebius-hackathon/pilot/v2-arm-lightning/3yourmind__django-migration-linter-258/runs/pilot-3yourmind__django-migration-linter-258-d6cf0553fa/logs/agent1/agent1-7.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T21:43:55.103757Z","duration_s":0.142013,"timed_out":false,"image_before":"3066fd3d-1ef9-4af4-ac3b-30be31280e21","image_after":"c434447b-1b00-4cc9-a579-97c5e8a6efa0","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-8","seq":8,"branch_id":"agent1","kind":"command","cmd":"cd /django-migration-linter && python -c \"\nfrom django_migration_linter.sql_analyser import analyse_sql_statements, get_sql_analyser_class\n\n# Test: ALTER TABLE SET NOT NULL with multiple statements\nsql1 = [\n    'ALTER TABLE \\\"app_test\\\" ADD COLUMN \\\"field\\\" integer NOT NULL;',\n    'ALTER TABLE \\\"app_test\\\" ALTER COLUMN \\\"field\\\" DROP DEFAULT;',\n]\nresult1 = analyse_sql_statements(\n    get_sql_analyser_class('postgresql'),\n    sql_statements=sql1\n)\nerrors1 = [e for e in result1 if hasattr(e, 'code') and e.code == 'NOT_NULL']\nprint(f'Test - ALTER TABLE ADD NOT NULL + DROP DEFAULT: {len(errors1)} error(s) (expected 1)')\nfor e in errors1:\n    print(f'  - {e.message}')\n\"","path":null,"exit_code":0,"stdout_tail":"Test - ALTER TABLE ADD NOT NULL + DROP DEFAULT: 0 error(s) (expected 1)\n","stderr_tail":"","stdout_sha256":"dd20d4a88ee1abf0fa0728676efcf20ce87d71157d0c3aa8b2a85726669e1703","log_path":"~/dev/nebius-hackathon/pilot/v2-arm-lightning/3yourmind__django-migration-linter-258/runs/pilot-3yourmind__django-migration-linter-258-d6cf0553fa/logs/agent1/agent1-8.log","tree_digest":null,"tree_download_s":null,"started_at":"2026-10-03T21:43:58.496392Z","duration_s":0.142601,"timed_out":false,"image_before":"c434447b-1b00-4cc9-a579-97c5e8a6efa0","image_after":"812e3c4f-d9ad-4379-bcfa-878b4934aa06","junit":null,"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-9","seq":9,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-90c3c0cf485a40cfb0bc369d6b84f3a4/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-90c3c0cf485a40cfb0bc369d6b84f3a4/receipts_pytest.py tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_make_column_not_null_with_django_default -v -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-9.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /django-migration-linter\ncollecting ... collected 1 item\n\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_make_column_not_null_with_django_default PASSED [100%]\n\n==================================== PASSES ====================================\n------------ generated xml file: /opt/receipts/reports/agent1-9.xml ------------\n=========================== short test summary info ============================\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_make_column_not_null_with_django_default\n============================== 1 passed in 0.44s ===============================\n","stderr_tail":"","stdout_sha256":"10abc166b4703e564346e5d31f463767c93680aa600ab64f6d693549dc1bd38f","log_path":"~/dev/nebius-hackathon/pilot/v2-arm-lightning/3yourmind__django-migration-linter-258/runs/pilot-3yourmind__django-migration-linter-258-d6cf0553fa/logs/agent1/agent1-9.log","tree_digest":"776d83735fea31d90d421d50188c19037b047309d20a814742b163258dc5c1e2","tree_download_s":2.632163083180785,"started_at":"2026-10-03T21:44:01.203026Z","duration_s":0.826766,"timed_out":false,"image_before":"812e3c4f-d9ad-4379-bcfa-878b4934aa06","image_after":"01909c06-aaf5-4783-b29a-e47d8b19b040","junit":{"passed":["tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_make_column_not_null_with_django_default"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-10","seq":10,"branch_id":"agent1","kind":"command","cmd":"/opt/receipts-b9546630319a42b5ab4ce77de60dc8df/bin/busybox mkdir -p /opt/receipts/reports && python -I /opt/receipts-b9546630319a42b5ab4ce77de60dc8df/receipts_pytest.py tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_field_to_not_null_with_dropped_default -v -o junit_family=xunit1 -p no:cacheprovider -rA --continue-on-collection-errors --junitxml=/opt/receipts/reports/agent1-10.xml","path":null,"exit_code":0,"stdout_tail":"============================= test session starts ==============================\nplatform linux -- Python 3.10.19, pytest-9.0.2, pluggy-1.6.0 -- /usr/local/bin/python\nrootdir: /django-migration-linter\ncollecting ... collected 1 item\n\ntests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_field_to_not_null_with_dropped_default PASSED [100%]\n\n==================================== PASSES ====================================\n----------- generated xml file: /opt/receipts/reports/agent1-10.xml ------------\n=========================== short test summary info ============================\nPASSED tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_field_to_not_null_with_dropped_default\n============================== 1 passed in 0.43s ===============================\n","stderr_tail":"","stdout_sha256":"0f4a5ece81e65c3a64a0f1c24e183e233ee8cc7f03237186aca9b42c6d662b7b","log_path":"~/dev/nebius-hackathon/pilot/v2-arm-lightning/3yourmind__django-migration-linter-258/runs/pilot-3yourmind__django-migration-linter-258-d6cf0553fa/logs/agent1/agent1-10.log","tree_digest":"776d83735fea31d90d421d50188c19037b047309d20a814742b163258dc5c1e2","tree_download_s":2.625123541802168,"started_at":"2026-10-03T21:44:07.796749Z","duration_s":0.822056,"timed_out":false,"image_before":"01909c06-aaf5-4783-b29a-e47d8b19b040","image_after":"ef7d98a4-4924-460e-800a-e626f3ca1ddb","junit":{"passed":["tests/unit/test_sql_analyser.py::PostgresqlAnalyserTestCase::test_field_to_not_null_with_dropped_default"],"failed":[],"errors":[],"skipped":[],"collection_errors":[],"failure_text":{}},"diff":null,"patch_sha256":null,"dropped_paths":[],"snapshot_sha":null}
{"receipt_id":"agent1-11","seq":11,"branch_id":"agent1","kind":"diff","cmd":"compute patch in executor staging agent1-a78bfd26727c4b5f940fd28ec8702d38: /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false add -A && /opt/homebrew/Cellar/git/2.53.0/bin/git -c core.hooksPath=/dev/null -c core.attributesFile=/dev/null -c diff.external= -c core.quotePath=false diff --cached --binary --no-ext-diff --no-textconv --no-renames ecfc6258093ea8b744ac8bc7d3201713287bebc3","path":null,"exit_code":0,"stdout_tail":"diff --git a/django_migration_linter/sql_analyser/base.py b/django_migration_linter/sql_analyser/base.py\nindex 2fa0646..f067860 100644\n--- a/django_migration_linter/sql_analyser/base.py\n+++ b/django_migration_linter/sql_analyser/base.py\n@@ -40,7 +40,9 @@ def has_not_null_column(sql_statements: list[str], **kwargs) -> bool:\n             ends_with_default = False\n     return (\n         any(\n-            re.search(\"(?<!DROP )NOT NULL\", sql) and not sql.startswith(\"CREATE TABLE\")\n+            re.search(\"(?<!DROP )NOT NULL\", sql)\n+            and not sql.startswith(\"CREATE TABLE\")\n+            and not sql.startswith(\"CREATE INDEX\")\n             for sql in sql_statements\n         )\n         and ends_with_default is False\n","stderr_tail":"","stdout_sha256":"08e0c7b8afce695f8eb836f863f01b55bd423b0eb37f03a13ef46a708ec47262","log_path":null,"tree_digest":"776d83735fea31d90d421d50188c19037b047309d20a814742b163258dc5c1e2","tree_download_s":2.766564833931625,"started_at":"2026-10-03T21:44:23.178363Z","duration_s":0.03462329204194248,"timed_out":false,"image_before":"ef7d98a4-4924-460e-800a-e626f3ca1ddb","image_after":"ef7d98a4-4924-460e-800a-e626f3ca1ddb","junit":null,"diff":{"files":[{"path":"django_migration_linter/sql_analyser/base.py","added":3,"deleted":1,"category":"source","status":"modified"}],"patch_sha256":"08e0c7b8afce695f8eb836f863f01b55bd423b0eb37f03a13ef46a708ec47262","patch_path":"~/dev/nebius-hackathon/pilot/v2-arm-lightning/3yourmind__django-migration-linter-258/runs/pilot-3yourmind__django-migration-linter-258-d6cf0553fa/artifacts/agent1/agent1-11.patch"},"patch_sha256":"08e0c7b8afce695f8eb836f863f01b55bd423b0eb37f03a13ef46a708ec47262","dropped_paths":[],"snapshot_sha":"ecfc6258093ea8b744ac8bc7d3201713287bebc3"}
