Identities for entities did.bot

feat(spaces)!: implement the October 29 space policy model #2633

targeting main from claude/spaces-policy
Open opened by and assigned to borel-balisong.test.pds.did.bot
targeting main from claude/spaces-policy

Replaces the October 22 simplespace API with the October 29 policy union: personal, member and managed spaces, the moved space/memberspace/managedspace routes, published policy and member records, clearRecords and removeWriter. STAR archives follow the November 5 control-byte framing.

Space migration is served too: exportSpaceMeta, importSpaceMeta and importRepo move the policy, members, writers and records with the atproto-space-meta and atproto-space-repo profiles. The dashboard and didbot space CLI use the policy flags and expose clear and remove-writer.

The policy form and detail, with sample data:

spaces policy detail

The new create flags:

didbot space create

🤖 Generated with Claude Code

Commits 63

docs(spaces): record the schema and STAR conformance coverage
test(spaces): validate space responses against the vendored lexicons
docs(spaces): state the migration import bounds
test(spaces): cover the operator clear and remove-writer controls
feat(spaces): bound migration imports and reject duplicate access state
docs(spaces): record the pending November 12 refactor
test(spaces): supply the export query in the DPoP surface check
test(spaces): run the DASL STAR interop fixtures
docs(spaces): describe the space migration surface
feat(spaces): serve the space migration methods
test(spaces): cover the clear and remove-writer dashboard routes
feat(spaces): expose clear and remove-writer to operators
fix(spaces): enforce the November 5 STAR limits and account errors
docs(spaces): record the policy-model port and the single review
feat(spaces): render the policy fields in the dashboard
fix(spaces): refuse suspended and deactivated space repos
docs(spaces): describe the policy model and the new space archive surface
feat(spaces)!: serve the policy-based space, member and managed surface
feat(spaces)!: adopt the October 29 policy lexicons and STAR framing
docs(spaces): model agent work with spaces
test(spaces): pin the vendored space method surface
fix(spaces): keep space data reachable while the flag is off
feat(spaces): admit agent records under bot.did.agent
fix(spaces): pin notification delivery and forward authority writes
docs(spaces): fix the intra-doc links the doc build refuses
style(spaces): apply rustfmt to the stacked work
docs(spaces): bring the guide and epic up to the shipped surface
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