town.chalky.occurrence

chalky.town

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A single occurrence of a recurring town.chalky.task that has diverged from its series' default. A recurring task is a template that projects occurrences onto later matching days; an occurrence stays a pure projection until the user acts on one day (marks it done, or removes it), at which point this record materializes to carry that per-day state. It exists only while it differs from the default — reverting an occurrence to not-done and not-skipped deletes the record. Replaces the older completedDates/skipDates string arrays that used to live on the task.",
      "key": "tid",
      "record": {
        "properties": {
          "completed": {
            "default": false,
            "type": "boolean"
          },
          "completedAt": {
            "description": "When `completed` last flipped to true.",
            "format": "datetime",
            "type": "string"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "date": {
            "description": "The occurrence day as YYYY-MM-DD. (series, date) uniquely identifies an occurrence within a repo.",
            "type": "string"
          },
          "series": {
            "description": "The rkey of the recurring town.chalky.task this occurrence belongs to. A weak reference: the full at-uri is derived from the author's repo and the town.chalky.task collection.",
            "type": "string"
          },
          "skipped": {
            "default": false,
            "description": "Whether this occurrence was removed from the series (hidden without ending the whole series).",
            "type": "boolean"
          },
          "stamps": {
            "description": "Hybrid-logical-clock stamps mirroring town.chalky.task's stamps field (see its description; approach borrowed from the CRDT ideas behind automerge.org). An occurrence is one decision, so it carries a single group.",
            "properties": {
              "state": {
                "description": "Covers completed, completedAt and skipped.",
                "type": "string"
              }
            },
            "type": "object"
          },
          "updatedAt": {
            "description": "Last local edit; used as the whole-record last-write-wins clock during sync. The physical component of a hybrid logical clock, so it is monotonic per device.",
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "series",
          "date",
          "completed",
          "skipped",
          "createdAt",
          "updatedAt"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "id": "town.chalky.occurrence",
  "lexicon": 1
}

Validate Record

Validate a record against town.chalky.occurrence

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:mthv22lb4hhaxupzjnqvijwk
CID
bafyreig7dstrhf2pqnidsv4kaujdfbm2bmpqvmqunpadpxu2k23qhyk5t4
Indexed At
2026-09-21 04:07 UTC
AT-URI
at://did:plc:mthv22lb4hhaxupzjnqvijwk/com.atproto.lexicon.schema/town.chalky.occurrence

Version History (2 versions)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A single task in a chalky.town weekly planner. Stored in the author's repo. Field names mirror app.attodo.task where the concept is shared (title/description/completed/completedAt and the rec* recurrence fields); chalky…

  • dev.skytick.todo recordnot from the namespace authority

    A task on a list.

Lexicon Garden

@