Artifex/control_plane/agents/migrations/0007_replay_arena.py
2026-08-15 18:14:21 +07:00

145 lines
10 KiB
Python

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")),
]