146 lines
10 KiB
Python
146 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")),
|
||
|
|
]
|