# Migration Safety Checklist Sjekkliste for alle som kjører PostgreSQL-migrasjoner — lokalt eller i prod. ## Før migrering - [ ] Les migrasjonfilen og forstå hva den gjør - [ ] Har migrasjonen en tilhørende **down-migrering**? (påkrevd for skjema-endringer) - [ ] Tar migrasjonen backup-hensyn? (dropper den kolonner/tabeller med data?) ## Etter migrering ### RLS-verifisering (KRITISK) Etter *enhver* migrering som oppretter eller endrer tabeller med `workspace_id`: ```sql -- 1. Verifiser at RLS er aktivert på alle workspace-tabeller SELECT tablename, rowsecurity FROM pg_tables WHERE schemaname = 'public' AND tablename IN ('nodes', 'graph_edges', 'messages', 'channels', 'media_files', 'job_queue', 'message_attachments') ORDER BY tablename; -- Forventet: rowsecurity = true for alle -- 2. Verifiser at policies eksisterer SELECT tablename, policyname, cmd, qual FROM pg_policies WHERE schemaname = 'public' ORDER BY tablename; -- Forventet: workspace_isolation_* policy for hver tabell -- 3. Test isolasjon: sett workspace A, forsøk å lese workspace B SET app.current_workspace_id = ''; SELECT count(*) FROM nodes WHERE workspace_id = ''; -- Forventet: 0 rader (RLS blokkerer) -- 4. Verifiser at superuser IKKE blokkeres (Rust workers trenger dette) RESET app.current_workspace_id; SET ROLE postgres; SELECT count(*) FROM nodes; -- Forventet: alle rader synlige ``` ### Indeksverifisering ```sql -- Sjekk at viktige indekser finnes SELECT indexname, tablename FROM pg_indexes WHERE schemaname = 'public' AND tablename IN ('nodes', 'graph_edges', 'messages') ORDER BY tablename; ``` ### Constraint-verifisering ```sql -- Sjekk at foreign keys er intakte SELECT tc.table_name, tc.constraint_name, tc.constraint_type FROM information_schema.table_constraints tc WHERE tc.table_schema = 'public' AND tc.constraint_type IN ('FOREIGN KEY', 'CHECK', 'UNIQUE') ORDER BY tc.table_name; ``` ## Automatisering Disse sjekkene kjøres automatisk i migrasjonstestene (se `ARCHITECTURE.md` §10.2). Manuell kjøring er kun nødvendig ved prod-migrasjoner til automatiserte tester er på plass.