Building-block protocol: class has been decorated with
@model_family_meta and so carries the docs-facing metadata
triple at __model_family_meta__.
The decorator attaches a ModelFamilyMeta instance holding
canonical_name / citation / theory strings. The docs
site reads these to render family-root index cards, sidebar
labels, and paper headers. The Lucid contract requires every
concrete family Config to be wrapped.
Attributes
__model_family_meta__ClassVar[object]Frozen
lucid.models._meta.ModelFamilyMeta instance set
by @model_family_meta. The annotation is object here
because Protocol cannot import its concrete dataclass
without creating a circular dependency; use
ModelFamilyMeta in real signatures that need the typed
fields.Notes
Component of ModelConfigProtocol. Adding this protocol
to a function signature signals "must be a docs-discoverable
family Config" without committing to the rest of the contract
(registry id, dataclass-ness).
Examples
>>> from lucid.models.vision.vit import ViTConfig
>>> from lucid.models._protocols import HasFamilyMeta
>>> isinstance(ViTConfig, HasFamilyMeta)
True
A bare class without the decorator fails the check:
>>> class Bare: model_type = "bare"
>>> isinstance(Bare, HasFamilyMeta)
False