Artifex/control_plane/projects/migrations/0004_steward_v1.py
2026-08-15 18:44:26 +07:00

126 lines
8.2 KiB
Python

import uuid
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("agents", "0007_replay_arena"),
("graph", "0004_unique_champion_graph_version"),
("projects", "0003_commitrecord_graph_run"),
]
operations = [
migrations.CreateModel(
name="StewardPolicy",
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)),
("enabled_checks", models.JSONField(blank=True, default=list)),
("severity_thresholds", models.JSONField(blank=True, default=dict)),
("auto_route_thresholds", models.JSONField(blank=True, default=dict)),
("run_cadence", models.JSONField(blank=True, default=dict)),
("allowed_repair_scope", models.JSONField(blank=True, default=dict)),
("approval_requirements", models.JSONField(blank=True, default=dict)),
("ignored_paths", models.JSONField(blank=True, default=list)),
("budget_limits", models.JSONField(blank=True, default=dict)),
("metadata", models.JSONField(blank=True, default=dict)),
],
),
migrations.CreateModel(
name="StewardEnrollment",
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)),
("status", models.CharField(default="ACTIVE", max_length=32)),
("enrolled_at", models.DateTimeField(auto_now_add=True)),
("last_run_at", models.DateTimeField(blank=True, null=True)),
("next_run_at", models.DateTimeField(blank=True, null=True)),
("metadata", models.JSONField(blank=True, default=dict)),
("policy", models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name="enrollments", to="projects.stewardpolicy")),
("project", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="steward_enrollments", to="projects.project")),
],
),
migrations.CreateModel(
name="StewardRun",
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)),
("status", models.CharField(default="PENDING", max_length=32)),
("started_at", models.DateTimeField(blank=True, null=True)),
("completed_at", models.DateTimeField(blank=True, null=True)),
("summary", models.TextField(blank=True)),
("metadata", models.JSONField(blank=True, default=dict)),
("enrollment", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="runs", to="projects.stewardenrollment")),
("execution_graph_version", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="steward_runs", to="graph.executiongraphversion")),
("project", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="steward_runs", to="projects.project")),
],
),
migrations.CreateModel(
name="StewardCheck",
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)),
("check_type", models.CharField(max_length=80)),
("status", models.CharField(max_length=32)),
("evidence", models.JSONField(blank=True, default=dict)),
("severity", models.CharField(default="INFO", max_length=32)),
("metadata", models.JSONField(blank=True, default=dict)),
("steward_run", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="checks", to="projects.stewardrun")),
],
),
migrations.CreateModel(
name="StewardFinding",
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)),
("finding_type", models.CharField(max_length=80)),
("title", models.CharField(max_length=255)),
("summary", models.TextField(blank=True)),
("evidence", models.JSONField(blank=True, default=dict)),
("severity", models.CharField(default="INFO", max_length=32)),
("confidence", models.FloatField(default=0.0)),
("status", models.CharField(default="OPEN", max_length=32)),
("recommended_action", models.CharField(default="INVESTIGATE", max_length=32)),
("recommended_route", models.CharField(blank=True, max_length=120)),
("grouping_key", models.CharField(max_length=240)),
("first_seen", models.DateTimeField(blank=True, null=True)),
("last_seen", models.DateTimeField(blank=True, null=True)),
("occurrence_count", models.PositiveIntegerField(default=1)),
("metadata", models.JSONField(blank=True, default=dict)),
("project", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="steward_findings", to="projects.project")),
("source_check", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="findings", to="projects.stewardcheck")),
("steward_run", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="findings", to="projects.stewardrun")),
],
),
migrations.AddField(
model_name="commitrecord",
name="steward_finding",
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="commits", to="projects.stewardfinding"),
),
migrations.CreateModel(
name="StewardAction",
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)),
("action_type", models.CharField(max_length=32)),
("status", models.CharField(default="PENDING", max_length=32)),
("requires_approval", models.BooleanField(default=False)),
("approved_at", models.DateTimeField(blank=True, null=True)),
("metadata", models.JSONField(blank=True, default=dict)),
("finding", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name="actions", to="projects.stewardfinding")),
("improvement_candidate", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="steward_actions", to="agents.improvementcandidate")),
("investigation", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="steward_actions", to="agents.progenyinvestigation")),
("roadmap_item", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="steward_actions", to="projects.roadmapitem")),
("task", models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="steward_actions", to="projects.task")),
],
),
]