What you need first

idiolect depends on ATProto for publication and on panproto for schema translation. Readers need three ATProto objects and one panproto object. The definitions below are sufficient for the rest of the Concepts chapters.

ATProto repositories and records

An ATProto account controls a public repository. A record occupies a path of the form collection/rkey; an AT-URI adds the account DID:

at://did:plc:example/dev.idiolect.verification/3kexample

The repository is a content-addressed Merkle Search Tree whose leaves point to record CIDs. The repository commit is signed; an individual record is not a stand-alone signed document. A proof chain can connect a record CID to that signed commit. This distinction, specified in the official ATProto repository format, must be accounted for when evaluating provenance claims.

Lexicons and NSIDs

A Lexicon is an ATProto schema document. Its NSID names a record collection or XRPC method; dev.idiolect.recommendation is one such collection. The Lexicon specification defines the record, object, reference, union, and scalar forms used throughout this repository.

Independent publishers may define different NSIDs for similar data. Lexicon validation can determine whether a value has the declared shape, but it cannot determine that two independently named shapes describe the same thing. idiolect addresses that second problem.

PDSes and event streams

A personal data server (PDS) hosts an account's authoritative repository. Network consumers usually learn about record changes through a synchronization stream or a derived transport such as Jetstream or tap. The book uses event stream for the abstraction and firehose when referring to the network-wide ATProto stream specifically.

The current indexer accepts a generic EventStream. Concrete adapters cover tap and Jetstream; thus a conceptual statement about an event fold does not imply that every process connects directly to a PDS.

Panproto lenses

A lens relates a source schema to a target schema. Its forward operation, get, produces a target view and a complement containing source information that the view did not retain. Its backward operation, put, combines a target view with that complement to reconstruct a source value.

idiolect uses panproto 0.71.0 to instantiate and run these lenses. No category theory is assumed: Lens semantics and laws introduces the notation before using it, while the panproto book provides optional depth.