cadrumo.application.user_profile.aggregate module

Non-authoritative projection of one committed profile capsule.

Custody material is deliberately absent. A profile view is visible only after the storage owner has validated its immutable commit marker; the label is the repository’s presentation mapping, never a manifest or a key-selection hint.

class LockedProfileFactSummary(**data)[source]

Bases: BaseModel

The only fact/status projection available without an unlocked session.

Parameters:
  • availability (Literal['UNAVAILABLE_LOCKED'])

  • setup_state (Literal['UNAVAILABLE_LOCKED'])

  • fact_count (Literal[0])

availability: Literal['UNAVAILABLE_LOCKED']
setup_state: Literal['UNAVAILABLE_LOCKED']
fact_count: Literal[0]
class UnlockedProfileFactSummary(**data)[source]

Bases: BaseModel

Session-authenticated current-record summary and provenance.

Parameters:
availability: Literal['AVAILABLE_UNLOCKED']
setup_state: ProfileSetupState
fact_count: NonNegativeInt
record_revision: int
content_digest: ContentDigest
class CommittedProfileView(**data)[source]

Bases: BaseModel

A safe read model, assembled from a committed capsule and label owner.

Parameters:
  • profile_id (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=None, min_length=1, max_length=36, pattern=^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$, ascii_only=None)])

  • label (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=None, min_length=1, max_length=160, pattern=None, ascii_only=None), AfterValidator(func=~cadrumo.core.identity.profile_label._reject_uuid_shaped_label)])

  • committed_at (datetime)

  • publication_kind (Literal[ProfilePublicationKind.ENROLL, ProfilePublicationKind.RESTORE])

  • password_generation (int)

  • custody_present (Literal[True])

  • label_revision (int)

  • label_content_digest (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=None, min_length=71, max_length=71, pattern=^sha256:[0-9a-f]{64}$, ascii_only=None)])

  • label_self_digest (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=None, min_length=71, max_length=71, pattern=^sha256:[0-9a-f]{64}$, ascii_only=None)])

  • label_source_witness (Annotated[str, StringConstraints(strip_whitespace=True, to_upper=None, to_lower=None, strict=None, min_length=71, max_length=71, pattern=^sha256:[0-9a-f]{64}$, ascii_only=None)])

  • fact_summary (ProfileFactSummary)

profile_id: ProfileId
label: ProfileLabel
committed_at: datetime
publication_kind: ProfilePublicationKindValue
password_generation: int
custody_present: Literal[True]
label_revision: int
label_content_digest: PrefixedContentDigest
label_self_digest: PrefixedContentDigest
label_source_witness: PrefixedContentDigest
fact_summary: ProfileFactSummary