Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.canthus.org/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Canthus uses an append-only event log stored in the encrypted local SQLite database. All events are local-only by default. No event data is transmitted to any server unless the user explicitly enables research export (see Research Export Mode). This document classifies every event type and field by sensitivity level, and defines which fields are eligible for anonymised export.

Sensitivity levels

LevelDefinitionDefault sharing
internalSystem identifiers and timestamps used for log integrityNever shared
privateDirect health or personal data (ratings, task titles)Never shared
derivedAggregated or calculated values that carry no personal contentEligible for export (requires consent)

Event types and field classifications

taskCreated

FieldTypeSensitivityNotes
taskIdstring (UUID)internalOpaque identifier
titlestringprivateUser-entered task name

taskEdited

FieldTypeSensitivityNotes
taskIdstring (UUID)internal
changesmapprivateMay contain task title or other personal fields
actionstringinternalEdit action type

taskRemoved

FieldTypeSensitivityNotes
taskIdstring (UUID)internal

taskOccurrenceCreated

FieldTypeSensitivityNotes
occurrenceIdintinternal
taskIdstring (UUID)internal
dueDatetimedatetimeprivateSpecific scheduled time
statestringinternal

taskOccurrenceCompleted

FieldTypeSensitivityNotes
occurrenceIdintinternal
taskIdstring (UUID)internal
dueDatetimedatetimeprivate
completedAtdatetimeprivatePrecise completion timestamp
completedLocalDaydatederivedDay-level granularity only
manaCostAtCompletiondoublederivedAggregate energy cost
axisFactorAtCompletiondoublederivedCapacity adjustment applied
baselineCostAtCompletiondoublederivedPre-adjustment cost

taskOccurrenceUncompleted

FieldTypeSensitivityNotes
occurrenceIdintinternal

taskOccurrenceDeferred

FieldTypeSensitivityNotes
occurrenceIdintinternal
taskIdstring (UUID)internal
dueDatetimedatetimeprivate
deferredUntildatetimeprivate

taskOccurrenceRemoved

FieldTypeSensitivityNotes
occurrenceIdintinternal
taskIdstring (UUID)internal
dueDatetimedatetimeprivate

taskCostCalibrated

FieldTypeSensitivityNotes
taskIdstring (UUID)internal
calibratedForLocalDaydatederived
policyVersionintinternal
previousRelativeCostdoublederived
newRelativeCostdoublederived
deltadoublederived
recentCompletions28dintderived
lifetimeCompletionsintderived
strengthdoublederivedCalibration confidence

taskCostOverridden

FieldTypeSensitivityNotes
taskIdstring (UUID)internal
occurrenceIdintinternal
statedManaCostdoublederivedUser-stated cost, no personal content
previousRelativeCostdoublederived
newRelativeCostdoublederived
overriddenAtdatetimeprivatePrecise timestamp

taskRecoveryWeightUpdated

FieldTypeSensitivityNotes
taskIdstring (UUID)internal
previousRecoveryWeightdoublederived
newRecoveryWeightdoublederived
observationCountintderived
updatedLocalDaydatederived
policyVersionintinternal

checkInRecorded

FieldTypeSensitivityNotes
checkInIdstring (UUID)internal
checkInDatedatederivedDay-level granularity
bodyint (1-5)privateDirect health self-report
mindint (1-5)privateDirect health self-report
moodint (1-5)privateDirect health self-report
dayTypestringprivateUser-labelled day context
checkInTierstringderivedCompletion level (full/quick/etc.)
actionstringinternalCreate or update

dayTypeSet

FieldTypeSensitivityNotes
dayTypestringprivate
checkInDatedatederived
opportunityWeightdoublederived
normalizedCompletionRatiodoublederived
underperformanceDaysintderived
actionstringinternal

pemDetected

FieldTypeSensitivityNotes
triggerEventIdslist(string)internalReferences to other events
attributionConfidencedoublederived
detectedAtdatetimeprivate
detectedLocalDaydatederived

pemResolved

FieldTypeSensitivityNotes
resolvedAtdatetimeprivate
resolvedLocalDaydatederived
resolutionSourcestringinternal

Default behaviour

  • All events are written to the local encrypted SQLite database only
  • No event data is sent to any external system
  • Sentry crash reporting does not include event payloads
  • The “Delete all data” flow in Settings permanently removes all events

Export eligibility

Only fields classified as derived are eligible for inclusion in anonymised research export. private and internal fields are never exported. See Research Export Mode for full anonymisation rules.