CREATE TABLE provider_dependency_state ( tenant_id UUID NOT NULL REFERENCES tenant(id) ON DELETE CASCADE, provider VARCHAR(64) NOT NULL, status VARCHAR(16) NOT NULL DEFAULT 'AVAILABLE' CHECK (status IN ('AVAILABLE', 'UNAVAILABLE')), consecutive_failures INTEGER NOT NULL DEFAULT 0 CHECK (consecutive_failures >= 0), open_until TIMESTAMPTZ, last_error_code VARCHAR(64), last_failure_at TIMESTAMPTZ, last_success_at TIMESTAMPTZ, row_version BIGINT NOT NULL DEFAULT 1, updated_at TIMESTAMPTZ NOT NULL DEFAULT now(), PRIMARY KEY (tenant_id, provider) ); CREATE INDEX idx_provider_dependency_unavailable ON provider_dependency_state (updated_at DESC) WHERE status = 'UNAVAILABLE';