Files
aios/active-runtime/migrations/006_task_lineage_supersession_initial_projection.sql
T

42 lines
1.7 KiB
SQL

PRAGMA foreign_keys=ON;
CREATE TABLE IF NOT EXISTS task_lineage_supersession_initial_projections (
projection_id TEXT PRIMARY KEY,
task_id TEXT NOT NULL UNIQUE,
source_task_id TEXT NOT NULL,
supersession_ordinal INTEGER NOT NULL CHECK (supersession_ordinal = 1),
intent_sha256 TEXT NOT NULL UNIQUE,
intent_json TEXT NOT NULL,
owner_decision_sha256 TEXT NOT NULL UNIQUE,
source_task_identity_sha256 TEXT NOT NULL,
source_metadata_sha256 TEXT NOT NULL,
source_business_execution_digest TEXT NOT NULL,
canonical_child_execution_digest TEXT NOT NULL UNIQUE,
external_job_id TEXT NOT NULL,
repository TEXT NOT NULL,
target_branch TEXT NOT NULL,
generation INTEGER NOT NULL,
adapter TEXT NOT NULL,
required_capability TEXT NOT NULL,
expected_revision INTEGER NOT NULL CHECK (expected_revision = 1),
applied_revision INTEGER NOT NULL CHECK (applied_revision = 2),
metadata_sha256 TEXT NOT NULL,
required_capabilities_sha256 TEXT NOT NULL,
projection_event_sha256 TEXT NOT NULL,
receipt_json TEXT NOT NULL,
receipt_sha256 TEXT NOT NULL UNIQUE,
created_at TEXT NOT NULL,
FOREIGN KEY (source_task_id, supersession_ordinal)
REFERENCES task_lineage_supersessions(source_task_id, supersession_ordinal)
);
CREATE TRIGGER IF NOT EXISTS task_lineage_supersession_initial_projections_no_update
BEFORE UPDATE ON task_lineage_supersession_initial_projections BEGIN
SELECT RAISE(ABORT, 'TASK_LINEAGE_SUPERSESSION_INITIAL_PROJECTION_APPEND_ONLY');
END;
CREATE TRIGGER IF NOT EXISTS task_lineage_supersession_initial_projections_no_delete
BEFORE DELETE ON task_lineage_supersession_initial_projections BEGIN
SELECT RAISE(ABORT, 'TASK_LINEAGE_SUPERSESSION_INITIAL_PROJECTION_APPEND_ONLY');
END;