"""Human-review backend skeleton for Memory Gateway v2. Obsidian remains a human-in-the-loop review backend only. This skeleton does not write files or call external APIs; it preserves the adapter contract until the review draft integration is explicitly designed. """ from __future__ import annotations from typing import Any from .backend_contracts import BackendOperation, BackendResultStatus, BackendWriteResult from .schemas_v2 import BackendType class ObsidianReviewClient: def create_review_draft_v2(self, payload: dict[str, Any]) -> BackendWriteResult: """Return a skipped review-draft result until the real adapter exists.""" return BackendWriteResult( backend_type=BackendType.OBSIDIAN, operation=BackendOperation.CREATE_REVIEW_DRAFT, status=BackendResultStatus.SKIPPED, native_id=payload.get("event_id") or payload.get("gateway_id"), retryable=False, metadata={"reason": "obsidian_review_adapter_not_configured"}, )