{"slug":"operations/ROUND_2_MIGRATION_035_VERIFICATION","title":"Round 2 — Neon Migration 035 Verification","section":"operations","sectionLabel":"Operations","status":"unclassified","type":"document","path":"operations/ROUND_2_MIGRATION_035_VERIFICATION.mdx","bytes":5355,"description":null,"updated":null,"source":"integratewise/Integratewise-docs-wiki","content":"\n**Date:** 2026-07-29  \n**Migration:** `035_canonical_spine_schema_fortress.sql`  \n**Status:** Migration exists; live verification needed\n\n---\n\n## Migration Stats\n\n| Metric          | Count                       |\n| --------------- | --------------------------- |\n| Total lines     | 1,634                       |\n| Tables created  | 114                         |\n| Indexes created | 39                          |\n| Extensions      | 2 (`uuid-ossp`, `pgcrypto`) |\n| Policies (RLS)  | 0 (added in 042)            |\n\n---\n\n## Key Tables (Customer Zero / External Product)\n\n### Identity & Tenancy\n\n- `spine_organizations` — organization registry\n- `spine_workspaces` — workspace registry\n- `spine_users` — user registry\n- `spine_memberships` — user↔organization membership\n- `spine_roles` — role definitions\n- `spine_permissions` — permission definitions\n- `spine_role_bindings` — user↔role assignments\n- `spine_consent_grants` — consent records\n- `spine_api_key_refs` — API key references\n\n### Platform Configuration\n\n- `platform_config_layers` — config layer registry\n- `platform_compiled_configs` — compiled config snapshots\n- `platform_feature_flags` — feature flag registry\n- `platform_entitlements` — entitlement definitions\n- `platform_activation_runs` — activation run records\n- `platform_activation_steps` — activation step records\n- `platform_hydration_plans` — hydration plan registry\n\n### Connectors & Integrations\n\n- `spine_connector_catalog` — connector catalog (65 connectors)\n- `spine_connector_versions` — connector version registry\n- `spine_connector_installations` — tenant connector installations\n- `integration_connections` — active connections\n- `integration_connection_health` — connection health records\n- `integration_provider_schemas` — provider schema definitions\n- `integration_schema_mappings` — schema mapping rules\n- `integration_sync_cursors` — sync cursor state\n- `integration_webhook_endpoints` — webhook endpoint registry\n\n### Discovery\n\n- `discovery_runs` — discovery run records\n- `discovery_assets` — discovered assets\n- `discovery_capability_candidates` — capability candidates\n- `discovery_domain_manifests` — domain manifest records\n\n### Spine Core\n\n- `spine_entities` — entity registry\n- `spine_activities` — activity log\n- `spine_knowledge_documents` — knowledge documents\n- `spine_knowledge_topics` — knowledge topics\n- `spine_memories` — memory records\n- `spine_lifecycle_definitions` — lifecycle definitions\n- `spine_lifecycle_transitions` — lifecycle transitions\n- `spine_proposals` — governance proposals\n- `spine_evidence` — proposal evidence\n- `spine_approvals` — approval records\n\n### Governance\n\n- `governance_proposals` — governance proposal registry\n- `governance_checkpoints` — checkpoint records (D1 in 042)\n- `governance_audit_log` — audit log\n\n### Product\n\n- `product_workbench_overview` — workbench overview projection\n- `product_workbench_items` — workbench item projection\n- `product_workbench_metrics` — workbench metric projection\n\n---\n\n## Verification Queries\n\nRun these against the live Neon database to verify migration 035 is applied:\n\n```sql\n-- 1. Check extension\nSELECT extname FROM pg_extension WHERE extname IN ('uuid-ossp', 'pgcrypto');\n\n-- 2. Check critical tables exist\nSELECT table_name FROM information_schema.tables\nWHERE table_schema = 'public'\nAND table_name IN (\n  'spine_organizations', 'spine_workspaces', 'spine_users',\n  'spine_memberships', 'spine_connector_catalog',\n  'spine_connector_installations', 'spine_entities',\n  'spine_activities', 'spine_proposals', 'governance_proposals',\n  'product_workbench_overview'\n)\nORDER BY table_name;\n\n-- 3. Check indexes\nSELECT indexname FROM pg_indexes\nWHERE schemaname = 'public'\nAND tablename LIKE 'spine_%'\nORDER BY indexname\nLIMIT 20;\n\n-- 4. Check table counts\nSELECT\n  (SELECT count(*) FROM information_schema.tables WHERE table_schema = 'public') as total_tables,\n  (SELECT count(*) FROM pg_indexes WHERE schemaname = 'public') as total_indexes;\n\n-- 5. Check RLS policies (should be 0 in 035, added in 042)\nSELECT policyname FROM pg_policies WHERE schemaname = 'public' LIMIT 5;\n```\n\n---\n\n## Expected Results\n\n| Check           | Expected                         |\n| --------------- | -------------------------------- |\n| Extensions      | `uuid-ossp`, `pgcrypto` present  |\n| Critical tables | All 11 tables listed above exist |\n| Table count     | ≥ 114                            |\n| Index count     | ≥ 39                             |\n| RLS policies    | 0 (added in migration 042)       |\n\n---\n\n## If Migration 035 Is Not Applied\n\n```bash\n# Apply migration 035 to Neon\npsql \"$FORTRESS_DATABASE_URL\" -f migrations/035_canonical_spine_schema_fortress.sql\n\n# Verify after application\npsql \"$FORTRESS_DATABASE_URL\" -c \"SELECT count(*) FROM information_schema.tables WHERE table_schema = 'public';\"\n```\n\n---\n\n## Customer Zero Specific\n\nCustomer Zero uses the same tables but with `tenant_id = 'iw-customer-zero'` on all tenant-owned rows. After migration 035 is verified:\n\n```sql\n-- Check Customer Zero data exists\nSELECT count(*) FROM spine_connector_installations WHERE tenant_id = 'iw-customer-zero';\nSELECT count(*) FROM spine_entities WHERE tenant_id = 'iw-customer-zero';\n```\n"}