Shared task
Fixed #34366 -- Reduced AlterField operations when optimizing migrations.
PR #16595 ↗ · django/django · · merged Feb 24, 2023 · +15 −9 · base f9fe062de5fc
what a new run launched now would send
Migration optimizer does not reduce multiple AlterField Description Let's consider the following operations: operations = [ migrations.AddField( model_name="book", name="title", field=models.CharField(max_length=256, null=True), ), migrations.AlterField( model_name="book", name="title", field=models.CharField(max_length=128, null=True), ), migrations.AlterField( model_name="book", name="title", field=models.CharField(max_length=128, null=True, help_text="help"), ), migrations.AlterField( model_name="book", name="title", field=models.CharField(max_length=128, null=True, help_text="help", default=None), ), ] If I run the optimizer, I get only the AddField, as we could expect. However, if the AddField model is separated from the AlterField (e.g. because of a non-elidable migration, or inside a non-squashed migration), none of the AlterField are reduced: optimizer.optimize(operations[1:], "books") [<AlterField model_name='book', name='title', field=<django.db.models.fields.CharField>>, <AlterField model_name='book', name='title', field=<django.db.models.fields.CharField>>, <AlterField model_name='book', name='title', field=<django.db.models.fields.CharField>>] Indeed, the AlterField.reduce does not consider the the case where operation is also an AlterField. Is this behaviour intended? If so, could it be documented? Otherwise, would it make sense to add something like if isinstance(operation, AlterField) and self.is_same_field_operation( operation ): return [operation] Work only inside this repository checkout. Make the code change the task describes, keeping the diff focused — no drive-by refactors. When you are done, leave your changes committed or in the working tree; they are collected automatically. Stay on this snapshot checkout (`task/ycb_django_pr16595`). Never checkout, pull, or rebase onto `main`. That branch is a README-only orphan. Stay on this HEAD. Do not fetch another default branch. Push only on the Cursor-created `crazy-cursor/…` side branch from this HEAD.
Some past runs of this task were launched with a different prompt (the prompt template changed since, or those runs predate this benchmark's stored prompt). Each run persists the exact prompt it sent at launch — that per-launch record is the audit trail; this page shows only the current one.
| Run | Model | Verdict |
|---|---|---|
| Aug 21, 12:31 UTC · completed | composer-2.5 | PASS |
| Aug 21, 12:31 UTC · completed | grok-4.6 | PASS |
| Aug 21, 12:31 UTC · completed | grok-4.6-low |
Powered by YourCodingBench — benchmark coding models on your own repo's commits. sign in
| Aug 21, 12:31 UTC · completed | grok-4.6-medium | PASS |
| Aug 21, 12:31 UTC · completed | grok-4.6-xhigh | PASS |
Binary verdicts from the pinned judge (D27). Full attempt detail — candidate diff, transcript, timings — lives on each run page's score matrix.