torchcell.verification.ProvenanceGap

class ProvenanceGap(*, field: str, reason: ~torchcell.verification.sourced.ProvenanceGapReason, looked_in: ~torchcell.verification.report.Provenance | None = None, resolve_with: ~torchcell.verification.report.Provenance | None = None, note: str | None = None, keys: list[str] = <factory>)[source]

Bases: BaseModel

The complement of SourcedValue: a documented, typed ABSENCE.

SourcedValue binds a value to (citation_key, sha256, quote). ProvenanceGap binds a MISSING value to a typed reason, so an unfilled field (n_samples, an uncertainty, a replicate design) is an HONEST typed absence – never a guess, never a silent None the reader cannot tell apart from “not applicable”. The set of gaps across a build is a queryable worklist (see provenance_gap_census()).

Consuming a secondary curation layer (YeastPhenome, SPELL) is the motivating case: we capture the whole record as presented and gap-mark every field the curation does not carry, rather than dropping the record or fabricating a value.

model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].