From c9a6ecd40e6c70848b625dc1445c307764a40732 Mon Sep 17 00:00:00 2001
From: Markus Sabadello <markus@danubetech.com>
Date: Thu, 17 Sep 2020 12:14:38 +0200
Subject: [PATCH 01/89] Make alsoKnownAs a subsection of DID Subject.

---
 index.html | 40 ++++++++++++++++++++++------------------
 1 file changed, 22 insertions(+), 18 deletions(-)

diff --git a/index.html b/index.html
index 8fe21ac8..3b8d1d96 100644
--- a/index.html
+++ b/index.html
@@ -1220,7 +1220,7 @@ <h1>Core Properties</h1>
 <code><a>id</a></code>: defined in <a href="#did-subject"></a>
       </li>
       <li>
-<code><a>alsoKnownAs</a></code>: defined in <a href="#did-subject"></a>
+<code><a>alsoKnownAs</a></code>: defined in <a href="#alsoknownas"></a>
       </li>
       <li>
 <code><a>controller</a></code>: defined in <a href="#control"></a>
@@ -1293,32 +1293,35 @@ <h2>DID Subject</h2>
 party going forward.
       </p>
 
-      <p>
+    <section>
+      <h3>alsoKnownAs</h3>
+
+        <p>
 A <a>DID subject</a> can have multiple identifiers for different purposes, or
 at different times. The assertion that two or more <a>DIDs</a> (or other types
 of <a>URI</a>) identify the same <a>DID subject</a> can be made using the
 <code><a>alsoKnownAs</a></code> property.
-      </p>
+        </p>
 
-      <p>
+        <p>
 <a>DID documents</a> MAY include the <code><a>alsoKnownAs</a></code> property.
-      </p>
+        </p>
 
-      <dl>
-        <dt><dfn>alsoKnownAs</dfn></dt>
-        <dd>
+        <dl>
+          <dt><dfn>alsoKnownAs</dfn></dt>
+          <dd>
 The value of <code>alsoKnownAs</code> MUST be a
 <a data-cite="INFRA#lists">list</a> where each item in the list is a
 <a>URI</a> conforming to [[RFC3986]].
-        </dd>
-        <dd>
+          </dd>
+          <dd>
 This relationship is a statement that the subject of this identifier is
 also identified by one or more other identifiers.
-        </dd>
-      </dl>
+          </dd>
+        </dl>
 
-      <div class="note" title="Equivalence and alsoKnownAs">
-        <p>
+        <div class="note" title="Equivalence and alsoKnownAs">
+          <p>
 Applications might choose to consider two identifiers related by
 <code><a>alsoKnownAs</a></code> to be equivalent <em>if</em> the
 <code><a>alsoKnownAs</a></code> relationship is reciprocated in the reverse
@@ -1327,15 +1330,16 @@ <h2>DID Subject</h2>
 <code><a>alsoKnownAs</a></code> assertion does not prove that this assertion
 is true. Therefore it is strongly advised that a requesting party obtain
 independent verification of an <code>alsoKnownAs</code> assertion.
-        </p>
-        <p>
+          </p>
+          <p>
 Given that the <a>DID subject</a> might use different identifiers for different
 purposes, an expectation of strong equivalence between the two identifiers, or
 merging the graphs of the two corresponding <a>DID documents</a>, is not
 necessarily appropriate, <em>even with</em> a reciprocal relationship.
-        </p>
-      </div>
+          </p>
+        </div>
 
+      </section>
     </section>
 
     <section>

From 21bd17b0f58aa9104bf9d5b1de60d5f2a1530745 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Mon, 21 Sep 2020 12:10:21 +0100
Subject: [PATCH 02/89] respec: replace WG info with 'group' property and fix
 internal refs

---
 index.html | 46 ++++++++++++++++++++++------------------------
 1 file changed, 22 insertions(+), 24 deletions(-)

diff --git a/index.html b/index.html
index 3b8d1d96..246f1d5d 100644
--- a/index.html
+++ b/index.html
@@ -22,10 +22,8 @@
   </script>
   <script class="remove" type="text/javascript">
   var respecConfig = {
-        wgPublicList: "public-did-wg",
-        wgPatentURI:  "https://www.w3.org/2004/01/pp-impl/117488/status",
-        wg: "Decentralized Identifier Working Group",
-        wgURI: "https://www.w3.org/2019/did-wg/",
+    wgPublicList: "public-did-wg",
+    group: "did",
 
     // specification status (e.g., WD, LCWD, NOTE, etc.). If in doubt use ED.
     specStatus: "WD",
@@ -1288,8 +1286,8 @@ <h2>DID Subject</h2>
 However, the fully resolved <a>DID document</a> always contains a valid
 <code><a>id</a></code> property. The value of <code><a>id</a></code> in the
 resolved <a>DID document</a> MUST match the <a>DID</a> that was
-resolved, or be populated with the equivalent canonical <a>DID</a> 
-specified by the <a>DID method</a>, which SHOULD be used by the resolving 
+resolved, or be populated with the equivalent canonical <a>DID</a>
+specified by the <a>DID method</a>, which SHOULD be used by the resolving
 party going forward.
       </p>
 
@@ -1465,7 +1463,7 @@ <h2>Verification Methods</h2>
 values are set to the public key fingerprint [[RFC7638]]. It is RECOMMENDED
 that verification methods that use JWKs to represent their public keys utilize
 the value of <code>kid</code> as their fragment identifier. See the first key
-in <a href="#example-17-various-public-keys">example of various public keys</a>
+in <a href="#example-13-various-public-keys"></a>
 for an example of a public key with a compound key identifier.
           </p>
 
@@ -2555,11 +2553,11 @@ <h3>
 provided, the <a>URIs</a> MUST be interpreted as an ordered set. It is
 RECOMMENDED that dereferencing each <a>URI</a> results in a document containing
 machine-readable information about the context. To enable interoperability
-with other representations, <a>URLs</a> registered in the 
-DID Specification Registries [[DID-SPEC-REGISTRIES]] referring to 
-JSON-LD Contexts SHOULD be associated with a cryptographic hash of 
+with other representations, URLs registered in the
+DID Specification Registries [[DID-SPEC-REGISTRIES]] referring to
+JSON-LD Contexts SHOULD be associated with a cryptographic hash of
 the content of the JSON-LD Context. This ensures that the interpretation of the
-information by JSON-LD consumers will be the same as interpretations 
+information by JSON-LD consumers will be the same as interpretations
 over other representations by other consumers that rely on the
 DID Specification Registries [[DID-SPEC-REGISTRIES]].
           </dd>
@@ -2984,7 +2982,7 @@ <h2>Method Schemes</h2>
 The meaning of colons in the <code>method-specific-id</code> is entirely
 method-specific. Colons might be used by <a>DID methods</a> for establishing
 hierarchically partitioned namespaces, for identifying specific instances or
-parts of the <a>verifiable data registry</a>, or for other purposes.        
+parts of the <a>verifiable data registry</a>, or for other purposes.
 Implementers are advised to avoid assuming any meanings or
 behaviors associated with a colon that are generically applicable to all
 <a>DID methods</a>.
@@ -3488,7 +3486,7 @@ <h2>
 relating to the results of the <a>DID URL Dereferencing</a> process. This
 structure is REQUIRED and in the case of an error in the dereferencing process,
 this MUST NOT be empty.
-Properties defined by this specification are in 
+Properties defined by this specification are in
 <a href="#did-url-dereferencing-metadata-properties"></a>.
 If the dereferencing is not successful, this structure MUST contain an
 <code>error</code> property describing the error.
@@ -3511,7 +3509,7 @@ <h2>
             <dd>
 If the dereferencing is successful, this MUST be a <a href="metadata-structure">
 metadata structure</a>, but the structure MAY be empty. This structure contains
-metadata about the <code>content-stream</code>.  
+metadata about the <code>content-stream</code>.
 If the <code>content-stream</code> is a <a>DID document</a>, this MUST be a
 <code>did-document-metadata</code> structure as described in <a>DID
 Resolution</a>.
@@ -3636,8 +3634,8 @@ <h2>
 Each property value MUST be a <a data-cite="INFRA#string">string</a>,
 <a data-cite="INFRA#maps">map</a>, <a data-cite="INFRA#lists">list</a>,
 <a data-cite="INFRA#boolean">boolean</a>, or  <a data-cite="INFRA#null">null</a>.
-The values within any complex data structures such as maps and lists 
-MUST be one of these data types as well. 
+The values within any complex data structures such as maps and lists
+MUST be one of these data types as well.
 All metadata property definitions MUST define the value type, including any additional
 formats or restrictions to that value (for example, a string formatted as a date or as a decimal integer).
 It is RECOMMENDED that property definitions use strings for values where possible.
@@ -3647,7 +3645,7 @@ <h2>
 All implementations of functions that use metadata structures as either input or output MUST
 be able to fully represent all data types described here in a deterministic fashion. As inputs and
 outputs using metadata structures are defined in terms of data types and not their serialization,
-the method for representation is internal to the implementation of the function and is out of 
+the method for representation is internal to the implementation of the function and is out of
 scope of this specification.
         </p>
 
@@ -3682,7 +3680,7 @@ <h2>
 {
   "error": "not-found"
 }
-        </pre>        
+        </pre>
 
         <p>
 This example corresponds to a metadata structure of the following format:
@@ -4224,7 +4222,7 @@ <h2>
       </p>
 
       <p class="note">
-        These examples are for information purposes only, 
+        These examples are for information purposes only,
         it is considered a best practice to avoid using the same verification method for multiple purposes.
       </p>
 
@@ -4361,7 +4359,7 @@ <h2>
           ]
         }
       </pre>
-  
+
     </section>
 
     <section class="informative">
@@ -4370,13 +4368,13 @@ <h2>
       </h2>
 
       <p class="note">
-        These examples are for information purposes only. 
+        These examples are for information purposes only.
         See <a href="https://www.w3.org/TR/vc-data-model/">
           W3C Verifiable Credentials Data Model
         </a> for additional examples.
       </p>
 
-      <pre class="example" title="Verifiable Credential linked to a verification method of type Ed25519VerificationKey2018">  
+      <pre class="example" title="Verifiable Credential linked to a verification method of type Ed25519VerificationKey2018">
       {
         "@context": [
           "https://www.w3.org/2018/credentials/v1",
@@ -4418,7 +4416,7 @@ <h2>
       }
     </pre>
 
-      <pre class="example" title="Verifiable Credential linked to a verification method of type JsonWebKey2020">        
+      <pre class="example" title="Verifiable Credential linked to a verification method of type JsonWebKey2020">
 {
   "@context": [
     "https://www.w3.org/2018/credentials/v1",
@@ -4489,7 +4487,7 @@ <h2>
         Encrypting
       </h2>
       <p class="note">
-        These examples are for information purposes only, 
+        These examples are for information purposes only,
         it is considered a best practice to avoid dislosing unnecessary information in JWE headers.
       </p>
       <pre class="example" title="JWE linked to a verification method via kid">

From 7f3c0bab2228730e4c24ae3fbb959eca78609ce2 Mon Sep 17 00:00:00 2001
From: Orie Steele <orie@transmute.industries>
Date: Sun, 20 Sep 2020 09:55:52 -0500
Subject: [PATCH 03/89] chore: add JsonWebKey2020 to did core

---
 index.html | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 246f1d5d..f4f300c2 100644
--- a/index.html
+++ b/index.html
@@ -1688,6 +1688,14 @@ <h3>Key types and formats</h3>
 Bitcoin format [[BASE58]] using the <code>publicKeyBase58</code> property.
               </td>
             </tr>
+            <tr>
+              <td>
+JWK<br/>(<code>JsonWebKey2020</code>)
+              </td>
+              <td>
+Key types listed in <a href="https://www.iana.org/assignments/jose/jose.xhtml">JOSE</a>, represented using [[RFC7517]] using the <code>publicKeyJwk</code> property.
+              </td>
+            </tr>
           </tbody>
         </table>
 
@@ -1702,7 +1710,7 @@ <h3>Key types and formats</h3>
   <span class="comment">...</span>
   "verificationMethod": [{
     "id": "did:example:123#_Qq0UL2Fq651Q0Fjd6TvnYE-faHiOpRlPVQcY_-tA4A",
-    "type": "JwsVerificationKey2020",
+    "type": "JsonWebKey2020",
     "controller": "did:example:123",
     "publicKeyJwk": {
       "crv": "Ed25519",

From fa2bd93bd2ee21ae8a9914cff5e7621cfa30c495 Mon Sep 17 00:00:00 2001
From: Orie Steele <orie@transmute.industries>
Date: Tue, 22 Sep 2020 19:27:24 -0500
Subject: [PATCH 04/89] chore: address #356 - forbid multiple key formats in
 the same verification method

---
 index.html | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/index.html b/index.html
index f4f300c2..3a218b4f 100644
--- a/index.html
+++ b/index.html
@@ -1588,6 +1588,14 @@ <h3>Key types and formats</h3>
 A public key can be used as a <a>verification method</a>.
         </p>
 
+<p>
+A <a>verification method</a> MUST contain a single verification material property
+(for example <code>publicKeyJwk</code> or <code>publicKeyBase58</code>, not both).
+</p>
+
+
+
+
         <p>
 This specification strives to limit the number of formats for expressing public
 key material in a <a>DID document</a> to the fewest possible, to increase the

From 55c97d6c37068784a2aa74ae236beca61f1c67d3 Mon Sep 17 00:00:00 2001
From: Orie Steele <orie@transmute.industries>
Date: Tue, 22 Sep 2020 19:28:40 -0500
Subject: [PATCH 05/89] chore: remove whitespace

---
 index.html | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/index.html b/index.html
index 3a218b4f..6738a602 100644
--- a/index.html
+++ b/index.html
@@ -1593,9 +1593,6 @@ <h3>Key types and formats</h3>
 (for example <code>publicKeyJwk</code> or <code>publicKeyBase58</code>, not both).
 </p>
 
-
-
-
         <p>
 This specification strives to limit the number of formats for expressing public
 key material in a <a>DID document</a> to the fewest possible, to increase the

From 83eb1c576dde0401451f42071a17e6baa3eaf651 Mon Sep 17 00:00:00 2001
From: Orie Steele <orie@transmute.industries>
Date: Wed, 23 Sep 2020 09:08:29 -0500
Subject: [PATCH 06/89] Update index.html

Co-authored-by: Manu Sporny <msporny@digitalbazaar.com>
---
 index.html | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/index.html b/index.html
index 6738a602..39bdf8ad 100644
--- a/index.html
+++ b/index.html
@@ -1589,8 +1589,10 @@ <h3>Key types and formats</h3>
         </p>
 
 <p>
-A <a>verification method</a> MUST contain a single verification material property
-(for example <code>publicKeyJwk</code> or <code>publicKeyBase58</code>, not both).
+A <a>verification method</a> MUST NOT contain multiple verification material properties. 
+For example, expressing key material in a <a>verification method</a> using both 
+<code>publicKeyJwk</code> and <code>publicKeyBase58</code> at the same time 
+is prohibited.
 </p>
 
         <p>

From e03c72817c5b87e6a74db24147f21ba3288ab15c Mon Sep 17 00:00:00 2001
From: Orie Steele <orie@transmute.industries>
Date: Wed, 30 Sep 2020 08:37:01 -0500
Subject: [PATCH 07/89] chore: fix shortname

---
 w3c.json | 16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/w3c.json b/w3c.json
index 0bdcfd97..89dc10f0 100644
--- a/w3c.json
+++ b/w3c.json
@@ -1,6 +1,10 @@
- {
-    "group":      [117488]
-,   "contacts":   ["iherman"]
-,   "repo-type":  "rec-track"
-,   "shortName":  "did-spec"
-}
+{
+    "group": [
+        117488
+    ],
+    "contacts": [
+        "iherman"
+    ],
+    "repo-type": "rec-track",
+    "shortName": "did-core"
+}
\ No newline at end of file

From 49d8ae4cd2802dbd335e1c8b0021e786be99b6c5 Mon Sep 17 00:00:00 2001
From: Orie Steele <orie@transmute.industries>
Date: Thu, 8 Oct 2020 08:19:51 -0500
Subject: [PATCH 08/89] Allow fragments to be applied to secondary resources.

* fix: allow fragments to be applied to secondary resources regardless of representation

Co-authored-by: Manu Sporny <msporny@digitalbazaar.com>
---
 index.html | 35 ++++++++++++++++++++++++-----------
 1 file changed, 24 insertions(+), 11 deletions(-)

diff --git a/index.html b/index.html
index 39bdf8ad..f7cfcde3 100644
--- a/index.html
+++ b/index.html
@@ -1028,15 +1028,15 @@ <h2>Query</h2>
         <h2>Fragment</h2>
 
         <p>
-A <a>DID fragment</a> is used as method-independent reference into the <a>DID
-document</a> to identify a component of the document (for example, a unique
-<a>public key description</a> or <a>service endpoint</a>). <a>DID fragment</a>
-syntax and semantics are identical to a generic URI fragment and  MUST conform
-to <a data-cite="RFC3986#section-3.5">RFC&nbsp;3986, section 3.5</a>. To
-dereference a <a>DID fragment</a>, the complete <a>DID URL</a> including the
+A <a>DID fragment</a> is used as method-independent reference into a <a>DID Document</a> or external resource.
+        </p>
+        
+<p>
+<a>DID fragment</a> syntax and semantics are identical to a generic URI fragment 
+and  MUST conform to <a data-cite="RFC3986#section-3.5">RFC&nbsp;3986, section 3.5</a>. 
+To dereference a <a>DID fragment</a>, the complete <a>DID URL</a> including the
 <a>DID fragment</a> MUST be used as input to the <a>DID URL dereferencing</a>
-function for the target component in the <a>DID document</a> object. For more
-information, see <a href="#did-url-dereferencing"></a>.
+function. For more information, see <a href="#did-url-dereferencing"></a>.
         </p>
 
         <p>
@@ -1044,9 +1044,7 @@ <h2>Fragment</h2>
 that are more restrictive than the generic rules in this section.
         </p>
 
-        <pre class="example nohighlight">
-did:example:123456#public-key-1
-        </pre>
+        
 
         <p>
 In order to maximize interoperability, implementers are urged to ensure that
@@ -1056,6 +1054,21 @@ <h2>Fragment</h2>
 be interpreted in the same way across representations.
         </p>
 
+        <p>For example:</p>
+        <ul>
+          <li>A unique <a>verification method</a> in a <a>DID Document</a>
+            <pre class="example nohighlight">did:example:123#public-key-0</pre>
+          </li>
+
+          <li>A unique <a>service endpoint</a> in a <a>DID Document</a>
+            <pre class="example nohighlight">did:example:123#agent</pre>
+          </li>
+
+          <li>A resource external to a <a>DID Document</a>
+            <pre class="example nohighlight">did:example:123?service=agent&relativeRef=/credentials#degree</pre>
+          </li>
+        </ul>
+
         <p>
 Additional semantics for fragment identifiers, which are compatible with and
 layered upon the semantics in this section, are described for JSON-LD

From 10c12c354f375f7126d2ee31bf2c4b981b5e94f9 Mon Sep 17 00:00:00 2001
From: Orie Steele <orie@transmute.industries>
Date: Sun, 20 Sep 2020 10:40:06 -0500
Subject: [PATCH 09/89] chore: cleanup key representations

---
 index.html | 37 ++++++++++++-------------------------
 1 file changed, 12 insertions(+), 25 deletions(-)

diff --git a/index.html b/index.html
index f7cfcde3..28776cdb 100644
--- a/index.html
+++ b/index.html
@@ -1644,7 +1644,7 @@ <h3>Key types and formats</h3>
         <table class="simple" id="public-key-support">
           <caption>
 This table defines the support for public key expression in a DID document.
-For each public key type, a maximum of two encoding formats are supported.
+For each public key type, a maximum of two encoding formats is supported.
           </caption>
           <thead>
             <tr>
@@ -1663,9 +1663,8 @@ <h3>Key types and formats</h3>
 RSA<br/>(<code>RsaVerificationKey2018</code>)
               </td>
               <td>
-RSA public key values MUST either be encoded as a JWK [[RFC7517]] or be
-encoded in Privacy Enhanced Mail (PEM) format using the
-<code>publicKeyPem</code> property.
+RSA public key values MUST be encoded as a JWK [[RFC7517]] using the
+<code>publicKeyJwk</code> property.
               </td>
             </tr>
             <tr>
@@ -1673,38 +1672,31 @@ <h3>Key types and formats</h3>
 ed25519<br/>(<code>Ed25519VerificationKey2018</code>)
               </td>
               <td>
-Ed25519 public key values MUST either be encoded as a JWK [[RFC7517]] or be
+Ed25519 public key values MUST either be encoded as a JWK [[RFC7517]] 
+using the <code>publicKeyJwk</code> or be
 encoded as the raw 32-byte public key value in Base58 Bitcoin format
 [[BASE58]] using the <code>publicKeyBase58</code> property.
               </td>
             </tr>
             <tr>
               <td>
-secp256k1-koblitz<br/>(pending)
+secp256k1
               </td>
               <td>
-Secp256k1 Koblitz public key values MUST either be encoded as a JWK
-[[RFC7517]] or be encoded as the raw 33-byte public key value in Base58
+Secp256k1 Koblitz public key values MUST either be encoded as a JWK [[RFC7517]] 
+using the <code>publicKeyJwk</code> or be
+encoded as the raw 33-byte public key value in Base58
 Bitcoin format [[BASE58]] using the <code>publicKeyBase58</code> property.
               </td>
             </tr>
             <tr>
               <td>
-secp256r1<br/>(<code>SchnorrSecp256k1VerificationKey2019</code>)
-              </td>
-              <td>
-Secp256r1 public key values MUST either be encoded as a JWK [[RFC7517]] or be
-encoded as the raw 32-byte public key value encoded in Base58 Bitcoin format
-[[BASE58]] using the <code>publicKeyBase58</code> property.
-              </td>
-            </tr>
-            <tr>
-              <td>
 Curve25519<br/>(<code>X25519KeyAgreementKey2019</code>)
               </td>
               <td>
-Curve25519 (also known as X25519) public key values MUST either be encoded as
-a JWK [[RFC7517]] or be encoded as the raw 32-byte public key value in Base58
+Curve25519 (also known as X25519) public key values MUST either be encoded 
+as a JWK [[RFC7517]] using the <code>publicKeyJwk</code> or be 
+encoded as the raw 32-byte public key value in Base58
 Bitcoin format [[BASE58]] using the <code>publicKeyBase58</code> property.
               </td>
             </tr>
@@ -1743,11 +1735,6 @@ <h3>Key types and formats</h3>
     "type": "Ed25519VerificationKey2018",
     "controller": "did:example:pqrstuvwxyz0987654321",
     "publicKeyBase58": "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
-  }, {
-    "id": "did:example:123456789abcdefghi#keys-2",
-    "type": "Secp256k1VerificationKey2018",
-    "controller": "did:example:123456789abcdefghi",
-    "publicKeyHex": "02b97c30de767f084ce3080168ee293053ba33b235d7116a3263d29f1450936b71"
   }],
   <span class="comment">...</span>
 }

From 058c48d29ab12bd65ccfc6538114258af37b3e96 Mon Sep 17 00:00:00 2001
From: Orie Steele <orie@transmute.industries>
Date: Sun, 20 Sep 2020 10:45:11 -0500
Subject: [PATCH 10/89] chore: remove redundantt word

---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 28776cdb..aaeea96f 100644
--- a/index.html
+++ b/index.html
@@ -1683,7 +1683,7 @@ <h3>Key types and formats</h3>
 secp256k1
               </td>
               <td>
-Secp256k1 Koblitz public key values MUST either be encoded as a JWK [[RFC7517]] 
+Secp256k1 public key values MUST either be encoded as a JWK [[RFC7517]] 
 using the <code>publicKeyJwk</code> or be
 encoded as the raw 33-byte public key value in Base58
 Bitcoin format [[BASE58]] using the <code>publicKeyBase58</code> property.

From adf41c8f3e5d597e279f4806f86ca8e8f55c5354 Mon Sep 17 00:00:00 2001
From: Orie Steele <orie@transmute.industries>
Date: Fri, 9 Oct 2020 12:19:01 -0500
Subject: [PATCH 11/89] chore: add issue linking to #423

---
 index.html | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/index.html b/index.html
index aaeea96f..ea508477 100644
--- a/index.html
+++ b/index.html
@@ -1641,6 +1641,13 @@ <h3>Key types and formats</h3>
 expressed and encoded.
         </p>
 
+<p class="issue" data-number="423">
+The Working Group is still debating how best to communicate support for 
+specific verification method types.
+</p>
+
+        https://github.com/w3c/did-core/issues/
+
         <table class="simple" id="public-key-support">
           <caption>
 This table defines the support for public key expression in a DID document.

From fc88a586c63d4c0308148f9fc07f06d5805ae254 Mon Sep 17 00:00:00 2001
From: Orie Steele <orie@transmute.industries>
Date: Mon, 12 Oct 2020 09:12:47 -0500
Subject: [PATCH 12/89] Add JSON-LD Producer / Consumer details.

* chore: use infra to define context value types
* chore: add issue regarding working group activity
* chore: remove @base in example

Co-authored-by: Tobias Looker <tplooker@gmail.com>
Co-authored-by: Manu Sporny <msporny@digitalbazaar.com>
---
 index.html | 86 +++++++++++++++++++++++++++++++++++++++++-------------
 1 file changed, 66 insertions(+), 20 deletions(-)

diff --git a/index.html b/index.html
index ea508477..3639d858 100644
--- a/index.html
+++ b/index.html
@@ -2399,6 +2399,7 @@ <h3>Production</h3>
 reserved for JSON-LD producers.
         </p>
 
+
       </section>
 
       <section>
@@ -2524,34 +2525,73 @@ <h3>
         </h3>
 
         <p>
-The <a>DID document</a> is serialized following the rules in the JSON processor,
-with one addition: <a>DID documents</a> MUST include the <code>@context</code>
-property.
+The <a>DID document</a> MUST be serialized as a JSON document,
+with one additional requirement: <br/> 
+The <a>DID document</a> MUST include the <code>@context</code> property.
         </p>
 
         <dl>
           <dt>@context</dt>
           <dd>
-The value of the <code>@context</code> property MUST be one or more <a>URIs</a>,
-where the value of the first <a>URI</a> is
-<code>https://www.w3.org/ns/did/v1</code>. All members of the
+
+<p>
+The <a href="https://www.w3.org/TR/json-ld11/#the-context">JSON-LD specification </a> 
+defines values that are valid for this property.
+</p>
+
+<p>
+The value of <code>@context</code> MUST be exactly one of these values.
+</p>
+
+<ul>
+  <li>
+    The <a href="https://infra.spec.whatwg.org/#strings">INFRA string</a>
+    <code>https://www.w3.org/ns/did/v1</code>.
+    <pre class="example">
+      {
+        "@context": "https://www.w3.org/ns/did/v1",
+        ...
+      }
+    </pre>
+  </li>
+  <li>
+    An <a href="https://infra.spec.whatwg.org/#lists">INFRA list</a>, 
+    with first item the <a href="https://infra.spec.whatwg.org/#strings">INFRA string</a>
+    <code>https://www.w3.org/ns/did/v1</code>, and subsequent items of type 
+    <a href="https://infra.spec.whatwg.org/#strings">INFRA string</a> or 
+    <a href="https://infra.spec.whatwg.org/#maps">INFRA map</a>.
+    <pre class="example">
+      {
+        "@context": [
+          "https://www.w3.org/ns/did/v1",
+          "https://example.com/blockchain-identity/v1"
+        ],
+        ...
+      }
+    </pre>
+    <p class="issue"  data-number="432">The working group is still discussing restrictions on <code>@base</code>, beyond what JSON-LD allows.</p>
+  </li>
+</ul>
+
+
+All members of the
 <code>@context</code> property SHOULD exist in the DID specification
 registries in order to achieve interoperability across different
-representations. If a member does not exist in the DID specification
-registries, then the DID Document will not be interoperable across
+representations. 
+
+If a member does not exist in the DID specification
+registries, then the DID Document might not be interoperable across
 representations.
+
+<p>
+  Producers SHOULD NOT produce DID Documents that 
+  contain properties not defined via the <code>@context</code>. 
+  Properties that are not defined via the <code>@context</code> MAY be dropped by Consumers.
+</p>
+
           </dd>
         </dl>
 
-        <p class="issue" data-number="202">
-This specification defines globally interoperable documents, and the requirement
-that the context value be in the verifiable data registry means that different JSON-LD
-processors can consume the document without having to dereference anything in
-the context field. However, a pair of producers and consumers can have local
-extension agreements. This needs to be clarified in a section on extensibility
-and linked here when available.
-        </p>
-
       </section>
 
       <section>
@@ -2569,9 +2609,10 @@ <h3>
         <dl>
           <dt>@context</dt>
           <dd>
-The value of the <code>@context</code> property MUST be one or more <a>URIs</a>,
-where the value of the first <a>URI</a> is
-<code>https://www.w3.org/ns/did/v1</code>. If more than one <a>URI</a> is
+The value of the <code>@context</code> property MUST conform 
+to the <a href="#production-0">JSON-LD Production Rules</a>. 
+
+If more than one <a>URI</a> is
 provided, the <a>URIs</a> MUST be interpreted as an ordered set. It is
 RECOMMENDED that dereferencing each <a>URI</a> results in a document containing
 machine-readable information about the context. To enable interoperability
@@ -2595,6 +2636,11 @@ <h3>
 that decision.
         </p>
 
+        <p>
+          Consumers SHOULD drop all properties from a DID Documents that 
+          are not defined via the <code>@context</code>. 
+        </p>
+ 
       </section>
 
     </section>

From 9ebb3bde862b29d8daba630a76a75a9ed469d7dd Mon Sep 17 00:00:00 2001
From: Markus Sabadello <markus@danubetech.com>
Date: Sat, 3 Oct 2020 01:50:16 +0200
Subject: [PATCH 13/89] Rename resolveStream to resolveRepresentation

---
 index.html | 20 ++++++++++----------
 1 file changed, 10 insertions(+), 10 deletions(-)

diff --git a/index.html b/index.html
index 3639d858..6fd3ea21 100644
--- a/index.html
+++ b/index.html
@@ -3281,7 +3281,7 @@ <h2>
         </code></p>
 
         <p><code>
-resolveStream ( did, did-resolution-input-metadata ) <br>
+resolveRepresentation ( did, did-resolution-input-metadata ) <br>
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&gt; ( did-resolution-metadata, did-document-stream, did-document-metadata )
         </code></p>
 
@@ -3302,7 +3302,7 @@ <h2>
             </dt>
             <dd>
 A <a href="#metadata-structure">metadata structure</a> consisting of input
-options to the <code>resolve</code> and <code>resolveStream</code> functions in addition to the <code>did</code>
+options to the <code>resolve</code> and <code>resolveRepresentation</code> functions in addition to the <code>did</code>
 itself.
 Properties defined by this specification are in <a href="#did-resolution-input-metadata-properties"></a>.
 This input is REQUIRED, but the structure MAY be empty.
@@ -3321,10 +3321,10 @@ <h2>
 A <a href="#metadata-structure">metadata structure</a> consisting of values
 relating to the results of the <a>DID resolution</a> process. This structure is
 REQUIRED and MUST NOT be empty. This metadata typically changes between
-invocations of the <code>resolve</code> and <code>resolveStream</code> functions as it represents data about the
+invocations of the <code>resolve</code> and <code>resolveRepresentation</code> functions as it represents data about the
 resolution process itself.
 Properties defined by this specification are in <a href="#did-resolution-metadata-properties"></a>.
-If the resolution is successful, and if the <code>resolveStream</code> function was called, this structure MUST contain a <code>content-type</code> property containing the mime-type of the <code>did-document-stream</code> in this result.
+If the resolution is successful, and if the <code>resolveRepresentation</code> function was called, this structure MUST contain a <code>content-type</code> property containing the mime-type of the <code>did-document-stream</code> in this result.
 If the resolution is not successful, this structure MUST contain an <code>error</code> property describing the error.
             </dd>
             <dt>
@@ -3338,9 +3338,9 @@ <h2>
 did-document-stream
             </dt>
             <dd>
-If the resolution is successful, and if the <code>resolveStream</code> function was called, this MUST be a byte stream of the resolved
+If the resolution is successful, and if the <code>resolveRepresentation</code> function was called, this MUST be a byte stream of the resolved
 <a>DID document</a> in one of the conformant <a href="#representations">representations</a>. The byte
-stream MAY then be parsed by the caller of the <code>resolveStream</code> function
+stream MAY then be parsed by the caller of the <code>resolveRepresentation</code> function
 into a <a>DID document</a> abstract data model, which can in turn be validated
 and processed. If the resolution is unsuccessful, this value MUST be an empty
 stream.
@@ -3364,7 +3364,7 @@ <h2>
         <p>
 <a>DID resolver</a> implementations MUST NOT alter the signature of these
 functions in any way. <a>DID resolver</a> implementations MAY map the
-<code>resolve</code> and <code>resolveStream</code> functions to a method-specific internal function to perform
+<code>resolve</code> and <code>resolveRepresentation</code> functions to a method-specific internal function to perform
 the actual <a>DID resolution</a> process. <a>DID resolver</a> implementations
 MAY implement  and expose additional
 functions with different signatures in addition to the <code>resolve</code>
@@ -3388,7 +3388,7 @@ <h3>
                 <dd>
 The MIME type of the caller's preferred <a href="#representations">representation</a> of the <a>DID document</a>. The <a>DID resolver</a> implementation
 SHOULD use this value to determine the representation contained in the returned <code>did-document-stream</code> if such
-a representation is supported and available. This property is OPTIONAL. It is only used if the <code>resolveStream</code>
+a representation is supported and available. This property is OPTIONAL. It is only used if the <code>resolveRepresentation</code>
 function is called and MUST be ignored if the <code>resolve</code> function is called.
                 </dd>
             </dl>
@@ -3410,10 +3410,10 @@ <h3>
                 </dt>
                 <dd>
 The MIME type of the returned <code>did-document-stream</code>.
-This property is REQUIRED if resolution is successful and if the <code>resolveStream</code> function was called.
+This property is REQUIRED if resolution is successful and if the <code>resolveRepresentation</code> function was called.
 It MUST NOT be present if the <code>resolve</code> function was called.
 The value of this property MUST be the MIME type of one of the conformant <a href="#representations">representations</a>.
-The caller of the <code>resolveStream</code> function MUST use this value when determining how to
+The caller of the <code>resolveRepresentation</code> function MUST use this value when determining how to
 parse and process the <code>did-document-stream</code> returned by this function into a
 <a>DID document</a> abstract data model.
                 </dd>

From c764c67667d09dadf31dbaf6a1e34d39653ce96a Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sat, 3 Oct 2020 20:05:02 +0100
Subject: [PATCH 14/89] editorial: Remove duplicate subsection; fix line
 lengths

---
 index.html | 70 ++++++++++++++++++++++++------------------------------
 1 file changed, 31 insertions(+), 39 deletions(-)

diff --git a/index.html b/index.html
index 6fd3ea21..c8a535b7 100644
--- a/index.html
+++ b/index.html
@@ -3625,8 +3625,9 @@ <h3>
             </h3>
 
             <p>
-The possible properties within this structure and their possible values are defined by [[DID-SPEC-REGISTRIES]].
-This specification defines the following common properties.
+The possible properties within this structure and their possible values are
+defined by [[DID-SPEC-REGISTRIES]]. This specification defines the following
+common properties.
             </p>
 
             <dl>
@@ -3644,15 +3645,16 @@ <h3>
 The error code from the dereferencing process.
 This property is REQUIRED when there is an error in the dereferencing process.
 The value of this property is a single keyword string.
-The possible property values of this field are defined by [[DID-SPEC-REGISTRIES]].
-This specification defines the following error values:
+The possible property values of this field are defined by
+[[DID-SPEC-REGISTRIES]]. This specification defines the following error
+values:
                     <dl>
                         <dt>
 invalid-did-url
                         </dt>
                         <dd>
-The <a>DID URL</a> supplied to the <a>DID URL Dereferencing</a> function does not
-conform to valid syntax. (See <a href="#did-url-syntax"></a>.)
+The <a>DID URL</a> supplied to the <a>DID URL Dereferencing</a> function does
+not conform to valid syntax. (See <a href="#did-url-syntax"></a>.)
                         </dd>
                         <dt>
 unauthorized
@@ -3674,19 +3676,6 @@ <h3>
 
         </section>
 
-        <section>
-            <h3>
-DID URL Dereferencing Metadata Properties
-            </h3>
-
-            <p>
-The possible properties within this structure and their possible values are defined by [[DID-SPEC-REGISTRIES]].
-This specification defines the following common properties.
-            </p>
-
-        </section>
-
-
     </section>
 
     <section>
@@ -3697,29 +3686,32 @@ <h2>
         <p>
 Input and output metadata is often involved during the <a>DID Resolution</a>,
 <a>DID URL Dereferencing</a>, and other DID-related processes. The structure
-used to communicate this metadata MUST be a <a data-cite="INFRA#maps">map</a> of
-properties. Each property name MUST be a <a data-cite="INFRA#string">string</a>.
-Each property value MUST be a <a data-cite="INFRA#string">string</a>,
-<a data-cite="INFRA#maps">map</a>, <a data-cite="INFRA#lists">list</a>,
-<a data-cite="INFRA#boolean">boolean</a>, or  <a data-cite="INFRA#null">null</a>.
-The values within any complex data structures such as maps and lists
-MUST be one of these data types as well.
-All metadata property definitions MUST define the value type, including any additional
-formats or restrictions to that value (for example, a string formatted as a date or as a decimal integer).
-It is RECOMMENDED that property definitions use strings for values where possible.
+used to communicate this metadata MUST be a <a data-cite="INFRA#maps">map</a>
+of properties. Each property name MUST be a <a
+data-cite="INFRA#string">string</a>. Each property value MUST be a <a
+data-cite="INFRA#string">string</a>, <a data-cite="INFRA#maps">map</a>, <a
+data-cite="INFRA#lists">list</a>, <a data-cite="INFRA#boolean">boolean</a>, or
+<a data-cite="INFRA#null">null</a>. The values within any complex data
+structures such as maps and lists MUST be one of these data types as well.
+All metadata property definitions MUST define the value type, including any
+additional formats or restrictions to that value (for example, a string
+formatted as a date or as a decimal integer). It is RECOMMENDED that property
+definitions use strings for values where possible.
         </p>
 
         <p>
-All implementations of functions that use metadata structures as either input or output MUST
-be able to fully represent all data types described here in a deterministic fashion. As inputs and
-outputs using metadata structures are defined in terms of data types and not their serialization,
-the method for representation is internal to the implementation of the function and is out of
+All implementations of functions that use metadata structures as either input
+or output MUST be able to fully represent all data types described here in a
+deterministic fashion. As inputs and outputs using metadata structures are
+defined in terms of data types and not their serialization, the method for
+representation is internal to the implementation of the function and is out of
 scope of this specification.
         </p>
 
         <p>
-The following example demonstrates a JSON-encoded metadata structure that might be
-used as <a href="#did-resolution-input-metadata-properties">DID resolution input metadata</a></a>.
+The following example demonstrates a JSON-encoded metadata structure that
+might be used as <a href="#did-resolution-input-metadata-properties">DID
+resolution input metadata</a></a>.
         </p>
 
         <pre class="example" title="JSON-encoded DID resolution input metadata example">
@@ -3740,8 +3732,8 @@ <h2>
 
         <p>
 The next example demonstrates a JSON-encoded metadata structure that might be
-used as <a href="#did-resolution-metadata-properties">DID resolution metadata</a> if a
-DID was not found.
+used as <a href="#did-resolution-metadata-properties">DID resolution
+metadata</a> if a DID was not found.
         </p>
 
         <pre class="example" title="JSON-encoded DID resolution metadata example">
@@ -3762,8 +3754,8 @@ <h2>
 
         <p>
 The next example demonstrates a JSON-encoded metadata structure that might be
-used as <a href="#did-document-metadata-properties">DID document metadata</a> to
-describe timestamps associated with the DID document.
+used as <a href="#did-document-metadata-properties">DID document metadata</a>
+to describe timestamps associated with the DID document.
         </p>
 
         <pre class="example" title="JSON-encoded DID document metadata example">

From 3962f54dd52b201458442cbc0df52e0ef2b62b61 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 22 Sep 2020 20:09:00 +0100
Subject: [PATCH 15/89] Abstract: improve accuracy, towards #401

---
 index.html | 16 +++++++---------
 1 file changed, 7 insertions(+), 9 deletions(-)

diff --git a/index.html b/index.html
index c8a535b7..b309da82 100644
--- a/index.html
+++ b/index.html
@@ -183,15 +183,13 @@
 the design enables the controller of a <a>DID</a> to prove control over it
 without requiring permission from any other party.
 
-<a>DID</a>s are URLs that associate
-a <a>DID subject</a> with a <a>DID document</a> allowing trustable interactions
-associated with that subject. Each <a>DID document</a> can express cryptographic
-material, verification methods, or <a>service endpoints</a>, which provide a set
-of mechanisms enabling a <a>DID controller</a> to prove control of the
-<a>DID</a>. <a>Service endpoints</a> enable trusted interactions associated with
-the <a>DID subject</a>. A <a>DID document</a> might contain semantics about the
-subject that it identifies. A <a>DID document</a> might contain the <a>DID
-subject</a> itself (e.g. a data model).
+<a>DID</a>s are URIs that associate a <a>DID subject</a> with a <a>DID
+document</a> allowing trustable interactions associated with that subject.
+Each <a>DID document</a> can express cryptographic material, verification
+methods, or <a>service endpoints</a>, which provide a set of mechanisms
+enabling a <a>DID controller</a> to prove control of the <a>DID</a>.
+<a>Service endpoints</a> enable trusted interactions associated with the
+<a>DID subject</a>.
     </p>
     <p>
 This document specifies a common data model, a URL format, and a set of

From d7724e67cbdea8bab31ba5b15d9ecc12970bfc61 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 22 Sep 2020 21:11:53 +0100
Subject: [PATCH 16/89] Intro: editorial suggestions from #401

---
 index.html | 38 +++++++++++++++++++-------------------
 1 file changed, 19 insertions(+), 19 deletions(-)

diff --git a/index.html b/index.html
index b309da82..db9d10ae 100644
--- a/index.html
+++ b/index.html
@@ -285,18 +285,18 @@ <h1>
 authority to guarantee the continued existence of the identifier.
     </p>
     <p>
-This specification does not require any particular technology or cryptography to
-underpin the generation, persistence, resolution or interpretation of DIDs.
-Rather, it defines: a) the generic syntax for all DIDs, and b) the generic
-requirements for performing the four basic CRUD operations (create, read,
-update, deactivate) on the metadata associated with a DID (called the DID
-document).
+This specification does not presuppose any particular technology or
+cryptography to underpin the generation, persistence, resolution or
+interpretation of DIDs. Rather, it defines: a) the generic syntax for all
+DIDs, and b) the generic requirements for performing the four basic CRUD
+operations (create, read, update, deactivate) on the metadata associated with
+a DID (called the DID document).
     </p>
     <p>
 This enables implementers to design specific types of DIDs to work with the
