import uuid import django.db.models.deletion from django.db import migrations, models class Migration(migrations.Migration): dependencies = [ ("agents", "0006_progenyinvestigation_improvementcandidate"), ("graph", "0004_unique_champion_graph_version"), ("projects", "0003_commitrecord_graph_run"), ] operations = [ migrations.CreateModel( name="ReplayDataset", fields=[ ("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ("name", models.CharField(max_length=200)), ("description", models.TextField(blank=True)), ("version", models.PositiveIntegerField(default=1)), ("status", models.CharField(default="DRAFT", max_length=32)), ("selection_criteria", models.JSONField(blank=True, default=dict)), ("frozen_at", models.DateTimeField(blank=True, null=True)), ("metadata", models.JSONField(blank=True, default=dict)), ], ), migrations.CreateModel( name="ProgenyExperiment", fields=[ ("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ("target_type", models.CharField(max_length=80)), ("target_identifier", models.CharField(blank=True, max_length=240)), ("hypothesis", models.TextField()), ("success_criteria", models.JSONField(blank=True, default=dict)), ("status", models.CharField(default="DRAFT", max_length=32)), ("started_at", models.DateTimeField(blank=True, null=True)), ("completed_at", models.DateTimeField(blank=True, null=True)), ("metadata", models.JSONField(blank=True, default=dict)), ("improvement_candidate", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="experiments", to="agents.improvementcandidate")), ("investigation", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="experiments", to="agents.progenyinvestigation")), ("replay_dataset", models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name="experiments", to="agents.replaydataset")), ], ), migrations.CreateModel( name="ExperimentVariant", fields=[ ("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ("role", models.CharField(max_length=32)), ("target_type", models.CharField(max_length=80)), ("target_reference", models.CharField(max_length=240)), ("configuration_snapshot", models.JSONField(default=dict)), ("metadata", models.JSONField(blank=True, default=dict)), ("agent_version", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="experiment_variants", to="agents.agentversion")), ("execution_graph_version", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="experiment_variants", to="graph.executiongraphversion")), ("experiment", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="variants", to="agents.progenyexperiment")), ], ), migrations.CreateModel( name="ReplayCase", fields=[ ("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ("task_type", models.CharField(max_length=80)), ("project_type", models.CharField(blank=True, max_length=100)), ("original_goal", models.TextField()), ("acceptance_criteria", models.JSONField(blank=True, default=list)), ("repository_path", models.TextField(blank=True)), ("repository_baseline_ref", models.CharField(max_length=80)), ("expected_evaluator_inputs", models.JSONField(blank=True, default=dict)), ("failure_classification", models.CharField(blank=True, max_length=120)), ("selection_metadata", models.JSONField(blank=True, default=dict)), ("replay_dataset", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="cases", to="agents.replaydataset")), ("source_graph_run", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="replay_cases", to="graph.graphrun")), ("source_project", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="replay_cases", to="projects.project")), ("source_task", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="replay_cases", to="projects.task")), ("source_task_attempt", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="replay_cases", to="projects.taskattempt")), ], ), migrations.CreateModel( name="ReplayRun", fields=[ ("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ("started_at", models.DateTimeField(blank=True, null=True)), ("completed_at", models.DateTimeField(blank=True, null=True)), ("status", models.CharField(default="PENDING", max_length=32)), ("failure_classification", models.CharField(blank=True, max_length=80)), ("commit_candidate_sha", models.CharField(blank=True, max_length=64)), ("telemetry", models.JSONField(blank=True, default=dict)), ("failure_evidence", models.JSONField(blank=True, default=dict)), ("metadata", models.JSONField(blank=True, default=dict)), ("experiment", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="replay_runs", to="agents.progenyexperiment")), ("graph_run", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="replay_runs", to="graph.graphrun")), ("replay_case", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="replay_runs", to="agents.replaycase")), ("replay_task", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="replay_runs", to="projects.task")), ("variant", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="replay_runs", to="agents.experimentvariant")), ], ), migrations.CreateModel( name="ReplayResult", fields=[ ("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ("completion_status", models.CharField(max_length=32)), ("tests_status", models.CharField(blank=True, max_length=32)), ("reviewer_status", models.CharField(blank=True, max_length=32)), ("judge_status", models.CharField(blank=True, max_length=32)), ("accepted_candidate", models.BooleanField(default=False)), ("metrics", models.JSONField(blank=True, default=dict)), ("safety", models.JSONField(blank=True, default=dict)), ("evidence", models.JSONField(blank=True, default=dict)), ("replay_run", models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name="result", to="agents.replayrun")), ], ), migrations.CreateModel( name="ExperimentComparison", fields=[ ("id", models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False)), ("created_at", models.DateTimeField(auto_now_add=True)), ("updated_at", models.DateTimeField(auto_now=True)), ("aggregate_metrics", models.JSONField(blank=True, default=dict)), ("paired_outcomes", models.JSONField(blank=True, default=dict)), ("regression_cases", models.JSONField(blank=True, default=list)), ("verdict", models.CharField(default="INCONCLUSIVE", max_length=80)), ("reasons", models.JSONField(blank=True, default=list)), ("approved_at", models.DateTimeField(blank=True, null=True)), ("rejected_at", models.DateTimeField(blank=True, null=True)), ("decided_by", models.CharField(blank=True, max_length=120)), ("challenger_variant", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="challenger_comparisons", to="agents.experimentvariant")), ("champion_variant", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="champion_comparisons", to="agents.experimentvariant")), ("experiment", models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name="comparison", to="agents.progenyexperiment")), ], ), migrations.AddConstraint(model_name="replaydataset", constraint=models.UniqueConstraint(fields=("name", "version"), name="unique_replay_dataset_version")), ]