symfonic.services.conversation.records¶
records ¶
What the registry writes down about its own governance decisions.
Three frozen records, extracted from :mod:registry so that module holds the
behaviour and this one holds the vocabulary. They share one property that is
the reason they exist at all: every governance verb here leaves a record with
a reason. A freeze that could not say why it was declared, a migration whose
source boundary nobody wrote down, and an expiry that is only an absence are
each indistinguishable from a bug when an adopter finds them months later.
IssuanceFreeze
dataclass
¶
Why and when new issuance was closed.
MigrationLink
dataclass
¶
MigrationLink(thread_id: str, legacy_checkpoint_id: str, checkpoint_id: str, boundary_id: str, at: datetime)
Which migrated checkpoint a legacy ref was replayed into, and from where.
The link lives in the registry rather than on the migrator because the question "has this legacy frame already been replayed?" outlives any one migrator instance. Answering it from an instance attribute means a second migrator โ a second worker, a retry after a restart โ replays a thread the first one already replayed, with whatever side effects the replay port committed.
ReconciliationReport
dataclass
¶
ReconciliationReport(at: datetime, grace_seconds: float, expired: tuple[CheckpointRef, ...] = (), inspected: int = 0)
What a crash-expiry pass expired, and on what grounds.