-- ============================================================================ -- StellaOps Migration Reset Script for Pre-1.0 Deployments -- ============================================================================ -- This script updates schema_migrations tables to recognize the 1.0.0 compacted -- migrations for deployments that upgraded from pre-1.0 versions. -- -- Run via: psql -f migrations-reset-pre-1.0.sql -- Or with connection: psql -h -U -d -f migrations-reset-pre-1.0.sql -- ============================================================================ BEGIN; -- ============================================================================ -- Authority Module Reset -- ============================================================================ -- Original: 001_initial_schema, 002_mongo_store_equivalents, 003_enable_rls, -- 004_offline_kit_audit, 005_verdict_manifests -- New: 001_initial_schema (compacted) DELETE FROM authority.schema_migrations WHERE migration_name IN ( '001_initial_schema.sql', '002_mongo_store_equivalents.sql', '003_enable_rls.sql', '004_offline_kit_audit.sql', '005_verdict_manifests.sql' ); INSERT INTO authority.schema_migrations (migration_name, category, checksum, applied_at) VALUES ('001_initial_schema.sql', 'startup', 'compacted_1.0.0', NOW()) ON CONFLICT (migration_name) DO NOTHING; -- ============================================================================ -- Scheduler Module Reset -- ============================================================================ -- Original: 001_initial_schema, 002_graph_jobs, 003_runs_policy, -- 010_generated_columns_runs, 011_enable_rls, 012_partition_audit, -- 012b_migrate_audit_data -- New: 001_initial_schema (compacted) DELETE FROM scheduler.schema_migrations WHERE migration_name IN ( '001_initial_schema.sql', '002_graph_jobs.sql', '003_runs_policy.sql', '010_generated_columns_runs.sql', '011_enable_rls.sql', '012_partition_audit.sql', '012b_migrate_audit_data.sql' ); INSERT INTO scheduler.schema_migrations (migration_name, category, checksum, applied_at) VALUES ('001_initial_schema.sql', 'startup', 'compacted_1.0.0', NOW()) ON CONFLICT (migration_name) DO NOTHING; -- ============================================================================ -- Scanner Module Reset -- ============================================================================ -- Original: 001-034 plus various numbered files (27 total) -- New: 001_initial_schema (compacted) DELETE FROM scanner.schema_migrations WHERE migration_name IN ( '001_create_tables.sql', '002_proof_spine_tables.sql', '003_classification_history.sql', '004_scan_metrics.sql', '005_smart_diff_tables.sql', '006_score_replay_tables.sql', '007_unknowns_ranking_containment.sql', '008_epss_integration.sql', '0059_scans_table.sql', '0065_unknowns_table.sql', '0075_scan_findings_table.sql', '020_call_graph_tables.sql', '021_smart_diff_tables_search_path.sql', '022_reachability_drift_tables.sql', '023_scanner_api_ingestion.sql', '024_smart_diff_priority_score_widen.sql', '025_epss_raw_layer.sql', '026_epss_signal_layer.sql', '027_witness_storage.sql', '028_epss_triage_columns.sql', '029_vuln_surfaces.sql', '030_vuln_surface_triggers_update.sql', '031_reach_cache.sql', '032_idempotency_keys.sql', '033_binary_evidence.sql', '034_func_proof_tables.sql', 'DM001_rename_scanner_migrations.sql' ); INSERT INTO scanner.schema_migrations (migration_name, category, checksum, applied_at) VALUES ('001_initial_schema.sql', 'startup', 'compacted_1.0.0', NOW()) ON CONFLICT (migration_name) DO NOTHING; -- ============================================================================ -- Policy Module Reset -- ============================================================================ -- Original: 001-013 (14 files, includes duplicate 010 prefix) -- New: 001_initial_schema (compacted) DELETE FROM policy.schema_migrations WHERE migration_name IN ( '001_initial_schema.sql', '002_cvss_receipts.sql', '003_snapshots_violations.sql', '004_epss_risk_scores.sql', '005_cvss_multiversion.sql', '006_enable_rls.sql', '007_unknowns_registry.sql', '008_exception_objects.sql', '009_exception_applications.sql', '010_recheck_evidence.sql', '010_unknowns_blast_radius_containment.sql', '011_unknowns_reason_codes.sql', '012_budget_ledger.sql', '013_exception_approval.sql' ); INSERT INTO policy.schema_migrations (migration_name, category, checksum, applied_at) VALUES ('001_initial_schema.sql', 'startup', 'compacted_1.0.0', NOW()) ON CONFLICT (migration_name) DO NOTHING; -- ============================================================================ -- Notify Module Reset -- ============================================================================ -- Original: 001_initial_schema, 010_enable_rls, 011_partition_deliveries, -- 011b_migrate_deliveries_data -- New: 001_initial_schema (compacted) DELETE FROM notify.schema_migrations WHERE migration_name IN ( '001_initial_schema.sql', '010_enable_rls.sql', '011_partition_deliveries.sql', '011b_migrate_deliveries_data.sql' ); INSERT INTO notify.schema_migrations (migration_name, category, checksum, applied_at) VALUES ('001_initial_schema.sql', 'startup', 'compacted_1.0.0', NOW()) ON CONFLICT (migration_name) DO NOTHING; -- ============================================================================ -- Concelier Module Reset -- ============================================================================ -- Original: 17 migration files -- New: 001_initial_schema (compacted) DELETE FROM concelier.schema_migrations WHERE migration_name ~ '^[0-9]{3}_.*\.sql$'; INSERT INTO concelier.schema_migrations (migration_name, category, checksum, applied_at) VALUES ('001_initial_schema.sql', 'startup', 'compacted_1.0.0', NOW()) ON CONFLICT (migration_name) DO NOTHING; -- ============================================================================ -- Verification -- ============================================================================ -- Display current migration status per module DO $$ DECLARE v_module TEXT; v_count INT; BEGIN FOR v_module IN SELECT unnest(ARRAY['authority', 'scheduler', 'scanner', 'policy', 'notify', 'concelier']) LOOP EXECUTE format('SELECT COUNT(*) FROM %I.schema_migrations', v_module) INTO v_count; RAISE NOTICE '% module: % migrations registered', v_module, v_count; END LOOP; END $$; COMMIT; -- ============================================================================ -- Post-Reset Notes -- ============================================================================ -- After running this script: -- 1. All modules should show exactly 1 migration registered -- 2. The schema structure should be identical to a fresh 1.0.0 deployment -- 3. Future migrations (002+) will apply normally -- -- To verify manually: -- SELECT * FROM authority.schema_migrations; -- SELECT * FROM scheduler.schema_migrations; -- SELECT * FROM scanner.schema_migrations; -- SELECT * FROM policy.schema_migrations; -- SELECT * FROM notify.schema_migrations; -- SELECT * FROM concelier.schema_migrations; -- ============================================================================