The bot.did.* lexicons (registration, operator, policy, policyBinding) are embedded in crates/didbot-lexicon and served from there. Nothing publishes them, so a third party cannot resolve bot.did.policy the way the protocol expects: a com.atproto.lexicon.schema record, keyed by NSID, in the repository of the DID that the _lexicon.did.bot DNS TXT record names as the authority.
Do this once the policy stack is merged and the records are in real use, not before: a published lexicon is a compatibility promise, and the schemas should not be discoverable while they can still change.
Scope when it happens: decide which DID is the authority for bot.did and publish the TXT record; write one com.atproto.lexicon.schema record per embedded lexicon, generated from the same files the crate embeds so the two cannot drift; add a check that fails when an embedded lexicon differs from its published record.
🤖 Generated with Claude Code
Operator decision (2026-09-29): stays open. The operator publishes the lexicons themselves when needed.