Identities for entities did.bot

feat(oauth): resolve space type declarations over the network #2608

targeting main from resolver
Closed opened by and assigned to borel-balisong.test.pds.did.bot
targeting main from resolver

A bare space: grant now takes the collections its space type declares, following the _lexicon TXT record to a DID, the DID document to a PDS, and the schema record to the declaration.

Resolution has a four-second deadline and a five-minute cache, failures included. An ambiguous answer, a mismatched DID or NSID, or a non-HTTPS endpoint leaves the grant empty, which permits no write.

🤖 Generated with Claude Code

Commits 36

feat(oauth): resolve space type declarations over the network
feat(spaces): meter space writes and enforce the record ceiling
test(spaces): cover a remote group DID hosted elsewhere
feat(spaces): expose credential revocation in the dashboard and CLI
feat(spaces): verify client attestations and consult managing apps
feat(spaces): announce the KEM backfill on the identity stream
fix(spaces): serialize space blob writes against the collector
feat(spaces): sync blobs with access control and GC safety
feat(identity): answer getRecommendedDidCredentials with the KEM key
feat(spaces): make remote-authority participation first class
feat(operator): add the didbot space command group
test(spaces): add adversarial parser, store and HTTP suites
fix(spaces): bound the credential lifetime subtraction
feat(oauth): accept space permissions and space type declarations
docs(spaces): document remote group authorities and the swarm boundary
docs(spaces): document the flag, write safety, scopes and usage
test(spaces): exercise private spaces end to end
feat(spaces): report space usage on the dashboard
feat(spaces): judge space writes through the policy gate
feat(spaces): refuse operator records in space writes
feat(spaces): gate spaces behind a deployment flag
feat(spaces): detect upstream support and request space scopes
feat(spaces): add the operator spaces dashboard
fix(spaces): keep the alpha lexicons through a refresh and require a usable key
feat(spaces): issue credentials and deliver notifications
feat(spaces): add simplespace mutation and sync endpoints
test(spaces): prove space data stays off the public surface
feat(spaces): serve the core space XRPC surface
feat(spaces): add the durable space store
test(spaces): cross-check the protocol crate against the TypeScript reference
feat(spaces): give every account a P-256 KEM key
test(agentd): use a genuinely unread scope in the audit test
feat(spaces): add the space OAuth scope grammar
feat(spaces): vendor the space and simplespace lexicons
fix(spaces): apply the protocol crate's security review
feat(spaces): add the protocol primitives crate