"""Data shapes for the `check` domain. pydantic, as every domain's `schemas.py` should be (D-263). The earlier stdlib dataclass here was a carve-out justified by a timing-parity budget that D-263 withdrew on 2026-08-20 — and a reference implementation carrying a footnote is a worse reference than one that is simply normal. Shapes are frozen. A result object is a statement about what was found, and nothing downstream should be able to edit the finding on its way to being reported. """ from __future__ import annotations from pydantic import BaseModel, ConfigDict class VersionCheck(BaseModel): """The outcome of comparing project.yaml against client/project.godot. `problem` and `ok` are deliberately separate. A check can fail because the versions disagree (`ok=False`, both versions known) or because it could not read them at all (`problem` set) — and those want different messages, since only the first has a remedy the caller can act on. """ model_config = ConfigDict(frozen=True) ok: bool yaml_version: str | None = None godot_version: str | None = None problem: str | None = None