Make chat_backend migrations a single chain (#77)
Unit Tests / test (push) Successful in 9s
Deploy Beta / unit-tests (push) Successful in 9s
Deploy Beta / docker (push) Successful in 22s
Deploy Beta / deploy-beta (push) Successful in 1m8s

## Summary
- Closes #76.
- `0034_waitlistentry` and `0034_customuser_use_conversation_context` both depended on `0033_agentrun_agentstep`, so the graph had two leaves.
- Waitlist is now `0035_waitlistentry` and depends on `0034_customuser_use_conversation_context`. One leaf: `0035_waitlistentry`.

## Deploy note
If `django_migrations` already has a row named `0034_waitlistentry`, rename it before migrate:

```sql
UPDATE django_migrations
SET name = '0035_waitlistentry'
WHERE app = 'chat_backend' AND name = '0034_waitlistentry';
```

Then run migrate. A database that never applied `0034_waitlistentry` can migrate as usual.

## Test plan
- [x] `chat_backend.tests.test_migration_graph` asserts a single leaf and the new parent.
- [x] `chat_backend.tests.test_public_marketing` still passes.
- [ ] On a database that already applied both 0034 siblings, run the rename SQL, then `migrate`, and confirm no `InconsistentMigrationHistory`.

Reviewed-on: #77
This commit was merged in pull request #77.
This commit is contained in:
westfarn committed 2026-10-19 01:08:54 -07:00
1 parent 257890e600
commit bb5c43a4e7
2 files changed
+15 -1

No files matched your search

@@ -7,7 +7,7 @@ from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("chat_backend", "0033_agentrun_agentstep"),
("chat_backend", "0034_customuser_use_conversation_context"),
]
operations = [
@@ -0,0 +1,14 @@
from django.db import connection
from django.db.migrations.loader import MigrationLoader
from django.test import TestCase
class MigrationGraphTests(TestCase):
def test_chat_backend_has_a_single_leaf(self):
loader = MigrationLoader(connection, ignore_no_migrations=True)
leaves = [name for app, name in loader.graph.leaf_nodes() if app == "chat_backend"]
self.assertEqual(leaves, ["0035_waitlistentry"])
node = loader.graph.nodes[("chat_backend", "0035_waitlistentry")]
parents = [name for app, name in node.dependencies if app == "chat_backend"]
self.assertEqual(parents, ["0034_customuser_use_conversation_context"])