"""Requirement snapshot. A scope-changing user reply must bump ``revision``.""" from __future__ import annotations from pydantic import BaseModel, ConfigDict, Field class ReportRequirementSnapshot(BaseModel): model_config = ConfigDict(extra="forbid") topic: str objective: str | None = None audience: str | None = None language: str | None = None time_range: str | None = None geography: str | None = None required_angles: list[str] = Field(default_factory=list) excluded_angles: list[str] = Field(default_factory=list) source_constraints: str | None = None report_structure_id: str | None = None length_target: str | None = None tone: str | None = None deadline_hint: str | None = None quality_priority: str | None = None revision: int = Field(ge=1)