net.anisota.chronicle.milestone

anisota.net

{
  "id": "net.anisota.chronicle.milestone",
  "defs": {
    "main": {
      "key": "any",
      "type": "record",
      "record": {
        "type": "object",
        "required": [
          "milestoneId",
          "category",
          "unlockedAt",
          "signature",
          "createdAt"
        ],
        "properties": {
          "name": {
            "type": "string",
            "maxLength": 100,
            "description": "Display name of the milestone"
          },
          "tier": {
            "type": "integer",
            "minimum": 0,
            "description": "Tier or threshold value (e.g. 50 for level-50)"
          },
          "rarity": {
            "enum": [
              "common",
              "uncommon",
              "rare",
              "epic",
              "legendary"
            ],
            "type": "string",
            "description": "Rarity tier of the milestone"
          },
          "context": {
            "ref": "#milestoneContext",
            "type": "ref"
          },
          "category": {
            "enum": [
              "level",
              "social",
              "collection",
              "patterns",
              "special",
              "expedition"
            ],
            "type": "string",
            "description": "Category of the milestone"
          },
          "xpReward": {
            "type": "integer",
            "minimum": 0,
            "description": "XP awarded for this milestone"
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "When the milestone record was created"
          },
          "signature": {
            "ref": "#chronicleSignature",
            "type": "ref"
          },
          "unlockedAt": {
            "type": "string",
            "format": "datetime",
            "description": "When the milestone was reached"
          },
          "description": {
            "type": "string",
            "maxLength": 500,
            "description": "Description of what was reached"
          },
          "milestoneId": {
            "type": "string",
            "maxLength": 100,
            "description": "Unique identifier for the milestone (e.g. 'level-50', 'expedition-first-light')"
          },
          "dailyRecordRef": {
            "type": "string",
            "description": "AT URI of the daily record when the milestone was reached"
          }
        }
      },
      "description": "A milestone reached in the field, shown on the Fieldwork page's Milestones tab. Successor to net.anisota.chronicle.achievement (legacy records in that collection remain readable but no new ones are written). rkey is the milestone ID (e.g. level-50, expedition-first-light). Created once with createRecord when the milestone is reached. Immutable."
    },
    "milestoneContext": {
      "type": "object",
      "properties": {
        "level": {
          "type": "integer",
          "minimum": 1,
          "description": "Player level when the milestone was reached"
        },
        "totalXP": {
          "type": "integer",
          "minimum": 0,
          "description": "Total XP when the milestone was reached"
        },
        "postCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Post count when the milestone was reached"
        },
        "specimenCount": {
          "type": "integer",
          "minimum": 0,
          "description": "Specimen count when the milestone was reached"
        }
      },
      "description": "Contextual data at the time the milestone was reached"
    },
    "chronicleSignature": {
      "type": "object",
      "required": [
        "sig",
        "alg",
        "kid",
        "signedAt",
        "nonce",
        "version"
      ],
      "properties": {
        "alg": {
          "type": "string",
          "description": "Signing algorithm (ES256)"
        },
        "kid": {
          "type": "string",
          "description": "Key identifier for the signing key"
        },
        "sig": {
          "type": "string",
          "description": "Base64-encoded ES256 signature"
        },
        "nonce": {
          "type": "string",
          "description": "Unique random nonce to prevent replay"
        },
        "version": {
          "type": "integer",
          "description": "Signature schema version"
        },
        "signedAt": {
          "type": "string",
          "format": "datetime",
          "description": "When the record was signed"
        }
      },
      "description": "ES256 cryptographic signature proving record authenticity. The signature itself proves legitimacy - no separate verification lexicons needed."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}

Validate Record

Validate a record against net.anisota.chronicle.milestone

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:lcieujcfkv4jx7gehsvok3pr
CID
bafyreictyk4nnup5jdgxvgdq64trspm3nmqhfyztj46nedytmei3jhwzzm
Indexed At
2026-07-20 17:07 UTC
AT-URI
at://did:plc:lcieujcfkv4jx7gehsvok3pr/com.atproto.lexicon.schema/net.anisota.chronicle.milestone

Lexicon Garden

@