diff --git a/proposal.md b/proposal.md index f0c0972..0849edd 100644 --- a/proposal.md +++ b/proposal.md @@ -31,7 +31,7 @@ The `opensocial.group` spaces are specifically intended for records *about* the Rather, a group hosts an additional space for each application or modality. If a group wants to enable event applications, it might create a `group.lexicon.calendar.events` space. All `group.lexicon.*` records will then be published into this modality-specific space rather than into a universal “group” space. -The `members` space lists the group's spaces in a `spaces` record. The index is a discovery aid, not an exhaustive list. A group may omit a space, for instance so that members cannot learn an admin-only space exists. +The `members` space indexes the group's spaces with a `space` record per space. The index is a discovery aid, not an exhaustive list. A group may omit a space, for instance so that members cannot learn an admin-only space exists. ## Roles & Access @@ -158,7 +158,7 @@ A group may implement arbitrarily complex governance, including things like voti | `group.opensocial.profile` | meta | authority | `self` | Name, description, avatar, join policy. | | `group.opensocial.rule` | meta | authority | tid | One group rule with a stable URI a mod action can cite. | | `group.opensocial.permissions` | members | authority | `self` | Group-wide scope grants and each role's `assignable` list. | -| `group.opensocial.spaces` | members | authority | `self` | Index of the group's spaces. | +| `group.opensocial.space` | members | authority | tid | Lists one space in the group's index. | | `group.opensocial.role` | members | authority | role id | Declares that a role exists. | | `group.opensocial.membership` | members | authority | member DID | Grants a member their roles. | | `group.opensocial.acceptance` | members | **member** | `self` | The member's side of membership. Gates whether the member appears in the roster, not access. | @@ -173,7 +173,7 @@ A group may implement arbitrarily complex governance, including things like voti | Set | Writes | Calls | | ----- | ----- | ----- | | `group.opensocial.configure` | `profile` and `rule` in `meta`; `role` and `permissions` in `members` | — | -| `group.opensocial.manageSpaces` | the `spaces` index in `members`; `access` in `meta` and `members` | — | +| `group.opensocial.manageSpaces` | `space` index entries in `members`; `access` in `meta` and `members` | — | | `group.opensocial.manageMembers` | `membership` in `members`; `invite` in invitees' `invites` spaces | `listJoinRequests`, `admitMember` | | `group.opensocial.moderate` | labels in `meta` and `members` | `listSubjects`, `getSubjectHistory`, `resolveSubject` | @@ -191,8 +191,8 @@ Methods handle data stored privately by the host, space creation and deletion, a | Method | Auth | Requires | Purpose | | ----- | ----- | ----- | ----- | -| `createSpace` | group-DID session | `manage=create` | Creates the space with its `access` record and optionally adds it to the `spaces` index. | -| `deleteSpace` | group-DID session | `manage=delete` | Deletes the space and removes it from the `spaces` index. Cannot delete the `meta` or `members` space. | +| `createSpace` | group-DID session | `manage=create` | Creates the space with its `access` record and optionally an index entry. | +| `deleteSpace` | group-DID session | `manage=delete` | Deletes the space and its index entry. Cannot delete the `meta` or `members` space. | | `listJoinRequests` | group-DID session | `rpc:` scope | Lists pending join requests, which the host stores privately. | | `admitMember` | group-DID session | `rpc:` scope | Resolves a private join request and writes the membership. | | `listSubjects` | group-DID session | `rpc:` scope | Lists the moderation queue, which the host stores privately. |