diff --git a/content/application-service-api.md b/content/application-service-api.md index 582abf81..c3c54822 100644 --- a/content/application-service-api.md +++ b/content/application-service-api.md @@ -86,57 +86,18 @@ by POSIX extended regular expressions and look like: Application services may define the following namespaces (with none being explicitly required): - ---- - - - - - - - - - - - - - - - - - - - - -
NameDescription
usersEvents which are sent from certain users.
aliasesEvents which are sent in rooms with certain room aliases.
roomsEvents which are sent in rooms with certain room IDs.
+| Name | Description | +|----------|------------------------------------------------------------| +| users | Events which are sent from certain users. | +| aliases | Events which are sent in rooms with certain room aliases. | +| rooms | Events which are sent in rooms with certain room IDs. | Each individual namespace MUST declare the following fields: - ---- - - - - - - - - - - - - - - - - -
NameDescription
exclusiveRequired A true or false value stating whether this application service has exclusive access to events within this namespace.
regexRequired A regular expression defining which values this namespace includes.
+| Name | Description | +|------------|------------------------------------------------------------------------------------------------------------------------------------| +| exclusive | **Required** A true or false value stating whether this application service has exclusive access to events within this namespace. | +| regex | **Required** A regular expression defining which values this namespace includes. | Exclusive user and alias namespaces should begin with an underscore after the sigil to avoid collisions with other users on the homeserver. @@ -149,52 +110,17 @@ The registration is represented by a series of key-value pairs, which this specification will present as YAML. See below for the possible options along with their explanation: - ---- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameDescription
idRequired. A unique, user-defined ID of the application service which will never change.
urlRequired. The URL for the application service. May include a path after the domain name. Optionally set to null if no traffic is required.
as_tokenRequired. A unique token for application services to use to authenticate requests to Homeservers.
hs_tokenRequired. A unique token for Homeservers to use to authenticate requests to application services.
sender_localpartRequired. The localpart of the user associated with the application service.
namespacesRequired. A list of users, aliases and rooms namespaces that the application service controls.
rate_limitedWhether requests from masqueraded users are rate-limited. The sender is excluded.
protocolsThe external protocols which the application service provides (e.g. IRC).
+ +| Name | Description | +|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------| +| id | **Required** A unique, user-defined ID of the application service which will never change. | +| url | **Required** The URL for the application service. May include a path after the domain name. Optionally set to null if no traffic is required. | +| as_token | **Required** A unique token for application services to use to authenticate requests to Homeservers. | +| hs_token | **Required** A unique token for Homeservers to use to authenticate requests to application services. | +| sender_localpart | **Required** The localpart of the user associated with the application service. | +| namespaces | **Required** A list of `users`, `aliases` and `rooms` namespaces that the application service controls. | +| rate_limited | Whether requests from masqueraded users are rate-limited. The sender is excluded. | +| protocols | The external protocols which the application service provides (e.g. IRC). | An example registration file for an IRC-bridging application service is below: diff --git a/content/client-server-api/_index.md b/content/client-server-api/_index.md index 8557aa1f..34d43229 100644 --- a/content/client-server-api/_index.md +++ b/content/client-server-api/_index.md @@ -1473,32 +1473,11 @@ the server-server API. In addition to the fields of a Room Event, State Events have the following fields. - ----- - - - - - - - - - - - - - - - - - - - -
KeyTypeDescription
state_keystringRequired. A unique key which defines the overwriting semantics for this piece of room state. This value is often a zero-length string. The presence of this key makes this event a State Event. State keys starting with an @ are reserved for referencing user IDs, such as room members. With the exception of a few events, state events set with a given user's ID as the state key MUST only be set by that user.
prev_contentEventContentOptional. The previous content for this event. If there is no previous content, this key will be missing.
+ +| Key | Type | Description | +|--------------|--------------|--------------------------------------------------------------------------------------------------------------| +| state_key | string | **Required.** A unique key which defines the overwriting semantics for this piece of room state. This value is often a zero-length string. The presence of this key makes this event a State Event. State keys starting with an `@` are reserved for referencing user IDs, such as room members. With the exception of a few events, state events set with a given user's ID as the state key MUST only be set by that user. | +| prev_content | EventContent | Optional. The previous `content` for this event. If there is no previous content, this key will be missing. | ### Size limits diff --git a/content/client-server-api/modules/end_to_end_encryption.md b/content/client-server-api/modules/end_to_end_encryption.md index 0815b4d5..3ecb1726 100644 --- a/content/client-server-api/modules/end_to_end_encryption.md +++ b/content/client-server-api/modules/end_to_end_encryption.md @@ -74,28 +74,10 @@ with the following properties: `KeyObject` - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription

key

string

Required. The unpadded Base64-encoded 32-byte Curve25519 public key.

signatures

Signatures

Required. Signatures of the key object.

-

The signature is calculated using the process described at Signing JSON.

+| Parameter | Type | Description | +|------------|------------|---------------------------------------------------------------------------------------------------------------------------------------------------| +| key | string | **Required.** The unpadded Base64-encoded 32-byte Curve25519 public key. | +| signatures | Signatures | **Required.** Signatures of the key object. The signature is calculated using the process described at [Signing JSON](/appendices/#signing-json). | Example: @@ -275,81 +257,23 @@ properties. `EncryptedFile` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription
urlstringRequired. The URL to the file.
keyJWKRequired. A JSON Web Key object.

iv

string

Required. The 128-bit unique counter block used by AES-CTR, encoded as unpadded base64.

hashes

{string: string}

Required. A map from an algorithm name to a hash of the ciphertext, encoded as unpadded base64. Clients should support the SHA-256 hash, which uses the key sha256.

v

string

Required. Version of the encrypted attachments protocol. Must be v2.

+| Parameter | Type | Description | +|-----------|------------------|------------------------------------------------------------------------------------------------| +| url | string | **Required.** The URL to the file. | +| key | JWK | **Required.** A [JSON Web Key](https://tools.ietf.org/html/rfc7517#appendix-A.3) object. | +| iv | string | **Required.** The 128-bit unique counter block used by AES-CTR, encoded as unpadded base64. | +| hashes | {string: string} | **Required.** A map from an algorithm name to a hash of the ciphertext, encoded as unpadded base64. Clients should support the SHA-256 hash, which uses the key `sha256`. | +| v | string | **Required.** Version of the encrypted attachments protocol. Must be `v2`. | `JWK` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription
ktystringRequired. Key type. Must be oct.

key_ops

[string]

Required. Key operations. Must at least contain encrypt and decrypt.

algstringRequired. Algorithm. Must be A256CTR.
kstringRequired. The key, encoded as urlsafe unpadded base64.

ext

boolean

Required. Extractable. Must be true. This is a W3C extension.

+| Parameter | Type | Description | +| --------- |----------|--------------------------------------------------------------------------------------------------------------------------| +| kty | string | **Required.** Key type. Must be `oct`. | +| key_ops | [string] | **Required.** Key operations. Must at least contain `encrypt` and `decrypt`. | +| alg | string | **Required.** Algorithm. Must be `A256CTR`. | +| k | string | **Required.** The key, encoded as urlsafe unpadded base64. | +| ext | boolean | **Required.** Extractable. Must be `true`. This is a [W3C extension](https://w3c.github.io/webcrypto/#iana-section-jwk). | Example: @@ -1027,69 +951,23 @@ the following format: `AuthData` - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription

public_key

string

Required. The curve25519 public key used to encrypt the backups, encoded in unpadded base64.

signatures

Signatures

Optional. Signatures of the auth_data, as Signed JSON

+| Parameter | Type | Description | +| -----------| -----------|--------------------------------------------------------------------------------------------------| +| public_key | string | **Required.** The curve25519 public key used to encrypt the backups, encoded in unpadded base64. | +| signatures | Signatures | Optional. Signatures of the ``auth_data``, as Signed JSON | The `session_data` field in the backups is constructed as follows: 1. Encode the session key to be backed up as a JSON object with the properties: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription

algorithm

string

Required. The end-to-end message encryption algorithm that the key is for. Must be m.megolm.v1.aes-sha2.

forwarding_curve25519_key_chain

[string]

Required. Chain of Curve25519 keys through which this session was forwarded, via m.forwarded_room_key events.

sender_key

string

Required. Unpadded base64-encoded device curve25519 key.

sender_claimed_keys

{string: string}

Required. A map from algorithm name (ed25519) to the identity key for the sending device.

session_key

string

Required. Unpadded base64-encoded session key in session-sharing format.

+| Parameter | Type | Description | +| --------------------------------|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| algorithm | string | **Required.** The end-to-end message encryption algorithm that the key is for. Must be `m.megolm.v1.aes-sha2`. | +| forwarding_curve25519_key_chain | [string] | **Required.** Chain of Curve25519 keys through which this session was forwarded, via [m.forwarded_room_key](#mforwarded_room_key) events. | +| sender_key | string | **Required.** Unpadded base64-encoded device curve25519 key. | +| sender_claimed_keys | {string: string} | **Required.** A map from algorithm name (`ed25519`) to the identity key for the sending device. | +| session_key | string | **Required.** Unpadded base64-encoded session key in [session-sharing format](https://gitlab.matrix.org/matrix-org/olm/blob/master/docs/megolm.md#session-sharing-format). | 2. Generate an ephemeral curve25519 key, and perform an ECDH with the ephemeral key and the backup's public key to generate a shared @@ -1138,40 +1016,14 @@ user-supplied passphrase, and is created as follows: 4. Concatenate the following data: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Size (bytes)Description
1Export format version, which must be 0x01.
16The salt S.
16The initialization vector IV.
4The number of rounds N, as a big-endian unsigned 32-bit integer.
variableThe encrypted JSON object.

32

The HMAC-SHA-256 of all the above string concatenated together, using K' as the key.

+| Size (bytes)| Description | +| ------------|-----------------------------------------------------------------------------------------| +| 1 | Export format version, which must be `0x01`. | +| 16 | The salt S. | +| 16 | The initialization vector IV. | +| 4 | The number of rounds N, as a big-endian unsigned 32-bit integer. | +| variable | The encrypted JSON object. | +| 32 | The HMAC-SHA-256 of all the above string concatenated together, using K' as the key. | 5. Base64-encode the string above. Newlines may be added to avoid overly long lines. @@ -1188,52 +1040,15 @@ objects described as follows: `SessionData` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription

algorithm

string

Required. The encryption algorithm that the session uses. Must be m.megolm.v1.aes-sha2.

forwarding_curve25519_key_chain

[string]

Required. Chain of Curve25519 keys through which this session was forwarded, via m.forwarded_room_key events.

room_id

string

Required. The room where the session is used.

sender_key

string

Required. The Curve25519 key of the device which initiated the session originally.

sender_claimed_keys

{string: string}

Required. The Ed25519 key of the device which initiated the session originally.

session_idstringRequired. The ID of the session.
session_keystringRequired. The key for the session.
+| Parameter | Type | Description | +|-----------------------------------|------------------|---------------------------------------------------------------------------------------------------------------------------------------| +| algorithm | string | Required. The encryption algorithm that the session uses. Must be `m.megolm.v1.aes-sha2`. | +| forwarding_curve25519_key_chain | [string] | Required. Chain of Curve25519 keys through which this session was forwarded, via [m.forwarded_room_key](#mforwarded_room_key) events. | +| room_id | string | Required. The room where the session is used. | +| sender_key | string | Required. The Curve25519 key of the device which initiated the session originally. | +| sender_claimed_keys | {string: string} | Required. The Ed25519 key of the device which initiated the session originally. | +| session_id | string | Required. The ID of the session. | +| session_key | string | Required. The key for the session. | This is similar to the format before encryption used for the session keys in [Server-side key backups](#server-side-key-backups) but adds the @@ -1509,51 +1324,17 @@ It also adds a `one_time_keys_count` property. Note the spelling difference with the `one_time_key_counts` property in the `/keys/upload`\_ response. - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription

device_lists

DeviceLists

Optional. Information on e2e device updates. Note: only present on an incremental sync.

device_one_time_keys_count

{string: integer}

Optional. For each key algorithm, the number of unclaimed one-time keys currently held on the server for this device.

+| Parameter | Type | Description | +|----------------------------|--------------------|------------------------------------------------------------------------------------------------------------------------| +| device_lists | DeviceLists | Optional. Information on e2e device updates. Note: only present on an incremental sync. | +| device_one_time_keys_count | {string: integer} | Optional. For each key algorithm, the number of unclaimed one-time keys currently held on the server for this device. | `DeviceLists` - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription

changed

[string]

List of users who have updated their device identity or cross-signing keys, or who now share an encrypted room with the client since the previous sync response.

left

[string]

List of users with whom we do not share any encrypted rooms anymore since the previous sync response.

+| Parameter | Type | Description | +|------------|-----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| changed | [string] | List of users who have updated their device identity or cross-signing keys, or who now share an encrypted room with the client since the previous sync response. | +| left | [string] | List of users with whom we do not share any encrypted rooms anymore since the previous sync response. | {{% boxes/note %}} For optimal performance, Alice should be added to `changed` in Bob's diff --git a/content/client-server-api/modules/secrets.md b/content/client-server-api/modules/secrets.md index bbba858c..8db2bb3d 100644 --- a/content/client-server-api/modules/secrets.md +++ b/content/client-server-api/modules/secrets.md @@ -40,32 +40,11 @@ passphrases](#deriving-keys-from-passphrases). `KeyDescription` - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription
namestringRequired. The name of the key.

algorithm

string

Required. The encryption algorithm to be used for this key. Currently, only m.secret_storage.v1.aes-hmac-sha2 is supported.

passphrase

string

See deriving keys from passphrases section for a description of this property.

+| Parameter | Type | Description +|------------|-----------|-------------------------------------------------------------------------------------------------------------------------------------| +| name | string | **Required.** The name of the key. | +| algorithm | string | **Required.** The encryption algorithm to be used for this key. Currently, only `m.secret_storage.v1.aes-hmac-sha2` is supported. | +| passphrase | string | See [deriving keys from passphrases](#deriving-keys-from-passphrases) section for a description of this property. | Other properties depend on the encryption algorithm, and are described below. @@ -91,22 +70,9 @@ of the data. `Secret` - - - - - - - - - - - - - - - -
ParameterTypeDescription

encrypted

{string: object}

Required. Map from key ID the encrypted data. The exact format for the encrypted data is dependent on the key algorithm. See the definition of AesHmacSha2EncryptedData in the m.secret_storage.v1.aes-hmac-sha2 section.

+| Parameter | Type | Description | +|-----------|------------------|-------------| +| encrypted | {string: object} | **Required.** Map from key ID the encrypted data. The exact format for the encrypted data is dependent on the key algorithm. See the definition of `AesHmacSha2EncryptedData` in the [m.secret_storage.v1.aes-hmac-sha2](#msecret_storagev1aes-hmac-sha2) section. | Example: @@ -175,32 +141,11 @@ HMAC-SHA-256. The secret is encrypted as follows: `AesHmacSha2EncryptedData` - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription

iv

string

Required. The 16-byte initialization vector, encoded as base64.

ciphertext

string

Required. The AES-CTR-encrypted data, encoded as base64.

macstringRequired. The MAC, encoded as base64.
+| Parameter | Type | Description +|------------|---------|------------------------------------------------------------------------| +| iv | string | **Required.** The 16-byte initialization vector, encoded as base64. | +| ciphertext | string | **Required.** The AES-CTR-encrypted data, encoded as base64. | +| mac | string | **Required.** The MAC, encoded as base64. | For the purposes of allowing clients to check whether a user has correctly entered the key, clients should: @@ -213,42 +158,13 @@ correctly entered the key, clients should: `AesHmacSha2KeyDescription` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription
namestringRequired. The name of the key.

algorithm

string

Required. The encryption algorithm to be used for this key. Currently, only m.secret_storage.v1.aes-hmac-sha2 is supported.

passphrase

object

See deriving keys from passphrases section for a description of this property.

ivstringThe 16-byte initialization vector, encoded as base64.

mac

string

The MAC of the result of encrypting 32 bytes of 0, encoded as base64.

+| Parameter | Type | Description | +|-------------|--------|-----------------------------------------------------------------------------------------------------------------------------------| +| name | string | **Required.** The name of the key. | +| algorithm | string | **Required.** The encryption algorithm to be used for this key. Currently, only `m.secret_storage.v1.aes-hmac-sha2` is supported. | +| passphrase | object | See [deriving keys from passphrases](#deriving-keys-from-passphrases) section for a description of this property. | +| iv | string | The 16-byte initialization vector, encoded as base64. | +| mac | string | The MAC of the result of encrypting 32 bytes of 0, encoded as base64. | For example, the `m.secret_storage.key.key_id` for a key using this algorithm could look like: @@ -311,37 +227,12 @@ defined by the `algorithm` specified. For the `m.pbkdf2` algorithm, the `passphrase` property has the following properties: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription
algorithmstringRequired. Must be m.pbkdf2
saltstringRequired. The salt used in PBKDF2.
iterationsintegerRequired. The number of iterations to use in PBKDF2.

bits

integer

Optional. The number of bits to generate for the key. Defaults to 256.

+| Parameter | Type | Description | +|------------|---------|------------------------------------------------------------------------| +| algorithm | string | **Required.** Must be `m.pbkdf2` | +| salt | string | **Required.** The salt used in PBKDF2. | +| iterations | integer | **Required.** The number of iterations to use in PBKDF2. | +| bits | integer | Optional. The number of bits to generate for the key. Defaults to 256. | The key is generated using PBKDF2 with SHA-512 as the hash, using the salt given in the `salt` parameter, and the number of iterations given @@ -385,37 +276,12 @@ confirm sharing the secret. Sent by a client to request a secret from another device or to cancel a previous request. It is sent as an unencrypted to-device event. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription

name

string

Required if action is request. The name of the secret that is being requested.

actionenumRequired. One of ["request", "request_cancellation"].
requesting_device_idstringRequired. The ID of the device requesting the secret.

request_id

string

Required. A random string uniquely identifying (with respect to the requester and the target) the target for a secret. If the secret is requested from multiple devices at the same time, the same ID may be used for every target. The same ID is also used in order to cancel a previous request.

+| Parameter | Type | Description | +|-----------------------|--------|----------------------------------------------------------------------------------------| +| name | string | Required if ``action`` is ``request``. The name of the secret that is being requested. | +| action | enum | **Required.** One of ["request", "request_cancellation"]. | +| requesting_device_id | string | **Required.** The ID of the device requesting the secret. | +| request_id | string | **Required.** A random string uniquely identifying (with respect to the requester and the target) the target for a secret. If the secret is requested from multiple devices at the same time, the same ID may be used for every target. The same ID is also used in order to cancel a previous request. | Example: @@ -434,27 +300,10 @@ Sent by a client to share a secret with another device, in response to an `m.secret.request` event. It must be encrypted as an `m.room.encrypted` event, then sent as a to-device event. - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription
request_idstringRequired. The ID of the request that this a response to.
secretstringRequired. The contents of the secret.
+| Parameter | Type | Description | +|-------------|--------|--------------------------------------------------------------| +| request_id | string | **Required.** The ID of the request that this a response to. | +| secret | string | **Required.** The contents of the secret. | Example: diff --git a/content/client-server-api/modules/send_to_device.md b/content/client-server-api/modules/send_to_device.md index b6b0a576..5a879637 100644 --- a/content/client-server-api/modules/send_to_device.md +++ b/content/client-server-api/modules/send_to_device.md @@ -58,70 +58,23 @@ should be sent on to the remote servers via This module adds the following properties to the \_ response: - - - - - - - - - - - - - - - -
ParameterTypeDescription

to_device

ToDevice

Optional. Information on the send-to-device messages for the client device.

+| Parameter | Type | Description | +|-----------|-----------|-----------------------------------------------------------------------------| +| to_device | ToDevice | Optional. Information on the send-to-device messages for the client device. | `ToDevice` - - - - - - - - - - - - - - - -
ParameterTypeDescription
events[Event]List of send-to-device messages.
+| Parameter | Type | Description | +|-----------|-----------|----------------------------------| +| events | [Event] | List of send-to-device messages. | `Event` - - - - - - - - - - - - - - - - - - - - - - - - - -
ParameterTypeDescription

content

EventContent

The content of this event. The fields in this object will vary depending on the type of event.

sender

string

The Matrix user ID of the user who sent this event.

typestringThe type of event.
+| Parameter | Type | Description | +|------------|--------------|-------------------------------------------------------------------------------------------------| +| content | EventContent | The content of this event. The fields in this object will vary depending on the type of event. | +| sender | string | The Matrix user ID of the user who sent this event. | +| type | string | The type of event. | Example response: diff --git a/content/proposals.md b/content/proposals.md index f0682f2e..e4b25ca2 100644 --- a/content/proposals.md +++ b/content/proposals.md @@ -331,72 +331,19 @@ request trackers. **Note:** All labels are to be placed on the proposal PR. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameGitHub LabelDescription
Proposal Drafting and FeedbackN/AA proposal document which is still work-in-progress but is being shared to incorporate feedback. Please prefix your proposal's title with [WIP] to make it easier for reviewers to skim their notifications list.
Proposal In Reviewproposal-in-reviewA proposal document which is now ready and waiting for review by the Spec Core Team and community
Proposed Final Comment Periodproposed-final-comment-periodCurrently awaiting signoff of a 75% majority of team members in order to enter the final comment period
Final Comment Periodfinal-comment-periodA proposal document which has reached final comment period either for merge, closure or postponement
Final Comment Period Completefinished-final-comment-periodThe final comment period has been completed. Waiting for a demonstration implementation
Spec PR Missingspec-pr-missingThe proposal has been agreed, and proven with a demonstration implementation. Waiting for a PR against the Spec
Spec PR In Reviewspec-pr-in-reviewThe spec PR has been written, and is currently under review
Spec PR MergedmergedA proposal with a sufficient working implementation and whose Spec PR has been merged!

Postponed

proposal-postponed

A proposal that is temporarily blocked or a feature that may not be useful currently but perhaps sometime in the future

Closedproposal-closedA proposal which has been reviewed and deemed unsuitable for acceptance
ObsoleteobsoleteA proposal which has been made obsolete by another proposal or decision elsewhere.
+| Name | GitHub Label | Description | +|---------------------------------|---------------------------------|----------------------------------------------------------------------------------------------------------| +| Proposal Drafting and Feedback | N/A | A proposal document which is still work-in-progress but is being shared to incorporate feedback. Please prefix your proposal's title with `[WIP]` to make it easier for reviewers to skim their notifications list. | +| Proposal In Review | proposal-in-review | A proposal document which is now ready and waiting for review by the Spec Core Team and community | +| Proposed Final Comment Period | proposed-final-comment-period | Currently awaiting signoff of a 75% majority of team members in order to enter the final comment period | +| Final Comment Period | final-comment-period | A proposal document which has reached final comment period either for merge, closure or postponement | +| Final Comment Period Complete | finished-final-comment-period | The final comment period has been completed. Waiting for a demonstration implementation | +| Spec PR Missing | spec-pr-missing | The proposal has been agreed, and proven with a demonstration implementation. Waiting for a PR against the Spec | +| Spec PR In Review | spec-pr-in-review | The spec PR has been written, and is currently under review | +| Spec PR Merged | merged | A proposal with a sufficient working implementation and whose Spec PR has been merged! | +| Postponed | proposal-postponed | A proposal that is temporarily blocked or a feature that may not be useful currently but perhaps sometime in the future | +| Closed | proposal-closed | A proposal which has been reviewed and deemed unsuitable for acceptance | +| Obsolete | obsolete | A proposal which has been made obsolete by another proposal or decision elsewhere. | # Categories @@ -407,32 +354,11 @@ category when possible. The current categories are: - - - - - - - - - - - - - - - - - - - - - - - - - -
NameGitHub LabelDescription
Corekind:coreImportant for the protocol's success.
Featurekind:featureNice to have additions to the spec.
Maintenancekind:maintenanceFixes or clarifies existing spec.
+| Name | GitHub Label | Description | +|-------------|------------------|---------------------------------------| +| Core | kind:core | Important for the protocol's success. | +| Feature | kind:feature | Nice to have additions to the spec. | +| Maintenance | kind:maintenance | Fixes or clarifies existing spec. | Some examples of core MSCs would be aggregations, cross-signing, and groups/communities. These are the sorts of things that if not