diff --git a/89.md b/89.md index 43d197fc..8aa3464b 100644 --- a/89.md +++ b/89.md @@ -129,3 +129,33 @@ Alternatively, users might choose to query directly for `kind:31990` for an even ```json ["REQ", , '[{ "kinds": [31990], "#k": [], 'authors': [...] }]'] ``` + +## Feature Support Signaling + +In order to facilitate deprecations of protocol features on nostr, a consensus must be reached _before_ support +for old features is removed. New features might also benefit from a voting mechanism. + +Applications may signal their support of a protocol update using a `kind 36341` event with a `d` tag pointing +to a url detailing the change, an `a` tag pointing to a `kind 31990` handler, and a `fork` tag. `content` MAY +be an explanation of the deprecation support. + +Valid `fork` values are: + +- `hard` - the application fully supports all relevant new features, and has dropped support for deprecated features. +- `soft` - the application fully supports all relevant new features, but has not dropped support for deprecations. +- `none` - the application does not support new features, or relies on deprecated features. +- `never` - the application does not intend to adopt the new standard. + +In order to be valid, this event MUST be published by the same key that published the referenced handler. + +```json +{ + "kind": 36341, + "content": "I read and write relays to both kind 3 and kind 10002.", + "tags": [ + ["d", "https://github.com/nostrability/nostrability/issues/10"], + ["a", "31990:1743058db7078661b94aaf4286429d97ee5257d14a86d6bfa54cb0482b876fb0:abcd", ""], + ["fork", "soft"] + ], +} +```