Source code for pipeworks_mud_mapper.models.description_validation

"""Description validation metadata model.

Stores the latest validator output for an LLM-generated room description.
This metadata is authoring scaffolding and is stripped on zone export,
mirroring how coordinates and LLM provenance are treated.
"""

from datetime import UTC, datetime

from pydantic import BaseModel, Field


[docs] class DescriptionValidationInfo(BaseModel): """Metadata produced by the description validator. This is intentionally small and explicit. It preserves enough information to understand validator outcomes without forcing any narrative changes. """ valid: bool = Field( ..., description="Whether the description passed hard rules", ) hard_failures: list[str] = Field( default_factory=list, description="List of hard rule failures", ) soft_failures: list[str] = Field( default_factory=list, description="List of soft rule failures (advisory)", ) metrics: dict = Field( default_factory=dict, description="Validation metrics (word count, bounds, etc.)", ) rule_hits: dict[str, list[str]] = Field( default_factory=dict, description="Matched tokens grouped by rule name", ) validated_at: datetime = Field( default_factory=lambda: datetime.now(UTC), description="UTC timestamp of the validation run", )