brain-university-api / migrations /002_atp.sqlite.sql
jang0294's picture
Upload folder using huggingface_hub
6952bcb verified
Raw
History Blame Contribute Delete
3.09 kB
-- 002_atp (sqlite) β€” ATP tables: HITL reward log, compose requests,
-- evidence chain (filled by Phase 3), cert awards.
--
-- Conventions:
-- * ts columns are ISO-8601 UTC strings ("%Y-%m-%dT%H:%M:%SZ"), matching
-- atp/store.py `_now()`.
-- * "JSON-text" columns store json.dumps() output as TEXT.
-- * atp_hitl and atp_evidence are APPEND-ONLY at the DB level: BEFORE
-- UPDATE / BEFORE DELETE triggers abort with 'append-only'.
--
-- Statement separator convention: a line containing only `--;;` splits this
-- file into statements (see atp/db.py). Plain ';' inside a statement (e.g.
-- trigger bodies below) is NOT a separator once the marker is used anywhere
-- in the file.
CREATE TABLE IF NOT EXISTS atp_hitl (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ts TEXT NOT NULL,
rater TEXT,
agent_id TEXT,
layer INTEGER,
signal INTEGER,
weighted_delta REAL,
reason TEXT,
audit_id TEXT
);
--;;
CREATE INDEX IF NOT EXISTS idx_atp_hitl_agent ON atp_hitl(agent_id);
--;;
CREATE TABLE IF NOT EXISTS atp_requests (
id TEXT PRIMARY KEY,
ts TEXT NOT NULL,
major TEXT,
specialty TEXT,
badge_ids TEXT, -- JSON-text array
pack_id TEXT,
layers TEXT, -- JSON-text array
corpora TEXT, -- JSON-text array
status TEXT,
matched_agent_id TEXT,
gap TEXT, -- JSON-text object (nullable)
pipeline TEXT, -- JSON-text array of stage dicts
result_agent_id TEXT
);
--;;
-- Evidence chain β€” empty until Phase 3 (exam runs) writes signed records.
CREATE TABLE IF NOT EXISTS atp_evidence (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ts TEXT NOT NULL,
agent_id TEXT,
cert_id TEXT,
kind TEXT,
payload TEXT, -- JSON-text canonical payload (HMAC-signed)
sig TEXT,
prev_hash TEXT
);
--;;
CREATE INDEX IF NOT EXISTS idx_atp_evidence_agent
ON atp_evidence(agent_id, cert_id);
--;;
CREATE TABLE IF NOT EXISTS atp_cert_awards (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ts TEXT NOT NULL,
agent_id TEXT,
cert_id TEXT,
score REAL,
section_scores TEXT, -- JSON-text
item_breakdown TEXT, -- JSON-text
evidence_ids TEXT -- JSON-text array
);
--;;
-- ── Append-only enforcement ────────────────────────────────────────────────
CREATE TRIGGER IF NOT EXISTS trg_atp_hitl_no_update
BEFORE UPDATE ON atp_hitl
BEGIN
SELECT RAISE(ABORT, 'append-only');
END;
--;;
CREATE TRIGGER IF NOT EXISTS trg_atp_hitl_no_delete
BEFORE DELETE ON atp_hitl
BEGIN
SELECT RAISE(ABORT, 'append-only');
END;
--;;
CREATE TRIGGER IF NOT EXISTS trg_atp_evidence_no_update
BEFORE UPDATE ON atp_evidence
BEGIN
SELECT RAISE(ABORT, 'append-only');
END;
--;;
CREATE TRIGGER IF NOT EXISTS trg_atp_evidence_no_delete
BEFORE DELETE ON atp_evidence
BEGIN
SELECT RAISE(ABORT, 'append-only');
END;