Source code for quantum_mind.evaluation.provenance

"""Model provenance records used by reproducible research experiments."""
from __future__ import annotations
from dataclasses import asdict, dataclass
from typing import Optional

[docs] @dataclass(frozen=True) class ModelProvenance: """Evidence and implementation metadata for one benchmark model.""" model_id: str category: str original_reference: Optional[str] = None doi: Optional[str] = None original_algorithm: Optional[str] = None quantum_mind_extension: Optional[str] = None classical_baseline: Optional[str] = None validated_against: Optional[str] = None simulation_only: bool = True hardware_validated: bool = False human_data_validated: bool = False
[docs] def to_dict(self): """Convert provenance metadata to a dictionary.""" return asdict(self)
[docs] def validate_provenance(record): """Validate a provenance mapping and return a normalised dictionary.""" if not isinstance(record, (ModelProvenance, dict)): raise TypeError("record must be ModelProvenance or a mapping") data = record.to_dict() if isinstance(record, ModelProvenance) else dict(record) missing = [key for key in ("model_id", "category") if not data.get(key)] if missing: raise ValueError(f"missing required provenance fields: {', '.join(missing)}") return data