docs: relays, and why this authority will never be on one
RELAYS.md answers the roadmap's third open question with a recommendation against: no subscribeRepos, no requestCrawl, keep the two sync endpoints already served. The decisive finding is that the question was never really about cost. A relay requires rev to increase between commits, and Corpora's rev is derived from the MST root precisely so that builds are reproducible — so roughly half of all publishes would carry a rev lower than their predecessor and be silently dropped by a conforming relay. Firehose participation and reproducible builds are mutually exclusive, and M1 chose reproducibility. That also collapses open question 4 into open question 3. The non-monotonic rev is safe only because there is no firehose, and the firehose is out of reach only because the rev is non-monotonic. They are one decision, now recorded as such. Two things worth knowing beyond the recommendation. There is no relay discovery protocol at all: atcr.io ships fifteen relay URLs as compile-time constants under a comment saying so, the reference PDS uses PDS_CRAWLERS, and the official installer writes exactly one hostname. And a relay never enumerates a host's repositories — it learns accounts only from firehose events — so "requestCrawl then getRepo for backfill" is not a middle path, it is nothing at all. The loss is real but bounded: a public relay's lexicon-schema index holds 491 repos and atcr.io is among them. The single consumer found, lexicon.store, accepts a deploy-time POST that does the same job, so PUBLISHING now ends the loop with it — alongside recording didDocHash out of band, which had been documented as a control and never given a step. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>