Skip to content

Validation

ValidationReport dataclass

ValidationReport(
    revision_id: str,
    task: Task,
    status: ValidationStatus,
    checks: tuple[Check, ...],
    structural_counts: Mapping[str, int] | None = None,
    structural_counts_absent_reason: str | None = None,
    provenance: Mapping[str, Any] = dict(),
)

Tied to a revision and a task. Recomputed on demand, never stored as a badge.

Check dataclass

Check(
    id: str,
    stage: Stage,
    result: Result,
    message: str,
    implicated_objects: tuple[str, ...] = (),
    evidence_class: EvidenceClass = "structural",
)

One validation check, in the vocabulary the frozen schema fixes.

result distinguishes a check that ran and failed (FAIL) from one that could not run (NOT_RUN) — the distinction K06 carried as scope and the schema carries here. Both are kept: passed and scope remain as derived properties because the CLI and the evidence generators read them, and because "did it pass" and "did it run" are different questions.