id.breadcrumbs.trail
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"connection": {
"description": "A single typed connection from a trail to another trail or artifact.",
"properties": {
"relation": {
"description": "The relation this connection expresses -- e.g. 'supports', 'opposes', 'explainer', 'helpful', 'addresses', per Semble's and Discourse Graphs' own vocabulary. Deliberately open, not an enum, matching `kind`.",
"maxLength": 128,
"type": "string"
},
"target": {
"description": "What this connection points at -- another trail's AT-URI, or any URI a subject can take (see `subject`).",
"format": "uri",
"maxLength": 2000,
"type": "string"
}
},
"required": [
"relation",
"target"
],
"type": "object"
},
"main": {
"description": "One attested contribution: an author did some kind of thing to/about a subject, optionally connected to other trails or artifacts.",
"key": "tid",
"record": {
"properties": {
"anchorId": {
"description": "Added revision 2. The stable id of a physical object (an NFC tag or printed QR on a disc/cabochon/sheet of paper) this trail is anchored to, if any -- absent for a purely digital trail (a claim, evidence, etc). The same anchorId recurs across every trail record from every person who has ever tapped that one object, forming a star topology around it; see DESIGN.md §6 / BREADCRUMBS.md.",
"maxLength": 512,
"type": "string"
},
"author": {
"description": "The DID of whoever made the contribution this trail attests to. Usually the same DID as the record's own repo (records live in their author's PDS), but named explicitly here so a trail remains legible even when read outside that repo context, or when attesting on someone else's behalf (e.g. a labeler recording a third party's contribution).",
"format": "did",
"type": "string"
},
"connections": {
"description": "Typed relations from this trail to other trails or artifacts -- the same shape as an Anchor/Evidence edge or a Semble connection. Optional and open-ended on purpose: most trails (e.g. a first Claim) have none. For a physical crumb (see `anchorId`), the open relation vocabulary includes 'anchored-by' (first tap on a fresh object), 'received-from'/'handed-to' (a handoff between people) -- documented convention, not enforced by this schema.",
"items": {
"ref": "#connection",
"type": "ref"
},
"type": "array"
},
"createdAt": {
"description": "When this contribution was made.",
"format": "datetime",
"type": "string"
},
"kind": {
"description": "What kind of contribution this is -- e.g. 'claim', 'evidence', 'question', 'project', 'review', 'attestation'. Deliberately open, not an enum: new contribution kinds shouldn't require a schema revision, matching run.saito.fact's own open-predicate design.",
"maxLength": 128,
"type": "string"
},
"medium": {
"description": "Added revision 2. What the anchored physical object is made of -- e.g. 'sticker', 'card', 'nail', 'magnet', 'laundry', 'pendant' (the real NFC hardware in use, see photos/nfc-materials/). Only meaningful alongside anchorId; deliberately open, not an enum, so a new medium doesn't need a schema revision. Drives breadcrumbs-decay's per-medium freshness window (DESIGN.md §6).",
"maxLength": 64,
"type": "string"
},
"subject": {
"description": "The artifact this trail attests to or about, wherever it lives and however it's represented -- an at:// URI, an https:// URL, a doi:, an ipfs://, etc. Deliberately addressing-scheme-agnostic: breadcrumbs is the attestation layer over other systems' document shapes, not a competing one.",
"format": "uri",
"maxLength": 2000,
"type": "string"
}
},
"required": [
"subject",
"author",
"kind",
"createdAt"
],
"type": "object"
},
"type": "record"
}
},
"description": "The base Trail record -- a universal per-contribution attestation wrapper, not a document format. Generalizes Discourse Graphs' Claim/Evidence/Question/Project (and any future contribution kind) under one record type instead of four separate hard-typed collections. Records the fact that a given author made a given kind of contribution to a given subject at a given time, with zero-or-more typed connections to other trails or artifacts. Deliberately has no title/abstract/content-structure field of its own -- the subject is addressed wherever it actually lives (an OXA document's AT-URI, a Curvenote-authored manuscript, a Discourse Graphs node, a plain PDF or DOI), not duplicated here. See breadcrumbs' own DESIGN.md §5 (~/breadcrumbs/DESIGN.md) for the full reasoning; the one-DID-per-document question this record's `subject` field surfaces is deliberately postponed, not decided.",
"id": "id.breadcrumbs.trail",
"lexicon": 1,
"revision": 2
}
Metadata
- DID
-
did:plc:x44mwes6ngsz35oisqbiggnl - CID
-
bafyreif6mt3vysixn2a5y5h6j7gqt4r3uymm2b3bphzfzdkpj7gbaoxami - Indexed At
- 2026-09-13 14:00 UTC
- AT-URI
-
at://did:plc:x44mwes6ngsz35oisqbiggnl/com.atproto.lexicon.schema/id.breadcrumbs.trail
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
A directional claim from this repository's holder about another party or record: 'we exhibited this', 'I performed on this', 'this is my work'. One-way and unapproved by default — the counterparty is never asked to ac…