pub const INITIAL_MIGRATION_SQL: &str = "PRAGMA journal_mode = WAL;\r\nPRAGMA foreign_keys = ON;\r\n\r\nCREATE TABLE events (\r\n id TEXT PRIMARY KEY,\r\n schema_version INTEGER NOT NULL,\r\n observed_at TEXT NOT NULL,\r\n recorded_at TEXT NOT NULL,\r\n source_json TEXT NOT NULL CHECK (json_valid(source_json)),\r\n event_type TEXT NOT NULL,\r\n trace_id TEXT NULL,\r\n session_id TEXT NULL,\r\n domain_tags_json TEXT NOT NULL CHECK (json_valid(domain_tags_json)),\r\n payload_json TEXT NOT NULL CHECK (json_valid(payload_json)),\r\n payload_hash TEXT NOT NULL,\r\n prev_event_hash TEXT NULL,\r\n event_hash TEXT NOT NULL UNIQUE\r\n);\r\n\r\nCREATE TABLE traces (\r\n id TEXT PRIMARY KEY,\r\n schema_version INTEGER NOT NULL,\r\n opened_at TEXT NOT NULL,\r\n closed_at TEXT NULL,\r\n trace_type TEXT NOT NULL,\r\n status TEXT NOT NULL\r\n);\r\n\r\nCREATE TABLE trace_events (\r\n trace_id TEXT NOT NULL REFERENCES traces(id),\r\n event_id TEXT NOT NULL REFERENCES events(id),\r\n ordinal INTEGER NOT NULL,\r\n PRIMARY KEY (trace_id, event_id),\r\n UNIQUE (trace_id, ordinal)\r\n);\r\n\r\nCREATE TABLE episodes (\r\n id TEXT PRIMARY KEY,\r\n trace_id TEXT NOT NULL REFERENCES traces(id),\r\n source_events_json TEXT NOT NULL CHECK (json_valid(source_events_json)),\r\n summary TEXT NOT NULL,\r\n domains_json TEXT NOT NULL CHECK (json_valid(domains_json)),\r\n entities_json TEXT NOT NULL CHECK (json_valid(entities_json)),\r\n candidate_meaning TEXT NULL,\r\n extracted_by_json TEXT NOT NULL CHECK (json_valid(extracted_by_json)),\r\n confidence REAL NOT NULL CHECK (confidence >= 0 AND confidence <= 1),\r\n status TEXT NOT NULL\r\n);\r\n\r\nCREATE TABLE memories (\r\n id TEXT PRIMARY KEY,\r\n memory_type TEXT NOT NULL,\r\n status TEXT NOT NULL,\r\n claim TEXT NOT NULL,\r\n source_episodes_json TEXT NOT NULL CHECK (json_valid(source_episodes_json)),\r\n source_events_json TEXT NOT NULL CHECK (json_valid(source_events_json)),\r\n domains_json TEXT NOT NULL CHECK (json_valid(domains_json)),\r\n salience_json TEXT NOT NULL CHECK (json_valid(salience_json)),\r\n confidence REAL NOT NULL CHECK (confidence >= 0 AND confidence <= 1),\r\n authority TEXT NOT NULL,\r\n applies_when_json TEXT NOT NULL CHECK (json_valid(applies_when_json)),\r\n does_not_apply_when_json TEXT NOT NULL CHECK (json_valid(does_not_apply_when_json)),\r\n created_at TEXT NOT NULL,\r\n updated_at TEXT NOT NULL\r\n);\r\n\r\nCREATE TABLE principles (\r\n id TEXT PRIMARY KEY,\r\n statement TEXT NOT NULL,\r\n status TEXT NOT NULL,\r\n supporting_memories_json TEXT NOT NULL CHECK (json_valid(supporting_memories_json)),\r\n contradicting_memories_json TEXT NOT NULL CHECK (json_valid(contradicting_memories_json)),\r\n domains_observed_json TEXT NOT NULL CHECK (json_valid(domains_observed_json)),\r\n applies_when_json TEXT NOT NULL CHECK (json_valid(applies_when_json)),\r\n does_not_apply_when_json TEXT NOT NULL CHECK (json_valid(does_not_apply_when_json)),\r\n confidence REAL NOT NULL CHECK (confidence >= 0 AND confidence <= 1),\r\n validation REAL NOT NULL CHECK (validation >= 0 AND validation <= 1),\r\n brightness REAL NOT NULL CHECK (brightness >= 0 AND brightness <= 1),\r\n created_by_json TEXT NOT NULL CHECK (json_valid(created_by_json)),\r\n created_at TEXT NOT NULL,\r\n updated_at TEXT NOT NULL\r\n);\r\n\r\nCREATE TABLE doctrine (\r\n id TEXT PRIMARY KEY,\r\n source_principle TEXT NOT NULL REFERENCES principles(id),\r\n rule TEXT NOT NULL,\r\n force TEXT NOT NULL,\r\n promotion_reason TEXT NOT NULL,\r\n promoted_by_json TEXT NOT NULL CHECK (json_valid(promoted_by_json)),\r\n created_at TEXT NOT NULL\r\n);\r\n\r\nCREATE TABLE contradictions (\r\n id TEXT PRIMARY KEY,\r\n left_ref TEXT NOT NULL,\r\n right_ref TEXT NOT NULL,\r\n contradiction_type TEXT NOT NULL,\r\n status TEXT NOT NULL,\r\n interpretation TEXT NULL,\r\n created_at TEXT NOT NULL,\r\n updated_at TEXT NOT NULL\r\n);\r\n\r\nCREATE TABLE context_packs (\r\n id TEXT PRIMARY KEY,\r\n task TEXT NOT NULL,\r\n pack_json TEXT NOT NULL CHECK (json_valid(pack_json)),\r\n selection_audit TEXT NOT NULL,\r\n created_at TEXT NOT NULL\r\n);\r\n\r\nCREATE TABLE audit_records (\r\n id TEXT PRIMARY KEY,\r\n operation TEXT NOT NULL,\r\n target_ref TEXT NOT NULL,\r\n before_hash TEXT NULL,\r\n after_hash TEXT NOT NULL,\r\n reason TEXT NOT NULL,\r\n actor_json TEXT NOT NULL CHECK (json_valid(actor_json)),\r\n source_refs_json TEXT NOT NULL CHECK (json_valid(source_refs_json)),\r\n created_at TEXT NOT NULL\r\n);\r\n";Expand description
Initial SQLite schema for the MVP store (LANES T-2.A.1).