-- AP-A1-PM-2: Progression graph — join_gate, strand binding, recurring strand ALTER TABLE roadmap_items DROP CONSTRAINT IF EXISTS roadmap_items_item_type_check; ALTER TABLE roadmap_items ADD CONSTRAINT roadmap_items_item_type_check CHECK (item_type IN ( 'milestone', 'review_gate', 'maturity_stage', 'work_cycle', 'join_gate' )); ALTER TABLE roadmap_items ADD COLUMN IF NOT EXISTS strand_project_id UUID NULL REFERENCES projects(id) ON DELETE SET NULL; CREATE INDEX IF NOT EXISTS idx_roadmap_items_strand ON roadmap_items(tenant_id, strand_project_id) WHERE strand_project_id IS NOT NULL; ALTER TABLE recurring_elements ADD COLUMN IF NOT EXISTS project_id UUID NULL REFERENCES projects(id) ON DELETE SET NULL; CREATE INDEX IF NOT EXISTS idx_recurring_elements_project ON recurring_elements(tenant_id, project_id) WHERE project_id IS NOT NULL;