-computing infrastructure they trust (e.g., blockchain, distributed ledger,
-decentralized file system, distributed database, peer-to-peer network). The
-specification for a specific type of DID is called a DID method. Implementers of
+computing infrastructure they trust (e.g., distributed ledger, decentralized
+file system, distributed database, peer-to-peer network). The specification
+for a specific type of DID is called a DID method. Implementers of
 applications or systems using DIDs can choose to support the DID methods most
 appropriate for their particular use cases.
     </p>
@@ -386,8 +386,7 @@ <h2>
       <p>
 <a>Decentralized Identifiers</a> are a component of larger systems, such as
 the Verifiable Credentials ecosystem [[VC-DATA-MODEL]], which drove the design
-goals for this specification. This section summarizes the primary design goals
-for this specification.
+goals for this specification. These design goals are summarized here.
       </p>
 
       <table class="simple">
@@ -566,7 +565,7 @@ <h2>
 typically asserted by the control of a set of cryptographic keys used by
 software acting on behalf of the controller, though it may also be asserted via
 other mechanisms. Note that a DID may have more than one controller, and the
-controller(s) may include the <a>DID subject</a>.
+<a>DID subject</a> can be the DID controller.
         </dd>
 
         <dt>
@@ -588,12 +587,13 @@ <h2>
         <dd>
 <a>DID documents</a> contain metadata associated with a <a>DID</a>. They
 typically express verification methods (such as public keys) and <a>services</a>
-relevant to interactions with the DID subject. A DID document is serialized
-according to a particular syntax (see <a href="#core-representations"></a>). The
-<a>DID</a> itself is the value of the `id` property. The generic properties
-supported in a DID document are specified in <a href="#core-properties"></a>.
-The properties present in a DID document may be updated according to the
-applicable operations outlined in <a href="#methods"></a>.
+relevant to interactions with the DID subject. A DID document is represents an
+abstract data model, and can be serialized according to a particular syntax
+(see <a href="#core-representations"></a>).  The generic properties supported
+in a DID document are specified in <a href="#core-properties"></a>.
+The <a>DID</a> itself is the value of the `id` property. The properties
+present in a DID document may be updated according to the applicable
+operations outlined in <a href="#methods"></a>.
         </dd>
 
         <dt>
