From 6b1e5208451727bb3c949cf331f9e892ff85fd3d Mon Sep 17 00:00:00 2001 From: Daniel Maddern Date: Sun, 16 Aug 2026 16:41:50 +0700 Subject: [PATCH] Fix graph champion version promotion --- graph/bootstrap.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/graph/bootstrap.py b/graph/bootstrap.py index b443aef..a33614e 100644 --- a/graph/bootstrap.py +++ b/graph/bootstrap.py @@ -64,12 +64,14 @@ def _champion_graph(spec) -> ExecutionGraphVersion: name=spec.name, defaults={"graph_type": spec.graph_type, "description": str(spec.metadata.get("description", ""))}, ) + ExecutionGraphVersion.objects.filter(graph=definition, status=ExecutionGraphVersionStatus.CHAMPION).exclude(version=spec.version).update(status=ExecutionGraphVersionStatus.RETIRED) version, created = ExecutionGraphVersion.objects.get_or_create( graph=definition, version=spec.version, defaults={"status": ExecutionGraphVersionStatus.CHAMPION, "graph_spec": spec.to_dict(), "metadata": {"immutable_after_use": True}, "promoted_at": timezone.now()}, ) if not created and version.status != ExecutionGraphVersionStatus.CHAMPION: + ExecutionGraphVersion.objects.filter(graph=definition, status=ExecutionGraphVersionStatus.CHAMPION).exclude(pk=version.pk).update(status=ExecutionGraphVersionStatus.RETIRED) version.status = ExecutionGraphVersionStatus.CHAMPION version.promoted_at = timezone.now() version.save(update_fields=["status", "promoted_at"])