Adds a way to publish com.vibescrobble.scrobble per the atproto Lexicon spec, ready to run once the owner chooses an authority account. lexicon_authority_did in infra/variables.tf is the one place that account is named. infra/dns.tf writes _lexicon.vibescrobble.com (and, when lexicon_authority_takes_handle is set, _atproto.vibescrobble.com) from it. Both records are off while the variable is empty, which is the default, so applying this changes nothing.
A new crate, vibescrobble-lexicon, runs behind scripts/publish-lexicons.sh and scripts/check-lexicons.sh. publish writes one com.atproto.lexicon.schema record per file in lexicons/, keyed by NSID. The record is the file plus $type, checked against upstream's meta-schema (now vendored), and an unchanged record is not rewritten. It signs in over OAuth, reusing the CLI's loopback client (now a library), or with an app password read without echo. It stores nothing, and it refuses an account that _lexicon names differently. --dry-run prints the exact records. check walks txt → did → repository → document from outside and names the hop that failed. It resolves app.bsky.feed.post end to end today, and ours fails at txt until the record exists.
docs/publishing-lexicons.md says how to publish after a lexicon change. No record has been written and no infra applied. rustls moves to 0.23.46 to clear its open advisories.
🤖 Generated with Claude Code