Smart Tracking · Feature state machine

Granular Consent

Every trackable capability is backed by an explicit UserConsent record. This diagram follows its status field — undefined, unknown, accepted, revoked, suspended — as it is driven by the ConsentRequestDialogue, the fragment's validity window, and the Consent Overview page.

State diagram

stateDiagram-v2
    [*] --> Undefined
    Undefined --> Unknown : consent fragment loaded at startup
    Unknown --> Prompted : gated action triggered (join / chat / share)

    Prompted --> Accepted : user consents ("I consent")
    Prompted --> Declined : user rejects (non-required item)
    Declined --> Unknown

    Accepted --> Suspended : "thinking it over" (data unused, record kept)
    Suspended --> Accepted : re-agree
    Suspended --> Revoked : confirm revoke

    Accepted --> Revoked : revoke from Consent Overview
    Revoked --> Prompted : capability re-triggered later

    Accepted --> Expired : validFor window elapses
    Expired --> Prompted : re-confirmation required

    Revoked --> [*]
    

States

StateMeaning
UndefinedNo opinion recorded yet; default before any fragment loads.
UnknownFragment exists, but this user hasn't been asked.
PromptedConsentRequestDialogue is open, pre-selected, awaiting the user's decision.
AcceptedActive consent; capability is enabled while valid.
DeclinedUser rejected a non-required item at prompt time.
SuspendedRecord kept, but data usage paused — a deliberate middle state.
RevokedExplicitly withdrawn; capability disabled until re-prompted.
ExpiredvalidFor minutes elapsed since last agreement.

Reading the diagram