use super::SchemaInvariant;
mod v067;
mod v068;
mod v070;
mod v071;
mod v072;
mod v073;
mod v074;
mod v075;
mod v076;
mod v077;
mod v078;
mod v079;
mod v080;
mod v081;
mod v082;
mod v083;
mod v084;
mod v085;
pub(in crate::migrate) use self::{v079::V079_SCHEMA_INVARIANTS, v080::V080_SCHEMA_INVARIANTS};
pub(in crate::migrate) use v067::V067_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v068::V068_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v070::V070_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v071::V071_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v072::V072_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v073::V073_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v074::V074_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v075::V075_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v076::{v076_critical_shape_findings, V076_SCHEMA_INVARIANTS};
pub(in crate::migrate) use v077::V077_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v078::V078_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v081::V081_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v082::V082_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v083::V083_SCHEMA_INVARIANTS;
pub(in crate::migrate) use v084::{v084_critical_shape_findings, V084_SCHEMA_INVARIANTS};
pub(in crate::migrate) use v085::V085_SCHEMA_INVARIANTS;
pub(in crate::migrate) const SCHEMA_INVARIANTS: &[SchemaInvariant] = &[
SchemaInvariant::table(20, "memory_fts_all_status", "memories_fts"),
SchemaInvariant::trigger(20, "memory_fts_all_status", "memories_ai"),
SchemaInvariant::trigger(20, "memory_fts_all_status", "memories_ad"),
SchemaInvariant::trigger(20, "memory_fts_all_status", "memories_au"),
SchemaInvariant::table(21, "raw_messages_session_dedup", "raw_messages"),
SchemaInvariant::column(
21,
"raw_messages_session_dedup",
"raw_messages",
"session_id",
),
SchemaInvariant::trigger(21, "raw_messages_session_dedup", "raw_messages_ai"),
SchemaInvariant::trigger(21, "raw_messages_session_dedup", "raw_messages_ad"),
SchemaInvariant::trigger(21, "raw_messages_session_dedup", "raw_messages_au"),
SchemaInvariant::table(22, "memory_state_keys", "memory_state_keys"),
SchemaInvariant::column(22, "memory_state_keys", "memories", "state_key_id"),
SchemaInvariant::column(22, "memory_state_keys", "memory_candidates", "state_key"),
SchemaInvariant::column(
22,
"memory_state_keys",
"memory_candidates",
"state_key_confidence",
),
SchemaInvariant::column(
22,
"memory_state_keys",
"memory_candidates",
"state_key_reason",
),
SchemaInvariant::index(22, "memory_state_keys", "idx_memory_state_keys_owner"),
SchemaInvariant::index(22, "memory_state_keys", "idx_memory_state_keys_current"),
SchemaInvariant::index(22, "memory_state_keys", "idx_memories_state_key_id"),
SchemaInvariant::index(22, "memory_state_keys", "idx_memory_candidates_state_key"),
SchemaInvariant::table(23, "topic_segments", "topic_segments"),
SchemaInvariant::index(23, "topic_segments", "idx_topic_segments_project_trace"),
SchemaInvariant::index(23, "topic_segments", "idx_topic_segments_session"),
SchemaInvariant::table(24, "memory_operation_log", "memory_operation_log"),
SchemaInvariant::index(24, "memory_operation_log", "idx_memory_operation_log_state"),
SchemaInvariant::table(25, "memory_edges", "memory_edges"),
SchemaInvariant::index(25, "memory_edges", "idx_memory_edges_from"),
SchemaInvariant::index(25, "memory_edges", "idx_memory_edges_to"),
SchemaInvariant::index(25, "memory_edges", "idx_memory_edges_state"),
SchemaInvariant::table(26, "memory_claims", "memory_claims"),
SchemaInvariant::table(26, "memory_claims", "memory_candidate_noops"),
SchemaInvariant::index(26, "memory_claims", "idx_memory_claims_session"),
SchemaInvariant::index(26, "memory_claims", "idx_memory_claims_recent"),
SchemaInvariant::index(26, "memory_claims", "idx_memory_claims_fingerprint"),
SchemaInvariant::index(26, "memory_claims", "idx_memory_candidate_noops_claim"),
SchemaInvariant::index(26, "memory_claims", "idx_memory_candidate_noops_project"),
SchemaInvariant::table(
27,
"compressed_observation_sources",
"compressed_observation_sources",
),
SchemaInvariant::index(
27,
"compressed_observation_sources",
"idx_compressed_observation_sources_compressed",
),
SchemaInvariant::index(
27,
"compressed_observation_sources",
"idx_compressed_observation_sources_source",
),
SchemaInvariant::table(28, "raw_ingest_failures", "raw_ingest_failures"),
SchemaInvariant::index(
28,
"raw_ingest_failures",
"idx_raw_ingest_failures_project_recent",
),
SchemaInvariant::index(28, "raw_ingest_failures", "idx_raw_ingest_failures_session"),
SchemaInvariant::table(29, "memory_embeddings", "memory_embeddings"),
SchemaInvariant::index(29, "memory_embeddings", "idx_memory_embeddings_model"),
SchemaInvariant::table(30, "dream_cluster_decisions", "dream_cluster_decisions"),
SchemaInvariant::index(
30,
"dream_cluster_decisions",
"idx_dream_cluster_decisions_review",
),
SchemaInvariant::index(
30,
"dream_cluster_decisions",
"idx_dream_cluster_decisions_signature",
),
SchemaInvariant::table(31, "graph_edges", "graph_edges"),
SchemaInvariant::index(31, "graph_edges", "idx_graph_edges_from"),
SchemaInvariant::index(31, "graph_edges", "idx_graph_edges_to"),
SchemaInvariant::index(31, "graph_edges", "idx_graph_edges_type"),
SchemaInvariant::trigger(
34,
"graph_edge_file_nodes",
"graph_edges_validate_source_events_insert",
),
SchemaInvariant::trigger(
34,
"graph_edge_file_nodes",
"graph_edges_validate_source_events_update",
),
SchemaInvariant::trigger(
34,
"graph_edge_file_nodes",
"graph_edges_validate_nodes_insert",
),
SchemaInvariant::trigger(
34,
"graph_edge_file_nodes",
"graph_edges_validate_nodes_update",
),
SchemaInvariant::trigger(34, "graph_edge_file_nodes", "graph_edges_memories_delete"),
SchemaInvariant::trigger(34, "graph_edge_file_nodes", "graph_edges_entities_delete"),
SchemaInvariant::trigger(
34,
"graph_edge_file_nodes",
"graph_edges_memory_facts_delete",
),
SchemaInvariant::trigger(
34,
"graph_edge_file_nodes",
"graph_edges_captured_events_delete",
),
SchemaInvariant::trigger(
34,
"graph_edge_file_nodes",
"graph_edges_topic_segments_delete",
),
SchemaInvariant::trigger(31, "graph_edges", "graph_edges_memory_state_keys_delete"),
SchemaInvariant::column(
32,
"candidate_block_reason",
"memory_candidates",
"auto_promote_block_reason",
),
SchemaInvariant::table(33, "graph_candidates", "graph_candidates"),
SchemaInvariant::index(33, "graph_candidates", "idx_graph_candidates_review"),
SchemaInvariant::index(33, "graph_candidates", "idx_graph_candidates_project"),
SchemaInvariant::index(33, "graph_candidates", "idx_graph_candidates_dedupe"),
SchemaInvariant::table(34, "graph_edge_file_nodes", "graph_file_nodes"),
SchemaInvariant::index(34, "graph_edge_file_nodes", "idx_graph_file_nodes_source"),
SchemaInvariant::trigger(
34,
"graph_edge_file_nodes",
"graph_edges_graph_file_nodes_delete",
),
SchemaInvariant::column(
35,
"context_injection_data_version",
"context_injections",
"data_version",
),
SchemaInvariant::index(
35,
"context_injection_data_version",
"idx_workstreams_target_status",
),
SchemaInvariant::index(
35,
"context_injection_data_version",
"idx_session_summaries_target_created",
),
SchemaInvariant::table(36, "capture_drop_events", "capture_drop_events"),
SchemaInvariant::index(
36,
"capture_drop_events",
"idx_capture_drop_events_reason_time",
),
SchemaInvariant::index(
36,
"capture_drop_events",
"idx_capture_drop_events_unrecovered_spill",
),
SchemaInvariant::trigger(
37,
"graph_edge_source_candidate_integrity",
"graph_edges_validate_source_candidate_insert",
),
SchemaInvariant::trigger(
37,
"graph_edge_source_candidate_integrity",
"graph_edges_validate_source_candidate_update",
),
SchemaInvariant::trigger(
37,
"graph_edge_source_candidate_integrity",
"graph_edges_memory_candidates_delete",
),
SchemaInvariant::trigger(
37,
"graph_edge_source_candidate_integrity",
"graph_edges_memory_candidates_update_id",
),
SchemaInvariant::trigger(
37,
"graph_edge_source_candidate_integrity",
"graph_edges_graph_candidates_delete",
),
SchemaInvariant::trigger(
37,
"graph_edge_source_candidate_integrity",
"graph_edges_graph_candidates_update_id",
),
SchemaInvariant::trigger(
37,
"graph_edge_source_candidate_integrity",
"graph_edges_memory_operation_provenance_update",
),
SchemaInvariant::table(38, "extraction_replay_ranges", "extraction_replay_ranges"),
SchemaInvariant::column(
38,
"extraction_replay_ranges",
"extraction_tasks",
"replay_range_id",
),
SchemaInvariant::index(
38,
"extraction_replay_ranges",
"idx_extraction_replay_ranges_status",
),
SchemaInvariant::index(
38,
"extraction_replay_ranges",
"idx_extraction_replay_ranges_project",
),
SchemaInvariant::index(
38,
"extraction_replay_ranges",
"idx_extraction_tasks_replay_range",
),
SchemaInvariant::table(39, "context_injection_items", "context_injection_items"),
SchemaInvariant::index(
39,
"context_injection_items",
"idx_context_injection_items_session",
),
SchemaInvariant::index(
39,
"context_injection_items",
"idx_context_injection_items_memory",
),
SchemaInvariant::index(
39,
"context_injection_items",
"idx_context_injection_items_project",
),
SchemaInvariant::column(
40,
"memory_fact_invalidations",
"memory_facts",
"invalidated_at_epoch",
),
SchemaInvariant::index(
40,
"memory_fact_invalidations",
"idx_memory_facts_invalidated",
),
SchemaInvariant::column(
42,
"reference_time_epoch",
"captured_events",
"reference_time_epoch",
),
SchemaInvariant::column(
42,
"reference_time_epoch",
"observations",
"reference_time_epoch",
),
SchemaInvariant::column(
42,
"reference_time_epoch",
"memories",
"reference_time_epoch",
),
SchemaInvariant::index(
42,
"reference_time_epoch",
"idx_captured_events_project_reference_time",
),
SchemaInvariant::index(
42,
"reference_time_epoch",
"idx_observations_project_reference_time",
),
SchemaInvariant::index(
42,
"reference_time_epoch",
"idx_memories_project_reference_time",
),
SchemaInvariant::column(
43,
"graph_candidate_prompt_memory_refs",
"graph_candidates",
"prompt_memory_ref_ids",
),
SchemaInvariant::index(
44,
"memory_embeddings_profile_index",
"idx_memory_embeddings_profile_memory_id",
),
SchemaInvariant::column(
45,
"memory_usage_columns",
"memories",
"last_accessed_epoch",
),
SchemaInvariant::column(45, "memory_usage_columns", "memories", "access_count"),
SchemaInvariant::index(45, "memory_usage_columns", "idx_memories_usage"),
SchemaInvariant::table(45, "memory_usage_columns", "memory_citation_events"),
SchemaInvariant::table(45, "memory_usage_columns", "memory_usage_events"),
SchemaInvariant::index(
45,
"memory_usage_columns",
"idx_memory_citation_events_project_recent",
),
SchemaInvariant::index(
45,
"memory_usage_columns",
"idx_memory_usage_events_memory_recent",
),
SchemaInvariant::column(46, "ai_usage_session_id", "ai_usage_events", "session_id"),
SchemaInvariant::index(46, "ai_usage_session_id", "idx_ai_usage_session_created"),
SchemaInvariant::column(
47,
"lesson_outcome_metadata",
"memory_lessons",
"outcome_kind",
),
SchemaInvariant::column(
47,
"lesson_outcome_metadata",
"memory_lessons",
"success_count",
),
SchemaInvariant::column(
47,
"lesson_outcome_metadata",
"memory_lessons",
"failure_count",
),
SchemaInvariant::column(
47,
"lesson_outcome_metadata",
"memory_lessons",
"recovery_count",
),
SchemaInvariant::column(
47,
"lesson_outcome_metadata",
"memory_lessons",
"correction_count",
),
SchemaInvariant::column(
47,
"lesson_outcome_metadata",
"memory_lessons",
"revert_count",
),
SchemaInvariant::index(47, "lesson_outcome_metadata", "idx_memory_lessons_outcome"),
SchemaInvariant::table(
48,
"failure_lesson_feed_events",
"memory_lesson_feed_events",
),
SchemaInvariant::index(
48,
"failure_lesson_feed_events",
"idx_memory_lesson_feed_events_project_recent",
),
SchemaInvariant::index(
48,
"failure_lesson_feed_events",
"idx_memory_lesson_feed_events_memory",
),
SchemaInvariant::table(49, "user_context_claims", "user_context_claims"),
SchemaInvariant::index(
49,
"user_context_claims",
"idx_user_context_claims_owner_active",
),
SchemaInvariant::index(
49,
"user_context_claims",
"idx_user_context_claims_user_recent",
),
SchemaInvariant::index(49, "user_context_claims", "idx_user_context_claims_status"),
SchemaInvariant::table(50, "user_context_summaries", "user_context_summaries"),
SchemaInvariant::index(
50,
"user_context_summaries",
"idx_user_context_summaries_owner_active",
),
SchemaInvariant::index(
50,
"user_context_summaries",
"idx_user_context_summaries_user_recent",
),
SchemaInvariant::table(51, "memory_suppressions_feedback", "memory_suppressions"),
SchemaInvariant::index(
51,
"memory_suppressions_feedback",
"idx_memory_suppressions_target_active",
),
SchemaInvariant::index(
51,
"memory_suppressions_feedback",
"idx_memory_suppressions_owner_active",
),
SchemaInvariant::table(51, "memory_suppressions_feedback", "memory_feedback"),
SchemaInvariant::index(
51,
"memory_suppressions_feedback",
"idx_memory_feedback_target_recent",
),
SchemaInvariant::index(
51,
"memory_suppressions_feedback",
"idx_memory_feedback_context_item",
),
SchemaInvariant::table(52, "user_context_candidates", "user_context_candidates"),
SchemaInvariant::index(
52,
"user_context_candidates",
"idx_user_context_candidates_inbox",
),
SchemaInvariant::index(
52,
"user_context_candidates",
"idx_user_context_candidates_user_recent",
),
SchemaInvariant::index(
52,
"user_context_candidates",
"idx_user_context_candidates_dedupe",
),
SchemaInvariant::column(
53,
"workstream_identity_continuity",
"workstreams",
"identity_key",
),
SchemaInvariant::column(
53,
"workstream_identity_continuity",
"workstreams",
"merged_into_workstream_id",
),
SchemaInvariant::table(53, "workstream_identity_continuity", "workstream_aliases"),
SchemaInvariant::table(
53,
"workstream_identity_continuity",
"workstream_alias_sources",
),
SchemaInvariant::index(
53,
"workstream_identity_continuity",
"idx_workstream_aliases_lookup",
),
SchemaInvariant::index(
53,
"workstream_identity_continuity",
"idx_workstream_alias_sources_alias",
),
SchemaInvariant::index(
53,
"workstream_identity_continuity",
"idx_workstreams_identity_key",
),
SchemaInvariant::index(
53,
"workstream_identity_continuity",
"idx_workstreams_merged_into",
),
SchemaInvariant::column(
54,
"memory_candidate_source_kind",
"memory_candidates",
"source_kind",
),
SchemaInvariant::index(
54,
"memory_candidate_source_kind",
"idx_memory_candidates_source_review",
),
SchemaInvariant::table(55, "session_ingest_cursors", "ingest_cursors"),
SchemaInvariant::column(55, "session_ingest_cursors", "raw_messages", "source_root"),
SchemaInvariant::column(
57,
"failure_lifecycle",
"pending_observations",
"failure_class",
),
SchemaInvariant::column(
57,
"failure_lifecycle",
"pending_observations",
"failed_at_epoch",
),
SchemaInvariant::column(
57,
"failure_lifecycle",
"pending_observations",
"archived_at_epoch",
),
SchemaInvariant::column(57, "failure_lifecycle", "extraction_tasks", "failure_class"),
SchemaInvariant::column(
57,
"failure_lifecycle",
"extraction_tasks",
"failed_at_epoch",
),
SchemaInvariant::column(
57,
"failure_lifecycle",
"extraction_tasks",
"archived_at_epoch",
),
SchemaInvariant::column(
57,
"failure_lifecycle",
"extraction_replay_ranges",
"failure_class",
),
SchemaInvariant::column(
57,
"failure_lifecycle",
"extraction_replay_ranges",
"failed_at_epoch",
),
SchemaInvariant::column(
57,
"failure_lifecycle",
"extraction_replay_ranges",
"archived_at_epoch",
),
SchemaInvariant::column(57, "failure_lifecycle", "jobs", "failure_class"),
SchemaInvariant::column(57, "failure_lifecycle", "jobs", "failed_at_epoch"),
SchemaInvariant::column(57, "failure_lifecycle", "jobs", "archived_at_epoch"),
SchemaInvariant::table(57, "failure_lifecycle", "failure_lifecycle_daily"),
SchemaInvariant::index(
57,
"failure_lifecycle",
"idx_failure_lifecycle_daily_surface",
),
SchemaInvariant::index(
57,
"failure_lifecycle",
"idx_pending_observations_failure_lifecycle",
),
SchemaInvariant::index(
57,
"failure_lifecycle",
"idx_extraction_tasks_failure_lifecycle",
),
SchemaInvariant::index(
57,
"failure_lifecycle",
"idx_extraction_replay_ranges_failure_lifecycle",
),
SchemaInvariant::index(57, "failure_lifecycle", "idx_jobs_failure_lifecycle"),
SchemaInvariant::column(
59,
"candidate_review_metadata",
"memory_candidates",
"review_actor",
),
SchemaInvariant::column(
59,
"candidate_review_metadata",
"memory_candidates",
"reviewed_at_epoch",
),
SchemaInvariant::column(
59,
"candidate_review_metadata",
"memory_candidates",
"review_action_source",
),
SchemaInvariant::column(
59,
"candidate_review_metadata",
"memory_candidates",
"review_batch_id",
),
SchemaInvariant::column(
59,
"candidate_review_metadata",
"memory_candidates",
"review_reason",
),
SchemaInvariant::index(
59,
"candidate_review_metadata",
"idx_memory_candidates_review_status_created",
),
SchemaInvariant::column(
60,
"memory_poisoning_defense",
"memory_candidates",
"source_trust_class",
),
SchemaInvariant::column(
60,
"memory_poisoning_defense",
"memory_candidates",
"quarantine_pattern_id",
),
SchemaInvariant::column(
60,
"memory_poisoning_defense",
"memory_candidates",
"quarantine_pattern_version",
),
SchemaInvariant::column(
60,
"memory_poisoning_defense",
"memory_candidates",
"acknowledged_pattern_id",
),
SchemaInvariant::column(
60,
"memory_poisoning_defense",
"memory_candidates",
"acknowledged_pattern_version",
),
SchemaInvariant::column(
60,
"memory_poisoning_defense",
"memory_candidates",
"acknowledged_at_epoch",
),
SchemaInvariant::column(
60,
"memory_poisoning_defense",
"memories",
"source_trust_class",
),
SchemaInvariant::column(
60,
"memory_poisoning_defense",
"memories",
"acknowledged_pattern_id",
),
SchemaInvariant::column(
60,
"memory_poisoning_defense",
"memories",
"acknowledged_pattern_version",
),
SchemaInvariant::column(
60,
"memory_poisoning_defense",
"memories",
"acknowledged_at_epoch",
),
SchemaInvariant::index(
60,
"memory_poisoning_defense",
"idx_memory_candidates_quarantine",
),
SchemaInvariant::index(60, "memory_poisoning_defense", "idx_memories_source_trust"),
SchemaInvariant::table(
61,
"memory_poisoning_injection_drops",
"memory_poisoning_injection_drops",
),
SchemaInvariant::index(
61,
"memory_poisoning_injection_drops",
"idx_memory_poisoning_drops_created",
),
SchemaInvariant::index(
61,
"memory_poisoning_injection_drops",
"idx_memory_poisoning_drops_pattern",
),
SchemaInvariant::table(
62,
"preference_rule_state",
"memory_preference_reinforcements",
),
SchemaInvariant::index(
62,
"preference_rule_state",
"idx_memory_preference_reinforcements_rank",
),
SchemaInvariant::table(62, "preference_rule_state", "preference_rule_overrides"),
SchemaInvariant::index(
62,
"preference_rule_state",
"idx_preference_rule_overrides_project",
),
SchemaInvariant::index(
62,
"preference_rule_state",
"idx_preference_rule_overrides_source",
),
SchemaInvariant::table(62, "preference_rule_state", "preference_rule_diagnostics"),
SchemaInvariant::index(
62,
"preference_rule_state",
"idx_preference_rule_diagnostics_project_event",
),
SchemaInvariant::index(
62,
"preference_rule_state",
"idx_preference_rule_diagnostics_rule",
),
SchemaInvariant::table(63, "procedure_exports", "procedure_exports"),
SchemaInvariant::index(63, "procedure_exports", "idx_procedure_exports_project"),
SchemaInvariant::index(63, "procedure_exports", "idx_procedure_exports_memory"),
SchemaInvariant::column(
65,
"preference_reinforcement",
"memory_preference_reinforcements",
"machine_checkable",
),
SchemaInvariant::column(
65,
"preference_reinforcement",
"memory_preference_reinforcements",
"risk_class",
),
SchemaInvariant::index(
65,
"preference_reinforcement",
"idx_memory_preference_reinforcements_eligible",
),
SchemaInvariant::column(
66,
"session_rollup_evidence_checkpoint",
"session_summaries",
"transcript_evidence_json",
),
SchemaInvariant::column(
66,
"session_rollup_evidence_checkpoint",
"session_summaries",
"raw_archive_completed_at_epoch",
),
SchemaInvariant::index(69, "job_queue_atomicity", "idx_jobs_active_ordinary_unique"),
SchemaInvariant::index(69, "job_queue_atomicity", "idx_jobs_active_dream_unique"),
SchemaInvariant::index(
69,
"job_queue_atomicity",
"idx_jobs_active_compile_rules_unique",
),
];