CREATE TABLE IF NOT EXISTS wiki_recovery_budgets ( tenant_id BIGINT NOT NULL, dead_letter_id BIGINT NOT NULL, attempt_number INTEGER NOT NULL, pending_op_id BIGINT NOT NULL, knowledge_base_id VARCHAR(36) NOT NULL, knowledge_id VARCHAR(36) NOT NULL, model_id VARCHAR(36) NOT NULL, embedding_model_id VARCHAR(36) NOT NULL DEFAULT '', source_fingerprint VARCHAR(64) NOT NULL, model_fingerprint VARCHAR(64) NOT NULL, reviewed_release VARCHAR(255) NOT NULL, reviewed_api_image VARCHAR(255) NOT NULL, max_provider_requests BIGINT NOT NULL CHECK (max_provider_requests > 0), reserved_provider_requests BIGINT NOT NULL DEFAULT 0 CHECK (reserved_provider_requests >= 0 AND reserved_provider_requests <= max_provider_requests), deadline_at TIMESTAMPTZ NOT NULL, status VARCHAR(32) NOT NULL DEFAULT 'active', stop_reason VARCHAR(128) NOT NULL DEFAULT '', last_phase VARCHAR(64) NOT NULL DEFAULT '', paused_payload TEXT NOT NULL, verified_progress TEXT NOT NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (tenant_id, dead_letter_id, attempt_number, pending_op_id), UNIQUE (tenant_id, pending_op_id) );