Files
aios/active-runtime/migrations/005_task_lineage_supersession.sql
T

93 lines
3.6 KiB
SQL

PRAGMA foreign_keys=ON;
CREATE TABLE IF NOT EXISTS task_lineage_supersessions (
source_task_id TEXT NOT NULL,
supersession_ordinal INTEGER NOT NULL CHECK (supersession_ordinal = 1),
child_task_id TEXT NOT NULL UNIQUE,
source_task_identity_sha256 TEXT NOT NULL,
source_metadata_sha256 TEXT NOT NULL,
owner_decision_sha256 TEXT NOT NULL UNIQUE,
decision_id TEXT NOT NULL UNIQUE,
created_at TEXT NOT NULL,
PRIMARY KEY (source_task_id, supersession_ordinal)
);
CREATE TABLE IF NOT EXISTS task_lineage_supersession_receipts (
decision_id TEXT PRIMARY KEY,
nonce TEXT NOT NULL UNIQUE,
source_task_id TEXT NOT NULL,
supersession_ordinal INTEGER NOT NULL,
child_task_id TEXT NOT NULL UNIQUE,
owner_decision_sha256 TEXT NOT NULL UNIQUE,
decision_json TEXT NOT NULL,
receipt_json TEXT NOT NULL,
consumed_at TEXT NOT NULL,
FOREIGN KEY (source_task_id, supersession_ordinal)
REFERENCES task_lineage_supersessions(source_task_id, supersession_ordinal)
);
CREATE TABLE IF NOT EXISTS task_claim_guard_bindings_v2 (
binding_id TEXT PRIMARY KEY,
task_id TEXT NOT NULL UNIQUE,
source_task_id TEXT NOT NULL,
supersession_ordinal INTEGER NOT NULL,
expected_revision INTEGER NOT NULL CHECK (expected_revision >= 1),
metadata_sha256 TEXT NOT NULL,
required_capabilities_sha256 TEXT NOT NULL,
worker_id TEXT NOT NULL,
execution_digest TEXT NOT NULL,
repository TEXT NOT NULL,
target_branch TEXT NOT NULL,
generation INTEGER NOT NULL,
policy_json TEXT NOT NULL,
policy_sha256 TEXT NOT NULL,
binding_json TEXT NOT NULL,
binding_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 TABLE IF NOT EXISTS task_claim_guard_binding_receipts_v2 (
receipt_id TEXT PRIMARY KEY,
binding_id TEXT NOT NULL UNIQUE,
task_id TEXT NOT NULL UNIQUE,
receipt_json TEXT NOT NULL,
receipt_sha256 TEXT NOT NULL UNIQUE,
created_at TEXT NOT NULL,
FOREIGN KEY (binding_id) REFERENCES task_claim_guard_bindings_v2(binding_id)
);
CREATE TRIGGER IF NOT EXISTS task_lineage_supersessions_no_update
BEFORE UPDATE ON task_lineage_supersessions BEGIN
SELECT RAISE(ABORT, 'TASK_LINEAGE_SUPERSESSION_APPEND_ONLY');
END;
CREATE TRIGGER IF NOT EXISTS task_lineage_supersessions_no_delete
BEFORE DELETE ON task_lineage_supersessions BEGIN
SELECT RAISE(ABORT, 'TASK_LINEAGE_SUPERSESSION_APPEND_ONLY');
END;
CREATE TRIGGER IF NOT EXISTS task_lineage_supersession_receipts_no_update
BEFORE UPDATE ON task_lineage_supersession_receipts BEGIN
SELECT RAISE(ABORT, 'TASK_LINEAGE_SUPERSESSION_RECEIPT_APPEND_ONLY');
END;
CREATE TRIGGER IF NOT EXISTS task_lineage_supersession_receipts_no_delete
BEFORE DELETE ON task_lineage_supersession_receipts BEGIN
SELECT RAISE(ABORT, 'TASK_LINEAGE_SUPERSESSION_RECEIPT_APPEND_ONLY');
END;
CREATE TRIGGER IF NOT EXISTS task_claim_guard_bindings_v2_no_update
BEFORE UPDATE ON task_claim_guard_bindings_v2 BEGIN
SELECT RAISE(ABORT, 'TASK_CLAIM_GUARD_BINDING_APPEND_ONLY');
END;
CREATE TRIGGER IF NOT EXISTS task_claim_guard_bindings_v2_no_delete
BEFORE DELETE ON task_claim_guard_bindings_v2 BEGIN
SELECT RAISE(ABORT, 'TASK_CLAIM_GUARD_BINDING_APPEND_ONLY');
END;
CREATE TRIGGER IF NOT EXISTS task_claim_guard_binding_receipts_v2_no_update
BEFORE UPDATE ON task_claim_guard_binding_receipts_v2 BEGIN
SELECT RAISE(ABORT, 'TASK_CLAIM_GUARD_BINDING_RECEIPT_APPEND_ONLY');
END;
CREATE TRIGGER IF NOT EXISTS task_claim_guard_binding_receipts_v2_no_delete
BEFORE DELETE ON task_claim_guard_binding_receipts_v2 BEGIN
SELECT RAISE(ABORT, 'TASK_CLAIM_GUARD_BINDING_RECEIPT_APPEND_ONLY');
END;