"""Structured DocForge failures.""" from __future__ import annotations class DocForgeError(Exception): """A user-actionable project, source, validation, or cache failure.""" def __init__(self, code: str, message: str, **details: object) -> None: super().__init__(message) self.code = code self.message = message self.details = details def as_dict(self) -> dict[str, object]: return {"code": self.code, "message": self.message, "details": self.details}