atproto git client
atgc plan identity.md
15 kB · 220 lines


id: identity title: One answer to what an identifier is, and who it names status: shipped repos: [atgc] dependsOn: [] exitCriterion: > Every place that takes an account — a flag, a variable, a checkout's git identity, a record's authority — routes through one classifier and one resolver. #

identity #

A handle, a DID, an email address and a typo all arrive as strings. Deciding which is which used to be a did: prefix test in one place and a split('/') in another, and the failures were quiet: an ordinary git email posted to a public handle resolver with the address in the query string, an environment variable naming nobody producing the advice for a variable naming somebody else.

There is one classifier now (src/lexicon/identity.rs), the atproto grammar comes from jacquard rather than being restated here, and a handle resolves the four ways the spec defines rather than by asking Bluesky. The direction that is cached is DID to handle and only that — a handle is a hint somebody else can re-register, so seconds is the whole safe window.

What it needs #

Done #

  • The entry's own worry is the live behaviour, not a hypothetical:
    "enforcing it would break anyone pointed at a local test PDS" is what
    happens today. If that ever costs somebody something, the fix is an
    escape hatch, not the enforcement — but nobody has asked