@@ -612,7 +612,7 @@ <h2>
 <a>URI</a> specification ([[RFC3986]]) and a specific <a>URI</a> scheme
 ([[IANA-URI-SCHEMES]] (such as the http: and https: schemes specified in
 [[RFC7230]]). It is also similar to the relationship between the IETF generic
-URN specification ([[RFC8141]]) and a specific URN namespace definition, (such
+URN specification ([[RFC8141]]) and a specific URN namespace definition (such
 as the <a>UUID</a> URN namespace defined in [[RFC4122]]). The difference is that
 a DID method specification, as well as defining a specific DID scheme, also
 specifies the methods creating, resolving, updating, and deactivating

From b9dd1692cee40f985d2effe8d0d0829157ece059 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 22 Sep 2020 21:27:12 +0100
Subject: [PATCH 17/89] Terms: editorial suggestions from #401

---
 terms.html | 15 +++++++++------
 1 file changed, 9 insertions(+), 6 deletions(-)

diff --git a/terms.html b/terms.html
index 676374e2..de2fcb2c 100644
--- a/terms.html
+++ b/terms.html
@@ -61,9 +61,11 @@
   <dt><dfn>decentralized public key infrastructure</dfn> (DPKI)</dt>
 
   <dd>
-  <a href="https://en.wikipedia.org/wiki/Public_key_infrastructure">Public key infrastructure</a>
-  that does not rely on traditional <a href="https://en.wikipedia.org/wiki/Certificate_authority">certificate authorities</a> because it uses <a>decentralized identifiers</a> and
-<a>DID documents</a>) to discover and verify <a>public key descriptions</a>.
+<a href="https://en.wikipedia.org/wiki/Public_key_infrastructure">Public key
+infrastructure</a> that does not rely on traditional
+<a href="https://en.wikipedia.org/wiki/Certificate_authority">certificate
+authorities</a> because it uses <a>decentralized identifiers</a> and
+<a>DID documents</a> to discover and verify <a>public key descriptions</a>.
   </dd>
 
   <dt><dfn data-lt="did controllers|did controller(s)">DID controller</dfn></dt>
@@ -180,8 +182,9 @@
   <dd>
 A <a>DID</a> plus any additional syntactic component that conforms to  the
 definition in <a href="#did-url-syntax"></a>. This includes an optional <a>DID
-path</a>, optional <a>DID query</a> (and its leading <code>?</code> character),
-and optional <a>DID fragment</a> (and its leading <code>#</code> character).
+path</a> (and its leading <code>/</code> character), optional <a>DID query</a>
+(and its leading <code>?</code> character), and optional <a>DID fragment</a>
+(and its leading <code>#</code> character).
   </dd>
 
   <dt><dfn>DID URL dereferencing</dfn></dt>
@@ -192,7 +195,7 @@
 resource may be a <a>DID document</a> plus additional metadata, or it may be a
 secondary resource contained within the <a>DID document</a>, or it may be a
 resource entirely external to the <a>DID document</a>. If the function begins
-with a <a>DID URL</a>, it use the <a>DID resolution</a> function to fetch a
+with a <a>DID URL</a>, it uses the <a>DID resolution</a> function to fetch a
 <a>DID document</a> indicated by the <a>DID</a> contained within the
 <a>DID URL</a>. The dereferencing function then can perform additional
 processing on the <a>DID document</a> to return the dereferenced resource

From f102581561cadaff6e793343cc1337571551c686 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 22 Sep 2020 21:52:58 +0100
Subject: [PATCH 18/89] DID params: reshuffle, change some slightly out of
 place text to a note, for #401

---
 index.html | 107 +++++++++++++++++++++++++++--------------------------
 1 file changed, 54 insertions(+), 53 deletions(-)

diff --git a/index.html b/index.html
index db9d10ae..c2cea37b 100644
--- a/index.html
+++ b/index.html
@@ -835,7 +835,9 @@ <h2>DID Parameters</h2>
 
         <p>
 The <a>DID URL</a> syntax supports a simple format for parameters
-based on the <code>query</code> component (See <a href="#query"></a>).
+based on the <code>query</code> component (See <a href="#query"></a>). Adding
+a DID parameter to a <a>DID URL</a> means that the parameter becomes part of
+the identifier for a <a>resource</a>.
         </p>
         <p>
 Some DID parameter names (for example, for service selection) are
@@ -868,7 +870,8 @@ <h2>DID Parameters</h2>
               <td>
 A resource hash of the <a>DID document</a> to add integrity protection, as
 specified in [[?HASHLINK]]. The associated value MUST be an
-<a data-lt="ascii string">ASCII string</a>. <i>This parameter is non-normative.</i>
+<a data-lt="ascii string">ASCII string</a>. <i>This parameter is
+non-normative.</i>
               </td>
             </tr>
             <tr>
@@ -876,8 +879,8 @@ <h2>DID Parameters</h2>
 <code><a>service</a></code>
               </td>
               <td>
-Identifies a service from the <a>DID document</a> by service ID. The associated
-value MUST be an <a data-lt="ascii string">ASCII string</a>.
+Identifies a service from the <a>DID document</a> by service ID. The
+associated value MUST be an <a data-lt="ascii string">ASCII string</a>.
               </td>
             </tr>
             <tr>
@@ -886,9 +889,9 @@ <h2>DID Parameters</h2>
               </td>
               <td>
 Identifies a specific version of a <a>DID document</a> to be resolved (the
-version ID could be sequential, or a <a>UUID</a>, or method-specific). Note that
-this parameter might not be supported by all <a>DID methods</a>. The associated
-value MUST be an <a data-lt="ascii string">ASCII string</a>.
+version ID could be sequential, or a <a>UUID</a>, or method-specific). Note
+that this parameter might not be supported by all <a>DID methods</a>. The
+associated value MUST be an <a data-lt="ascii string">ASCII string</a>.
               </td>
             </tr>
 
@@ -897,14 +900,14 @@ <h2>DID Parameters</h2>
 <code>version-time</code>
               </td>
               <td>
-Identifies a certain version timestamp of a <a>DID document</a> to be resolved.
-That is, the <a>DID document</a> that was valid for a <a>DID</a> at a certain
-time. Note that this parameter might not be supported by all <a>DID methods</a>.
-The associated value MUST be an <a data-lt="ascii string">ASCII string</a>
-which is a valid XML datetime value, as defined in section 3.3.7 of
+Identifies a certain version timestamp of a <a>DID document</a> to be
+resolved. That is, the <a>DID document</a> that was valid for a <a>DID</a> at
+a certain time. Note that this parameter might not be supported by all <a>DID
+methods</a>. The associated value MUST be an <a data-lt="ascii string">ASCII
+string</a> which is a valid XML datetime value, as defined in section 3.3.7 of
 <a href="https://www.w3.org/TR/xmlschema11-2/">W3C XML Schema Definition
-Language (XSD) 1.1 Part 2: Datatypes</a> [[XMLSCHEMA11-2]]. This datetime value
-MUST be normalized to UTC 00:00, as indicated by the trailing "Z".
+Language (XSD) 1.1 Part 2: Datatypes</a> [[XMLSCHEMA11-2]]. This datetime
+value MUST be normalized to UTC 00:00, as indicated by the trailing "Z".
               </td>
             </tr>
 
@@ -915,29 +918,16 @@ <h2>DID Parameters</h2>
               <td>
 A relative URI reference according to <a
 data-cite="RFC3986#section-4.2">RFC3986 Section 4.2</a>
-that identifies a resource at a <a>service endpoint</a>, which is selected from
-a <a>DID document</a> by using the <code>service</code> parameter. The
-associated value MUST be an <a data-lt="ascii string">ASCII string</a> and MUST
-use percent-encoding for certain characters as specified in <a
+that identifies a resource at a <a>service endpoint</a>, which is selected
+from a <a>DID document</a> by using the <code>service</code> parameter. The
+associated value MUST be an <a data-lt="ascii string">ASCII string</a> and
+MUST use percent-encoding for certain characters as specified in <a
 data-cite="RFC3986#section-2.1">RFC3986 Section 2.1</a>.
               </td>
             </tr>
           </tbody>
         </table>
 
-        <p>
-Implementers as well as <a>DID method</a> specification authors MAY use additional
-DID parameters that are not listed here.
-For maximum interoperability, it is RECOMMENDED that DID parameters use the official
-W3C DID Specification Registries mechanism [[DID-SPEC-REGISTRIES]], to avoid collision
-with other uses of the same DID parameter with different semantics.
-        </p>
-
-        <p>
-Additional considerations for processing these parameters are discussed in
-[[?DID-RESOLUTION]].
-        </p>
-
         <p>
 Two example <a>DID URLs</a> using the <code><a>service</a></code> and
 <code>version-time</code> DID parameters are shown below.
@@ -952,33 +942,44 @@ <h2>DID Parameters</h2>
         </pre>
 
         <p>
-Adding a DID parameter to a <a>DID URL</a> means that the parameter becomes part
-of an identifier for a <a>resource</a> (the <a>DID document</a> or other).
-Alternatively, the <a>DID resolution</a> and the <a>DID URL dereferencing</a>
-functions can also be influenced by passing input metadata to a <a>DID
-resolver</a> that are not part of the DID URL. (See <a
-href="#did-resolution-input-metadata-properties"></a>). Such input
-metadata could for example control caching
-or the desired encoding of a resolution result. This is comparable to HTTP,
-where certain parameters could either be included in an HTTP URL, or
-alternatively passed as HTTP headers during the dereferencing process. The
-important distinction is that DID parameters that are part of the <a>DID URL</a>
-should be used to specify <i>what <a>resource</a> is being identified</i>,
-whereas input metadata that is not part of the <a>DID URL</a>
-should be use to control <i>how that <a>resource</a> is resolved or
-dereferenced</i>.
+Implementers as well as <a>DID method</a> specification authors MAY use
+additional DID parameters that are not listed here. For maximum
+interoperability, it is RECOMMENDED that DID parameters use the official W3C
+DID Specification Registries mechanism [[DID-SPEC-REGISTRIES]], to avoid
+collision with other uses of the same DID parameter with different semantics.
         </p>
 
         <p>
 DID parameters MAY be used if there is a clear use case where the parameter
-needs to be part of a URI that can be used as a link, or as a <a>resource</a> in
-RDF / JSON-LD documents.
+needs to be part of a URI that can be used as a link, or as a <a>resource</a>
+in RDF / JSON-LD documents.
         </p>
 
         <p>
-DID parameters SHOULD NOT be used if the same functionality can be expressed by
-passing input metadata to a <a>DID resolver</a>, and if there is no need to construct a
-URI for use as a link, or as a <a>resource</a> in RDF / JSON-LD documents.
+DID parameters SHOULD NOT be used if the same functionality can be expressed
+by passing input metadata to a <a>DID resolver</a> (see <a
+href="#did-resolution-input-metadata-properties"></a>), and if there is no need
+to construct a URI for use as a link, or as a <a>resource</a> in RDF / JSON-LD
+documents.
+        </p>
+
+        <p>
+Additional considerations for processing these parameters are discussed in
+[[?DID-RESOLUTION]].
+        </p>
+
+        <p class="note" title="DID parameters and DID resolution">
+The <a>DID resolution</a> and the <a>DID URL dereferencing</a> functions can
+be influenced by passing input metadata to a <a>DID resolver</a> that are
+not part of the DID URL. (See <a
+href="#did-resolution-input-metadata-properties"></a>). This is comparable to
+HTTP, where certain parameters could either be included in an HTTP URL, or
+alternatively passed as HTTP headers during the dereferencing process. The
+important distinction is that DID parameters that are part of the <a>DID
+URL</a> should be used to specify <em>what <a>resource</a> is being
+identified</em>, whereas input metadata that is not part of the <a>DID URL</a>
+should be use to control <em>how that <a>resource</a> is resolved or
+dereferenced</em>.
         </p>
 
       </section>
@@ -987,8 +988,8 @@ <h2>DID Parameters</h2>
         <h2>Path</h2>
 
         <p>
-A <a>DID path</a> is identical to a generic URI path and MUST conform to the <a
-data-cite="!rfc3986#section-3.3"><code>path-abempty</code></a> ABNF rule in
+A <a>DID path</a> is identical to a generic URI path and MUST conform to the
+<a data-cite="!rfc3986#section-3.3"><code>path-abempty</code></a> ABNF rule in
 [[!RFC3986]].
         </p>
 

From acf788c3b122ecd94c5a471b94ef8eca4ca76a82 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 22 Sep 2020 21:58:04 +0100
Subject: [PATCH 19/89] Verification methods: fix typo

---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index c2cea37b..2ba631d5 100644
--- a/index.html
+++ b/index.html
@@ -1525,7 +1525,7 @@ <h2>Verification Methods</h2>
 As well as the <code><a>verificationMethod</a></code> property, verification
 methods can be embedded in or referenced from properties associated with
 various <a>verification relationships</a> (see
-<a href="#verification-relationships"></a>. Referencing verification methods
+<a href="#verification-relationships"></a>). Referencing verification methods
 allows them to be used with more than one <a>verification relationship</a>.
       </p>
 

From 54664a34dd4a5191ec4191d719948e3580f09da9 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 22 Sep 2020 22:13:35 +0100
Subject: [PATCH 20/89] Issues: remove closed (for #403)

---
 index.html | 46 ----------------------------------------------
 1 file changed, 46 deletions(-)

diff --git a/index.html b/index.html
index 2ba631d5..8618e4e9 100644
--- a/index.html
+++ b/index.html
@@ -4586,77 +4586,31 @@ <h1>Current Issues</h1>
 result in changes to this specification.
     </p>
 
-    <div class="issue" data-number="5">Where will the DID contexts(s) live?</div>
-    <div class="issue" data-number="8">Leverage RFC7518 to specify cryptographic algorithms</div>
-    <div class="issue" data-number="9">Replace RsaSignature2017 by a standard JWA signature</div>
-    <div class="issue" data-number="10">Explain RsaSignature2018</div>
-    <div class="issue" data-number="14">Standardize the key revocation list </div>
-    <div class="issue" data-number="23">publicKeyJwk, publicKeyHex, publicKeyBase64, publicKeyBase58 missing from context.</div>
     <div class="issue" data-number="33">Cheap DIDs and the option to migrate DIDs between ledgers using standard DID Deprecation Registries</div>
-    <div class="issue" data-number="36">Details on the use of method-specific DID parameters</div>
-    <div class="issue" data-number="55">Add support for ethereumAddress public key type in @context</div>
-    <div class="issue" data-number="57">Clarification of other verification methods in authentication section missing</div>
     <div class="issue" data-number="58">Registry handling</div>
-    <div class="issue" data-number="65">Does DID Document metadata belong in the Document?</div>
     <div class="issue" data-number="72">Privacy Considerations - Specifically call out GDPR</div>
-    <div class="issue" data-number="75">tracking revocation of public keys</div>
-    <div class="issue" data-number="85">Syntactially differentiate data about the DID versus application data</div>
-    <div class="issue" data-number="92">Add CBOR a valid type of DID document syntax similar to JSON and on par with JSON-LD</div>
     <div class="issue" data-number="94">Create DID explainer</div>
-    <div class="issue" data-number="95">Document Structure</div>
     <div class="issue" data-number="104">Horizontal Review: Internationalization self test</div>
     <div class="issue" data-number="105">Horizontal Review: Accessibility self test</div>
     <div class="issue" data-number="118">Specification needs to be compliant with WCAG 2.0</div>
     <div class="issue" data-number="119">Horizontal Review: offer review opportunity to TAG</div>
     <div class="issue" data-number="122">When is a DID subject not a DID controller (if ever)?</div>
-    <div class="issue" data-number="137">Should the DID parameters be normative in the spec?</div>
     <div class="issue" data-number="151">Include discussion of eIDAS levels-of-assurance</div>
-    <div class="issue" data-number="154">Decoupling DID Core spec from LD-Proof / LDS specs</div>
     <div class="issue" data-number="163">Uses of terms defined in the specification should be links to their definitions</div>
-    <div class="issue" data-number="165">What are entityship and start-of-authority (SOA) problems?</div>
-    <div class="issue" data-number="169">Replace registries administered community groups with registries established by this specification</div>
     <div class="issue" data-number="170">Public key "id" and "type" members duplicate JWK "kid" and "kty" members</div>
-    <div class="issue" data-number="171">Add public key examples using JWKs</div>
     <div class="issue" data-number="174">Underspecified semantics of "updated" property</div>
-    <div class="issue" data-number="176">Unsubstantiated statement about protecting against attacks when compromised</div>
-    <div class="issue" data-number="178">Underspecified statement on combining timestamps with signatures</div>
-    <div class="issue" data-number="185">Supported ciphers in a DID document</div>
-    <div class="issue" data-number="190">What is being discussed in issue 4 (clarification of TERMX via use-cases, spec pointers, and PR)</div>
-    <div class="issue" data-number="195">Unclear which verification methods are authorized for did document operations </div>
-    <div class="issue" data-number="198">Add sections on DID Resolution</div>
     <div class="issue" data-number="199">Clarification on what DIDs might identify</div>
-    <div class="issue" data-number="202">JSON-LD Contexts in Registry</div>
     <div class="issue" data-number="203">Define DID Document Metadata</div>
-    <div class="issue" data-number="204">Define terminology for properties and values</div>
     <div class="issue" data-number="205">How to treat unknown properties</div>
-    <div class="issue" data-number="207">Add section on extensibility and conformance</div>
     <div class="issue" data-number="208">IETF did+ld+json media type registration</div>
-    <div class="issue" data-number="236">publicKeyHex format unused by spec currently</div>
     <div class="issue" data-number="240">Should did-core restrict the use of JWK?</div>
-    <div class="issue" data-number="248">Need term for relying party</div>
     <div class="issue" data-number="249">How to mitigate the single source of failure wrt/ "Trust into the Universal Resolver"?</div>
     <div class="issue" data-number="253">Added DID resolution and dereferencing contracts.</div>
-    <div class="issue" data-number="258">List of early implementations conforming to spec?</div>
-    <div class="issue" data-number="259">DIDs and JOSE: publicKey.id and publicKey.publicKeyJwk.kid</div>
-    <div class="issue" data-number="260">Clear explanation on how can A DID have more than one controller</div>
     <div class="issue" data-number="261">Definition of the term "client" in regard to SSI principles</div>
-    <div class="issue" data-number="266">Should DID support self-signed certificates?</div>
     <div class="issue" data-number="267">Put key points up front</div>
-    <div class="issue" data-number="268">What degree should proof purposes be defined for specific application layer usages?</div>
-    <div class="issue" data-number="269">transfer of controllership and it's intersection with the subject of an identifier</div>
-    <div class="issue" data-number="270">did parameter equivilance</div>
-    <div class="issue" data-number="272">Remove all unspecified properties/functionality from the spec</div>
-    <div class="issue" data-number="273">invert mapping between proof purposes and verification methods?</div>
-    <div class="issue" data-number="274">Ambiguity around necessity of populated top-level DID Document 'id' property</div>
-    <div class="issue" data-number="280">Remove uses of publicKeyHex </div>
-    <div class="issue" data-number="281">Specifications needed for supported key representations publicKeyJwk, publcKeyPem, and publicKeyBase58</div>
     <div class="issue" data-number="282">Added CBOR section </div>
-    <div class="issue" data-number="283">Verification method block should be a first citizen like public keys</div>
-    <div class="issue" data-number="289">Should DID Methods expose Proof Purposes for DID Operations?</div>
     <div class="issue" data-number="291">PING Horizontal Review</div>
     <div class="issue" data-number="292">Horizontal Review Tracking</div>
-    <div class="issue" data-number="293">Remove `proof`</div>
-    <div class="issue" data-number="294">Create a seperate top level block for defining proof purposes</div>
     <div class="issue" data-number="295">Define simple type-less resolution function</div>
     <div class="issue" data-number="296">Define resolution function with data types</div>
     <div class="issue" data-number="297">Define resolution function with data types and property values</div>

From d40f815321cbdf7dabf2b43885e6c7181242943c Mon Sep 17 00:00:00 2001
From: Amy Guy <amy@rhiaro.co.uk>
Date: Sun, 25 Oct 2020 09:41:50 +0000
Subject: [PATCH 21/89] Clarify multiple DID controllers

Co-authored-by: Brent Zundel <brent.zundel@gmail.com>
---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 8618e4e9..3a24876e 100644
--- a/index.html
+++ b/index.html
@@ -565,7 +565,7 @@ <h2>
 typically asserted by the control of a set of cryptographic keys used by
 software acting on behalf of the controller, though it may also be asserted via
 other mechanisms. Note that a DID may have more than one controller, and the
-<a>DID subject</a> can be the DID controller.
+<a>DID subject</a> can be the DID controller, or one of them.
         </dd>
 
         <dt>

From 8be853a2b3e451a2bc84edadf59bbc136f00e2c3 Mon Sep 17 00:00:00 2001
From: Amy Guy <amy@rhiaro.co.uk>
Date: Sun, 25 Oct 2020 09:42:31 +0000
Subject: [PATCH 22/89] Grammar fix

Co-authored-by: Brent Zundel <brent.zundel@gmail.com>
---
 terms.html | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/terms.html b/terms.html
index de2fcb2c..5d54825e 100644
--- a/terms.html
+++ b/terms.html
@@ -182,9 +182,9 @@
   <dd>
 A <a>DID</a> plus any additional syntactic component that conforms to  the
 definition in <a href="#did-url-syntax"></a>. This includes an optional <a>DID
-path</a> (and its leading <code>/</code> character), optional <a>DID query</a>
-(and its leading <code>?</code> character), and optional <a>DID fragment</a>
-(and its leading <code>#</code> character).
+path</a> (with its leading <code>/</code> character), optional <a>DID query</a>
+(with its leading <code>?</code> character), and optional <a>DID fragment</a>
+(with its leading <code>#</code> character).
   </dd>
 
   <dt><dfn>DID URL dereferencing</dfn></dt>

From b414bccd2a57b6290101cfbccbe73c4fa469ae53 Mon Sep 17 00:00:00 2001
From: Amy Guy <amy@rhiaro.co.uk>
Date: Sun, 25 Oct 2020 09:43:15 +0000
Subject: [PATCH 23/89] Add back sentence about DID subject as information
 resource

Co-authored-by: Brent Zundel <brent.zundel@gmail.com>
---
 index.html | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 3a24876e..c1bc8e29 100644
--- a/index.html
+++ b/index.html
@@ -189,7 +189,8 @@
 methods, or <a>service endpoints</a>, which provide a set of mechanisms
 enabling a <a>DID controller</a> to prove control of the <a>DID</a>.
 <a>Service endpoints</a> enable trusted interactions associated with the
-<a>DID subject</a>.
+<a>DID subject</a>. A <a>DID document</a> might contain the <a>DID subject</a>
+itself, if the <a>DID subject</a> is an information resource such as a data model.
     </p>
     <p>
 This document specifies a common data model, a URL format, and a set of

From b2346aac4dcafc39451ca511ba76c6c04ee8e72e Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sat, 3 Oct 2020 16:20:41 +0100
Subject: [PATCH 24/89] conformance: remove redundant/untestable normative
 language, towards #384

---
 index.html | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)

diff --git a/index.html b/index.html
index c1bc8e29..b27389b1 100644
--- a/index.html
+++ b/index.html
@@ -675,19 +675,18 @@ <h2>
       </p>
 
      <p>
-A <dfn>conforming DID</dfn> is any concrete expression of the rules specified in
-Section <a href="#identifier"></a> and MUST comply with relevant normative
+A <dfn>conforming DID</dfn> is any concrete expression of the rules specified
+in Section <a href="#identifier"></a> and complies with relevant normative
 statements in that section.
      </p>
 
       <p>
 A <dfn>conforming DID document</dfn> is any concrete expression of the data
-model described in this specification and MUST comply with the relevant
+model described in this specification and complies with with the relevant
 normative statements in Sections <a href="#data-model"></a> and  <a
-href="#core-properties"></a>. A serialization format for the conforming document
-MUST be deterministic, bi-directional, and lossless as described in Section <a
-href="#core-representations"></a>. The <a>conforming DID document</a> MAY be
-transmitted or stored in any such serialization format.
+href="#core-properties"></a>. A serialization format for the conforming
+document is deterministic, bi-directional, and lossless as described in
+Section <a href="#core-representations"></a>.
       </p>
 
       <p>

From 6026da8ed82b06a300e1670a3aa60b636334a7d4 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 18 Oct 2020 17:00:23 +0100
Subject: [PATCH 25/89] conformance: Fix grammar, thanks @brentzundel

---
 index.html | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/index.html b/index.html
index b27389b1..90a6faaf 100644
--- a/index.html
+++ b/index.html
@@ -676,13 +676,13 @@ <h2>
 
      <p>
 A <dfn>conforming DID</dfn> is any concrete expression of the rules specified
-in Section <a href="#identifier"></a> and complies with relevant normative
+in Section <a href="#identifier"></a> which complies with relevant normative
 statements in that section.
      </p>
 
       <p>
 A <dfn>conforming DID document</dfn> is any concrete expression of the data
-model described in this specification and complies with with the relevant
+model described in this specification which complies with the relevant
 normative statements in Sections <a href="#data-model"></a> and  <a
 href="#core-properties"></a>. A serialization format for the conforming
 document is deterministic, bi-directional, and lossless as described in

From adef25ca0f4ebab3583ff8ead0151e3a096e0144 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sat, 3 Oct 2020 21:10:44 +0100
Subject: [PATCH 26/89] keys: remove normative language around 'assume' (#384)

---
 index.html | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/index.html b/index.html
index 90a6faaf..f7acef59 100644
--- a/index.html
+++ b/index.html
@@ -1747,16 +1747,16 @@ <h3>Key types and formats</h3>
         </pre>
 
         <p>
-If a public key does not exist in the <a>DID document</a>, it MUST be assumed
-the key was revoked or is invalid. The <a>DID document</a> MUST NOT express
-revoked keys using a <a>verification relationship</a>. Each <a>DID method</a>
-specification is expected to detail how revocation is performed and tracked.
+If a public key does not exist in the <a>DID document</a>, the key was revoked
+or is invalid. The <a>DID document</a> MUST NOT express revoked keys using a
+<a>verification relationship</a>. Each <a>DID method</a> specification is
+expected to detail how revocation is performed and tracked.
         </p>
 
         <p class="note">
 Caching and expiration of the keys in a <a>DID document</a> is entirely the
-responsibility of <a>DID resolvers</a> and requesting parties. For more information,
-see Section <a href="#resolution"></a>.
+responsibility of <a>DID resolvers</a> and requesting parties. For more
+information, see Section <a href="#resolution"></a>.
         </p>
 
       </section>

From 430e3a9748bcec6c41963e168144da959a28e953 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sat, 3 Oct 2020 21:12:27 +0100
Subject: [PATCH 27/89] verification methods: Fix wording (#384)

---
 index.html | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/index.html b/index.html
index f7acef59..db9958bc 100644
--- a/index.html
+++ b/index.html
@@ -1776,9 +1776,8 @@ <h2>Verification Relationships</h2>
 [[DID-SPEC-REGISTRIES]].
       </p>
       <p>
-The information in a <a>DID document</a> MUST be explicit about the
-<a>verification relationship</a> between the <a>DID subject</a> and the
-<a>verification method</a>.
+The <a>verification relationship</a> between the <a>DID subject</a> and the
+<a>verification method</a> MUST be explicit in the <a>DID document</a>.
 <a>Verification methods</a> that are not associated with a particular
 <a>verification relationship</a> MUST NOT be used for that <a>verification
 relationship</a>. See the sections below for more detailed examples of a

From 27f5de7702dfa223aff4f8c7279ebd335a92de75 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sat, 3 Oct 2020 21:22:23 +0100
Subject: [PATCH 28/89] verification methods: Remove untestable normative
 language

Noted by @kdenhartog that statements about consuming software is
out of scope (and untestable).
---
 index.html | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/index.html b/index.html
index db9958bc..44a63c6c 100644
--- a/index.html
+++ b/index.html
@@ -1778,10 +1778,12 @@ <h2>Verification Relationships</h2>
       <p>
 The <a>verification relationship</a> between the <a>DID subject</a> and the
 <a>verification method</a> MUST be explicit in the <a>DID document</a>.
-<a>Verification methods</a> that are not associated with a particular
-<a>verification relationship</a> MUST NOT be used for that <a>verification
-relationship</a>. See the sections below for more detailed examples of a
-<a>verification relationship</a>.
+Applications are expected to respect explicit <a>verification relationships</a>
+and therefore to <em>not</em> use a <a>verification method</a> for a
+particular <a>verification relationship</a> <em>unless</em> the
+<a>verification method</a> is explicitly associated with the <a>verification
+relationship</a> in question. See the sections below for more detailed
+examples of a <a>verification relationship</a>.
       </p>
 
       <section>

From feea9dbf8a5c2ed2b55ea58b9b0bd832dcf0ab3d Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sat, 3 Oct 2020 21:30:42 +0100
Subject: [PATCH 29/89] service: 'unordered set' should be an INFRA ordered set
 (#384)

---
 index.html | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/index.html b/index.html
index 44a63c6c..dcb87758 100644
--- a/index.html
+++ b/index.html
@@ -2189,11 +2189,11 @@ <h2>Service Endpoints</h2>
         <dd>
           <p>
 If a <a>DID document</a> includes a <code>service</code> property, the value
-of the property SHOULD be an unordered set of <a>service endpoint</a>s, where
-each service endpoint is described by a set of properties. Each <a>service
-endpoint</a> MUST have <code><a>id</a></code>, <code>type</code>, and
-<code><a>serviceEndpoint</a></code> properties, and MAY include additional
-properties.
+of the property SHOULD be an <a data-cite="INFRA#ordered-set">ordered set</a>
+of <a>service endpoint</a>s, where each service endpoint is described by a set
+of properties. Each <a>service endpoint</a> MUST have <code><a>id</a></code>,
+<code>type</code>, and <code><a>serviceEndpoint</a></code> properties, and MAY
+include additional properties.
           </p>
           <p>
 The value of the <code><a>id</a></code> property MUST be a <a>URI</a>.

From 4e6b97c57ff6e147bdcd6cb534f7c8ef9fd909ae Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 18 Oct 2020 16:54:25 +0100
Subject: [PATCH 30/89] Revert "verification methods: Remove untestable
 normative language"

This reverts commit f3cbd50b69dd6d7f8c0aa262ae00019f9c9aec95. This
language is testable by attempting to use a verification method
that does not appear in the DID document.
---
 index.html | 10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

diff --git a/index.html b/index.html
index dcb87758..cc513a31 100644
--- a/index.html
+++ b/index.html
@@ -1778,12 +1778,10 @@ <h2>Verification Relationships</h2>
       <p>
 The <a>verification relationship</a> between the <a>DID subject</a> and the
 <a>verification method</a> MUST be explicit in the <a>DID document</a>.
-Applications are expected to respect explicit <a>verification relationships</a>
-and therefore to <em>not</em> use a <a>verification method</a> for a
-particular <a>verification relationship</a> <em>unless</em> the
-<a>verification method</a> is explicitly associated with the <a>verification
-relationship</a> in question. See the sections below for more detailed
-examples of a <a>verification relationship</a>.
+<a>Verification methods</a> that are not associated with a particular
+<a>verification relationship</a> MUST NOT be used for that <a>verification
+relationship</a>. See the sections below for more detailed examples of a
+<a>verification relationship</a>.
       </p>
 
       <section>

From 9d4e4e0fc995f26a1f38ada9845e372786477eeb Mon Sep 17 00:00:00 2001
From: Sangwon Hong <qpakzk@gmail.com>
Date: Sun, 11 Oct 2020 21:57:58 +0900
Subject: [PATCH 31/89] Fix a minor parenthesis typo.

Signed-off-by: Sangwon Hong <qpakzk@gmail.com>

From 98dbfc51a93843202ed19a3f140d1f2657754c15 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Mon, 12 Oct 2020 11:05:38 +0100
Subject: [PATCH 32/89] representations: remove redundant normative language
 (normative reqs are more explicit in subsequent sentences) towards #384

---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index cc513a31..9591c25a 100644
--- a/index.html
+++ b/index.html
@@ -2275,7 +2275,7 @@ <h2>Service Endpoints</h2>
     <h1>Core Representations</h1>
 
     <p>
-All concrete representations of a <a>DID document</a> MUST be serialized using a
+All concrete representations of a <a>DID document</a> are serialized using a
 deterministic mapping that is able to be unambiguously parsed into the data
 model defined in this specification. All serialization methods MUST define rules
 for the bidirectional translation of a <a>DID document</a> both into and out of

From 1de3ff005216960b049478b16c93022cae9bf2f3 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Mon, 12 Oct 2020 11:08:25 +0100
Subject: [PATCH 33/89] representations: remove duplicate inverse normative
 language and rearrange for clarity; #384

---
 index.html | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/index.html b/index.html
index 9591c25a..81a1bec0 100644
--- a/index.html
+++ b/index.html
@@ -2279,12 +2279,12 @@ <h1>Core Representations</h1>
 deterministic mapping that is able to be unambiguously parsed into the data
 model defined in this specification. All serialization methods MUST define rules
 for the bidirectional translation of a <a>DID document</a> both into and out of
-the representation in question. As a consequence, translation between any two
-representations MUST be done by parsing the source format into a <a>DID
-document</a> model (described in Sections <a href="#data-model"></a> and <a
-href="#core-properties"></a>) and then serializing the <a>DID document</a> model
-into the target representation. An implementation MUST NOT convert between
-representations without first parsing to a <a>DID document</a> model.
+the representation in question. An implementation MUST NOT convert between
+representations without first parsing to a <a>DID document</a> model
+(described in Sections <a href="#data-model"></a> and <a
+href="#core-properties"></a>); translation between any two representations is
+done by parsing the source format into a <a>DID document</a> model and then
+serializing the <a>DID document</a> model into the target representation.
     </p>
 
     <p>

From 635d6af524133b3cdf27bd4a3eae35b592d9143d Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Mon, 12 Oct 2020 11:56:05 +0100
Subject: [PATCH 34/89] representations: Consolidate duplicative inverse
 normative statements about content type, #384

---
 index.html | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/index.html b/index.html
index 81a1bec0..eebf8b82 100644
--- a/index.html
+++ b/index.html
@@ -2295,10 +2295,10 @@ <h1>Core Representations</h1>
 
     <p>
 Producers MUST indicate which representation of a document has been used via a
-media type in the document's metadata. Consumers MUST determine which
-representation a document is in via the <code>content-type</code> DID resolver
-metadata field. (See <a href="#did-resolution"></a>). Consumers MUST NOT
-determine the representation of a document through its content alone.
+media type in the document's metadata. Consumers MUST determine the
+representation of a <a>DID document</a> via the <code>content-type</code> DID
+resolver metadata field (see <a href="#did-resolution"></a>), <em>not</em>
+through the content of the <a>DID document</a> alone.
     </p>
 
     <p class="issue" data-number="203">

From a8b6e9b3b71c8257d753b7a2774c10f27a8d4c5f Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 13 Oct 2020 14:37:31 +0100
Subject: [PATCH 35/89] resolution: Normative statements and spacing fixup.

Removes redundant/untestable intro normative language. Also
makes references to the Registries consistent with the rest
of the spec by saying "SHOULD be registered in" rather than "are
defined in". (#384)
---
 index.html | 185 +++++++++++++++++++++++++++++------------------------
 1 file changed, 103 insertions(+), 82 deletions(-)

diff --git a/index.html b/index.html
index eebf8b82..1203c9a7 100644
--- a/index.html
+++ b/index.html
@@ -3284,7 +3284,7 @@ <h2>
         </code></p>
 
         <p>
-The input variables of these functions MUST be as follows:
+The input variables of these functions are as follows:
         </p>
 
         <dl>
@@ -3292,23 +3292,23 @@ <h2>
 did
             </dt>
             <dd>
-A conformant <a>DID</a> as a single string. This is the <a>DID</a> to resolve.
-This input is REQUIRED.
+This is the <a>DID</a> to resolve. This input is REQUIRED and the value MUST
+be a conformant <a>DID</a>.
             </dd>
             <dt>
 did-resolution-input-metadata
             </dt>
             <dd>
 A <a href="#metadata-structure">metadata structure</a> consisting of input
-options to the <code>resolve</code> and <code>resolveRepresentation</code> functions in addition to the <code>did</code>
-itself.
-Properties defined by this specification are in <a href="#did-resolution-input-metadata-properties"></a>.
+options to the <code>resolve</code> and <code>resolveRepresentation</code>
+functions in addition to the <code>did</code> itself. Properties defined by
+this specification are in <a href="#did-resolution-input-metadata-properties"></a>.
 This input is REQUIRED, but the structure MAY be empty.
             </dd>
         </dl>
 
         <p>
-The output variables of these functions MUST be as follows:
+The output variables of these functions are as follows:
         </p>
 
         <dl>
@@ -3316,31 +3316,44 @@ <h2>
 did-resolution-metadata
             </dt>
             <dd>
+              <p>
 A <a href="#metadata-structure">metadata structure</a> consisting of values
-relating to the results of the <a>DID resolution</a> process. This structure is
-REQUIRED and MUST NOT be empty. This metadata typically changes between
-invocations of the <code>resolve</code> and <code>resolveRepresentation</code> functions as it represents data about the
-resolution process itself.
-Properties defined by this specification are in <a href="#did-resolution-metadata-properties"></a>.
-If the resolution is successful, and if the <code>resolveRepresentation</code> function was called, this structure MUST contain a <code>content-type</code> property containing the mime-type of the <code>did-document-stream</code> in this result.
-If the resolution is not successful, this structure MUST contain an <code>error</code> property describing the error.
+relating to the results of the <a>DID resolution</a> process. This structure
+is REQUIRED and MUST NOT be empty.
+              </p>
+              <p>
+This metadata typically changes between invocations of the
+<code>resolve</code> and <code>resolveRepresentation</code> functions as it
+represents data about the resolution process itself. Properties defined by
+this specification are in <a href="#did-resolution-metadata-properties"></a>.
+              </p>
+              <p>
+If the resolution is successful, and if the <code>resolveRepresentation</code>
+function was called, this structure MUST contain a <code>content-type</code>
+property containing the mime-type of the <code>did-document-stream</code> in
+this result. If the resolution is not successful, this structure MUST contain
+an <code>error</code> property describing the error.
+              </p>
             </dd>
             <dt>
 did-document
             </dt>
             <dd>
-If the resolution is successful, and if the <code>resolve</code> function was called, this MUST be a <a>DID document</a> conforming to the abstract data model.
-If the resolution is unsuccessful, this value MUST be empty.
+If the resolution is successful, and if the <code>resolve</code> function was
+called, this MUST be a <a>DID document</a> conforming to the abstract data
+model. If the resolution is unsuccessful, this value MUST be empty.
             </dd>
             <dt>
 did-document-stream
             </dt>
             <dd>
-If the resolution is successful, and if the <code>resolveRepresentation</code> function was called, this MUST be a byte stream of the resolved
-<a>DID document</a> in one of the conformant <a href="#representations">representations</a>. The byte
-stream MAY then be parsed by the caller of the <code>resolveRepresentation</code> function
-into a <a>DID document</a> abstract data model, which can in turn be validated
-and processed. If the resolution is unsuccessful, this value MUST be an empty
+If the resolution is successful, and if the <code>resolveRepresentation</code>
+function was called, this MUST be a byte stream of the resolved <a>DID
+document</a> in one of the conformant
+<a href="#representations">representations</a>. The byte stream MAY then be
+parsed by the caller of the <code>resolveRepresentation</code> function into a
+<a>DID document</a> abstract data model, which can in turn be validated and
+processed. If the resolution is unsuccessful, this value MUST be an empty
 stream.
             </dd>
             <dt>
@@ -3349,24 +3362,25 @@ <h2>
             <dd>
 If the resolution is successful, this MUST be a <a
 href="#metadata-structure">metadata structure</a>. This structure contains
-metadata about the <a>DID document</a> contained in the <code>did-document</code> or
-<code>did-document-stream</code>. This metadata typically does not change
-between invocations of the <code>resolve</code> function unless the <a>DID
-document</a> changes, as it represents data about the <a>DID document</a>. If
-the resolution is unsuccessful, this output MUST be an empty <a
-href="#metadata-structure">metadata structure</a>.
-Properties defined by this specification are in <a href="#did-document-metadata-properties"></a>.
+metadata about the <a>DID document</a> contained in the
+<code>did-document</code> or <code>did-document-stream</code>. This metadata
+typically does not change between invocations of the <code>resolve</code>
+function unless the <a>DID document</a> changes, as it represents data about
+the <a>DID document</a>. If the resolution is unsuccessful, this output MUST
+be an empty <a href="#metadata-structure">metadata structure</a>. Properties
+defined by this specification are in <a
+href="#did-document-metadata-properties"></a>.
             </dd>
         </dl>
 
         <p>
 <a>DID resolver</a> implementations MUST NOT alter the signature of these
 functions in any way. <a>DID resolver</a> implementations MAY map the
-<code>resolve</code> and <code>resolveRepresentation</code> functions to a method-specific internal function to perform
-the actual <a>DID resolution</a> process. <a>DID resolver</a> implementations
-MAY implement  and expose additional
-functions with different signatures in addition to the <code>resolve</code>
-function specified here.
+<code>resolve</code> and <code>resolveRepresentation</code> functions to a
+method-specific internal function to perform the actual <a>DID resolution</a>
+process. <a>DID resolver</a> implementations MAY implement  and expose
+additional functions with different signatures in addition to the
+<code>resolve</code> function specified here.
         </p>
 
         <section>
@@ -3375,8 +3389,9 @@ <h3>
             </h3>
 
             <p>
-The possible properties within this structure and their possible values are defined by [[DID-SPEC-REGISTRIES]].
-This specification defines the following common properties.
+The possible properties within this structure and their possible values are
+defined by [[DID-SPEC-REGISTRIES]]. This specification defines the following
+common properties.
             </p>
 
             <dl>
@@ -3384,10 +3399,13 @@ <h3>
 accept
                 </dt>
                 <dd>
-The MIME type of the caller's preferred <a href="#representations">representation</a> of the <a>DID document</a>. The <a>DID resolver</a> implementation
-SHOULD use this value to determine the representation contained in the returned <code>did-document-stream</code> if such
-a representation is supported and available. This property is OPTIONAL. It is only used if the <code>resolveRepresentation</code>
-function is called and MUST be ignored if the <code>resolve</code> function is called.
+The MIME type of the caller's preferred <a
+href="#representations">representation</a> of the <a>DID document</a>. The
+<a>DID resolver</a> implementation SHOULD use this value to determine the
+representation contained in the returned <code>did-document-stream</code> if
+such a representation is supported and available. This property is OPTIONAL.
+It is only used if the <code>resolveRepresentation</code> function is called
+and MUST be ignored if the <code>resolve</code> function is called.
                 </dd>
             </dl>
         </section>
@@ -3398,8 +3416,9 @@ <h3>
             </h3>
 
             <p>
-The possible properties within this structure and their possible values are defined by [[DID-SPEC-REGISTRIES]].
-This specification defines the following common properties.
+The possible properties within this structure and their possible values are
+defined by [[DID-SPEC-REGISTRIES]]. This specification defines the following
+common properties.
             </p>
 
             <dl>
@@ -3407,37 +3426,39 @@ <h3>
 content-type
                 </dt>
                 <dd>
-The MIME type of the returned <code>did-document-stream</code>.
-This property is REQUIRED if resolution is successful and if the <code>resolveRepresentation</code> function was called.
-It MUST NOT be present if the <code>resolve</code> function was called.
-The value of this property MUST be the MIME type of one of the conformant <a href="#representations">representations</a>.
-The caller of the <code>resolveRepresentation</code> function MUST use this value when determining how to
-parse and process the <code>did-document-stream</code> returned by this function into a
-<a>DID document</a> abstract data model.
+The MIME type of the returned <code>did-document-stream</code>. This property
+is REQUIRED if resolution is successful and if the
+<code>resolveRepresentation</code> function was called. This property MUST NOT
+be present if the <code>resolve</code> function was called. The value of this
+property MUST be the MIME type of one of the conformant <a
+href="#representations">representations</a>. The caller of the
+<code>resolveRepresentation</code> function MUST use this value when
+determining how to parse and process the <code>did-document-stream</code>
+returned by this function into a <a>DID document</a> abstract data model.
                 </dd>
                 <dt>
 error
                 </dt>
                 <dd>
-The error code from the resolution process.
-This property is REQUIRED when there is an error in the resolution process.
-The value of this property is a single keyword string.
-The possible property values of this field are defined by [[DID-SPEC-REGISTRIES]].
+The error code from the resolution process. This property is REQUIRED when
+there is an error in the resolution process. The value of this property MUST
+be a single keyword string. The possible property values of this field SHOULD
+be registered in the DID Specification Registries [[DID-SPEC-REGISTRIES]].
 This specification defines the following error values:
                     <dl>
                         <dt>
 invalid-did
                         </dt>
                         <dd>
-The <a>DID</a> supplied to the <a>DID resolution</a> function does not
-conform to valid syntax. (See <a href="#did-syntax"></a>.)
+The <a>DID</a> supplied to the <a>DID resolution</a> function does not conform
+to valid syntax. (See <a href="#did-syntax"></a>.)
                         </dd>
                         <dt>
 unauthorized
                         </dt>
                         <dd>
-The caller is not authorized to resolve this <a>DID</a> with
-this <a>DID resolver</a>.
+The caller is not authorized to resolve this <a>DID</a> with this <a>DID
+resolver</a>.
                         </dd>
                         <dt>
 not-found
@@ -3458,7 +3479,8 @@ <h3>
             </h3>
 
             <p>
-The possible properties within this structure and their possible values are defined by [[DID-SPEC-REGISTRIES]].
+The possible properties within this structure and their possible values SHOULD
+be registered in the DID Specification Registries [[DID-SPEC-REGISTRIES]].
 This specification defines the following common properties.
             </p>
 
@@ -3470,11 +3492,11 @@ <h3>
 DID document metadata SHOULD include a <code>created</code> property
 to indicate the timestamp of the <a href="#create">Create operation</a>.
 This property MAY not be supported by a given <a>DID method</a>.
-The value of
-the property MUST be a valid XML datetime value, as defined in section 3.3.7 of
-<a href="https://www.w3.org/TR/xmlschema11-2/">W3C XML Schema Definition
-Language (XSD) 1.1 Part 2: Datatypes</a> [[XMLSCHEMA11-2]]. This datetime value
-MUST be normalized to UTC 00:00, as indicated by the trailing "Z".
+The value of the property MUST be a valid XML datetime value, as defined in
+section 3.3.7 of <a href="https://www.w3.org/TR/xmlschema11-2/">W3C XML Schema
+Definition Language (XSD) 1.1 Part 2: Datatypes</a> [[XMLSCHEMA11-2]]. This
+datetime value MUST be normalized to UTC 00:00, as indicated by the trailing
+"Z".
                 </dd>
                 <dt>
 updated
@@ -3483,9 +3505,8 @@ <h3>
 DID document metadata SHOULD include an <code>updated</code> property
 to indicate the timestamp of the last <a href="#update">Update operation</a>.
 This property MAY not be supported by a given <a>DID method</a>.
-The value of
-the property MUST follow the same formatting rules as the <code>created</code>
-property.
+The value of the property MUST follow the same formatting rules as the
+<code>created</code> property.
                 </dd>
             </dl>
 
@@ -3524,8 +3545,7 @@ <h2>
             </dt>
             <dd>
 A conformant <a>DID URL</a> as a single string. This is the <a>DID URL</a> to
-dereference.
-This input is REQUIRED.
+dereference. This input is REQUIRED.
             </dd>
             <dt>
 did-url-dereferencing-input-metadata
@@ -3533,9 +3553,9 @@ <h2>
             <dd>
 A <a href="metadata-structure">metadata structure</a> consisting of input
 options to the <code>dereference</code> function in addition to the <code>did-url</code>
-itself.
-Properties defined by this specification are in <a href="#did-url-dereferencing-input-metadata-properties"></a>.
-This input is REQUIRED, but the structure MAY be empty.
+itself. Properties defined by this specification are in <a
+href="#did-url-dereferencing-input-metadata-properties"></a>. This input is
+REQUIRED, but the structure MAY be empty.
             </dd>
         </dl>
 
@@ -3580,7 +3600,8 @@ <h2>
 <code>did-document-metadata</code> structure as described in <a>DID
 Resolution</a>.
 
-If the dereferencing is unsuccessful, this output MUST be an empty <a href="metadata-structure">metadata structure</a>.
+If the dereferencing is unsuccessful, this output MUST be an empty <a
+href="metadata-structure">metadata structure</a>.
             </dd>
         </dl>
 
@@ -3600,8 +3621,9 @@ <h3>
             </h3>
 
             <p>
-The possible properties within this structure and their possible values are defined by [[DID-SPEC-REGISTRIES]].
-This specification defines the following common properties.
+The possible properties within this structure and their possible values SHOULD
+be registered in the [[DID-SPEC-REGISTRIES]]. This specification defines the
+following common properties.
             </p>
 
             <dl>
@@ -3609,8 +3631,8 @@ <h3>
 accept
                 </dt>
                 <dd>
-The MIME type the caller prefers for <code>content-stream</code>. The <a>DID URL
-Dereferencing</a> implementation SHOULD use this value to determine the
+The MIME type the caller prefers for <code>content-stream</code>. The <a>DID
+URL Dereferencing</a> implementation SHOULD use this value to determine the
 representation contained in the returned value if such a representation is
 supported and available. This property is OPTIONAL.
                 </dd>
@@ -3640,12 +3662,11 @@ <h3>
 error
                 </dt>
                 <dd>
-The error code from the dereferencing process.
-This property is REQUIRED when there is an error in the dereferencing process.
-The value of this property is a single keyword string.
-The possible property values of this field are defined by
-[[DID-SPEC-REGISTRIES]]. This specification defines the following error
-values:
+The error code from the dereferencing process. This property is REQUIRED when
+there is an error in the dereferencing process. The value of this property is
+a single keyword string. The possible property values of this field SHOULD be
+registered in the DID Specification Registries [DID-SPEC-REGISTRIES]]. This
+specification defines the following error values:
                     <dl>
                         <dt>
 invalid-did-url
@@ -3694,7 +3715,7 @@ <h2>
 All metadata property definitions MUST define the value type, including any
 additional formats or restrictions to that value (for example, a string
 formatted as a date or as a decimal integer). It is RECOMMENDED that property
-definitions use strings for values where possible.
+definitions use strings for values.
         </p>
 
         <p>

From ddc3f97f510111fefa9f81633585f5b34cbed82c Mon Sep 17 00:00:00 2001
From: Amy Guy <amy@rhiaro.co.uk>
Date: Sun, 18 Oct 2020 16:51:06 +0100
Subject: [PATCH 36/89] Clarify DID format requirements

Co-authored-by: Brent Zundel <brent.zundel@gmail.com>
---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 1203c9a7..5ac8ffc8 100644
--- a/index.html
+++ b/index.html
@@ -3293,7 +3293,7 @@ <h2>
             </dt>
             <dd>
 This is the <a>DID</a> to resolve. This input is REQUIRED and the value MUST
-be a conformant <a>DID</a>.
+be a conformant <a>DID</a> expressed as a single string.
             </dd>
             <dt>
 did-resolution-input-metadata

From 7065647b62b82265ab4483c8fd5f92158c44a6ed Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 13 Oct 2020 14:53:06 +0100
Subject: [PATCH 37/89] methods/security: Move normative statement about
 signatures from Security Considerations to Methods (#384) and fix spacing

---
 index.html | 41 +++++++++++++++++++++++------------------
 1 file changed, 23 insertions(+), 18 deletions(-)

diff --git a/index.html b/index.html
index 5ac8ffc8..1b7a7508 100644
--- a/index.html
+++ b/index.html
@@ -3166,13 +3166,13 @@ <h2>
 Potential denial of service attacks MUST be identified as well.
       </p>
       <p>
-This section MUST discuss, per Section 5 of [[RFC3552]], residual risks (such as
-the risks from compromise in a related protocol, incorrect implementation, or
-cipher) after threat mitigation was deployed.
+This section MUST discuss, per Section 5 of [[RFC3552]], residual risks (such
+as the risks from compromise in a related protocol, incorrect implementation,
+or cipher) after threat mitigation was deployed.
       </p>
       <p>
-This section MUST provide integrity protection and update authentication for all
-operations required by Section <a href="#method-operations"></a>.
+This section MUST provide integrity protection and update authentication for
+all operations required by Section <a href="#method-operations"></a>.
       </p>
       <p>
 If the technology involves authentication, particularly user-host
@@ -3181,12 +3181,12 @@ <h2>
       </p>
       <p>
 <a>DID methods</a> MUST discuss the policy mechanism by which <a>DIDs</a> are
-proven to be uniquely assigned. A <a>DID</a> fits the functional definition of a
-URN, as defined in [[RFC8141]]. That is, a <a>DID</a> is a persistent identifier
-that is assigned once to a resource and never reassigned to a different
-resource. This is particularly important in a security context because a
-<a>DID</a> might be used to identify a specific party subject to a specific set
-of authorization rights.
+proven to be uniquely assigned. A <a>DID</a> fits the functional definition of
+a URN, as defined in [[RFC8141]]. That is, a <a>DID</a> is a persistent
+identifier that is assigned once to a resource and never reassigned to a
+different resource. This is particularly important in a security context
+because a <a>DID</a> might be used to identify a specific party subject to a
+specific set of authorization rights.
       </p>
       <p>
 Method-specific endpoint authentication MUST be discussed. Where <a>DID
@@ -3210,6 +3210,10 @@ <h2>
 SHOULD be clearly labeled.
       </p>
       <p>
+<a>DID method</a> specifications SHOULD explain and specify the implementation
+of signatures on <a>DID documents</a>, if applicable.
+      </p>
+      <p>
 Where <a>DID methods</a> make use of peer-to-peer computing resources, such as
 with all known <a>DLTs</a>, the expected burdens of those resources SHOULD be
 discussed in relation to denial of service.
@@ -3846,8 +3850,8 @@ <h3>
         </h3>
 
         <p>
-Signatures and <a>verifiable timestamps</a> allow <a>DID documents</a> to be cryptographically
-verifiable.
+Signatures and <a>verifiable timestamps</a> allow <a>DID documents</a> to be
+cryptographically verifiable.
         </p>
 
         <p>
@@ -3867,8 +3871,8 @@ <h3>
         </ul>
 
         <p>
-Proving control of a <a>DID</a>, that is, the binding between the <a>DID</a> and
-the <a>DID document</a> that describes it, requires a two step process:
+Proving control of a <a>DID</a>, that is, the binding between the <a>DID</a>
+and the <a>DID document</a> that describes it, requires a two step process:
         </p>
 
         <ol start="1">
@@ -3878,8 +3882,8 @@ <h3>
           </li>
 
           <li>
-Verifying that the <code><a>id</a></code> property of the resulting <a>DID document</a>
-matches the <a>DID</a> that was resolved.
+Verifying that the <code><a>id</a></code> property of the resulting <a>DID
+document</a> matches the <a>DID</a> that was resolved.
           </li>
         </ol>
 
@@ -3890,7 +3894,8 @@ <h3>
 
         <p>
 Signatures on <a>DID documents</a> are optional. <a>DID method</a>
-specifications SHOULD explain and specify their implementation if applicable.
+specifications are expected to explain and specify their implementation if
+applicable.
         </p>
       </section>
 

From 54128a7583ac32dff45024ca6ed252b9715bfd48 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 13 Oct 2020 13:56:44 +0100
Subject: [PATCH 38/89] normative statements: Removes duplicate normative
 language (#384)

Removes duplicate normative statements in introductory text in
favour of more precise statements in the paragraphs which follow
in the JSON and JSON-LD representation sections.

Also fixes some spacing and formatting.
---
 index.html | 158 +++++++++++++++++++++++++++--------------------------
 1 file changed, 81 insertions(+), 77 deletions(-)

diff --git a/index.html b/index.html
index 1b7a7508..4505aca3 100644
--- a/index.html
+++ b/index.html
@@ -1029,10 +1029,10 @@ <h2>Fragment</h2>
         <p>
 A <a>DID fragment</a> is used as method-independent reference into a <a>DID Document</a> or external resource.
         </p>
-        
+
 <p>
-<a>DID fragment</a> syntax and semantics are identical to a generic URI fragment 
-and  MUST conform to <a data-cite="RFC3986#section-3.5">RFC&nbsp;3986, section 3.5</a>. 
+<a>DID fragment</a> syntax and semantics are identical to a generic URI fragment
+and  MUST conform to <a data-cite="RFC3986#section-3.5">RFC&nbsp;3986, section 3.5</a>.
 To dereference a <a>DID fragment</a>, the complete <a>DID URL</a> including the
 <a>DID fragment</a> MUST be used as input to the <a>DID URL dereferencing</a>
 function. For more information, see <a href="#did-url-dereferencing"></a>.
@@ -1043,7 +1043,7 @@ <h2>Fragment</h2>
 that are more restrictive than the generic rules in this section.
         </p>
 
-        
+
 
         <p>
 In order to maximize interoperability, implementers are urged to ensure that
@@ -1601,9 +1601,9 @@ <h3>Key types and formats</h3>
         </p>
 
 <p>
-A <a>verification method</a> MUST NOT contain multiple verification material properties. 
-For example, expressing key material in a <a>verification method</a> using both 
-<code>publicKeyJwk</code> and <code>publicKeyBase58</code> at the same time 
+A <a>verification method</a> MUST NOT contain multiple verification material properties.
+For example, expressing key material in a <a>verification method</a> using both
+<code>publicKeyJwk</code> and <code>publicKeyBase58</code> at the same time
 is prohibited.
 </p>
 
@@ -1641,7 +1641,7 @@ <h3>Key types and formats</h3>
         </p>
 
 <p class="issue" data-number="423">
-The Working Group is still debating how best to communicate support for 
+The Working Group is still debating how best to communicate support for
 specific verification method types.
 </p>
 
@@ -1678,7 +1678,7 @@ <h3>Key types and formats</h3>
 ed25519<br/>(<code>Ed25519VerificationKey2018</code>)
               </td>
               <td>
-Ed25519 public key values MUST either be encoded as a JWK [[RFC7517]] 
+Ed25519 public key values MUST either be encoded as a JWK [[RFC7517]]
 using the <code>publicKeyJwk</code> or be
 encoded as the raw 32-byte public key value in Base58 Bitcoin format
 [[BASE58]] using the <code>publicKeyBase58</code> property.
@@ -1689,7 +1689,7 @@ <h3>Key types and formats</h3>
 secp256k1
               </td>
               <td>
-Secp256k1 public key values MUST either be encoded as a JWK [[RFC7517]] 
+Secp256k1 public key values MUST either be encoded as a JWK [[RFC7517]]
 using the <code>publicKeyJwk</code> or be
 encoded as the raw 33-byte public key value in Base58
 Bitcoin format [[BASE58]] using the <code>publicKeyBase58</code> property.
@@ -1700,8 +1700,8 @@ <h3>Key types and formats</h3>
 Curve25519<br/>(<code>X25519KeyAgreementKey2019</code>)
               </td>
               <td>
-Curve25519 (also known as X25519) public key values MUST either be encoded 
-as a JWK [[RFC7517]] using the <code>publicKeyJwk</code> or be 
+Curve25519 (also known as X25519) public key values MUST either be encoded
+as a JWK [[RFC7517]] using the <code>publicKeyJwk</code> or be
 encoded as the raw 32-byte public key value in Base58
 Bitcoin format [[BASE58]] using the <code>publicKeyBase58</code> property.
               </td>
@@ -2327,9 +2327,9 @@ <h2>
       </h2>
 
       <p>
-When producing and consuming DID documents that are in plain JSON (as indicated
-by a <code>content-type</code> of <code>application/did+json</code> in the
-resolver metadata), the following rules MUST be followed.
+This section sets out the requirements for producing and consuming <a>DID
+documents</a> that are in plain JSON (as indicated by a <code>content-type</code>
+of <code>application/did+json</code> in the resolver metadata).
       </p>
 
       <section>
@@ -2340,7 +2340,7 @@ <h3>Production</h3>
 object</a> conforming to [[!RFC8259]]. All top-level properties of the <a>DID
 document</a> MUST be represented by using the property name as the name of the
 member of the JSON object. The values of properties of the data model described
-in Section <a href="#data-model"></a>, including all extensions, MUST be encoded
+in Section <a href="#data-model"></a>, including all extensions, are encoded
 in JSON [[RFC8259]] by mapping property values to JSON types as follows:
         </p>
 
@@ -2493,16 +2493,16 @@ <h2>
       </p>
 
       <p>
-When producing and consuming DID documents that are in JSON-LD (as indicated by
-a <code>content-type</code> of <code>application/did+ld+json</code> in the
-resolver metadata), the following rules MUST be followed.
+This section sets out the requirements for producing and consuming <a>DID
+documents</a> that are in plain JSON (as indicated by a <code>content-type</code>
+of <code>application/did+ld+json</code> in the resolver metadata).
       </p>
 
       <ul>
         <li>
 The <code>@id</code> and <code>@type</code> keywords are aliased to
-<code><a>id</a></code> and <code>type</code> respectively, enabling developers to use
-this specification as idiomatic JSON.
+<code><a>id</a></code> and <code>type</code> respectively, enabling developers
+to use this specification as idiomatic JSON.
         </li>
         <li>
 Even though JSON-LD allows any IRI as node identifiers, <a>DID documents</a>
@@ -2523,69 +2523,73 @@ <h3>
         </h3>
 
         <p>
-The <a>DID document</a> MUST be serialized as a JSON document,
-with one additional requirement: <br/> 
-The <a>DID document</a> MUST include the <code>@context</code> property.
+The <a>DID document</a> MUST be serialized as a JSON document, with one
+additional requirement: The <a>DID document</a> MUST include the
+<code>@context</code> property.
         </p>
 
         <dl>
           <dt>@context</dt>
           <dd>
 
-<p>
-The <a href="https://www.w3.org/TR/json-ld11/#the-context">JSON-LD specification </a> 
-defines values that are valid for this property.
-</p>
+            <p>
+The <a href="https://www.w3.org/TR/json-ld11/#the-context">JSON-LD
+specification</a> defines values that are valid for this property.
+            </p>
 
-<p>
+            <p>
 The value of <code>@context</code> MUST be exactly one of these values.
-</p>
-
-<ul>
-  <li>
-    The <a href="https://infra.spec.whatwg.org/#strings">INFRA string</a>
-    <code>https://www.w3.org/ns/did/v1</code>.
-    <pre class="example">
-      {
-        "@context": "https://www.w3.org/ns/did/v1",
-        ...
-      }
-    </pre>
-  </li>
-  <li>
-    An <a href="https://infra.spec.whatwg.org/#lists">INFRA list</a>, 
-    with first item the <a href="https://infra.spec.whatwg.org/#strings">INFRA string</a>
-    <code>https://www.w3.org/ns/did/v1</code>, and subsequent items of type 
-    <a href="https://infra.spec.whatwg.org/#strings">INFRA string</a> or 
-    <a href="https://infra.spec.whatwg.org/#maps">INFRA map</a>.
-    <pre class="example">
-      {
-        "@context": [
-          "https://www.w3.org/ns/did/v1",
-          "https://example.com/blockchain-identity/v1"
-        ],
-        ...
-      }
-    </pre>
-    <p class="issue"  data-number="432">The working group is still discussing restrictions on <code>@base</code>, beyond what JSON-LD allows.</p>
-  </li>
-</ul>
+            </p>
 
+            <ul>
+              <li>
+The <a href="https://infra.spec.whatwg.org/#strings">INFRA string</a>
+<code>https://www.w3.org/ns/did/v1</code>.
+                <pre class="example">
+{
+  "@context": "https://www.w3.org/ns/did/v1",
+  ...
+}
+                </pre>
+              </li>
+              <li>
+An <a href="https://infra.spec.whatwg.org/#lists">INFRA list</a>,
+with first item the <a href="https://infra.spec.whatwg.org/#strings">INFRA
+string</a> <code>https://www.w3.org/ns/did/v1</code>, and subsequent items of
+type <a href="https://infra.spec.whatwg.org/#strings">INFRA string</a> or
+<a href="https://infra.spec.whatwg.org/#maps">INFRA map</a>.
+                <pre class="example">
+{
+  "@context": [
+    "https://www.w3.org/ns/did/v1",
+    "https://example.com/blockchain-identity/v1"
+  ],
+  ...
+}
+                </pre>
+                <p class="issue"  data-number="432">
+The working group is still discussing restrictions on <code>@base</code>,
+beyond what JSON-LD allows.
+                </p>
+              </li>
+            </ul>
 
-All members of the
-<code>@context</code> property SHOULD exist in the DID specification
-registries in order to achieve interoperability across different
-representations. 
+            <p>
+All members of the <code>@context</code> property SHOULD exist in the DID
+specification registries [[DID-SPEC-REGISTRIES]] in order to achieve
+interoperability across different representations.
+            </p>
 
-If a member does not exist in the DID specification
-registries, then the DID Document might not be interoperable across
-representations.
+            <p>
+If a member does not exist in the DID specification registries, then the
+<a>DID document</a> might not be interoperable across representations.
+            </p>
 
-<p>
-  Producers SHOULD NOT produce DID Documents that 
-  contain properties not defined via the <code>@context</code>. 
-  Properties that are not defined via the <code>@context</code> MAY be dropped by Consumers.
-</p>
+            <p>
+Producers SHOULD NOT produce <a>DID documents</a> that contain properties not
+defined via the <code>@context</code>. Properties that are not defined via the
+<code>@context</code> MAY be dropped by Consumers.
+            </p>
 
           </dd>
         </dl>
@@ -2607,8 +2611,8 @@ <h3>
         <dl>
           <dt>@context</dt>
           <dd>
-The value of the <code>@context</code> property MUST conform 
-to the <a href="#production-0">JSON-LD Production Rules</a>. 
+The value of the <code>@context</code> property MUST conform
+to the <a href="#production-0">JSON-LD Production Rules</a>.
 
 If more than one <a>URI</a> is
 provided, the <a>URIs</a> MUST be interpreted as an ordered set. It is
@@ -2635,10 +2639,10 @@ <h3>
         </p>
 
         <p>
-          Consumers SHOULD drop all properties from a DID Documents that 
-          are not defined via the <code>@context</code>. 
+          Consumers SHOULD drop all properties from a DID Documents that
+          are not defined via the <code>@context</code>.
         </p>
- 
+
       </section>
 
     </section>

From ac32aca370472ab1c10c8244292d76205a68a2fd Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 13 Oct 2020 14:10:19 +0100
Subject: [PATCH 39/89] json-ld representation: Move normative language about
 @context URIs.

Normative requirements about dereferencing and and hashing contents
of @context URIs are requirements on a producer rather than a
consumer, so these statements have been moved accordingly. (#384)

Also removes normative language around conforming to JSON-LD
production rules as this is not a requirement on the consumer, but
advisory.
---
 index.html | 45 ++++++++++++++++++++-------------------------
 1 file changed, 20 insertions(+), 25 deletions(-)

diff --git a/index.html b/index.html
index 4505aca3..8720fd91 100644
--- a/index.html
+++ b/index.html
@@ -2577,22 +2577,25 @@ <h3>
             <p>
 All members of the <code>@context</code> property SHOULD exist in the DID
 specification registries [[DID-SPEC-REGISTRIES]] in order to achieve
-interoperability across different representations.
+interoperability across different representations. If a member does not exist
+in the DID specification registries, then the <a>DID document</a> might not be
+interoperable across representations.
             </p>
 
             <p>
-If a member does not exist in the DID specification registries, then the
-<a>DID document</a> might not be interoperable across representations.
+It is RECOMMENDED that dereferencing each <a>URI</a> value of the
+<code>@context</code> property results in a document containing
+machine-readable information about the context. These URIs SHOULD be
+associated with a cryptographic hash of the content of the JSON-LD Context as
+part of registration in the DID Specification Registries [[DID-SPEC-REGISTRIES]].
             </p>
-
-            <p>
+          </dd>
+        </dl>
+        <p>
 Producers SHOULD NOT produce <a>DID documents</a> that contain properties not
 defined via the <code>@context</code>. Properties that are not defined via the
 <code>@context</code> MAY be dropped by Consumers.
-            </p>
-
-          </dd>
-        </dl>
+        </p>
 
       </section>
 
@@ -2611,20 +2614,12 @@ <h3>
         <dl>
           <dt>@context</dt>
           <dd>
-The value of the <code>@context</code> property MUST conform
-to the <a href="#production-0">JSON-LD Production Rules</a>.
-
-If more than one <a>URI</a> is
-provided, the <a>URIs</a> MUST be interpreted as an ordered set. It is
-RECOMMENDED that dereferencing each <a>URI</a> results in a document containing
-machine-readable information about the context. To enable interoperability
-with other representations, URLs registered in the
-DID Specification Registries [[DID-SPEC-REGISTRIES]] referring to
-JSON-LD Contexts SHOULD be associated with a cryptographic hash of
-the content of the JSON-LD Context. This ensures that the interpretation of the
-information by JSON-LD consumers will be the same as interpretations
-over other representations by other consumers that rely on the
-DID Specification Registries [[DID-SPEC-REGISTRIES]].
+            <p>
+The value of the <code>@context</code> property conforms to the
+<a href="#production-0">JSON-LD Production Rules</a>. If more than one
+<a>URI</a> is provided, the <a>URIs</a> MUST be interpreted as an
+<a data-cite="INFRA#ordered-set">ordered set</a>.
+            </p>
           </dd>
         </dl>
 
@@ -2639,8 +2634,8 @@ <h3>
         </p>
 
         <p>
-          Consumers SHOULD drop all properties from a DID Documents that
-          are not defined via the <code>@context</code>.
+Consumers SHOULD drop all properties from a DID Documents that are not defined
+via the <code>@context</code>.
         </p>
 
       </section>

From 717f38ab465be6827c7f9306559c13663abf5ff0 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 13 Oct 2020 14:43:55 +0100
Subject: [PATCH 40/89] Fix typo

---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 8720fd91..e33a8a90 100644
--- a/index.html
+++ b/index.html
@@ -2494,7 +2494,7 @@ <h2>
 
       <p>
 This section sets out the requirements for producing and consuming <a>DID
-documents</a> that are in plain JSON (as indicated by a <code>content-type</code>
+documents</a> that are in JSON-LD (as indicated by a <code>content-type</code>
 of <code>application/did+ld+json</code> in the resolver metadata).
       </p>
 

From 2a3ca5dc9045e71ea82c9b654201e241b99aefc9 Mon Sep 17 00:00:00 2001
From: Amy Guy <amy@rhiaro.co.uk>
Date: Sun, 18 Oct 2020 19:21:17 +0100
Subject: [PATCH 41/89] editorial: Add internal ref

Co-authored-by: Brent Zundel <brent.zundel@gmail.com>
---
 index.html | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/index.html b/index.html
index e33a8a90..dc28f9da 100644
--- a/index.html
+++ b/index.html
@@ -2634,8 +2634,8 @@ <h3>
         </p>
 
         <p>
-Consumers SHOULD drop all properties from a DID Documents that are not defined
-via the <code>@context</code>.
+Consumers SHOULD drop all properties from a <a>DID document</a> that are not
+defined via the <code>@context</code>.
         </p>
 
       </section>

From 8a69098cb516a9b915b22d849bc6da35732bd4b8 Mon Sep 17 00:00:00 2001
From: gjgd <7913565+gjgd@users.noreply.github.com>
Date: Tue, 27 Oct 2020 13:31:49 +0100
Subject: [PATCH 42/89] Remove proof property from example.

---
 index.html | 6 ------
 1 file changed, 6 deletions(-)

diff --git a/index.html b/index.html
index dc28f9da..75b6b9e1 100644
--- a/index.html
+++ b/index.html
@@ -2881,12 +2881,6 @@ <h4>DagCBOR</h4>
   ],
   "created": "2018-12-01T03:00:00Z",
   "id": "did:example:12D3KooWMHdrzcwpjbdrZs5GGqERAvcgqX3b5dpuPtPa9ot69yew",
-  "proof": {
-    "created": "2020-05-01T03:00:02Z",
-    "creator": "did:example:12D3KooWMHdrzcwpjbdrZs5GGqERAvcgqX3b5dpuPtPa9ot69yew; example:key=id=bafyreicubtx5wqo3nosc4cazrkctfhwd6rewezgpwoe4swirls4ebdhs2i",
-    "signatureValue": "o9r6LxgoGN8FoaeeUA6EdDcv12GvDzFEmCgjWzvpur2YSQyA8W2r0SSWUK+nH5tMqzaFLun6wwZ1Eot37amGDg==",
-    "type": "ed25519Signature2018"
-  },
   "verificationMethod": [
     {
       "curve": "ed25519",

From 04f500587e7aaf75b4e053c4ca6ffdf5e020dc4d Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sat, 3 Oct 2020 16:51:20 +0100
Subject: [PATCH 43/89] syntax: Move normative statements about method
 requirements to Method Schemes section (#384)

---
 index.html | 21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

diff --git a/index.html b/index.html
index 75b6b9e1..7f1412b7 100644
--- a/index.html
+++ b/index.html
@@ -770,12 +770,8 @@ <h3>DID Syntax</h3>
       </pre>
 
       <p>
-A <a>DID method</a> specification MUST further restrict the generic <a>DID</a>
-syntax by defining its own <code>method-name</code> and its own
-<code>method-specific-id</code> syntax. Case sensitivity and normalization of
-the value of the <code>method-specific-id</code> rule MUST be defined by the
-governing <a>DID method</a> specification. For more information, see Section
-<a href="#methods"></a>.
+For requirements on <a>DID methods</a> relating to the <a>DID</a> syntax, see
+Section <a href="#method-schemes"></a>.
       </p>
 
       <div class="note" title="Persistence">
@@ -3005,10 +3001,10 @@ <h2>Method Schemes</h2>
 maintained in the DID Methods Registry, which is part of [[?DID-SPEC-REGISTRIES]].
         </p>
         <p>
-  Authors of new <a>DID method</a> specifications are encouraged to add their
-  method names to the DID Method Registry so that other implementors
-  and members of the community have a place to see an overview of existing
-  <a>DID methods</a>.
+Authors of new <a>DID method</a> specifications are encouraged to add their
+method names to the DID Method Registry so that other implementors
+and members of the community have a place to see an overview of existing
+<a>DID methods</a>.
         </p>
       </div>
 
@@ -3017,6 +3013,11 @@ <h2>Method Schemes</h2>
 <code>method-specific-id</code> component of a <a>DID</a>.
       </p>
       <p>
+Case sensitivity and normalization of the value of the
+<code>method-specific-id</code> rule MUST be defined by the <a>DID method</a>
+specification.
+      </p>
+      <p>
 The <code>method-specific-id</code> value MUST be able to be generated without
 the use of a centralized registry service.
       </p>

From 9d24bc040b8ecff7f0fd4b127484453435f1a986 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sat, 3 Oct 2020 17:12:13 +0100
Subject: [PATCH 44/89] params: Refactor parameters table to make normative
 language more precise (#384)

---
 index.html | 55 ++++++++++++++++++++++++++----------------------------
 1 file changed, 26 insertions(+), 29 deletions(-)

diff --git a/index.html b/index.html
index 7f1412b7..22688ad3 100644
--- a/index.html
+++ b/index.html
@@ -836,14 +836,10 @@ <h2>DID Parameters</h2>
 the identifier for a <a>resource</a>.
         </p>
         <p>
-Some DID parameter names (for example, for service selection) are
-completely independent of any specific <a>DID method</a> and MUST always
-function the same way for all <a>DIDs</a>. Other DID parameter names (for
-example, for versioning) MAY be supported by certain <a>DID methods</a>, but
-MUST operate uniformly across those <a>DID methods</a> that do support them.
-        </p>
-        <p>
-The following table defines a set of DID parameter names.
+Some DID parameters are supported by all <a>DID methods</a> and others need
+not be. Where optional parameters are supported, they are expected to operate
+uniformly across the <a>DID methods</a> that do support them. Requirements
+which enable this are detailed in the following table.
         </p>
 
         <table class="simple">
@@ -865,9 +861,9 @@ <h2>DID Parameters</h2>
               </td>
               <td>
 A resource hash of the <a>DID document</a> to add integrity protection, as
-specified in [[?HASHLINK]]. The associated value MUST be an
-<a data-lt="ascii string">ASCII string</a>. <i>This parameter is
-non-normative.</i>
+specified in [[?HASHLINK]]. Support for this parameter is OPTIONAL. If
+present, the associated value MUST be an <a data-lt="ascii string">ASCII
+string</a>.
               </td>
             </tr>
             <tr>
@@ -875,8 +871,9 @@ <h2>DID Parameters</h2>
 <code><a>service</a></code>
               </td>
               <td>
-Identifies a service from the <a>DID document</a> by service ID. The
-associated value MUST be an <a data-lt="ascii string">ASCII string</a>.
+Identifies a service from the <a>DID document</a> by service ID. Support for
+this parameter is REQUIRED. The associated value MUST be an <a data-lt="ascii
+string">ASCII string</a>.
               </td>
             </tr>
             <tr>
@@ -885,9 +882,9 @@ <h2>DID Parameters</h2>
               </td>
               <td>
 Identifies a specific version of a <a>DID document</a> to be resolved (the
-version ID could be sequential, or a <a>UUID</a>, or method-specific). Note
-that this parameter might not be supported by all <a>DID methods</a>. The
-associated value MUST be an <a data-lt="ascii string">ASCII string</a>.
+version ID could be sequential, or a <a>UUID</a>, or method-specific). Support
+for this parameter is OPTIONAL. If present, the associated value MUST be an <a
+data-lt="ascii string">ASCII string</a>.
               </td>
             </tr>
 
@@ -896,14 +893,14 @@ <h2>DID Parameters</h2>
 <code>version-time</code>
               </td>
               <td>
-Identifies a certain version timestamp of a <a>DID document</a> to be
-resolved. That is, the <a>DID document</a> that was valid for a <a>DID</a> at
-a certain time. Note that this parameter might not be supported by all <a>DID
-methods</a>. The associated value MUST be an <a data-lt="ascii string">ASCII
-string</a> which is a valid XML datetime value, as defined in section 3.3.7 of
-<a href="https://www.w3.org/TR/xmlschema11-2/">W3C XML Schema Definition
-Language (XSD) 1.1 Part 2: Datatypes</a> [[XMLSCHEMA11-2]]. This datetime
-value MUST be normalized to UTC 00:00, as indicated by the trailing "Z".
+Identifies a certain version timestamp of a <a>DID document</a> to be resolved.
+That is, the <a>DID document</a> that was valid for a <a>DID</a> at a certain
+time. Support for this parameter is OPTIONAL. If present, the associated value
+MUST be an <a data-lt="ascii string">ASCII string</a> which is a valid XML
+datetime value, as defined in section 3.3.7 of <a
+href="https://www.w3.org/TR/xmlschema11-2/">W3C XML Schema Definition Language
+(XSD) 1.1 Part 2: Datatypes</a> [[XMLSCHEMA11-2]]. This datetime value MUST be
+normalized to UTC 00:00, as indicated by the trailing "Z".
               </td>
             </tr>
 
@@ -914,11 +911,11 @@ <h2>DID Parameters</h2>
               <td>
 A relative URI reference according to <a
 data-cite="RFC3986#section-4.2">RFC3986 Section 4.2</a>
-that identifies a resource at a <a>service endpoint</a>, which is selected
-from a <a>DID document</a> by using the <code>service</code> parameter. The
-associated value MUST be an <a data-lt="ascii string">ASCII string</a> and
-MUST use percent-encoding for certain characters as specified in <a
-data-cite="RFC3986#section-2.1">RFC3986 Section 2.1</a>.
+that identifies a resource at a <a>service endpoint</a>, which is selected from
+a <a>DID document</a> by using the <code>service</code> parameter. Support for
+this parameter is REQUIRED. The associated value MUST be an <a data-lt="ascii
+string">ASCII string</a> and MUST use percent-encoding for certain characters
+as specified in <a data-cite="RFC3986#section-2.1">RFC3986 Section 2.1</a>.
               </td>
             </tr>
           </tbody>

From bcbbe4c5b1d7ca3217b8267304fea2c10da85932 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sat, 3 Oct 2020 19:46:20 +0100
Subject: [PATCH 45/89] fragment: Move URL dereferencing bit to appropriate
 section (#384)

---
 index.html | 98 ++++++++++++++++++++++++++++--------------------------
 1 file changed, 50 insertions(+), 48 deletions(-)

diff --git a/index.html b/index.html
index 22688ad3..47f7920e 100644
--- a/index.html
+++ b/index.html
@@ -921,6 +921,19 @@ <h2>DID Parameters</h2>
           </tbody>
         </table>
 
+        <p>
+Implementers as well as <a>DID method</a> specification authors MAY use
+additional DID parameters that are not listed here. For maximum
+interoperability, it is RECOMMENDED that DID parameters use the official W3C
+DID Specification Registries mechanism [[DID-SPEC-REGISTRIES]], to avoid
+collision with other uses of the same DID parameter with different semantics.
+        </p>
+
+        <p>
+Additional considerations for processing these parameters are discussed in
+[[?DID-RESOLUTION]].
+        </p>
+
         <p>
 Two example <a>DID URLs</a> using the <code><a>service</a></code> and
 <code>version-time</code> DID parameters are shown below.
@@ -935,11 +948,21 @@ <h2>DID Parameters</h2>
         </pre>
 
         <p>
-Implementers as well as <a>DID method</a> specification authors MAY use
-additional DID parameters that are not listed here. For maximum
-interoperability, it is RECOMMENDED that DID parameters use the official W3C
-DID Specification Registries mechanism [[DID-SPEC-REGISTRIES]], to avoid
-collision with other uses of the same DID parameter with different semantics.
+Adding a DID parameter to a <a>DID URL</a> means that the parameter becomes
+part of an identifier for a <a>resource</a> (the <a>DID document</a> or other).
+Alternatively, the <a>DID resolution</a> and the <a>DID URL dereferencing</a>
+functions can also be influenced by passing input metadata to a <a>DID
+resolver</a> that are not part of the DID URL. (See <a
+href="#did-resolution-input-metadata-properties"></a>). Such input
+metadata could for example control caching
+or the desired encoding of a resolution result. This is comparable to HTTP,
+where certain parameters could either be included in an HTTP URL, or
+alternatively passed as HTTP headers during the dereferencing process. The
+important distinction is that DID parameters that are part of the <a>DID URL</a>
+should be used to specify <i>what <a>resource</a> is being identified</i>,
+whereas input metadata that is not part of the <a>DID URL</a>
+should be use to control <i>how that <a>resource</a> is resolved or
+dereferenced</i>.
         </p>
 
         <p>
@@ -949,30 +972,8 @@ <h2>DID Parameters</h2>
         </p>
 
         <p>
-DID parameters SHOULD NOT be used if the same functionality can be expressed
-by passing input metadata to a <a>DID resolver</a> (see <a
-href="#did-resolution-input-metadata-properties"></a>), and if there is no need
-to construct a URI for use as a link, or as a <a>resource</a> in RDF / JSON-LD
-documents.
-        </p>
-
-        <p>
-Additional considerations for processing these parameters are discussed in
-[[?DID-RESOLUTION]].
-        </p>
-
-        <p class="note" title="DID parameters and DID resolution">
-The <a>DID resolution</a> and the <a>DID URL dereferencing</a> functions can
-be influenced by passing input metadata to a <a>DID resolver</a> that are
-not part of the DID URL. (See <a
-href="#did-resolution-input-metadata-properties"></a>). This is comparable to
-HTTP, where certain parameters could either be included in an HTTP URL, or
-alternatively passed as HTTP headers during the dereferencing process. The
-important distinction is that DID parameters that are part of the <a>DID
-URL</a> should be used to specify <em>what <a>resource</a> is being
-identified</em>, whereas input metadata that is not part of the <a>DID URL</a>
-should be use to control <em>how that <a>resource</a> is resolved or
-dereferenced</em>.
+It is expected that DID parameters will <em>not</em> be used if the same
+functionality can be expressed by passing input metadata to a DID resolver.
         </p>
 
       </section>
@@ -1020,15 +1021,18 @@ <h2>Query</h2>
         <h2>Fragment</h2>
 
         <p>
-A <a>DID fragment</a> is used as method-independent reference into a <a>DID Document</a> or external resource.
+A <a>DID fragment</a> is used as method-independent reference into a <a>DID
+document</a> or external resource.
         </p>
 
-<p>
-<a>DID fragment</a> syntax and semantics are identical to a generic URI fragment
-and  MUST conform to <a data-cite="RFC3986#section-3.5">RFC&nbsp;3986, section 3.5</a>.
-To dereference a <a>DID fragment</a>, the complete <a>DID URL</a> including the
-<a>DID fragment</a> MUST be used as input to the <a>DID URL dereferencing</a>
-function. For more information, see <a href="#did-url-dereferencing"></a>.
+        <p>
+<a>DID fragment</a> syntax and semantics are identical to a generic URI
+fragment and MUST conform to <a data-cite="RFC3986#section-3.5">RFC&nbsp;3986,
+section 3.5</a>.
+        </p>
+        <p>
+For information about how to dereference a <a>DID fragment</a>, see
+<a href="#did-url-dereferencing"></a>.
         </p>
 
         <p>
@@ -1036,8 +1040,6 @@ <h2>Fragment</h2>
 that are more restrictive than the generic rules in this section.
         </p>
 
-
-
         <p>
 In order to maximize interoperability, implementers are urged to ensure that
 <a>DID fragments</a> are interpreted in the same way across representations (as
@@ -3517,12 +3519,11 @@ <h2>
 The DID URL dereferencing function dereferences a <a>DID URL</a> into
 a resource with contents depending on the <a>DID URL</a>'s components,
 including the <a>DID method</a>, method-specific identifier, path, query,
-and fragment. This process depends on <a>DID resolution</a>
-of the <a>DID</a> contained in the <a>DID URL</a>.
-The details of how this
-process is accomplished are outside the scope of this specification, but all
-conformant implementations MUST implement a function which has the
-following abstract form:
+and fragment. This process depends on <a>DID resolution</a> of the <a>DID</a>
+contained in the <a>DID URL</a>.
+The details of how this process is accomplished are outside the scope of this
+specification, but all conformant implementations MUST implement a function
+which has the following abstract form:
         </p>
 
         <p><code>
@@ -3540,16 +3541,17 @@ <h2>
             </dt>
             <dd>
 A conformant <a>DID URL</a> as a single string. This is the <a>DID URL</a> to
-dereference. This input is REQUIRED.
+dereference. To dereference a <a>DID fragment</a>, the complete <a>DID URL</a>
+including the <a>DID fragment</a> MUST be used. This input is REQUIRED.
             </dd>
             <dt>
 did-url-dereferencing-input-metadata
             </dt>
             <dd>
 A <a href="metadata-structure">metadata structure</a> consisting of input
-options to the <code>dereference</code> function in addition to the <code>did-url</code>
-itself. Properties defined by this specification are in <a
-href="#did-url-dereferencing-input-metadata-properties"></a>. This input is
+options to the <code>dereference</code> function in addition to the
+<code>did-url</code> itself. Properties defined by this specification are in
+<a href="#did-url-dereferencing-input-metadata-properties"></a>. This input is
 REQUIRED, but the structure MAY be empty.
             </dd>
         </dl>

From b0f38ec897ed02eea1a4420bf12f2c64db311703 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 18 Oct 2020 19:03:58 +0100
Subject: [PATCH 46/89] parameters: Restore language about parameters being
 independant of DID methods (thanks @peacekeeper)

---
 index.html | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/index.html b/index.html
index 47f7920e..dae539d3 100644
--- a/index.html
+++ b/index.html
@@ -836,10 +836,12 @@ <h2>DID Parameters</h2>
 the identifier for a <a>resource</a>.
         </p>
         <p>
-Some DID parameters are supported by all <a>DID methods</a> and others need
-not be. Where optional parameters are supported, they are expected to operate
-uniformly across the <a>DID methods</a> that do support them. Requirements
-which enable this are detailed in the following table.
+Some DID parameters are completely independent of of any specific <a>DID
+method</a>, and function the same way for all <a>DIDs</a>. Other DID
+parameters are not necessarily supported by all <a>DID methods</a>. Where
+optional parameters are supported, they are expected to operate uniformly
+across the <a>DID methods</a> that do support them. Requirements which enable
+this are detailed in the following table.
         </p>
 
         <table class="simple">

From 3c836fe8cdb36f9acbf8f5da399d13204701b5fe Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 18 Oct 2020 19:05:45 +0100
Subject: [PATCH 47/89] parameters: Explicitly note that hl is non-normative,
 thanks @iherman

---
 index.html | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/index.html b/index.html
index dae539d3..8902e091 100644
--- a/index.html
+++ b/index.html
@@ -863,9 +863,9 @@ <h2>DID Parameters</h2>
               </td>
               <td>
 A resource hash of the <a>DID document</a> to add integrity protection, as
-specified in [[?HASHLINK]]. Support for this parameter is OPTIONAL. If
-present, the associated value MUST be an <a data-lt="ascii string">ASCII
-string</a>.
+specified in [[?HASHLINK]]. This parameter is non-normative. Support for this
+parameter is OPTIONAL. If present, the associated value MUST be an
+<a data-lt="ascii string">ASCII string</a>.
               </td>
             </tr>
             <tr>

From b47ebe268c584a394a0b4c7b6f7094c3c8b68015 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 18 Oct 2020 19:10:28 +0100
Subject: [PATCH 48/89] parameters: Reorder table so required params are first,
 optional are next, and the non-normative one is last.

---
 index.html | 28 +++++++++++++---------------
 1 file changed, 13 insertions(+), 15 deletions(-)

diff --git a/index.html b/index.html
index 8902e091..041d10a5 100644
--- a/index.html
+++ b/index.html
@@ -859,13 +859,16 @@ <h2>DID Parameters</h2>
           <tbody>
             <tr>
               <td>
-<code>hl</code>
+<code>relative-ref</code>
               </td>
               <td>
-A resource hash of the <a>DID document</a> to add integrity protection, as
-specified in [[?HASHLINK]]. This parameter is non-normative. Support for this
-parameter is OPTIONAL. If present, the associated value MUST be an
-<a data-lt="ascii string">ASCII string</a>.
+A relative URI reference according to <a
+data-cite="RFC3986#section-4.2">RFC3986 Section 4.2</a>
+that identifies a resource at a <a>service endpoint</a>, which is selected from
+a <a>DID document</a> by using the <code>service</code> parameter. Support for
+this parameter is REQUIRED. The associated value MUST be an <a data-lt="ascii
+string">ASCII string</a> and MUST use percent-encoding for certain characters
+as specified in <a data-cite="RFC3986#section-2.1">RFC3986 Section 2.1</a>.
               </td>
             </tr>
             <tr>
@@ -889,7 +892,6 @@ <h2>DID Parameters</h2>
 data-lt="ascii string">ASCII string</a>.
               </td>
             </tr>
-
             <tr>
               <td>
 <code>version-time</code>
@@ -905,19 +907,15 @@ <h2>DID Parameters</h2>
 normalized to UTC 00:00, as indicated by the trailing "Z".
               </td>
             </tr>
-
             <tr>
               <td>
-<code>relative-ref</code>
+<code>hl</code>
               </td>
               <td>
-A relative URI reference according to <a
-data-cite="RFC3986#section-4.2">RFC3986 Section 4.2</a>
-that identifies a resource at a <a>service endpoint</a>, which is selected from
-a <a>DID document</a> by using the <code>service</code> parameter. Support for
-this parameter is REQUIRED. The associated value MUST be an <a data-lt="ascii
-string">ASCII string</a> and MUST use percent-encoding for certain characters
-as specified in <a data-cite="RFC3986#section-2.1">RFC3986 Section 2.1</a>.
+A resource hash of the <a>DID document</a> to add integrity protection, as
+specified in [[?HASHLINK]]. This parameter is non-normative. Support for this
+parameter is OPTIONAL. If present, the associated value MUST be an
+<a data-lt="ascii string">ASCII string</a>.
               </td>
             </tr>
           </tbody>

From 5dd10b5a3654f7be046ddb810ea35733a494ab59 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Mon, 26 Oct 2020 15:13:29 +0000
Subject: [PATCH 49/89] parameters: rearrange section to make more sense

---
 index.html | 48 ++++++++++++++++++++++--------------------------
 1 file changed, 22 insertions(+), 26 deletions(-)

diff --git a/index.html b/index.html
index 041d10a5..5216bf4b 100644
--- a/index.html
+++ b/index.html
@@ -929,6 +929,17 @@ <h2>DID Parameters</h2>
 collision with other uses of the same DID parameter with different semantics.
         </p>
 
+        <p>
+DID parameters MAY be used if there is a clear use case where the parameter
+needs to be part of a URI that can be used as a link, or as a <a>resource</a>
+in RDF / JSON-LD documents.
+        </p>
+
+        <p>
+It is expected that DID parameters will <em>not</em> be used if the same
+functionality can be expressed by passing input metadata to a DID resolver.
+        </p>
+
         <p>
 Additional considerations for processing these parameters are discussed in
 [[?DID-RESOLUTION]].
@@ -947,33 +958,18 @@ <h2>DID Parameters</h2>
 did:foo:21tDAKCERh95uGgKbJNHYp?version-time=2002-10-10T17:00:00Z
         </pre>
 
-        <p>
-Adding a DID parameter to a <a>DID URL</a> means that the parameter becomes
-part of an identifier for a <a>resource</a> (the <a>DID document</a> or other).
-Alternatively, the <a>DID resolution</a> and the <a>DID URL dereferencing</a>
-functions can also be influenced by passing input metadata to a <a>DID
-resolver</a> that are not part of the DID URL. (See <a
-href="#did-resolution-input-metadata-properties"></a>). Such input
-metadata could for example control caching
-or the desired encoding of a resolution result. This is comparable to HTTP,
-where certain parameters could either be included in an HTTP URL, or
+        <p class="note" title="DID parameters and DID resolution">
+The <a>DID resolution</a> and the <a>DID URL dereferencing</a> functions can
+be influenced by passing input metadata to a <a>DID resolver</a> that are
+not part of the DID URL. (See <a
+href="#did-resolution-input-metadata-properties"></a>). This is comparable to
+HTTP, where certain parameters could either be included in an HTTP URL, or
 alternatively passed as HTTP headers during the dereferencing process. The
-important distinction is that DID parameters that are part of the <a>DID URL</a>
-should be used to specify <i>what <a>resource</a> is being identified</i>,
-whereas input metadata that is not part of the <a>DID URL</a>
-should be use to control <i>how that <a>resource</a> is resolved or
-dereferenced</i>.
-        </p>
-
-        <p>
-DID parameters MAY be used if there is a clear use case where the parameter
-needs to be part of a URI that can be used as a link, or as a <a>resource</a>
-in RDF / JSON-LD documents.
-        </p>
-
-        <p>
-It is expected that DID parameters will <em>not</em> be used if the same
-functionality can be expressed by passing input metadata to a DID resolver.
+important distinction is that DID parameters that are part of the <a>DID
+URL</a> should be used to specify <em>what <a>resource</a> is being
+identified</em>, whereas input metadata that is not part of the <a>DID URL</a>
+should be use to control <em>how that <a>resource</a> is resolved or
+dereferenced</em>.
         </p>
 
       </section>

From 87ababfe8bdf4055b48a2026d87c1b2bf7874f65 Mon Sep 17 00:00:00 2001
From: Markus Sabadello <markus@danubetech.com>
Date: Mon, 19 Oct 2020 13:21:01 +0200
Subject: [PATCH 50/89] Remove "unauthorized" and add "deactivated" error code.

Addresses https://github.com/w3c/did-core/issues/402.

Signed-off-by: Markus Sabadello <markus@danubetech.com>
---
 index.html | 26 +++++++++++++-------------
 1 file changed, 13 insertions(+), 13 deletions(-)

diff --git a/index.html b/index.html
index 5216bf4b..fda943c8 100644
--- a/index.html
+++ b/index.html
@@ -3447,18 +3447,18 @@ <h3>
 to valid syntax. (See <a href="#did-syntax"></a>.)
                         </dd>
                         <dt>
-unauthorized
+not-found
                         </dt>
                         <dd>
-The caller is not authorized to resolve this <a>DID</a> with this <a>DID
-resolver</a>.
+The <a>DID resolver</a> was unable to find the <a>DID document</a>
+resulting from this resolution request.
                         </dd>
                         <dt>
-not-found
+deactivated
                         </dt>
                         <dd>
-The <a>DID resolver</a> was unable to return the <a>DID document</a>
-resulting from this resolution request.
+The <a>DID</a> supplied to the <a>DID resolution</a> function has been
+deactivated. (See <a href="#deactivate"></a>.)
                         </dd>
                     </dl>
                 </dd>
@@ -3669,19 +3669,19 @@ <h3>
 not conform to valid syntax. (See <a href="#did-url-syntax"></a>.)
                         </dd>
                         <dt>
-unauthorized
+not-found
                         </dt>
                         <dd>
-The caller is not authorized to dereference the given <a>DID URL</a> with the
-given <a>DID URL dereferencer</a>.
+The <a>DID URL dereferencer</a> was unable to find the
+<code>content-stream</code> resulting from this dereferencing request.
                         </dd>
                         <dt>
-not-found
+deactivated
                         </dt>
                         <dd>
-The <a>DID URL dereferencer</a> was unable to return the
-<code>content-stream</code> resulting from this dereferencing request.
-                        </dd>
+The <a>DID</a> in the <a>DID URL</a> supplied to the <a>DID URL
+dereferencing</a> function has been deactivated. (See
+<a href="#deactivate"></a>.)
                     </dl>
                 </dd>
             </dl>

From 84e08e48d55e154a8c32d01276621fdcce694b01 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 25 Oct 2020 12:38:27 +0000
Subject: [PATCH 51/89] editorial: fix stray link to issues

---
 index.html | 2 --
 1 file changed, 2 deletions(-)

diff --git a/index.html b/index.html
index fda943c8..58e64712 100644
--- a/index.html
+++ b/index.html
@@ -1636,8 +1636,6 @@ <h3>Key types and formats</h3>
 specific verification method types.
 </p>
 
-        https://github.com/w3c/did-core/issues/
-
         <table class="simple" id="public-key-support">
           <caption>
 This table defines the support for public key expression in a DID document.

From 58225f14c334c97e54e71c4a2b457db7509b5806 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 25 Oct 2020 13:20:10 +0000
Subject: [PATCH 52/89] editorial: Clarify importance of ordering of property
 values, for #411

---
 index.html | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/index.html b/index.html
index 58e64712..3a376c29 100644
--- a/index.html
+++ b/index.html
@@ -1253,6 +1253,16 @@ <h1>Core Properties</h1>
       </li>
     </ul>
 
+    <p class="note" title="Ordering of values">
+As a result of the data model being defined using terminology from [[INFRA]],
+property values which can contain more than one item, such as
+<a data-cite="INFRA#lists">lists</a> and <a
+data-cite="INFRA#ordered-set">sets</a>, are explicitly ordered. For the
+purposes of this specification, unless otherwise stated, ordering is not
+important and implementations are not expected to produce or consume
+deterministically ordered values.
+    </p>
+
     <section>
       <h2>DID Subject</h2>
 

From 09b4d6eb6a06bce8e3409c49f9a9a46c7b53be4f Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 25 Oct 2020 10:04:31 +0000
Subject: [PATCH 53/89] editorial: update JSON-LD reference, for #403

---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 3a376c29..27d1d43d 100644
--- a/index.html
+++ b/index.html
@@ -2487,7 +2487,7 @@ <h2>
       </h2>
 
       <p>
-[[!JSON-LD]] is a JSON-based format used to serialize
+[[!JSON-LD11]] is a JSON-based format used to serialize
 <a href="http://www.w3.org/TR/ld-glossary/#linked-data">Linked Data</a>.
       </p>
 

From 8a02a41fdaad19be0d44d72bb96028d74512b0a6 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 25 Oct 2020 11:31:28 +0000
Subject: [PATCH 54/89] resolution: link for conforming DID doc, #403

---
 index.html | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/index.html b/index.html
index 27d1d43d..943a39c9 100644
--- a/index.html
+++ b/index.html
@@ -3341,8 +3341,8 @@ <h2>
             </dt>
             <dd>
 If the resolution is successful, and if the <code>resolve</code> function was
-called, this MUST be a <a>DID document</a> conforming to the abstract data
-model. If the resolution is unsuccessful, this value MUST be empty.
+called, this MUST be a <a>conforming DID document</a>. If the resolution is
+unsuccessful, this value MUST be empty.
             </dd>
             <dt>
 did-document-stream

From 12873fd1dcba7b06d32f6eaa443d35aaffabaf14 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 25 Oct 2020 11:36:24 +0000
Subject: [PATCH 55/89] security: Remove unnecessary phrase, #403

---
 index.html | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/index.html b/index.html
index 943a39c9..028dfcb3 100644
--- a/index.html
+++ b/index.html
@@ -4080,9 +4080,9 @@ <h2>
       </p>
 
       <p>
-Solutions to this problem (and there are many) should be defined in separate
-specifications that reference this specification. It is strongly recommended
-that such specifications carefully consider the:
+Solutions to this problem should be defined in separate specifications that
+reference this specification. It is strongly recommended that such
+specifications carefully consider the:
       </p>
 
       <ul>

From a06028e7764c67935d3f6844327a7ae06d5edc06 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 25 Oct 2020 11:47:51 +0000
Subject: [PATCH 56/89] privacy: Add reference to Privacy by Design and clarify
 source of quote, #403

---
 common.js  |  9 +++++++++
 index.html | 19 ++++++++++---------
 2 files changed, 19 insertions(+), 9 deletions(-)

diff --git a/common.js b/common.js
index dffd56cc..a2a7e4f5 100644
--- a/common.js
+++ b/common.js
@@ -159,6 +159,15 @@ var ccg = {
       ],
       status: "Draft Community Group Report",
       publisher: "Credentials Community Group"
+    },
+    "PRIVACY-BY-DESIGN": {
+      title: "Privacy by Design",
+      href: "https://iapp.org/media/pdf/resource_center/pbd_implement_7found_principles.pdf",
+      authors: [
+        "Ann Cavoukian"
+      ],
+      date: "2011",
+      publisher: "Information and Privacy Commissioner"
     }
   }
 };
diff --git a/index.html b/index.html
index 028dfcb3..dd4e70ad 100644
--- a/index.html
+++ b/index.html
@@ -4182,15 +4182,16 @@ <h1>
 
     <p>
 It is critically important to apply the principles of Privacy by Design
-to all aspects of the <a>decentralized identifier</a> architecture, because
-<a>DIDs</a> and <a>DID documents</a> are, by design, administered directly by
-the <a>DID controller(s)</a>. There is no registrar, hosting company, or other
-intermediate service provider to recommend or apply additional privacy
-safeguards. The authors of this specification have applied all seven Privacy by
-Design principles throughout its development. For example, privacy in this
-specification is preventative not remedial, and privacy is an embedded default.
-Furthermore, the <a>decentralized identifier</a> architecture by itself embodies
-principle #7, "Respect for user privacy &mdash; keep it user-centric."
+[[PRIVACY-BY-DESIGN]] to all aspects of the <a>decentralized identifier</a>
+architecture, because <a>DIDs</a> and <a>DID documents</a> are, by design,
+administered directly by the <a>DID controller(s)</a>. There is no registrar,
+hosting company, or other intermediate service provider to recommend or apply
+additional privacy safeguards. The authors of this specification have applied
+all seven Privacy by Design principles throughout its development. For example,
+privacy in this specification is preventative not remedial, and privacy is an
+embedded default. Furthermore, the <a>decentralized identifier</a>
+architecture by itself embodies Privacy by Design principle #7: "Respect for
+user privacy &mdash; keep it user-centric."
     </p>
 
     <p>

From 953bfe6d49f08e9368b8823dafe9b20b124c0c10 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 25 Oct 2020 11:59:01 +0000
Subject: [PATCH 57/89] references: fix versions, internal refs and normative
 status, #403

---
 common.js  |  4 ++--
 index.html | 17 +++++++----------
 2 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/common.js b/common.js
index a2a7e4f5..db31fb4e 100644
--- a/common.js
+++ b/common.js
@@ -43,7 +43,7 @@ var ccg = {
     },
     "DID-USE-CASES": {
       title: "Decentralized Identifier Use Cases",
-      href: "https://w3c.github.io/did-use-cases/",
+      href: "https://www.w3.org/TR/did-use-cases/",
       authors: [
       	"Joe Andrieu",
         "Kim Hamilton Duffy",
@@ -113,7 +113,7 @@ var ccg = {
     "HASHLINK": {
       title: "Cryptographic Hyperlinks",
       date: "December 2018",
-      href: "https://tools.ietf.org/html/draft-sporny-hashlink-02",
+      href: "https://tools.ietf.org/html/draft-sporny-hashlink-05",
       authors: [
         "Manu Sporny"
       ],
diff --git a/index.html b/index.html
index dd4e70ad..e5c3b041 100644
--- a/index.html
+++ b/index.html
@@ -1629,7 +1629,7 @@ <h3>Key types and formats</h3>
 
         <p class="issue">
 The Working Group is still debating whether the base encoding format used will
-be Base58 (Bitcoin) [[BASE58]], base64url [[RFC7515]], or base16 (hex)
+be Base58 (Bitcoin) [[?BASE58]], base64url [[RFC7515]], or base16 (hex)
 [[RFC4648]]. The entries in the table below currently assume PEM and Base58
 (Bitcoin), but might change to base64url and/or base16 (hex) after the group
 achieves consensus on this particular issue.
@@ -1680,7 +1680,7 @@ <h3>Key types and formats</h3>
 Ed25519 public key values MUST either be encoded as a JWK [[RFC7517]]
 using the <code>publicKeyJwk</code> or be
 encoded as the raw 32-byte public key value in Base58 Bitcoin format
-[[BASE58]] using the <code>publicKeyBase58</code> property.
+[[?BASE58]] using the <code>publicKeyBase58</code> property.
               </td>
             </tr>
             <tr>
@@ -1691,7 +1691,7 @@ <h3>Key types and formats</h3>
 Secp256k1 public key values MUST either be encoded as a JWK [[RFC7517]]
 using the <code>publicKeyJwk</code> or be
 encoded as the raw 33-byte public key value in Base58
-Bitcoin format [[BASE58]] using the <code>publicKeyBase58</code> property.
+Bitcoin format [[?BASE58]] using the <code>publicKeyBase58</code> property.
               </td>
             </tr>
             <tr>
@@ -1702,7 +1702,7 @@ <h3>Key types and formats</h3>
 Curve25519 (also known as X25519) public key values MUST either be encoded
 as a JWK [[RFC7517]] using the <code>publicKeyJwk</code> or be
 encoded as the raw 32-byte public key value in Base58
-Bitcoin format [[BASE58]] using the <code>publicKeyBase58</code> property.
+Bitcoin format [[?BASE58]] using the <code>publicKeyBase58</code> property.
               </td>
             </tr>
             <tr>
@@ -4712,8 +4712,7 @@ <h2>application/did+json</h2>
       <p>
 Fragment identifiers used with
 <a href="#application-did-json">application/did+json</a> are treated
-according to the rules defined in
-<a data-cite="DID-CORE#fragment">DID Core v1.0, Fragment</a> [[DID-CORE]].
+according to the rules defined in <a href="#fragment"></a>.
       </p>
     </section>
 
@@ -4838,8 +4837,7 @@ <h2>application/did+cbor</h2>
        <p>
 Fragment identifiers used with
 <a href="#application-did-json">application/did+cbor</a> are treated
-according to the rules defined in
-<a data-cite="DID-CORE#fragment">DID Core v1.0, Fragment</a> [[DID-CORE]].
+according to the rules defined in <a href="#fragment"></a>.
       </p>
     </section>
 
@@ -4899,8 +4897,7 @@ <h2>application/did+dag+cbor</h2>
        <p>
 Fragment identifiers used with
 <a href="#application-did-json">application/did+cbor</a> are treated
-according to the rules defined in
-<a data-cite="DID-CORE#fragment">DID Core v1.0, Fragment</a> [[DID-CORE]].
+according to the rules defined in <a href="#fragment"></a>.
       </p>
     </section>
 

From f2faaebc25c2bf06259590fa59a56c62f8efb6df Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Sun, 25 Oct 2020 11:59:47 +0000
Subject: [PATCH 58/89] iana: fix typos in cbor links

---
 index.html | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/index.html b/index.html
index e5c3b041..ec945b57 100644
--- a/index.html
+++ b/index.html
@@ -4836,7 +4836,7 @@ <h2>application/did+cbor</h2>
 
        <p>
 Fragment identifiers used with
-<a href="#application-did-json">application/did+cbor</a> are treated
+<a href="#application-did-cbor">application/did+cbor</a> are treated
 according to the rules defined in <a href="#fragment"></a>.
       </p>
     </section>
@@ -4896,7 +4896,7 @@ <h2>application/did+dag+cbor</h2>
 
        <p>
 Fragment identifiers used with
-<a href="#application-did-json">application/did+cbor</a> are treated
+<a href="#application-did-dag-cbor">application/did+dag+cbor</a> are treated
 according to the rules defined in <a href="#fragment"></a>.
       </p>
     </section>

From d1a398f58058475fb7ca321840d0850877f7179d Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Mon, 26 Oct 2020 12:49:38 +0000
Subject: [PATCH 59/89] privacy: Add privacy concerns about 'type' (and
 similar) property.

Per WG resolution at https://www.w3.org/2019/did-wg/Meetings/Minutes/2020-10-06-did#resolution1
---
 index.html | 28 ++++++++++++++++++++++++++++
 1 file changed, 28 insertions(+)

diff --git a/index.html b/index.html
index ec945b57..8e3ffb96 100644
--- a/index.html
+++ b/index.html
@@ -4269,6 +4269,34 @@ <h2>
       </p>
     </section>
 
+    <section>
+      <h2>
+Assigning a type to the DID subject
+      </h2>
+      <p>
+It is dangerous to add properties to the <a>DID document</a> that can be used
+to indicate, explicitly or through inference, what <em>type</em> or nature of
+thing the <a>DID subject</a> is, particularly if the <a>DID subject</a> is a
+person.
+      </p>
+      <p>
+Not only do such properties potentially result in personally identifiable
+information (see
+<a href="#keep-personally-identifiable-information-pii-private"></a>) or
+correlatable data (see <a href="#did-correlation-risks-and-pseudonymous-dids">
+</a> and <a href="#did-document-correlation-risks"></a>) being present in the
+<a>DID document</a>, but they can be used for grouping particular <a>DIDs</a>
+in such a way that they are included in or excluded from certain operations or
+functionalities.
+      </p>
+      <p>
+To minimize these risks, all properties in a <a>DID document</a> should be
+for expressing cryptographic material or verification methods related to
+using the <a>DID</a>.
+      </p>
+
+    </section>
+
     <section>
       <h2>
 Herd Privacy

From 772aabe1e93f4413e33e513cc3d59a782b1712d2 Mon Sep 17 00:00:00 2001
From: Amy Guy <amy@rhiaro.co.uk>
Date: Mon, 2 Nov 2020 12:06:33 +0000
Subject: [PATCH 60/89] Extend 'type' privacy concerns

Co-authored-by: Brent Zundel <brent.zundel@gmail.com>
---
 index.html | 13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

diff --git a/index.html b/index.html
index 8e3ffb96..dbb757e6 100644
--- a/index.html
+++ b/index.html
@@ -4290,9 +4290,16 @@ <h2>
 functionalities.
       </p>
       <p>
-To minimize these risks, all properties in a <a>DID document</a> should be
-for expressing cryptographic material or verification methods related to
-using the <a>DID</a>.
+Including <em>type</em> information in a <a>DID Document</a> can
+result in personal privacy harms even for <a>DID Subjects</a> that are
+non-person entities, such as IoT devices. The aggregation of such
+information around a <a>DID Controller</a> could serve as a form of
+digital fingerprint and this is best avoided.
+      </p>
+      <p>
+To minimize these risks, all properties in a <a>DID document</a> ought to be
+for expressing cryptographic material, endpoints, or verification methods related
+to using the <a>DID</a>.
       </p>
 
     </section>

From 3ba71dfaf3cfcd1a7e0f429753287dac250cc951 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 27 Oct 2020 12:13:01 +0000
Subject: [PATCH 61/89] editorial: Remove closed issues, #403

---
 index.html | 33 ---------------------------------
 1 file changed, 33 deletions(-)

diff --git a/index.html b/index.html
index dbb757e6..9efdc4a7 100644
--- a/index.html
+++ b/index.html
@@ -2300,12 +2300,6 @@ <h1>Core Representations</h1>
 through the content of the <a>DID document</a> alone.
     </p>
 
-    <p class="issue" data-number="203">
-This requirement depends on the return of DID document metadata that still needs
-to be defined by this specification. Once defined, that should be linked from
-here.
-    </p>
-
     <p>
 The production and consumption rules in this section apply to all
 implementations seeking to be fully compatible with independent implementations
@@ -2315,11 +2309,6 @@ <h1>Core Representations</h1>
 for more information.
     </p>
 
-    <p class="issue" data-number="207">
-A link to a section on extensibility and conformance as it applies to data
-representations should be added here once that section has been written.
-    </p>
-
     <section>
       <h2>
 JSON
@@ -2374,11 +2363,6 @@ <h3>Production</h3>
           </li>
         </ul>
 
-        <p class="issue" data-number="204">
-An "empty" value is not specified by this document. It seems to imply a null
-value, but this is unclear.
-        </p>
-
         <p>
 Implementers producing JSON are advised to ensure that their algorithms are
 aligned with the <a data-cite="INFRA#json">JSON serialization rules</a> in
@@ -2404,14 +2388,6 @@ <h3>
 Consumption
         </h3>
 
-        <p class="issue" data-number="204">
-In this section and we use the term "property name" to refer to the string that
-represents the property itself, but this specification still needs to define a
-concrete term for such aspects of a property of a DID document. We also need a
-concrete term for "the document itself" as opposed to "the collection or
-properties of the document".
-        </p>
-
         <p>
 The top-level element MUST be a JSON object. Any other data type at the top
 level is an error and MUST be rejected. The top-level JSON object represents
@@ -2457,11 +2433,6 @@ <h3>
 consumption rules</a> in the [[INFRA]] specification.
         </p>
 
-        <p class="issue" data-number="204">
-An "empty" value is not specified by this document. It seems to imply a null
-value, but this is unclear.
-        </p>
-
         <p>
 The value of the <code>@context</code> object member MUST be ignored as this is
 reserved for JSON-LD consumers.
@@ -4647,24 +4618,20 @@ <h1>Current Issues</h1>
     <div class="issue" data-number="33">Cheap DIDs and the option to migrate DIDs between ledgers using standard DID Deprecation Registries</div>
     <div class="issue" data-number="58">Registry handling</div>
     <div class="issue" data-number="72">Privacy Considerations - Specifically call out GDPR</div>
-    <div class="issue" data-number="94">Create DID explainer</div>
     <div class="issue" data-number="104">Horizontal Review: Internationalization self test</div>
     <div class="issue" data-number="105">Horizontal Review: Accessibility self test</div>
     <div class="issue" data-number="118">Specification needs to be compliant with WCAG 2.0</div>
     <div class="issue" data-number="119">Horizontal Review: offer review opportunity to TAG</div>
-    <div class="issue" data-number="122">When is a DID subject not a DID controller (if ever)?</div>
     <div class="issue" data-number="151">Include discussion of eIDAS levels-of-assurance</div>
     <div class="issue" data-number="163">Uses of terms defined in the specification should be links to their definitions</div>
     <div class="issue" data-number="170">Public key "id" and "type" members duplicate JWK "kid" and "kty" members</div>
     <div class="issue" data-number="174">Underspecified semantics of "updated" property</div>
     <div class="issue" data-number="199">Clarification on what DIDs might identify</div>
-    <div class="issue" data-number="203">Define DID Document Metadata</div>
     <div class="issue" data-number="205">How to treat unknown properties</div>
     <div class="issue" data-number="208">IETF did+ld+json media type registration</div>
     <div class="issue" data-number="240">Should did-core restrict the use of JWK?</div>
     <div class="issue" data-number="249">How to mitigate the single source of failure wrt/ "Trust into the Universal Resolver"?</div>
     <div class="issue" data-number="253">Added DID resolution and dereferencing contracts.</div>
-    <div class="issue" data-number="261">Definition of the term "client" in regard to SSI principles</div>
     <div class="issue" data-number="267">Put key points up front</div>
     <div class="issue" data-number="282">Added CBOR section </div>
     <div class="issue" data-number="291">PING Horizontal Review</div>

From 69eeffb202bf2e614df5e7aa6f5cc88775fbfc78 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 27 Oct 2020 12:39:38 +0000
Subject: [PATCH 62/89] methods: Remove requirement about name length

We already have registered methods that violate this requirement;
and methods should be free to make their own choices about this.
For https://github.com/w3c/did-core/issues/403
---
 index.html | 4 ----
 1 file changed, 4 deletions(-)

diff --git a/index.html b/index.html
index 9efdc4a7..181ced12 100644
--- a/index.html
+++ b/index.html
@@ -2962,10 +2962,6 @@ <h2>Method Schemes</h2>
 publication.
       </p>
 
-      <p>
-The method name SHOULD be five characters or less.
-      </p>
-
       <div class="note" title="Unique DID method names">
         <p>
 Because there is no central authority for allocating or approving <a>DID

From f5ba78ce96c64378ba4a0e78389a8c9646701073 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 27 Oct 2020 12:46:23 +0000
Subject: [PATCH 63/89] methods: Remove req for few method-specific-id formats

This should be up to the DID method, doesn't make sense to
constrain it as it is internal to DID method (no affect on
interop); and "as possible" is not testable. See #384"
---
 index.html | 4 +---
 1 file changed, 1 insertion(+), 3 deletions(-)

diff --git a/index.html b/index.html
index 181ced12..71ab699f 100644
--- a/index.html
+++ b/index.html
@@ -2998,9 +2998,7 @@ <h2>Method Schemes</h2>
 
       <p>
 If needed, a method-specific <a>DID scheme</a> MAY define multiple
-<code>method-specific-id</code> formats. It is RECOMMENDED that a
-method-specific <a>DID scheme</a> define as few <code>method-specific-id</code>
-formats as possible.
+<code>method-specific-id</code> formats.
       </p>
 
       <p>

From 394513dde10f0ad53887ced52b3bacc2be208e5b Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 27 Oct 2020 19:11:12 +0000
Subject: [PATCH 64/89] references: DID Spec Registries needs to be
 informative, not rec-track, #403

---
 index.html | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/index.html b/index.html
index 71ab699f..5b22721e 100644
--- a/index.html
+++ b/index.html
@@ -925,7 +925,7 @@ <h2>DID Parameters</h2>
 Implementers as well as <a>DID method</a> specification authors MAY use
 additional DID parameters that are not listed here. For maximum
 interoperability, it is RECOMMENDED that DID parameters use the official W3C
-DID Specification Registries mechanism [[DID-SPEC-REGISTRIES]], to avoid
+DID Specification Registries mechanism [[?DID-SPEC-REGISTRIES]], to avoid
 collision with other uses of the same DID parameter with different semantics.
         </p>
 
@@ -1178,7 +1178,7 @@ <h2>Extensibility</h2>
       <ol>
         <li>
 For maximum interoperability, it is RECOMMENDED that extensions use the official
-W3C DID Specification Registries mechanism [[DID-SPEC-REGISTRIES]]. The use of
+W3C DID Specification Registries mechanism [[?DID-SPEC-REGISTRIES]]. The use of
 this mechanism for new properties or other extensions is the only specified method
 that ensures that two different representations will be able to work together.
         </li>
@@ -1191,7 +1191,7 @@ <h2>Extensibility</h2>
       <p class="note">
 It is always possible for two specific implementations to agree out-of-band to
 use a mutually understood extension or representation that is not recorded in
-the DID Core Registries [[DID-SPEC-REGISTRIES]]; interoperability between such
+the DID Core Registries [[?DID-SPEC-REGISTRIES]]; interoperability between such
 implementations and the larger ecosystem will be less reliable.
       </p>
     </section>
@@ -1438,7 +1438,7 @@ <h2>Verification Methods</h2>
 In order to maximize interoperability, support for public keys as verification
 methods is restricted: see <a href="#key-types-and-formats"></a>. For other
 types of verification method, the verification method SHOULD be registered in
-the [[DID-SPEC-REGISTRIES]].
+the [[?DID-SPEC-REGISTRIES]].
       </p>
 
       <p>
@@ -1484,7 +1484,7 @@ <h2>Verification Methods</h2>
 The value of the <code>type</code> property MUST be exactly one verification
 method type. In order to maximize global interoperability, the
 <a>verification method</a> type SHOULD be registered in the
-[[DID-SPEC-REGISTRIES]].
+[[?DID-SPEC-REGISTRIES]].
           </p>
           <p>
 The value of the <code>controller</code> property MUST be a <a
@@ -1623,7 +1623,7 @@ <h3>Key types and formats</h3>
 MUST NOT use any other key format than those listed in the
 <a href="#public-key-support">Public Key Support table</a>. For public key
 types that are not listed here, the type value and corresponding format
-property SHOULD be registered in [[DID-SPEC-REGISTRIES]], as with any other
+property SHOULD be registered in [[?DID-SPEC-REGISTRIES]], as with any other
 verification method.
         </p>
 
@@ -1772,7 +1772,7 @@ <h2>Verification Relationships</h2>
 A <a>DID document</a> MAY include a property expressing a specific
 <a>verification relationship</a>. In order to maximize global
 interoperability, the property SHOULD be registered in
-[[DID-SPEC-REGISTRIES]].
+[[?DID-SPEC-REGISTRIES]].
       </p>
       <p>
 The <a>verification relationship</a> between the <a>DID subject</a> and the
@@ -2546,7 +2546,7 @@ <h3>
 
             <p>
 All members of the <code>@context</code> property SHOULD exist in the DID
-specification registries [[DID-SPEC-REGISTRIES]] in order to achieve
+specification registries [[?DID-SPEC-REGISTRIES]] in order to achieve
 interoperability across different representations. If a member does not exist
 in the DID specification registries, then the <a>DID document</a> might not be
 interoperable across representations.
@@ -2557,7 +2557,7 @@ <h3>
 <code>@context</code> property results in a document containing
 machine-readable information about the context. These URIs SHOULD be
 associated with a cryptographic hash of the content of the JSON-LD Context as
-part of registration in the DID Specification Registries [[DID-SPEC-REGISTRIES]].
+part of registration in the DID Specification Registries [[?DID-SPEC-REGISTRIES]].
             </p>
           </dd>
         </dl>
@@ -3356,7 +3356,7 @@ <h3>
 
             <p>
 The possible properties within this structure and their possible values are
-defined by [[DID-SPEC-REGISTRIES]]. This specification defines the following
+defined by [[?DID-SPEC-REGISTRIES]]. This specification defines the following
 common properties.
             </p>
 
@@ -3383,7 +3383,7 @@ <h3>
 
             <p>
 The possible properties within this structure and their possible values are
-defined by [[DID-SPEC-REGISTRIES]]. This specification defines the following
+defined by [[?DID-SPEC-REGISTRIES]]. This specification defines the following
 common properties.
             </p>
 
@@ -3409,7 +3409,7 @@ <h3>
 The error code from the resolution process. This property is REQUIRED when
 there is an error in the resolution process. The value of this property MUST
 be a single keyword string. The possible property values of this field SHOULD
-be registered in the DID Specification Registries [[DID-SPEC-REGISTRIES]].
+be registered in the DID Specification Registries [[?DID-SPEC-REGISTRIES]].
 This specification defines the following error values:
                     <dl>
                         <dt>
@@ -3446,7 +3446,7 @@ <h3>
 
             <p>
 The possible properties within this structure and their possible values SHOULD
-be registered in the DID Specification Registries [[DID-SPEC-REGISTRIES]].
+be registered in the DID Specification Registries [[?DID-SPEC-REGISTRIES]].
 This specification defines the following common properties.
             </p>
 
@@ -3588,7 +3588,7 @@ <h3>
 
             <p>
 The possible properties within this structure and their possible values SHOULD
-be registered in the [[DID-SPEC-REGISTRIES]]. This specification defines the
+be registered in the [[?DID-SPEC-REGISTRIES]]. This specification defines the
 following common properties.
             </p>
 
@@ -3612,7 +3612,7 @@ <h3>
 
             <p>
 The possible properties within this structure and their possible values are
-defined by [[DID-SPEC-REGISTRIES]]. This specification defines the following
+defined by [[?DID-SPEC-REGISTRIES]]. This specification defines the following
 common properties.
             </p>
 

From 3151f339d49d6093ff7ca27d408a39e9d092d9de Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 27 Oct 2020 19:48:57 +0000
Subject: [PATCH 65/89] editorial: Clarify that id is only for DID subject when
 at top level of DID doc; #401

---
 index.html | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)

diff --git a/index.html b/index.html
index 5b22721e..f14ccfd9 100644
--- a/index.html
+++ b/index.html
@@ -1267,14 +1267,15 @@ <h1>Core Properties</h1>
       <h2>DID Subject</h2>
 
       <p>
-The <a>DID subject</a> is denoted with the <code><a>id</a></code> property. The
-<a>DID subject</a> is the entity that the <a>DID document</a> is about. That is,
-it is the entity identified by the <a>DID</a> and described by the
-<a>DID document</a>.
+The <a>DID subject</a> is denoted with the <code><a>id</a></code> property at
+the top level of a <a>DID document</a>. The <a>DID subject</a> is the entity
+that the <a>DID document</a> is about. That is, it is the entity identified by
+the <a>DID</a> and described by the <a>DID document</a>.
       </p>
 
       <p>
-<a>DID documents</a> MUST include the <code><a>id</a></code> property.
+<a>DID documents</a> MUST include the <code><a>id</a></code> property at the
+top level.
       </p>
 
       <dl>
@@ -1304,6 +1305,15 @@ <h2>DID Subject</h2>
 party going forward.
       </p>
 
+      <p class="note" title="Nested objects with the id property">
+A <a>DID document</a> can contain objects which have their own unique
+identifier; see, for example, <a href="#verification-methods"></a>. Such other
+objects also use the <code>id</code> property to denote the identifier of
+the object in question. The <code>id</code> property only denotes the
+<a>DID</a> of the <a>DID subject</a> when it is present at the <em>top
+level</em> of a <a>DID document</a>.
+      </p>
+
     <section>
       <h3>alsoKnownAs</h3>
 

From 43bbcdaf88ff3f72c608132b1a332ed62a0edbf9 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 27 Oct 2020 21:54:34 +0000
Subject: [PATCH 66/89] verification relationships: Condense sections, reduce
 reptition, improve readability

---
 index.html | 370 +++++++++++++++++++----------------------------------
 1 file changed, 133 insertions(+), 237 deletions(-)

diff --git a/index.html b/index.html
index f14ccfd9..9cfaa4f7 100644
--- a/index.html
+++ b/index.html
@@ -1779,34 +1779,45 @@ <h2>Verification Relationships</h2>
 <a>DID subject</a> and a <a>verification method</a>.
       </p>
       <p>
-A <a>DID document</a> MAY include a property expressing a specific
-<a>verification relationship</a>. In order to maximize global
-interoperability, the property SHOULD be registered in
-[[?DID-SPEC-REGISTRIES]].
+Different <a>verification relationships</a> enable the associated
+<a>verification methods</a> to be used for different purposes. It is up to a
+<em>verifier</em> to ascertain the validity of a verification attempt by
+checking that the <a>verification method</a> used is contained in the
+appropriate <a>verification relationship</a> property of the <a>DID
+Document</a>.
       </p>
       <p>
 The <a>verification relationship</a> between the <a>DID subject</a> and the
 <a>verification method</a> MUST be explicit in the <a>DID document</a>.
 <a>Verification methods</a> that are not associated with a particular
 <a>verification relationship</a> MUST NOT be used for that <a>verification
-relationship</a>. See the sections below for more detailed examples of a
-<a>verification relationship</a>.
+relationship</a>. For example, a <a>verification method</a> in the value of
+the <code><a>authentication</a></code> property cannot be used to engage in
+key agreement protocols with the <a>DID subject</a>&mdash;the value of the
+<code><a>keyAgreement</a></code> property needs to be used for that.
+      </p>
+      <p>
+This specification defines several <a>verification relationships</a> below. A
+<a>DID document</a> MAY include any of these, or other properties, to express
+a specific <a>verification relationship</a>. In order to maximize global
+interoperability, any such properties used SHOULD be registered in
+[[DID-SPEC-REGISTRIES]].
       </p>
 
-      <section>
-        <h3>authentication</h3>
+      <dl>
+        <dt><dfn>authentication</dfn></dt>
+        <dd>
+The <code>authentication</code> property is OPTIONAL.
+        </dd>
+        <dd>
+If present, the associated value MUST be an <a
+data-cite="INFRA#ordered-set">ordered set</a> of one or more <a>verification
+methods</a>. Each <a>verification method</a> MAY be embedded or referenced.
+        </dd>
+      </dl>
 
+      <div class="note" title="Uses of authentication">
         <p>
-Authentication is a <a>verification relationship</a> which an entity can use
-to prove it is the <a>DID subject</a> or acting on behalf of the
-<a>DID Subject</a> as a <a>DID Controller</a>. The <em>verifier</em> of an
-authentication attempt can check if the authenticating party is presenting a
-valid proof of authentication, that is, that they are who they say they are.
-Note that a successful authentication on its own might or might not confer
-authority; that is up to the verifying application.
-        </p>
-
-        <p class="note" title="Uses of authentication">
 If authentication is established, it is up to the <a>DID method</a> or other
 application to decide what to do with that information. A particular <a>DID
 method</a> could decide that authenticating as a <a>DID controller</a> is
@@ -1818,27 +1829,8 @@ <h3>authentication</h3>
 model, but <a>DID methods</a> and applications are expected to define this
 themselves.
         </p>
-
-        <p>
-A <a>DID document</a> MAY include an <code><a>authentication</a></code> property.
-The <code><a>authentication</a></code> property is a relationship between the <a>DID
-subject</a> and a set of verification methods (such as, but not limited to,
-public keys). It means that the <a>DID subject</a> has authorized some set of
-<a>verification methods</a> (per the value of the <code><a>authentication</a></code>
-property) for the purpose of authentication.
-        </p>
-
-        <dl>
-          <dt><dfn>authentication</dfn></dt>
-          <dd>
-The associated value MUST be an <a data-cite="INFRA#ordered-set">ordered set</a>
-of one or more <a>verification methods</a>. Each <a>verification method</a> MAY
-be embedded or referenced.
-          </dd>
-        </dl>
-
         <p>
-This statement is useful to any <em>authentication verifier</em> that needs
+This is useful to any <em>authentication verifier</em> that needs
 to check to see if an entity that is attempting to <a>authenticate</a> is, in
 fact, presenting a valid proof of authentication. When a <em>verifier</em>
 receives some data (in some protocol-specific format) that contains a proof
@@ -1848,23 +1840,18 @@ <h3>authentication</h3>
 public key) listed under <code><a>authentication</a></code> in the
 <a>DID Document</a>.
         </p>
-
-        <p>
-The <a>verification method</a> indicated by the <code><a>authentication</a></code>
-property of a <a>DID document</a> can only be used to <a>authenticate</a> the
-<a>DID subject</a>. To <a>authenticate</a> the <a>DID controller</a> (in cases
-where the <a>DID controller</a> is not <em>also</em> the <a>DID subject</a>)
-the entity associated with the value of <code>controller</code> (see
-Section <a href="#control"></a>) needs to <a>authenticate</a> itself with its
-<em>own</em> <a>DID document</a> and attached <code><a>authentication</a></code>
-<a>verification relationship</a>.
-        </p>
-
         <p>
-Example:
+Note that the <a>verification method</a> indicated by the
+<code><a>authentication</a></code> property of a <a>DID document</a> can only
+be used to <a>authenticate</a> the <a>DID subject</a>. To <a>authenticate</a>
+a different <a>DID controller</a> the entity associated with the value of
+<code>controller</code> (see Section <a href="#control"></a>) needs to
+<a>authenticate</a> with its <em>own</em> <a>DID document</a> and attached
+<code><a>authentication</a></code> <a>verification relationship</a>.
         </p>
+      </div>
 
-        <pre class="example nohighlight" title="Authentication property
+      <pre class="example nohighlight" title="Authentication property
                     containing three verification methods">
 {
   "@context": "https://www.w3.org/ns/did/v1",
@@ -1887,118 +1874,73 @@ <h3>authentication</h3>
   ],
   <span class="comment">...</span>
 }
-        </pre>
-      </section>
+      </pre>
 
-      <section>
-        <h3>assertionMethod</h3>
-        <p>
-The <code><a>assertionMethod</a></code> property is used to express a
-<a>verification relationship</a> which indicates that a <a>verification
-method</a> can be used to verify a proof that a statement was
-asserted on behalf of the <a>DID subject</a>. A <em>verifier</em>
-of such a proof can ensure that a <a>verification method</a> used
-with the proof was authorized to be used with proofs for that purpose
-by checking that the <a>verification method</a> is contained in the
-<code><a>assertionMethod</a></code> of the <a>DID Document</a>.
-        </p>
+      <dl>
+        <dt><dfn>assertionMethod</dfn></dt>
+        <dd>
+The <code>assertionMethod</code> property is OPTIONAL.
+        </dd>
+        <dd>
+If present, the associated value MUST be an <a
+data-cite="INFRA#ordered-set">ordered set</a> of one or more <a>verification
+methods</a>. Each <a>verification method</a> MAY be embedded or referenced.
+        </dd>
+      </dl>
 
-        <p class="note" title="Uses of assertionMethod">
-If <code><a>assertionMethod</a></code> is established, it is up to the
-verifier to validate that the <a>verification method</a> used for providing
-proof of an assertion is valid and is associated with the
-<code><a>assertionMethod</a></code> <a>verification relationship</a>. An
-example of when this property is useful is during the processing of a
+      <p class="note" title="Uses of assertionMethod">
+An example of when this property is useful is during the processing of a
 verifiable credential by a verifier. During validation, a verifier checks to
 see if a verifiable credential has been signed by the <a>DID Subject</a> by
 checking that the <a>verification method</a> used to assert the proof is
 associated with the <code><a>assertionMethod</a></code> property in the
 corresponding <a>DID Document</a>.
-        </p>
-
-        <p>
-A <a>DID document</a> MAY include an <code><a>assertionMethod</a></code> property.
-        </p>
-
-        <dl>
-          <dt><dfn>assertionMethod</dfn></dt>
-          <dd>
-The associated value MUST be an <a data-cite="INFRA#ordered-set">ordered set</a>
-of one or more <a>verification methods</a>. Each <a>verification method</a> MAY
-be embedded or referenced.
-          </dd>
-        </dl>
-
-        <p>
-Example:
-        </p>
+      </p>
 
-        <pre class="example nohighlight" title="Assertion method property
-                    containing two verification methods">
+      <pre class="example nohighlight" title="Assertion method property
+                  containing two verification methods">
 {
-  "@context": "https://www.w3.org/ns/did/v1",
-  "id": "did:example:123456789abcdefghi",
-  <span class="comment">...</span>
-  "assertionMethod": [
-    <span class="comment">// this method can be used to assert statements as did:...fghi</span>
-    "did:example:123456789abcdefghi#keys-1",
-    <span class="comment">// this method is *only* authorized for assertion of statements, it may not</span>
-    <span class="comment">// be used for any other verification relationship, so its full description is</span>
-    <span class="comment">// embedded here rather than using only a reference</span>
-    {
-      "id": "did:example:123456789abcdefghi#keys-2",
-      "type": "Ed25519VerificationKey2018",
-      "controller": "did:example:123456789abcdefghi",
-      "publicKeyBase58": "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
-    }
-  ],
-  <span class="comment">...</span>
+"@context": "https://www.w3.org/ns/did/v1",
+"id": "did:example:123456789abcdefghi",
+<span class="comment">...</span>
+"assertionMethod": [
+  <span class="comment">// this method can be used to assert statements as did:...fghi</span>
+  "did:example:123456789abcdefghi#keys-1",
+  <span class="comment">// this method is *only* authorized for assertion of statements, it may not</span>
+  <span class="comment">// be used for any other verification relationship, so its full description is</span>
+  <span class="comment">// embedded here rather than using only a reference</span>
+  {
+    "id": "did:example:123456789abcdefghi#keys-2",
+    "type": "Ed25519VerificationKey2018",
+    "controller": "did:example:123456789abcdefghi",
+    "publicKeyBase58": "H3C2AVvLMv6gmMNam3uVAjZpfkcJCwDwnZn6z3wXmqPV"
+  }
+],
+<span class="comment">...</span>
 }
-        </pre>
-        </section>
-
-        <section>
-          <h3>keyAgreement</h3>
-          <p>
-The <code><a>keyAgreement</a></code> property is used to express a <a>verification
-relationship</a> which an entity can use to engage in key agreement protocols
-on behalf of the <a>DID subject</a>. The <em>counterparties</em> in a key
-agreement protocol can use the <code><a>keyAgreement</a></code> <a>verification
-relationship</a> to check whether a party performing a key agreement protocol
-on behalf of the <a>DID subject</a> is authorized by checking if the
-<a>verification method</a> used during the key agreement protocol is
-associated with the <code><a>keyAgreement</a></code> property contained in the <a>DID
-Document</a>.
-        </p>
-
-        <p>
-A <a>DID document</a> MAY include an <code><a>keyAgreement</a></code> property.
-        </p>
-
-        <dl>
-          <dt><dfn>keyAgreement</dfn></dt>
-          <dd>
-The associated value MUST be an <a data-cite="INFRA#ordered-set">ordered set</a>
-of one or more <a>verification methods</a>. Each <a>verification method</a> MAY
-be embedded or referenced.
-          </dd>
-        </dl>
+      </pre>
 
-        <p class="note" title="Uses of keyAgreement">
-It is up to a verifier to validate that the <a>verification method</a>
-used during a key agreement exchange is valid and is associated with the
-<code><a>keyAgreement</a></code> property. An example of when this property is useful
-is during the establishment of a TLS session on behalf of the <a>DID
-Subject</a>. In this case, the counterparty checks that the <a>verification
-method</a> used during the protocol handshake is associated with the
-<code><a>keyAgreement</a></code> property in the <a>DID Document</a>.
-        </p>
+      <dl>
+        <dt><dfn>keyAgreement</dfn></dt>
+        <dd>
+The <code>keyAgreement</code> property is OPTIONAL.
+        </dd>
+        <dd>
+If present, the associated value MUST be an <a
+data-cite="INFRA#ordered-set">ordered set</a> of one or more <a>verification
+methods</a>. Each <a>verification method</a> MAY be embedded or referenced.
+        </dd>
+      </dl>
 
-        <p>
-Example:
-        </p>
+      <p class="note" title="Uses of keyAgreement">
+An example of when this property is useful is during the establishment of a
+TLS session on behalf of the <a>DID Subject</a>. In this case, the
+counterparty checks that the <a>verification method</a> used during the
+protocol handshake is associated with the <code><a>keyAgreement</a></code>
+property in the <a>DID Document</a>.
+      </p>
 
-        <pre class="example nohighlight" title="Key agreement property
+      <pre class="example nohighlight" title="Key agreement property
                     containing two verification methods">
 {
   "@context": "https://www.w3.org/ns/did/v1",
@@ -2020,53 +1962,30 @@ <h3>keyAgreement</h3>
   <span class="comment">...</span>
 }
 
-        </pre>
-      </section>
-
-      <section>
-        <h3>capabilityInvocation</h3>
-        <p>
-The <code><a>capabilityInvocation</a></code> property is used to express a
-<a>verification relationship</a> which an entity can use to invoke
-capabilities as the <a>DID subject</a> or on behalf of the <a>DID subject</a>.
-A capability is an expression of an action that the <a>DID subject</a> is
-authorized to take. The <em>verifier</em> of a capability invocation attempt
-can check the validity of a capability by checking if the <a>verification
-method</a> used with the proof is contained in the
-<code><a>capabilityInvocation</a></code> property of the <a>DID Document</a>.
-        </p>
-
-        <p>
-A <a>DID document</a> MAY include an <code><a>capabilityInvocation</a></code>
-property.
-        </p>
+      </pre>
 
-        <dl>
-          <dt><dfn>capabilityInvocation</dfn></dt>
-          <dd>
-The associated value MUST be an <a data-cite="INFRA#ordered-set">ordered set</a>
-of one or more <a>verification methods</a>. Each <a>verification method</a> MAY
-be embedded or referenced.
-          </dd>
-        </dl>
+      <dl>
+        <dt><dfn>capabilityInvocation</dfn></dt>
+        <dd>
+The <code>capabilityInvocation</code> property is OPTIONAL.
+        </dd>
+        <dd>
+If present, the associated value MUST be an <a
+data-cite="INFRA#ordered-set">ordered set</a> of one or more <a>verification
+methods</a>. Each <a>verification method</a> MAY be embedded or referenced.
+        </dd>
+      </dl>
 
-        <p class="note" title="Uses of capabilityInvocation">
-It is the responsibility of a verifier to ensure that the
-<a>verification method</a> used when presenting a capability is invoked and is
-associated with the <code><a>capabilityInvocation</a></code> property. An example of
-when this property is useful is when a <a>DID subject</a> chooses to invoke
-their capability to start a vehicle through the combined usage of a
-<a>verification method</a> and the <code>StartCar</code> capability. In this
-example, the vehicle would be the <em>verifier</em> and would need to verify
-that the <a>verification method</a> exists in the
+      <p class="note" title="Uses of capabilityInvocation">
+An example of when this property is useful is when a <a>DID subject</a>
+chooses to invoke their capability to start a vehicle through the combined
+usage of a <a>verification method</a> and the <code>StartCar</code>
+capability. In this example, the vehicle would be the <em>verifier</em> and
+would need to verify that the <a>verification method</a> exists in the
 <code><a>capabilityInvocation</a></code> property.
-        </p>
-
-        <p>
-Example:
-        </p>
+      </p>
 
-        <pre class="example nohighlight" title="Capability invocation property
+      <pre class="example nohighlight" title="Capability invocation property
                     containing two verification methods">
 {
   "@context": "https://www.w3.org/ns/did/v1", "id":
@@ -2088,50 +2007,28 @@ <h3>capabilityInvocation</h3>
   <span class="comment">...</span>
 }
 
-        </pre>
-      </section>
-
-      <section>
-        <h3>capabilityDelegation</h3>
-        <p>
-The <code><a>capabilityDelegation</a></code> property is used to express a
-<a>verification relationship</a> which an entity can use to grant capabilities
-as the <a>DID subject</a> or on behalf of the <a>DID subject</a> to other
-<em>capability invokers</em>. The <em>verifier</em> of a
-<code><a>capabilityDelegation</a></code> attempt can check the validity of a
-capability to grant invocation of a capability by checking if the
-<a>verification method</a> used with the proof is contained in the
-<code><a>capabilityDelegation</a></code> section of the <a>DID Document</a>.
-        </p>
-
-        <p>
-A <a>DID document</a> MAY include an <code><a>capabilityDelegation</a></code>
-property.
-        </p>
-
-        <dl>
-          <dt><dfn>capabilityDelegation</dfn></dt>
-          <dd>
-The associated value MUST be an <a data-cite="INFRA#ordered-set">ordered set</a>
-of one or more <a>verification methods</a>. Each <a>verification method</a> MAY
-be embedded or referenced.
-          </dd>
-        </dl>
+      </pre>
 
-        <p class="note" title="Uses of capabilityDelegation">
-It is up to a verifier to validate that the <a>verification method</a> used
-when presenting a capability is valid and is associated with the
-<code><a>capabilityDelegation</a></code> property. An example of when this
-property is useful is when a <a>DID Subject</a> chooses to grant their
-capability to start a vehicle through the combined usage of a <a>verification
-method</a> and the <code>StartCar</code> capability to a capability invoker.
-        </p>
+      <dl>
+        <dt><dfn>capabilityDelegation</dfn></dt>
+        <dd>
+The <code>capabilityDelegation</code> property is OPTIONAL.
+        </dd>
+        <dd>
+If present, the associated value MUST be an <a
+data-cite="INFRA#ordered-set">ordered set</a> of one or more <a>verification
+methods</a>. Each <a>verification method</a> MAY be embedded or referenced.
+        </dd>
+      </dl>
 
-        <p>
-Example:
-        </p>
+      <p class="note" title="Uses of capabilityDelegation">
+An example of when this property is useful is when a <a>DID Subject</a>
+chooses to grant their capability to start a vehicle through the combined
+usage of a <a>verification method</a> and the <code>StartCar</code> capability
+to a capability invoker.
+      </p>
 
-        <pre class="example nohighlight" title="Capability Delegation property
+      <pre class="example nohighlight" title="Capability Delegation property
                     containing two verification methods">
 {
   "@context": "https://www.w3.org/ns/did/v1", "id":
@@ -2153,8 +2050,7 @@ <h3>capabilityDelegation</h3>
   <span class="comment">...</span>
 }
 
-        </pre>
-      </section>
+      </pre>
     </section>
 
     <section>

From 7bec1858d147157cc89c5e5efabb7ce53f3fd223 Mon Sep 17 00:00:00 2001
From: Amy Guy <amy@rhiaro.co.uk>
Date: Mon, 2 Nov 2020 12:07:18 +0000
Subject: [PATCH 67/89] Fix grammar

Co-authored-by: Brent Zundel <brent.zundel@gmail.com>
---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 9cfaa4f7..9ecffee7 100644
--- a/index.html
+++ b/index.html
@@ -1844,7 +1844,7 @@ <h2>Verification Relationships</h2>
 Note that the <a>verification method</a> indicated by the
 <code><a>authentication</a></code> property of a <a>DID document</a> can only
 be used to <a>authenticate</a> the <a>DID subject</a>. To <a>authenticate</a>
-a different <a>DID controller</a> the entity associated with the value of
+a different <a>DID controller</a>, the entity associated with the value of
 <code>controller</code> (see Section <a href="#control"></a>) needs to
 <a>authenticate</a> with its <em>own</em> <a>DID document</a> and attached
 <code><a>authentication</a></code> <a>verification relationship</a>.

From 65302fbd9abcce0b3842537f2dce3671d9f2914d Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 12:18:13 -0500
Subject: [PATCH 68/89] Fix ReSpec configuration.

---
 index.html | 47 ++++++++++++++++++++++-------------------------
 1 file changed, 22 insertions(+), 25 deletions(-)

diff --git a/index.html b/index.html
index 9ecffee7..721b6a25 100644
--- a/index.html
+++ b/index.html
@@ -11,39 +11,39 @@
     offline.
   -->
 
-  <script class='remove'
-    src='https://www.w3.org/Tools/respec/respec-w3c'>
-  </script><!--script src='./respec-w3c-common.js' class='remove'></script-->
-
-  <script src="https://unpkg.com/reqlist/lib/reqlist.js" class="remove"></script>
-  <link href="https://unpkg.com/reqlist/lib/reqlist.css" class="removeOnSave" rel="stylesheet" type="text/css" />
-
-  <script class='remove' src="./common.js">
-  </script>
+  <script class="remove"
+    src="https://www.w3.org/Tools/respec/respec-w3c"></script>
+  <script class="remove"
+    src="https://unpkg.com/reqlist/lib/reqlist.js"></script>
+  <link class="removeOnSave" rel="stylesheet" type="text/css"
+    href="https://unpkg.com/reqlist/lib/reqlist.css" />
+
+  <script class='remove' src="./common.js"></script>
   <script class="remove" type="text/javascript">
   var respecConfig = {
-    wgPublicList: "public-did-wg",
+    // the W3C WG and public mailing list
     group: "did",
-
-    // specification status (e.g., WD, LCWD, NOTE, etc.). If in doubt use ED.
-    specStatus: "WD",
+    wgPublicList: "public-did-wg",
 
     // the specification's short name, as in http://www.w3.org/TR/short-name/
     shortName: "did-core",
 
+    // specification status (e.g., WD, LCWD, NOTE, etc.). If in doubt use ED.
+    specStatus: "WD",
 
+    // Editor's Draft URL
     edDraftURI: "https://w3c.github.io/did-core/",
 
-    // subtitle
+    // subtitle for the spec
     subtitle: "Core architecture, data model, and representations",
 
     // if you wish the publication date to be other than today, set this
     //publishDate:  "2019-11-07",
 
-    // if there is a previously published draft, uncomment this and set its
+    // previously published draft, uncomment this and set its
     // YYYY-MM-DD date and its maturity status
-    previousPublishDate:  "2020-07-31",
-    previousMaturity:  "WD",
+    //previousPublishDate:  "2020-07-31",
+    //previousMaturity:  "WD",
 
     // automatically allow term pluralization
     pluralize: true,
@@ -52,8 +52,8 @@
     localBiblio: ccg.localBiblio,
     xref: "web-platform",
     github: {
-            repoURL: "https://github.com/w3c/did-core/",
-            branch: "master"
+      repoURL: "https://github.com/w3c/did-core/",
+      branch: "master"
     },
     includePermalinks: false,
 
@@ -67,8 +67,7 @@
     // ],
 
 
-    // editors, add as many as you like
-    // only "name" is required
+    // list of specification editors
     editors: [{
         name: "Drummond Reed",
         url: "https://www.linkedin.com/in/drummondreed/",
@@ -92,9 +91,7 @@
       }
     ],
 
-    // authors, add as many as you like.
-    // This is optional, uncomment if you have authors as well as editors.
-    // only "name" is required. Same format as editors.
+    // list of specification authors
     authors: [{
         name: "Drummond Reed",
         url: "https://www.linkedin.com/in/drummondreed/",
@@ -111,7 +108,7 @@
       },
       {
         name: "Dave Longley",
-        url: "",
+        url: "https://github.com/dlongley",
         company: "Digital Bazaar",
         companyURL: "https://digitalbazaar.com/",
         w3cid: 48025

From 1e7bef857dc919273ccb519849822beeddb25419 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 12:22:59 -0500
Subject: [PATCH 69/89] Fix paragraph boundaries in Abstract.

---
 index.html | 33 ++++++++++++++++-----------------
 1 file changed, 16 insertions(+), 17 deletions(-)

diff --git a/index.html b/index.html
index 721b6a25..dd51e23a 100644
--- a/index.html
+++ b/index.html
@@ -66,7 +66,6 @@
     //   add_reqlist_button
     // ],
 
-
     // list of specification editors
     editors: [{
         name: "Drummond Reed",
@@ -171,23 +170,23 @@
 <a>Decentralized identifiers</a> (DIDs) are a new type of identifier that
 enables verifiable, decentralized digital identity. A <a>DID</a> identifies any
 subject (e.g., a person, organization, thing, data model, abstract entity, etc.)
-that the controller of the <a>DID</a> decides that it identifies.
-
-In contrast to typical, federated identifiers, DIDs have been designed
-so that they may be decoupled from centralized registries, identity providers,
-and certificate authorities. Specifically, while other parties might be used
-to help enable the discovery of information related to a <a>DID</a>,
-the design enables the controller of a <a>DID</a> to prove control over it
-without requiring permission from any other party.
-
-<a>DID</a>s are URIs that associate a <a>DID subject</a> with a <a>DID
-document</a> allowing trustable interactions associated with that subject.
+that the controller of the <a>DID</a> decides that it identifies. In contrast to
+typical, federated identifiers, DIDs have been designed so that they may be
+decoupled from centralized registries, identity providers, and certificate
+authorities. Specifically, while other parties might be used to help enable the
+discovery of information related to a <a>DID</a>, the design enables the
+controller of a <a>DID</a> to prove control over it without requiring permission
+from any other party. <a>DID</a>s are URIs that associate a <a>DID subject</a>
+with a <a>DID document</a> allowing trustable interactions associated with that
+subject.
+    </p>
+    <p>
 Each <a>DID document</a> can express cryptographic material, verification
-methods, or <a>service endpoints</a>, which provide a set of mechanisms
-enabling a <a>DID controller</a> to prove control of the <a>DID</a>.
-<a>Service endpoints</a> enable trusted interactions associated with the
-<a>DID subject</a>. A <a>DID document</a> might contain the <a>DID subject</a>
-itself, if the <a>DID subject</a> is an information resource such as a data model.
+methods, or <a>service endpoints</a>, which provide a set of mechanisms enabling
+a <a>DID controller</a> to prove control of the <a>DID</a>. <a>Service
+endpoints</a> enable trusted interactions associated with the <a>DID
+subject</a>. A <a>DID document</a> might contain the <a>DID subject</a> itself,
+if the <a>DID subject</a> is an information resource such as a data model.
     </p>
     <p>
 This document specifies a common data model, a URL format, and a set of

From d2b367b52cc86d19e354ff2a2d9ac3c86a4a72f7 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 12:31:35 -0500
Subject: [PATCH 70/89] Add subsection for Authentication.

---
 index.html | 50 +++++++++++++++++++++++++++++---------------------
 1 file changed, 29 insertions(+), 21 deletions(-)

diff --git a/index.html b/index.html
index dd51e23a..ff5cc1b6 100644
--- a/index.html
+++ b/index.html
@@ -1800,20 +1800,27 @@ <h2>Verification Relationships</h2>
 [[DID-SPEC-REGISTRIES]].
       </p>
 
-      <dl>
-        <dt><dfn>authentication</dfn></dt>
-        <dd>
-The <code>authentication</code> property is OPTIONAL.
-        </dd>
-        <dd>
-If present, the associated value MUST be an <a
-data-cite="INFRA#ordered-set">ordered set</a> of one or more <a>verification
-methods</a>. Each <a>verification method</a> MAY be embedded or referenced.
-        </dd>
-      </dl>
+      <section>
+        <h2>Authentication</h2>
 
-      <div class="note" title="Uses of authentication">
         <p>
+The `authentication` <a>verification relationship</a> is used to specify how the
+<a>DID subject</a> is expected to be authenticated, such as for the purposes of
+logging into a website.
+        </p>
+
+        <dl>
+          <dt><dfn>authentication</dfn></dt>
+          <dd>
+The <code>authentication</code> property is OPTIONAL. If present, the associated
+value MUST be an <a data-cite="INFRA#ordered-set">ordered set</a> of one or more
+<a>verification methods</a>. Each <a>verification method</a> MAY be embedded or
+referenced.
+          </dd>
+        </dl>
+
+        <div class="note" title="Uses of authentication">
+          <p>
 If authentication is established, it is up to the <a>DID method</a> or other
 application to decide what to do with that information. A particular <a>DID
 method</a> could decide that authenticating as a <a>DID controller</a> is
@@ -1824,8 +1831,8 @@ <h2>Verification Relationships</h2>
 <em>after</em> the authentication check is out of scope for the DID data
 model, but <a>DID methods</a> and applications are expected to define this
 themselves.
-        </p>
-        <p>
+          </p>
+          <p>
 This is useful to any <em>authentication verifier</em> that needs
 to check to see if an entity that is attempting to <a>authenticate</a> is, in
 fact, presenting a valid proof of authentication. When a <em>verifier</em>
@@ -1835,8 +1842,8 @@ <h2>Verification Relationships</h2>
 ensure that the proof can be verified using a <a>verification method</a> (e.g.,
 public key) listed under <code><a>authentication</a></code> in the
 <a>DID Document</a>.
-        </p>
-        <p>
+          </p>
+          <p>
 Note that the <a>verification method</a> indicated by the
 <code><a>authentication</a></code> property of a <a>DID document</a> can only
 be used to <a>authenticate</a> the <a>DID subject</a>. To <a>authenticate</a>
@@ -1844,11 +1851,11 @@ <h2>Verification Relationships</h2>
 <code>controller</code> (see Section <a href="#control"></a>) needs to
 <a>authenticate</a> with its <em>own</em> <a>DID document</a> and attached
 <code><a>authentication</a></code> <a>verification relationship</a>.
-        </p>
-      </div>
+          </p>
+        </div>
 
-      <pre class="example nohighlight" title="Authentication property
-                    containing three verification methods">
+        <pre class="example nohighlight" title="Authentication property
+                      containing three verification methods">
 {
   "@context": "https://www.w3.org/ns/did/v1",
   "id": "did:example:123456789abcdefghi",
@@ -1870,7 +1877,8 @@ <h2>Verification Relationships</h2>
   ],
   <span class="comment">...</span>
 }
-      </pre>
+        </pre>
+      </section>
 
       <dl>
         <dt><dfn>assertionMethod</dfn></dt>

From e228df1acb393b2bca3f14cb954596c8726a6ffc Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 12:58:29 -0500
Subject: [PATCH 71/89] Add subsection for Assertion Method.

---
 index.html | 40 ++++++++++++++++++++++++----------------
 1 file changed, 24 insertions(+), 16 deletions(-)

diff --git a/index.html b/index.html
index ff5cc1b6..e2057353 100644
--- a/index.html
+++ b/index.html
@@ -1880,29 +1880,36 @@ <h2>Authentication</h2>
         </pre>
       </section>
 
-      <dl>
-        <dt><dfn>assertionMethod</dfn></dt>
-        <dd>
-The <code>assertionMethod</code> property is OPTIONAL.
-        </dd>
-        <dd>
-If present, the associated value MUST be an <a
-data-cite="INFRA#ordered-set">ordered set</a> of one or more <a>verification
-methods</a>. Each <a>verification method</a> MAY be embedded or referenced.
-        </dd>
-      </dl>
+      <section>
+        <h2>Assertion Method</h2>
+
+        <p>
+The `assertionMethod` <a>verification relationship</a> is used to specify how
+the <a>DID subject</a> is expected to express claims, such as for the purposes
+of issuing a Verifiable Credential [[?VC-DATA-MODEL]].
+        </p>
 
-      <p class="note" title="Uses of assertionMethod">
+        <dl>
+          <dt><dfn>assertionMethod</dfn></dt>
+          <dd>
+The <code>assertionMethod</code> property is OPTIONAL. If present, the
+associated value MUST be an <a data-cite="INFRA#ordered-set">ordered set</a> of
+one or more <a>verification methods</a>. Each <a>verification method</a> MAY be
+embedded or referenced.
+          </dd>
+        </dl>
+
+        <p>
 An example of when this property is useful is during the processing of a
 verifiable credential by a verifier. During validation, a verifier checks to
 see if a verifiable credential has been signed by the <a>DID Subject</a> by
 checking that the <a>verification method</a> used to assert the proof is
 associated with the <code><a>assertionMethod</a></code> property in the
 corresponding <a>DID Document</a>.
-      </p>
+        </p>
 
-      <pre class="example nohighlight" title="Assertion method property
-                  containing two verification methods">
+        <pre class="example nohighlight" title="Assertion method property
+                    containing two verification methods">
 {
 "@context": "https://www.w3.org/ns/did/v1",
 "id": "did:example:123456789abcdefghi",
@@ -1922,7 +1929,8 @@ <h2>Authentication</h2>
 ],
 <span class="comment">...</span>
 }
-      </pre>
+        </pre>
+      </section>
 
       <dl>
         <dt><dfn>keyAgreement</dfn></dt>

From 2d7973e4b87b89d8250516d72073fe12855754ab Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 13:07:46 -0500
Subject: [PATCH 72/89] Add subsection for Key Agreement.

---
 index.html | 50 ++++++++++++++++++++++++++++----------------------
 1 file changed, 28 insertions(+), 22 deletions(-)

diff --git a/index.html b/index.html
index e2057353..cb9d235a 100644
--- a/index.html
+++ b/index.html
@@ -1932,28 +1932,34 @@ <h2>Assertion Method</h2>
         </pre>
       </section>
 
-      <dl>
-        <dt><dfn>keyAgreement</dfn></dt>
-        <dd>
-The <code>keyAgreement</code> property is OPTIONAL.
-        </dd>
-        <dd>
-If present, the associated value MUST be an <a
-data-cite="INFRA#ordered-set">ordered set</a> of one or more <a>verification
-methods</a>. Each <a>verification method</a> MAY be embedded or referenced.
-        </dd>
-      </dl>
+      <section>
+        <h2>Key Agreement</h2>
 
-      <p class="note" title="Uses of keyAgreement">
-An example of when this property is useful is during the establishment of a
-TLS session on behalf of the <a>DID Subject</a>. In this case, the
-counterparty checks that the <a>verification method</a> used during the
-protocol handshake is associated with the <code><a>keyAgreement</a></code>
-property in the <a>DID Document</a>.
-      </p>
+        <p>
+The `keyAgreement` <a>verification relationship</a> is used to specify how
+to encrypt information to the <a>DID subject</a>, such as for the purposes
+of establishing a secure communication channel with the recipient.
+        </p>
 
-      <pre class="example nohighlight" title="Key agreement property
-                    containing two verification methods">
+        <dl>
+          <dt><dfn>keyAgreement</dfn></dt>
+          <dd>
+The <code>keyAgreement</code> property is OPTIONAL. If present, the associated
+value MUST be an <a data-cite="INFRA#ordered-set">ordered set</a> of one or more
+<a>verification methods</a>. Each <a>verification method</a> MAY be embedded or
+referenced.
+          </dd>
+        </dl>
+
+        <p>
+An example of when this property is useful is when encrypting a message
+intended for the <a>DID Subject</a>. In this case, the counterparty uses the
+public cryptographic key information in the <a>verification method</a>
+to wrap a decryption key for the recipient.
+        </p>
+
+        <pre class="example nohighlight" title="Key agreement property
+                      containing two verification methods">
 {
   "@context": "https://www.w3.org/ns/did/v1",
   "id": "did:example:123456789abcdefghi",
@@ -1973,8 +1979,8 @@ <h2>Assertion Method</h2>
   ],
   <span class="comment">...</span>
 }
-
-      </pre>
+        </pre>
+      </section>
 
       <dl>
         <dt><dfn>capabilityInvocation</dfn></dt>

From 4a660663b783f7c07830c8eea9867b1e9bb90f00 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 13:14:26 -0500
Subject: [PATCH 73/89] Add Capability Invocation section.

---
 index.html | 41 ++++++++++++++++++++++++-----------------
 1 file changed, 24 insertions(+), 17 deletions(-)

diff --git a/index.html b/index.html
index cb9d235a..de62ea7c 100644
--- a/index.html
+++ b/index.html
@@ -1982,29 +1982,36 @@ <h2>Key Agreement</h2>
         </pre>
       </section>
 
-      <dl>
-        <dt><dfn>capabilityInvocation</dfn></dt>
-        <dd>
-The <code>capabilityInvocation</code> property is OPTIONAL.
-        </dd>
-        <dd>
-If present, the associated value MUST be an <a
-data-cite="INFRA#ordered-set">ordered set</a> of one or more <a>verification
-methods</a>. Each <a>verification method</a> MAY be embedded or referenced.
-        </dd>
-      </dl>
+      <section>
+        <h2>Capability Invocation</h2>
+
+        <p>
+The `capabilityInvocation` <a>verification relationship</a> is used to specify
+a mechanism that might be used by the <a>DID subject</a> to invoke a
+cryptographic capability, such as the authorization to access an HTTP API.
+        </p>
+
+        <dl>
+          <dt><dfn>capabilityInvocation</dfn></dt>
+          <dd>
+The <code>capabilityInvocation</code> property is OPTIONAL. If present, the
+associated value MUST be an <a data-cite="INFRA#ordered-set">ordered set</a> of
+one or more <a>verification methods</a>. Each <a>verification method</a> MAY be
+embedded or referenced.
+          </dd>
+        </dl>
 
-      <p class="note" title="Uses of capabilityInvocation">
+        <p>
 An example of when this property is useful is when a <a>DID subject</a>
 chooses to invoke their capability to start a vehicle through the combined
 usage of a <a>verification method</a> and the <code>StartCar</code>
 capability. In this example, the vehicle would be the <em>verifier</em> and
 would need to verify that the <a>verification method</a> exists in the
 <code><a>capabilityInvocation</a></code> property.
-      </p>
+        </p>
 
-      <pre class="example nohighlight" title="Capability invocation property
-                    containing two verification methods">
+        <pre class="example nohighlight" title="Capability invocation property
+                      containing two verification methods">
 {
   "@context": "https://www.w3.org/ns/did/v1", "id":
   "did:example:123456789abcdefghi",
@@ -2024,8 +2031,8 @@ <h2>Key Agreement</h2>
   ],
   <span class="comment">...</span>
 }
-
-      </pre>
+        </pre>
+      </section>
 
       <dl>
         <dt><dfn>capabilityDelegation</dfn></dt>

From 2b27dd2675d79e754cb4c7753ec65f49607318ef Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 13:14:46 -0500
Subject: [PATCH 74/89] Remove "Method" from "Assertion Method" title.

---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index de62ea7c..d770d615 100644
--- a/index.html
+++ b/index.html
@@ -1881,7 +1881,7 @@ <h2>Authentication</h2>
       </section>
 
       <section>
-        <h2>Assertion Method</h2>
+        <h2>Assertion</h2>
 
         <p>
 The `assertionMethod` <a>verification relationship</a> is used to specify how

From 1c42c4b06b32193a8bd9d96293099ec88ca4be06 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 13:20:38 -0500
Subject: [PATCH 75/89] Add section on Capability Delegation.

---
 index.html | 44 ++++++++++++++++++++++++++------------------
 1 file changed, 26 insertions(+), 18 deletions(-)

diff --git a/index.html b/index.html
index d770d615..099b7658 100644
--- a/index.html
+++ b/index.html
@@ -2034,27 +2034,35 @@ <h2>Capability Invocation</h2>
         </pre>
       </section>
 
-      <dl>
-        <dt><dfn>capabilityDelegation</dfn></dt>
-        <dd>
-The <code>capabilityDelegation</code> property is OPTIONAL.
-        </dd>
-        <dd>
-If present, the associated value MUST be an <a
-data-cite="INFRA#ordered-set">ordered set</a> of one or more <a>verification
-methods</a>. Each <a>verification method</a> MAY be embedded or referenced.
-        </dd>
-      </dl>
+      <section>
+        <h2>Capability Delegation</h2>
 
-      <p class="note" title="Uses of capabilityDelegation">
+        <p>
+The `capabilityDelegation` <a>verification relationship</a> is used to specify
+a mechanism that might be used by the <a>DID subject</a> to delegate
+a cryptographic capability to another party, such as delegating the
+authority to access a specific HTTP API to a subordinate.
+        </p>
+
+        <dl>
+          <dt><dfn>capabilityDelegation</dfn></dt>
+          <dd>
+The <code>capabilityDelegation</code> property is OPTIONAL. If present, the
+associated value MUST be an <a data-cite="INFRA#ordered-set">ordered set</a> of
+one or more <a>verification methods</a>. Each <a>verification method</a> MAY be
+embedded or referenced.
+          </dd>
+        </dl>
+
+        <p>
 An example of when this property is useful is when a <a>DID Subject</a>
 chooses to grant their capability to start a vehicle through the combined
 usage of a <a>verification method</a> and the <code>StartCar</code> capability
-to a capability invoker.
-      </p>
+to a party other than themselves.
+        </p>
 
-      <pre class="example nohighlight" title="Capability Delegation property
-                    containing two verification methods">
+        <pre class="example nohighlight" title="Capability Delegation property
+                      containing two verification methods">
 {
   "@context": "https://www.w3.org/ns/did/v1", "id":
   "did:example:123456789abcdefghi",
@@ -2074,8 +2082,8 @@ <h2>Capability Invocation</h2>
   ],
   <span class="comment">...</span>
 }
-
-      </pre>
+        </pre>
+      </section>
     </section>
 
     <section>

From 41362c8c136d9697061d4b2c043ec62f36666639 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 13:31:02 -0500
Subject: [PATCH 76/89] Fix broken references.

---
 index.html | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/index.html b/index.html
index 099b7658..2887f429 100644
--- a/index.html
+++ b/index.html
@@ -11,6 +11,8 @@
     offline.
   -->
 
+  <script class="remove"
+    src="https://unpkg.com/browse/jquery/dist/jquery.min.js"></script>
   <script class="remove"
     src="https://www.w3.org/Tools/respec/respec-w3c"></script>
   <script class="remove"
@@ -42,8 +44,8 @@
 
     // previously published draft, uncomment this and set its
     // YYYY-MM-DD date and its maturity status
-    //previousPublishDate:  "2020-07-31",
-    //previousMaturity:  "WD",
+    previousPublishDate:  "2020-11-08",
+    previousMaturity:  "WD",
 
     // automatically allow term pluralization
     pluralize: true,
@@ -1231,16 +1233,16 @@ <h1>Core Properties</h1>
 <code><a>authentication</a></code>: defined in <a href="#authentication"></a>.
       </li>
       <li>
-<code><a>assertionMethod</a></code>: defined in <a href="#assertionmethod"></a>.
+<code><a>assertionMethod</a></code>: defined in <a href="#assertion"></a>.
       </li>
       <li>
-<code><a>keyAgreement</a></code>: defined in <a href="#keyagreement"></a>.
+<code><a>keyAgreement</a></code>: defined in <a href="#key-agreement"></a>.
       </li>
       <li>
-<code><a>capabilityDelegation</a></code>: defined in <a href="#capabilitydelegation"></a>.
+<code><a>capabilityDelegation</a></code>: defined in <a href="#capability-delegation"></a>.
       </li>
       <li>
-<code><a>capabilityInvocation</a></code>: defined in <a href="#capabilityinvocation"></a>.
+<code><a>capabilityInvocation</a></code>: defined in <a href="#capability-invocation"></a>.
       </li>
       <li>
 <code><a>service</a></code>: defined in <a href="#service-endpoints"></a>.
@@ -1482,7 +1484,7 @@ <h2>Verification Methods</h2>
 values are set to the public key fingerprint [[RFC7638]]. It is RECOMMENDED
 that verification methods that use JWKs to represent their public keys utilize
 the value of <code>kid</code> as their fragment identifier. See the first key
-in <a href="#example-13-various-public-keys"></a>
+in <a href="#example-15-various-public-keys"></a>
 for an example of a public key with a compound key identifier.
           </p>
 

From b426d4855ea8dda876ef2b918ef34ed2170e9fba Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 15:12:14 -0500
Subject: [PATCH 77/89] Remove ReSpec error due to use of old respec code.

---
 common.js | 52 +++++++++++++++++++++++++++++++---------------------
 1 file changed, 31 insertions(+), 21 deletions(-)

diff --git a/common.js b/common.js
index db31fb4e..fcace788 100644
--- a/common.js
+++ b/common.js
@@ -4,7 +4,6 @@
 /*  ... who stole it from Manu Sporny of the JSON-LD 1.0 Working Group */
 /*  ... who stole it from Shane McCarron, that beautiful, beautiful man. */
 /* exported restrictReferences */
-
 var ccg = {
   // Add as the respecConfig localBiblio variable
   // Extend or override global respec references
@@ -181,34 +180,20 @@ var ccg = {
 const termNames = [] ;
 const termsReferencedByTerms = [] ;
 
-function restrictReferences(utils, content) {
+function restrictReferences(utils, content, filename) {
   const base = document.createElement("div");
   base.innerHTML = content;
 
-  // New new logic:
-  //
-  // 1. build a list of all term-internal references
-  // 2. When ready to process, for each reference INTO the terms,
-  // remove any terms they reference from the termNames array too.
-  const noPreserve = base.querySelectorAll("dfn:not(.preserve)");
-  for (const item of noPreserve) {
-    const $t = $(item);
-    const titles = $t.getDfnTitles();
-    const n = $t.makeID("dfn", titles[0]);
-    if (n) {
-      termNames[n] = $t.parent();
-    }
-  }
-
-  const $container = $(".termlist", base) ;
-  const containerID = $container.makeID("", "terms") ;
   return (base.innerHTML);
 }
 
 require(["core/pubsubhub"], (respecEvents) => {
   "use strict";
 
-  respecEvents.sub('end', (message) => {
+  console.log("RESPEC EVENTS", respecEvents);
+
+  respecEvents.sub('end-all', (message) => {
+    console.log("END EVENT", message);
     // remove data-cite on where the citation is to ourselves.
     const selfDfns = document.querySelectorAll("dfn[data-cite^='" + respecConfig.shortName.toUpperCase() + "#']");
     for (const dfn of selfDfns) {
@@ -229,8 +214,32 @@ require(["core/pubsubhub"], (respecEvents) => {
   // class 'termlist', and if the target of that reference is
   // also within a 'dl' element of class 'termlist', then
   // consider it an internal reference and ignore it.
-  respecEvents.sub('end', (message) => {
+  respecEvents.sub('end-all', (message) => {
+    console.log("message", message);
     if (message === 'core/link-to-dfn') {
+      // 1. build a list of all term-internal references
+      // 2. When ready to process, for each reference INTO the terms,
+      // remove any terms they reference from the termNames array too.
+      const noPreserve =
+        document.querySelectorAll("#terminology dfn:not(.preserve)");
+
+      for (const item of noPreserve) {
+        const $t = $(item);
+        const titles = getDfnTitles(item);
+        console.log('titles', titles);
+        /*
+        const $t = $(item);
+        const titles = $t.getDfnTitles();
+        const n = $t.makeID("dfn", titles[0]);
+        if (n) {
+          termNames[n] = $t.parent();
+        }
+        */
+      }
+
+      //const $container = $(".termlist", base) ;
+      //const containerID = $container.makeID("", "terms") ;
+
       // all definitions are linked; find any internal references
       const internalTerms = document.querySelectorAll(".termlist a.internalDFN");
       for (const item of internalTerms) {
@@ -282,6 +291,7 @@ require(["core/pubsubhub"], (respecEvents) => {
 
       // delete any terms that were not referenced.
       for (const term in termNames) {
+        //console.log("DELETE TERM?", term);
         const $p = $("#"+term);
         // Remove term definitions inside a dt, where data-cite does not start with shortname
         if ($p === undefined) { continue; }

From d54d51ebb299f3cfeeb9b95f0078c90181d48cf8 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 16:31:59 -0500
Subject: [PATCH 78/89] Rework Data Model section.

Add different classes of properties, all datatypes, move
representation authoring rules to later in document.
---
 index.html | 196 +++++++++++++++++++++++++++++++++++++++++------------
 terms.html |   4 +-
 2 files changed, 155 insertions(+), 45 deletions(-)

diff --git a/index.html b/index.html
index 2887f429..15578551 100644
--- a/index.html
+++ b/index.html
@@ -588,7 +588,7 @@ <h2>
 typically express verification methods (such as public keys) and <a>services</a>
 relevant to interactions with the DID subject. A DID document is represents an
 abstract data model, and can be serialized according to a particular syntax
-(see <a href="#core-representations"></a>).  The generic properties supported
+(see <a href="#representations"></a>).  The generic properties supported
 in a DID document are specified in <a href="#core-properties"></a>.
 The <a>DID</a> itself is the value of the `id` property. The properties
 present in a DID document may be updated according to the applicable
@@ -684,7 +684,7 @@ <h2>
 normative statements in Sections <a href="#data-model"></a> and  <a
 href="#core-properties"></a>. A serialization format for the conforming
 document is deterministic, bi-directional, and lossless as described in
-Section <a href="#core-representations"></a>.
+Section <a href="#representations"></a>.
       </p>
 
       <p>
@@ -1037,7 +1037,7 @@ <h2>Fragment</h2>
         <p>
 In order to maximize interoperability, implementers are urged to ensure that
 <a>DID fragments</a> are interpreted in the same way across representations (as
-described in <a href="#core-representations"></a>). For example, while
+described in <a href="#representations"></a>). For example, while
 JSON Pointer [[?RFC6901]] can be used in a <a>DID fragment</a>, it will not
 be interpreted in the same way across representations.
         </p>
@@ -1127,47 +1127,127 @@ <h2>Relative DID URLs</h2>
   <section>
     <h1>Data Model</h1>
     <p>
-This specification defines an abstract data model for <a>DID documents</a>,
-independent of any specific representation. This section provides a
-high-level description of the data model, a set of requirements for
-representations, and a set of requirements for extensibility.
+This specification defines an abstract data model for <a>DID documents</a> that
+is capable of being serialized into multiple concrete representations. This
+section provides a high-level description of the data model, how different types
+of properties are expressed in the data model, and instructions for extending
+the data model.
     </p>
-    <section>
-      <h2>Definition</h2>
-      <p>
+    <p>
 A <a>DID document</a> consists of a <a data-cite="INFRA#maps">map</a> of <a
-data-cite="INFRA#map-entry">properties</a>, which are name-value pairs (ie. a
-property name, and a property value). The definitions of each of these
-properties are specified in section <a href="#core-properties"></a>. Specific
-representations are defined in section <a href="#core-representations"></a>.
-      </p>
-    </section>
-    <section>
-      <h2>Representations</h2>
-      <p>
-Following are the requirements for representations.
-      </p>
-      <ol>
-        <li>
-A representation MUST define an unambiguous encoding and decoding of all
-property names and their associated values as defined in this specification.
-This means anything you can represent in the <a>DID document</a> data model
-can be represented in any compliant representation.
-        </li>
-        <li>
-The representation MUST be associated with an IANA-registered MIME type.
-        </li>
-        <li>
-The representation MUST define fragment processing rules for its MIME type that
-are conformant with the fragment processing rules defined in section
-<a href="#fragment"></a> of this specification.
-        </li>
-      </ol>
-        <p>
-The core representations are specified in section
-<a href="#core-representations"></a>.
-        </p>
-    </section>
+data-cite="INFRA#map-entry">properties</a>, where each property consists of
+a property name/property value pair. The data model contains at least two
+different classes of properties. The first class of properties are called
+core properties, and are specified in section <a href="#core-properties"></a>.
+The second class of properties are called representation properties, and
+are specified in section <a href="#representations"></a>.
+    </p>
+    <p>
+All property names in the data model are <a
+data-cite="INFRA#strings">strings</a>. All property values are expressed
+using one of the data types in the table below.
+    </p>
+
+    <table class="simple" id="public-key-support">
+      <thead>
+        <tr>
+          <th>
+Data&nbsp;Type
+          </th>
+          <th>
+Considerations
+          </th>
+        </tr>
+      </thead>
+
+      <tbody>
+        <tr>
+          <td>
+<a data-cite="INFRA#maps">ordered&nbsp;map</a>
+          </td>
+          <td>
+A finite ordered sequence of key/value pairs, with no key appearing twice as
+specified in [[INFRA]].
+          </td>
+        </tr>
+        <tr>
+          <td>
+<a data-cite="INFRA#list">list</a>
+          </td>
+          <td>
+A finite ordered sequence of items as specified in [[INFRA]].
+          </td>
+        </tr>
+        <tr>
+          <td>
+<a data-cite="INFRA#ordered-set">ordered&nbsp;set</a>
+          </td>
+          <td>
+A <a data-cite="INFRA#list">list</a> that does not contain the same item twice
+as specified in [[INFRA]].
+          </td>
+        </tr>
+        <tr>
+          <td>
+<dfn>datetime</dfn>
+          </td>
+          <td>
+A date and time value that is capable of losslessly expressing all values
+expressible by a `dateTime` as specified in
+[<a data-cite="XMLSCHEMA11-2#dateTime">XMLSCHEMA11-2</a>].
+          </td>
+        </tr>
+        <tr>
+          <td>
+<a data-cite="INFRA#string">string</a>
+          </td>
+          <td>
+A sequence of code units often used to represent human readable language
+as specified in [[INFRA]].
+          </td>
+        </tr>
+        <tr>
+          <td>
+<dfn>decimal</dfn>
+          </td>
+          <td>
+A value that represents a subset of the real numbers, which can be
+represented by decimal numerals as specified in
+[<a data-cite="XMLSCHEMA11-2#decimal">XMLSCHEMA11-2</a>]. To maximize
+interoperability, implementers are urged to only express values capable of
+being represented by 53 bits in binary notation.
+          </td>
+        </tr>
+        <tr>
+          <td>
+<dfn>double</dfn>
+          </td>
+          <td>
+A value that is often used to approximate arbitrary real numbers as specified
+in [<a data-cite="XMLSCHEMA11-2#double">XMLSCHEMA11-2</a>]. To maximize
+interoperability, implementers are urged to only express values capable of
+being represented by 64 bits in binary notation.
+          </td>
+        </tr>
+        <tr>
+          <td>
+<a data-cite="INFRA#boolean">boolean</a>
+          </td>
+          <td>
+A value that is either true or false as defined in [[INFRA]].
+          </td>
+        </tr>
+        <tr>
+          <td>
+<a data-cite="INFRA#null">null</a>
+          </td>
+          <td>
+A value that is used to indicate the lack of a value as defined in [[INFRA]].
+          </td>
+        </tr>
+      </tbody>
+    </table>
+
     <section>
       <h2>Extensibility</h2>
       <p>
@@ -2212,7 +2292,7 @@ <h2>Service Endpoints</h2>
   </section>
 
   <section class="normative">
-    <h1>Core Representations</h1>
+    <h1>Representations</h1>
 
     <p>
 All concrete representations of a <a>DID document</a> are serialized using a
@@ -2250,6 +2330,36 @@ <h1>Core Representations</h1>
 for more information.
     </p>
 
+    <section>
+      <h2>Creating Representations</h2>
+      <p>
+The <a href="#data-model">data model</a> provided in this specification
+supports being serialized into a variety of existing representations. Some
+applications might require the creation of a new representation. All new
+representations require the following:
+      </p>
+      <ol>
+        <li>
+A representation MUST define an unambiguous encoding and decoding of all
+property names and their associated values as defined in this specification.
+This means anything you can represent in the <a>DID document</a> data model
+can be represented in any compliant representation.
+        </li>
+        <li>
+The representation MUST be associated with an IANA-registered MIME type.
+        </li>
+        <li>
+The representation MUST define fragment processing rules for its MIME type that
+are conformant with the fragment processing rules defined in section
+<a href="#fragment"></a> of this specification.
+        </li>
+      </ol>
+      <p>
+In order to maximize interoperability, representation specification authors
+SHOULD register their representation in the [[?DID-SPEC-REGISTRIES]].
+      </p>
+    </section>
+
     <section>
       <h2>
 JSON
diff --git a/terms.html b/terms.html
index 5d54825e..2c532530 100644
--- a/terms.html
+++ b/terms.html
@@ -100,7 +100,7 @@
 <a href="https://en.wikipedia.org/wiki/Attribute_(computing)">attributes</a> or
 <a href="https://en.wikipedia.org/wiki/Claims-based_identity">claims</a>
 describing the <a>DID subject</a>. A DID document may have one or more different
-<a>representations</a> as defined in <a href="#core-representations"></a> or in
+<a>representations</a> as defined in <a href="#representations"></a> or in
 the W3C DID Specification Registries [[DID-SPEC-REGISTRIES]].
   </dd>
 
@@ -252,7 +252,7 @@
 readily communicated via the protocol, and that consists of a set of
 representation metadata and a potentially unbounded stream of representation
 data." A <a>DID document</a> is a representation of information
-describing a <a>DID subject</a>. The <a href="#core-representations"></a>
+describing a <a>DID subject</a>. The <a href="#representations"></a>
 section of the <a href="https://w3.org/TR/did-core">DID Core specification</a>
 defines several representation formats for a <a>DID document</a>.
   </dd>

From 7062a41f11dafe0454ed7d22dfcb95abf59d3b54 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 19:36:02 -0500
Subject: [PATCH 79/89] Replace decimal with integer. Specify IEEE 754-2008 for
 double.

---
 index.html | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/index.html b/index.html
index 15578551..7e438160 100644
--- a/index.html
+++ b/index.html
@@ -1208,11 +1208,10 @@ <h1>Data Model</h1>
         </tr>
         <tr>
           <td>
-<dfn>decimal</dfn>
+<dfn>integer</dfn>
           </td>
           <td>
-A value that represents a subset of the real numbers, which can be
-represented by decimal numerals as specified in
+A real number without a fractional component as specified in
 [<a data-cite="XMLSCHEMA11-2#decimal">XMLSCHEMA11-2</a>]. To maximize
 interoperability, implementers are urged to only express values capable of
 being represented by 53 bits in binary notation.
@@ -1225,8 +1224,9 @@ <h1>Data Model</h1>
           <td>
 A value that is often used to approximate arbitrary real numbers as specified
 in [<a data-cite="XMLSCHEMA11-2#double">XMLSCHEMA11-2</a>]. To maximize
-interoperability, implementers are urged to only express values capable of
-being represented by 64 bits in binary notation.
+interoperability, implementers are urged to only express doubles capable of
+being represented as IEEE double-precision 64-bit floating point values
+[[IEEE 754-2008]].
           </td>
         </tr>
         <tr>

From 4002505543012e8de5c4999903476080a5f6a1a9 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 19:39:06 -0500
Subject: [PATCH 80/89] Fix IEEE 754-2008 reference.

---
 index.html | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/index.html b/index.html
index 7e438160..e8f0c545 100644
--- a/index.html
+++ b/index.html
@@ -1225,8 +1225,7 @@ <h1>Data Model</h1>
 A value that is often used to approximate arbitrary real numbers as specified
 in [<a data-cite="XMLSCHEMA11-2#double">XMLSCHEMA11-2</a>]. To maximize
 interoperability, implementers are urged to only express doubles capable of
-being represented as IEEE double-precision 64-bit floating point values
-[[IEEE 754-2008]].
+being represented as IEEE double-precision 64-bit floating point values.
           </td>
         </tr>
         <tr>

From 9916e14ec3e3888a6484c7480c29d06f18ed15ef Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Sun, 8 Nov 2020 19:44:42 -0500
Subject: [PATCH 81/89] Fix number warning in data types.

---
 index.html | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/index.html b/index.html
index e8f0c545..d62e2ab9 100644
--- a/index.html
+++ b/index.html
@@ -1213,8 +1213,8 @@ <h1>Data Model</h1>
           <td>
 A real number without a fractional component as specified in
 [<a data-cite="XMLSCHEMA11-2#decimal">XMLSCHEMA11-2</a>]. To maximize
-interoperability, implementers are urged to only express values capable of
-being represented by 53 bits in binary notation.
+interoperability, implementers are urged to heed the advice regarding
+integers in <a data-cite="rfc7159#section-6">RFC7159, Section 6: Numbers</a>.
           </td>
         </tr>
         <tr>
@@ -1224,8 +1224,8 @@ <h1>Data Model</h1>
           <td>
 A value that is often used to approximate arbitrary real numbers as specified
 in [<a data-cite="XMLSCHEMA11-2#double">XMLSCHEMA11-2</a>]. To maximize
-interoperability, implementers are urged to only express doubles capable of
-being represented as IEEE double-precision 64-bit floating point values.
+interoperability, implementers are urged to heed the advice regarding
+doubles in <a data-cite="rfc7159#section-6">RFC7159, Section 6: Numbers</a>.
           </td>
         </tr>
         <tr>

From 59a7cd09cd0fd482ae03e84549100a853350f762 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Wed, 11 Nov 2020 16:14:30 -0500
Subject: [PATCH 82/89] Apply suggestions to Data Model from @brentzundel code
 review.

Co-authored-by: Brent Zundel <brent.zundel@gmail.com>
---
 index.html | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/index.html b/index.html
index d62e2ab9..3d850a4c 100644
--- a/index.html
+++ b/index.html
@@ -2334,15 +2334,15 @@ <h2>Creating Representations</h2>
       <p>
 The <a href="#data-model">data model</a> provided in this specification
 supports being serialized into a variety of existing representations. Some
-applications might require the creation of a new representation. All new
+applications might require the creation of a new representation. All
 representations require the following:
       </p>
       <ol>
         <li>
-A representation MUST define an unambiguous encoding and decoding of all
+A representation MUST define an unambiguous encoding and decoding for all
 property names and their associated values as defined in this specification.
-This means anything you can represent in the <a>DID document</a> data model
-can be represented in any compliant representation.
+This enables anything that can be represented in the <a>DID document</a> data
+model to also be represented in a compliant representation.
         </li>
         <li>
 The representation MUST be associated with an IANA-registered MIME type.

From b8e0ff4eadc346d7259d99b74f02d6209a286a16 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Tue, 17 Nov 2020 09:22:29 -0500
Subject: [PATCH 83/89] Rename "Creating Representations" to "Representation
 Requirements".

---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index 3d850a4c..c04f80bd 100644
--- a/index.html
+++ b/index.html
@@ -2330,7 +2330,7 @@ <h1>Representations</h1>
     </p>
 
     <section>
-      <h2>Creating Representations</h2>
+      <h2>Representation Requirements</h2>
       <p>
 The <a href="#data-model">data model</a> provided in this specification
 supports being serialized into a variety of existing representations. Some

From 919ad01ef84cefb0a8dc1e466e045b58da58ffb1 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Tue, 17 Nov 2020 09:24:02 -0500
Subject: [PATCH 84/89] Ensure representations associated with one MIME type.

Co-authored-by: Justin Richer <justin@bspk.io>
---
 index.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/index.html b/index.html
index c04f80bd..f116ceb9 100644
--- a/index.html
+++ b/index.html
@@ -2345,7 +2345,7 @@ <h2>Representation Requirements</h2>
 model to also be represented in a compliant representation.
         </li>
         <li>
-The representation MUST be associated with an IANA-registered MIME type.
+The representation MUST be uniquely associated with an IANA-registered MIME type.
         </li>
         <li>
 The representation MUST define fragment processing rules for its MIME type that

From ca8d10e7e6d56fb72123b2d3804aec79f613fd66 Mon Sep 17 00:00:00 2001
From: Manu Sporny <msporny@digitalbazaar.com>
Date: Tue, 17 Nov 2020 11:49:37 -0500
Subject: [PATCH 85/89] Make language around data type requirements more
 specific.

Co-authored-by: Justin Richer <justin@bspk.io>
---
 index.html | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/index.html b/index.html
index f116ceb9..d1a12a73 100644
--- a/index.html
+++ b/index.html
@@ -2340,7 +2340,8 @@ <h2>Representation Requirements</h2>
       <ol>
         <li>
 A representation MUST define an unambiguous encoding and decoding for all
-property names and their associated values as defined in this specification.
+property names and all data model <a href="#data-model">data types</a> 
+as defined in this specification.
 This enables anything that can be represented in the <a>DID document</a> data
 model to also be represented in a compliant representation.
         </li>

From 53cce5970275839b78d8960b247d1194e099119e Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Tue, 27 Oct 2020 20:10:34 +0000
Subject: [PATCH 86/89] terms: add 'immutable' to DLT definition, #401

---
 terms.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/terms.html b/terms.html
index 2c532530..f44e0be5 100644
--- a/terms.html
+++ b/terms.html
@@ -216,7 +216,7 @@
 A <a href="https://en.wikipedia.org/wiki/Distributed_database">distributed database</a>
 in which the various nodes use a
 <a href="https://en.wikipedia.org/wiki/Consensus_(computer_science)">consensus protocol</a>
-to maintain a shared ledger in which each transaction is cryptographically
+to maintain an immutable shared ledger in which each transaction is cryptographically
 signed and chained to the previous transaction.
   </dd>
 

From faecb1e97ecdca933d460b3ead29f62a9a3bae7b Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Wed, 11 Nov 2020 09:11:36 +0000
Subject: [PATCH 87/89] terms: Update DLT definition, from @jandrieu

---
 terms.html | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/terms.html b/terms.html
index f44e0be5..4a874459 100644
--- a/terms.html
+++ b/terms.html
@@ -213,11 +213,13 @@
   <dt><dfn data-lt="distributed ledger technology|DLT">distributed ledger</dfn> (DLT)</dt>
 
   <dd>
-A <a href="https://en.wikipedia.org/wiki/Distributed_database">distributed database</a>
-in which the various nodes use a
-<a href="https://en.wikipedia.org/wiki/Consensus_(computer_science)">consensus protocol</a>
-to maintain an immutable shared ledger in which each transaction is cryptographically
-signed and chained to the previous transaction.
+A non-centralized system for recording events. These systems establish
+sufficient confidence for participating users to rely upon the data recorded
+by others to make operational decisions. They typically use distributed
+databases where different nodes use a consensus protocol to confirm the
+ordering of cryptographically signed transactions. The linking of digitally
+signed transactions over time often makes the history of the ledger
+effectively immutable.
   </dd>
 
   <dt><dfn data-lt="proofPurpose">proof purpose</dfn></dt>

From 26ad2ebcc487b2893bf464e4e465c83286a387d9 Mon Sep 17 00:00:00 2001
From: Amy Guy <amy@rhiaro.co.uk>
Date: Wed, 11 Nov 2020 14:18:48 +0000
Subject: [PATCH 88/89] Fix language

Co-authored-by: Manu Sporny <msporny@digitalbazaar.com>
---
 terms.html | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/terms.html b/terms.html
index 4a874459..f947784e 100644
--- a/terms.html
+++ b/terms.html
@@ -214,7 +214,7 @@
 
   <dd>
 A non-centralized system for recording events. These systems establish
-sufficient confidence for participating users to rely upon the data recorded
+sufficient confidence for participants to rely upon the data recorded
 by others to make operational decisions. They typically use distributed
 databases where different nodes use a consensus protocol to confirm the
 ordering of cryptographically signed transactions. The linking of digitally

From 002b9f0f6e3022321254366c31dfd9171a645889 Mon Sep 17 00:00:00 2001
From: rhiaro <amy@rhiaro.co.uk>
Date: Mon, 16 Nov 2020 13:08:34 +0000
Subject: [PATCH 89/89] feature at risk: note for did+ld+json media type, for
 #208

---
 index.html | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/index.html b/index.html
index d1a12a73..bcdbcbfa 100644
--- a/index.html
+++ b/index.html
@@ -2519,6 +2519,13 @@ <h2>
 of <code>application/did+ld+json</code> in the resolver metadata).
       </p>
 
+      <p class="issue atrisk" data-number="208">
+Use of the media type <code>application/did+ld+json</code> is pending
+clarification over registration of media types with multiple suffixes. The
+alternative will be to use <code>application/did+jsonld</code> if multiple
+suffixes cannot be registered by the time the rest of DID Core is ready for PR.
+      </p>
+
       <ul>
         <li>
 The <code>@id</code> and <code>@type</code> keywords are aliased to
@@ -4765,6 +4772,14 @@ <h2>application/did+json</h2>
 
     <section>
       <h2>application/did+ld+json</h2>
+
+      <p class="issue atrisk" data-number="208">
+Use of the media type <code>application/did+ld+json</code> is pending
+clarification over registration of media types with multiple suffixes. The
+alternative will be to use <code>application/did+jsonld</code> if multiple
+suffixes cannot be registered by the time the rest of DID Core is ready for PR.
+      </p>
+
       <dl>
         <dt>Type name:</dt>
         <dd>application</dd>