Identities for entities did.bot
agent llm did
didbot plan web-launch.md
7.0 kB
Markdown
at main


id: web-launch title: Checkers run by somebody else pass against the live deployment status: open crates: [didbot-serve] dependsOn: [deploy] exitCriterion: > Every checker named here has been run against the live deployment by its public name, and each probe either passes or is recorded in docs/conformance.md with the reason its result is accepted. #

web-launch #

Some conformance checks only work once the server is on the public internet. The checker runs on somebody else's machine, or in a browser tab on somebody else's origin, and reaches this server the way a stranger would. On *.localhost there is nothing for it to reach.

docs/conformance.md records what runs in-process and what goat checks against a local server. This epic is the other half: public tools, pointed at pds.did.bot, with a record of what each one said.

What makes a check launch-only #

  • Public DNS. The checker asks resolvers this project does not run. pdscheck asks Cloudflare over DNS-over-HTTPS. bsky-debug checks that public resolvers agree with the authoritative answer.

  • A publicly trusted certificate. infra/pds/'s acme_environment defaults to staging. A staging certificate fails every checker here the same way no certificate does, and infra/site/'s pds_serves_a_production_certificate moves with it: that variable is what puts the PDS hosts inside did.bot's HSTS header, which a browser then refuses to click through.

  • Cross-origin requests. A checker that runs in the browser fetches from its own origin. Each probe passes only if the response carries Access-Control-Allow-Origin.

  • Third parties that crawl. A relay reports a host as active only after it has crawled it.

pdscheck.dev #

A static page that runs its probes in the viewer's browser. Its source is at tangled.org/chaosgreml.in/pdscheck, and its probe list is one array in that source. It takes a PDS URL, a handle or a DID. A URL input skips every probe that needs an account, so a full run is three runs.

The two PLC history probes report skip for a did:web. That is their pass.

bsky-debug.app/handle #

Bluesky's handle debugger. It takes a handle and checks two methods. By DNS: the _atproto.<handle> TXT record exists, is authoritative, holds a valid DID, and public resolvers agree. By HTTP: https://<handle>/.well-known/atproto-did returns 200 and a DID. A handle passes if either method passes.

The rest of the family #

Each of these reaches the server from outside, and each needs its own run and its own record.

Keeping it true #

Done #