@interop/wallet-core 0.50.0 → 0.52.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/README.md +7 -11
  2. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts +17 -8
  3. package/dist/clientAnnex/credentialAnchoredGenesis.d.ts.map +1 -1
  4. package/dist/clientAnnex/credentialAnchoredGenesis.js +33 -12
  5. package/dist/clientAnnex/credentialAnchoredGenesis.js.map +1 -1
  6. package/dist/clientAnnex/forget.d.ts +18 -6
  7. package/dist/clientAnnex/forget.d.ts.map +1 -1
  8. package/dist/clientAnnex/forget.js +19 -6
  9. package/dist/clientAnnex/forget.js.map +1 -1
  10. package/dist/clientAnnex/forgetLast.d.ts +65 -28
  11. package/dist/clientAnnex/forgetLast.d.ts.map +1 -1
  12. package/dist/clientAnnex/forgetLast.js +78 -18
  13. package/dist/clientAnnex/forgetLast.js.map +1 -1
  14. package/dist/clientAnnex/gc.d.ts +3 -3
  15. package/dist/clientAnnex/gc.d.ts.map +1 -1
  16. package/dist/clientAnnex/gc.js +2 -2
  17. package/dist/clientAnnex/gc.js.map +1 -1
  18. package/dist/clientAnnex/index.d.ts +6 -6
  19. package/dist/clientAnnex/index.d.ts.map +1 -1
  20. package/dist/clientAnnex/index.js +5 -5
  21. package/dist/clientAnnex/index.js.map +1 -1
  22. package/dist/clientAnnex/ladder.d.ts +19 -11
  23. package/dist/clientAnnex/ladder.d.ts.map +1 -1
  24. package/dist/clientAnnex/ladder.js +77 -14
  25. package/dist/clientAnnex/ladder.js.map +1 -1
  26. package/dist/clientAnnex/ladderAnchored.d.ts +36 -7
  27. package/dist/clientAnnex/ladderAnchored.d.ts.map +1 -1
  28. package/dist/clientAnnex/ladderAnchored.js +80 -18
  29. package/dist/clientAnnex/ladderAnchored.js.map +1 -1
  30. package/dist/clientAnnex/log.d.ts +6 -6
  31. package/dist/clientAnnex/log.d.ts.map +1 -1
  32. package/dist/clientAnnex/log.js +8 -8
  33. package/dist/clientAnnex/log.js.map +1 -1
  34. package/dist/clientAnnex/recoveryLadderAnchored.d.ts +7 -7
  35. package/dist/clientAnnex/recoveryLadderAnchored.js +9 -9
  36. package/dist/clientAnnex/recoveryLadderAnchored.js.map +1 -1
  37. package/dist/clientAnnex/selfEnroll.d.ts +6 -4
  38. package/dist/clientAnnex/selfEnroll.d.ts.map +1 -1
  39. package/dist/clientAnnex/selfEnroll.js +19 -7
  40. package/dist/clientAnnex/selfEnroll.js.map +1 -1
  41. package/dist/clients/listing.d.ts +1 -1
  42. package/dist/clients/listing.d.ts.map +1 -1
  43. package/dist/clients/listing.js +1 -1
  44. package/dist/clients/listing.js.map +1 -1
  45. package/dist/clients/revocation.d.ts +1 -1
  46. package/dist/clients/rosterPolicy.d.ts +1 -1
  47. package/dist/clients/rosterPolicy.d.ts.map +1 -1
  48. package/dist/descriptors/acquire.js +1 -1
  49. package/dist/descriptors/logSource.d.ts +1 -2
  50. package/dist/descriptors/logSource.d.ts.map +1 -1
  51. package/dist/descriptors/logSource.js +2 -2
  52. package/dist/descriptors/logSource.js.map +1 -1
  53. package/dist/enrollment/enrollment.d.ts +1 -1
  54. package/dist/enrollment/enrollment.d.ts.map +1 -1
  55. package/dist/enrollment/enrollment.js +2 -1
  56. package/dist/enrollment/enrollment.js.map +1 -1
  57. package/dist/genesis/accountGenesis.d.ts +13 -1
  58. package/dist/genesis/accountGenesis.d.ts.map +1 -1
  59. package/dist/genesis/accountGenesis.js +1 -1
  60. package/dist/genesis/accountGenesis.js.map +1 -1
  61. package/dist/index.d.ts +1 -3
  62. package/dist/index.d.ts.map +1 -1
  63. package/dist/index.js +1 -3
  64. package/dist/index.js.map +1 -1
  65. package/dist/keyring/kdf.d.ts +6 -20
  66. package/dist/keyring/kdf.d.ts.map +1 -1
  67. package/dist/keyring/kdf.js +8 -5
  68. package/dist/keyring/kdf.js.map +1 -1
  69. package/dist/keyring/unlockSpace.js +1 -1
  70. package/dist/keys/rosterLogStore.d.ts +16 -14
  71. package/dist/keys/rosterLogStore.d.ts.map +1 -1
  72. package/dist/keys/rosterLogStore.js +149 -32
  73. package/dist/keys/rosterLogStore.js.map +1 -1
  74. package/dist/keys/rosterStore.d.ts +8 -7
  75. package/dist/keys/rosterStore.d.ts.map +1 -1
  76. package/dist/keys/rosterStore.js +6 -6
  77. package/dist/keys/rosterStore.js.map +1 -1
  78. package/dist/keys/spaceEpochs.d.ts +1 -1
  79. package/dist/keys/spaceEpochs.js +1 -1
  80. package/dist/keys/userKeyRoster.d.ts +3 -3
  81. package/dist/keys/userKeyRoster.d.ts.map +1 -1
  82. package/dist/keys/userKeyRoster.js +3 -3
  83. package/dist/keys/userKeyRoster.js.map +1 -1
  84. package/dist/recovery/index.d.ts +2 -2
  85. package/dist/recovery/index.js +2 -2
  86. package/dist/recovery/recoveryDelegation.js +1 -1
  87. package/dist/recovery/recoveryDelegation.js.map +1 -1
  88. package/dist/recovery/recoveryWebvh.d.ts +4 -4
  89. package/dist/recovery/recoveryWebvh.js +5 -5
  90. package/dist/request/appKey.d.ts +9 -3
  91. package/dist/request/appKey.d.ts.map +1 -1
  92. package/dist/request/appKey.js +13 -8
  93. package/dist/request/appKey.js.map +1 -1
  94. package/dist/request/classify.d.ts.map +1 -1
  95. package/dist/request/classify.js +13 -1
  96. package/dist/request/classify.js.map +1 -1
  97. package/dist/request/ephemeralExchange.d.ts +6 -1
  98. package/dist/request/ephemeralExchange.d.ts.map +1 -1
  99. package/dist/request/ephemeralExchange.js +6 -1
  100. package/dist/request/ephemeralExchange.js.map +1 -1
  101. package/dist/request/exchangeClient.d.ts +0 -23
  102. package/dist/request/exchangeClient.d.ts.map +1 -1
  103. package/dist/request/exchangeClient.js +30 -1
  104. package/dist/request/exchangeClient.js.map +1 -1
  105. package/dist/request/index.d.ts +4 -1
  106. package/dist/request/index.d.ts.map +1 -1
  107. package/dist/request/index.js +4 -1
  108. package/dist/request/index.js.map +1 -1
  109. package/dist/request/interactionRequest.d.ts +23 -0
  110. package/dist/request/interactionRequest.d.ts.map +1 -0
  111. package/dist/request/interactionRequest.js +46 -0
  112. package/dist/request/interactionRequest.js.map +1 -0
  113. package/dist/request/interactionUrl.d.ts +3 -14
  114. package/dist/request/interactionUrl.d.ts.map +1 -1
  115. package/dist/request/interactionUrl.js +20 -1
  116. package/dist/request/interactionUrl.js.map +1 -1
  117. package/dist/resourceLog/controller.d.ts +48 -49
  118. package/dist/resourceLog/controller.d.ts.map +1 -1
  119. package/dist/resourceLog/controller.js +40 -20
  120. package/dist/resourceLog/controller.js.map +1 -1
  121. package/dist/resourceLog/errors.d.ts +12 -78
  122. package/dist/resourceLog/errors.d.ts.map +1 -1
  123. package/dist/resourceLog/errors.js +12 -79
  124. package/dist/resourceLog/errors.js.map +1 -1
  125. package/dist/resourceLog/index.d.ts +17 -22
  126. package/dist/resourceLog/index.d.ts.map +1 -1
  127. package/dist/resourceLog/index.js +16 -21
  128. package/dist/resourceLog/index.js.map +1 -1
  129. package/dist/resourceLog/license.d.ts +27 -26
  130. package/dist/resourceLog/license.d.ts.map +1 -1
  131. package/dist/resourceLog/license.js +31 -30
  132. package/dist/resourceLog/license.js.map +1 -1
  133. package/dist/unlock/index.d.ts +6 -6
  134. package/dist/unlock/index.d.ts.map +1 -1
  135. package/dist/unlock/index.js +5 -5
  136. package/dist/unlock/retire.d.ts +29 -28
  137. package/dist/unlock/retire.d.ts.map +1 -1
  138. package/dist/unlock/retire.js +25 -16
  139. package/dist/unlock/retire.js.map +1 -1
  140. package/dist/unlock/standingClient.d.ts +1 -1
  141. package/dist/unlock/standingClient.js +3 -3
  142. package/dist/unlock/standingWebvh.d.ts +28 -10
  143. package/dist/unlock/standingWebvh.d.ts.map +1 -1
  144. package/dist/unlock/standingWebvh.js +75 -37
  145. package/dist/unlock/standingWebvh.js.map +1 -1
  146. package/dist/unlock/unlockRecord.js +1 -1
  147. package/dist/webvh/delegatedLogStore.d.ts +2 -2
  148. package/dist/webvh/delegatedLogStore.js +2 -2
  149. package/dist/webvh/didWeb.js +1 -1
  150. package/dist/webvh/didWeb.js.map +1 -1
  151. package/dist/webvh/didWebvh.d.ts +3 -3
  152. package/dist/webvh/didWebvh.d.ts.map +1 -1
  153. package/dist/webvh/didWebvh.js +5 -5
  154. package/dist/webvh/didWebvh.js.map +1 -1
  155. package/dist/webvh/listClients.js +1 -1
  156. package/dist/webvh/listClients.js.map +1 -1
  157. package/dist/webvh/verifyLog.d.ts +1 -1
  158. package/dist/webvh/verifyLog.d.ts.map +1 -1
  159. package/dist/webvh/verifyLog.js +1 -2
  160. package/dist/webvh/verifyLog.js.map +1 -1
  161. package/package.json +6 -10
  162. package/dist/display/alignment.d.ts +0 -55
  163. package/dist/display/alignment.d.ts.map +0 -1
  164. package/dist/display/alignment.js +0 -117
  165. package/dist/display/alignment.js.map +0 -1
  166. package/dist/display/credentialName.d.ts +0 -42
  167. package/dist/display/credentialName.d.ts.map +0 -1
  168. package/dist/display/credentialName.js +0 -106
  169. package/dist/display/credentialName.js.map +0 -1
  170. package/dist/display/displayFields.d.ts +0 -59
  171. package/dist/display/displayFields.d.ts.map +0 -1
  172. package/dist/display/displayFields.js +0 -136
  173. package/dist/display/displayFields.js.map +0 -1
  174. package/dist/display/evidence.d.ts +0 -50
  175. package/dist/display/evidence.d.ts.map +0 -1
  176. package/dist/display/evidence.js +0 -67
  177. package/dist/display/evidence.js.map +0 -1
  178. package/dist/display/image.d.ts +0 -18
  179. package/dist/display/image.d.ts.map +0 -1
  180. package/dist/display/image.js +0 -23
  181. package/dist/display/image.js.map +0 -1
  182. package/dist/display/index.d.ts +0 -38
  183. package/dist/display/index.d.ts.map +0 -1
  184. package/dist/display/index.js +0 -32
  185. package/dist/display/index.js.map +0 -1
  186. package/dist/display/issuer.d.ts +0 -105
  187. package/dist/display/issuer.d.ts.map +0 -1
  188. package/dist/display/issuer.js +0 -126
  189. package/dist/display/issuer.js.map +0 -1
  190. package/dist/display/obv3.d.ts +0 -82
  191. package/dist/display/obv3.d.ts.map +0 -1
  192. package/dist/display/obv3.js +0 -117
  193. package/dist/display/obv3.js.map +0 -1
  194. package/dist/display/parse.d.ts +0 -66
  195. package/dist/display/parse.d.ts.map +0 -1
  196. package/dist/display/parse.js +0 -104
  197. package/dist/display/parse.js.map +0 -1
  198. package/dist/display/subject.d.ts +0 -79
  199. package/dist/display/subject.d.ts.map +0 -1
  200. package/dist/display/subject.js +0 -124
  201. package/dist/display/subject.js.map +0 -1
  202. package/dist/display/text.d.ts +0 -53
  203. package/dist/display/text.d.ts.map +0 -1
  204. package/dist/display/text.js +0 -78
  205. package/dist/display/text.js.map +0 -1
  206. package/dist/display/types.d.ts +0 -55
  207. package/dist/display/types.d.ts.map +0 -1
  208. package/dist/display/types.js +0 -41
  209. package/dist/display/types.js.map +0 -1
  210. package/dist/display/validity.d.ts +0 -51
  211. package/dist/display/validity.d.ts.map +0 -1
  212. package/dist/display/validity.js +0 -51
  213. package/dist/display/validity.js.map +0 -1
  214. package/dist/display/verificationView.d.ts +0 -115
  215. package/dist/display/verificationView.d.ts.map +0 -1
  216. package/dist/display/verificationView.js +0 -199
  217. package/dist/display/verificationView.js.map +0 -1
  218. package/dist/resourceLog/append.d.ts +0 -112
  219. package/dist/resourceLog/append.d.ts.map +0 -1
  220. package/dist/resourceLog/append.js +0 -197
  221. package/dist/resourceLog/append.js.map +0 -1
  222. package/dist/resourceLog/entry.d.ts +0 -68
  223. package/dist/resourceLog/entry.d.ts.map +0 -1
  224. package/dist/resourceLog/entry.js +0 -167
  225. package/dist/resourceLog/entry.js.map +0 -1
  226. package/dist/resourceLog/pin.d.ts +0 -82
  227. package/dist/resourceLog/pin.d.ts.map +0 -1
  228. package/dist/resourceLog/pin.js +0 -57
  229. package/dist/resourceLog/pin.js.map +0 -1
  230. package/dist/resourceLog/seal.d.ts +0 -97
  231. package/dist/resourceLog/seal.d.ts.map +0 -1
  232. package/dist/resourceLog/seal.js +0 -113
  233. package/dist/resourceLog/seal.js.map +0 -1
  234. package/dist/resourceLog/verify.d.ts +0 -96
  235. package/dist/resourceLog/verify.d.ts.map +0 -1
  236. package/dist/resourceLog/verify.js +0 -474
  237. package/dist/resourceLog/verify.js.map +0 -1
  238. package/dist/resourceLog/vmFragment.d.ts +0 -33
  239. package/dist/resourceLog/vmFragment.d.ts.map +0 -1
  240. package/dist/resourceLog/vmFragment.js +0 -39
  241. package/dist/resourceLog/vmFragment.js.map +0 -1
@@ -2,28 +2,23 @@
2
2
  * Copyright (c) 2026 Interop Alliance. All rights reserved.
3
3
  */
4
4
  /**
5
- * The `@interop/wallet-core/resourceLog` entry: the client side of the
6
- * Resource Log Profile (App Connect spec `#resource-log-profile`) -- full
7
- * chain verification against an adversarial host (parse shape, SCID and
8
- * entry-hash recomputation, entry proofs, the external-authorization rule
9
- * against the independently verified did:webvh controller document, terminal
10
- * entries), the ceremony-tail license on ladder-signed appends, the
11
- * chain-head pin with its continuity rules, the append path (verified-head
12
- * build, CAS with rebase-and-retry, read-back confirmation), and the sealing
13
- * sweep (the idempotent backstop append that re-anchors a log's head past
14
- * the controller's latest membership change).
15
- * Transport (JSON Lines, the store seam, the projection write) lives in
16
- * `@interop/was-client/log`; the hashing and proof kernel in
17
- * `@interop/did-method-webvh`. Kept out of the root export: this subpath
18
- * pulls the did:webvh and ed25519 dependency graph.
5
+ * The `@interop/wallet-core/resourceLog` entry: the wallet-domain residue of
6
+ * the Resource Log Profile's client side after the generic half moved to
7
+ * `@interop/vh-resource-log` -- the did:webvh controller adapter (the
8
+ * library's controller port extended with the per-version
9
+ * credential-inventory view, supplying the mandatory `admitAppend` admission
10
+ * hook), and the ceremony-tail license the hook carries
11
+ * (`assertLadderAppendLicensed`, refusing with `ResourceLogLicenseError`).
12
+ * Everything generic -- the JSON Lines codec, the store port and
13
+ * `confirmAppend`, chain verification, the chain-head pin
14
+ * (`ResourceLogPinStore` and `resourceLogPinId`; the named slot-key builders
15
+ * stay on their owning subpaths: `accountLogPinId` in `webvh`,
16
+ * `userKeyRosterPinId` in `keys`, `clientAnnexLogPinId` in `clientAnnex`),
17
+ * the append path, and the sealing sweep -- lives in the library, and this
18
+ * subpath re-exports none of it: one owner per name. Kept out of the root
19
+ * export: this subpath pulls the did:webvh and ed25519 dependency graph.
19
20
  */
20
21
  export { webvhResourceLogController } from './controller.js';
21
- export { ResourceLogClosedError, ResourceLogContinuityError, ResourceLogIntegrityError, ResourceLogLicenseError } from './errors.js';
22
+ export { ResourceLogLicenseError } from './errors.js';
22
23
  export { assertLadderAppendLicensed } from './license.js';
23
- export { buildResourceLogEntry, buildResourceLogGenesis } from './entry.js';
24
- export { memoryResourceLogPinStore, resourceLogPinId } from './pin.js';
25
- export { isTerminalResourceLogEntry, verifyResourceLog, verifyResourceLogHandover } from './verify.js';
26
- export { appendResourceLog, createResourceLog, readResourceLog } from './append.js';
27
- export { latestAssertionRemovalIndex, sealResourceLog } from './seal.js';
28
- export { vmFragmentOf } from './vmFragment.js';
29
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resourceLog/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EACL,0BAA0B,EAG3B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EAExB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,yBAAyB,EACzB,gBAAgB,EAGjB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,0BAA0B,EAC1B,iBAAiB,EACjB,yBAAyB,EAE1B,MAAM,aAAa,CAAA;AACpB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EAChB,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,2BAA2B,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/resourceLog/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,0BAA0B,EAG3B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAA"}
@@ -6,39 +6,40 @@
6
6
  * of the ladder VM's authority clauses). A ladder-signed append is accepted
7
7
  * in exactly two shapes: the log's first entry (creation, never extension --
8
8
  * callers admit that shape by not calling this check on a genesis entry),
9
- * or a rotation anchored at a posture-changing controller-document version,
10
- * one-shot -- refused when the verified log head already carries an entry
11
- * anchored at that version or later. Everything else, above all a rotation
9
+ * or a rotation that carries an inventory-changing controller document
10
+ * version, one-shot -- refused when the verified log head already carries
11
+ * an entry at that version or later. Everything else, above all a rotation
12
12
  * against an unchanged document (the silent-rekey shape), is refused with
13
- * {@link ResourceLogLicenseError}. Anchors compare by position in the
14
- * controller's verified version history, the structural twin of the sealing
15
- * sweep's `headAnchorIndex >= removalIndex` check.
13
+ * {@link ResourceLogLicenseError}. Controller versions compare by position
14
+ * in the controller's verified version history, the structural twin of the
15
+ * sealing sweep's `headControllerVersionIndex >= removalIndex` check.
16
16
  */
17
- import type { ResourceLogController } from './controller.js';
17
+ import type { WebvhResourceLogController } from './controller.js';
18
18
  /**
19
19
  * Evaluates the ceremony-tail license's second shape for one ladder-signed
20
- * append: the append must anchor at a posture-changing document version V --
21
- * S(V) differs from S(V-1) in either direction, with S(-1) empty for a
22
- * genesis-version anchor -- and no verified entry may already anchor at V or
23
- * later (`headAnchorIndex >= anchorIndex` refuses; the license is one-shot,
24
- * so a torn ceremony's late-arriving tail still passes while a second
25
- * rotation against the same anchor does not). A `null` anchor index (an
26
- * unversioned controller, where no anchor exists to license against) is
27
- * refused fail-closed.
20
+ * append: the append must carry an inventory-changing document version V --
21
+ * S(V) differs from S(V-1) in either direction, with S(-1) empty for the
22
+ * genesis version -- and no verified entry may already carry V or later
23
+ * (`headControllerVersionIndex >= controllerVersionIndex` refuses; the
24
+ * license is one-shot, so a torn ceremony's late-arriving tail still passes
25
+ * while a second rotation against the same version does not). A `null`
26
+ * controller version index (an unversioned controller, where no version
27
+ * exists to license against) is refused fail-closed.
28
28
  *
29
29
  * @param options {object}
30
- * @param options.controller {ResourceLogController} the verified controller
31
- * view
32
- * @param options.anchorIndex {number | null} the append's anchor as an
33
- * index into `controller.versionIds` (`null`: unanchored)
34
- * @param options.headAnchorIndex {number | null} the verified log head's
35
- * effective anchor before this append (`null`: the log has no anchored
36
- * entries yet)
30
+ * @param options.controller {object} the verified controller view's
31
+ * version list and inventory accessor
32
+ * @param options.controllerVersionIndex {number | null} the append's
33
+ * controller version as an index into `controller.versionIds` (`null`:
34
+ * no controller version)
35
+ * @param options.headControllerVersionIndex {number | null} the verified
36
+ * log head's effective controller version index before this append
37
+ * (`null`: the log has no versioned entries yet)
37
38
  * @returns {Promise<void>}
38
39
  */
39
- export declare function assertLadderAppendLicensed({ controller, anchorIndex, headAnchorIndex }: {
40
- controller: ResourceLogController;
41
- anchorIndex: number | null;
42
- headAnchorIndex: number | null;
40
+ export declare function assertLadderAppendLicensed({ controller, controllerVersionIndex, headControllerVersionIndex }: {
41
+ controller: Pick<WebvhResourceLogController, 'versionIds' | 'inventoryAt'>;
42
+ controllerVersionIndex: number | null;
43
+ headControllerVersionIndex: number | null;
43
44
  }): Promise<void>;
44
45
  //# sourceMappingURL=license.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/resourceLog/license.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAsB5D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,0BAA0B,CAAC,EAC/C,UAAU,EACV,WAAW,EACX,eAAe,EAChB,EAAE;IACD,UAAU,EAAE,qBAAqB,CAAA;IACjC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAC/B,GAAG,OAAO,CAAC,IAAI,CAAC,CAgChB"}
1
+ {"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/resourceLog/license.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAA;AAsBjE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,0BAA0B,CAAC,EAC/C,UAAU,EACV,sBAAsB,EACtB,0BAA0B,EAC3B,EAAE;IACD,UAAU,EAAE,IAAI,CAAC,0BAA0B,EAAE,YAAY,GAAG,aAAa,CAAC,CAAA;IAC1E,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAA;IACrC,0BAA0B,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1C,GAAG,OAAO,CAAC,IAAI,CAAC,CAsChB"}
@@ -1,6 +1,6 @@
1
1
  import { ResourceLogLicenseError } from './errors.js';
2
2
  /**
3
- * Set equality over posture members.
3
+ * Set equality over inventory members.
4
4
  *
5
5
  * @param left {Set<string>}
6
6
  * @param right {Set<string>}
@@ -19,45 +19,46 @@ function setsEqual(left, right) {
19
19
  }
20
20
  /**
21
21
  * Evaluates the ceremony-tail license's second shape for one ladder-signed
22
- * append: the append must anchor at a posture-changing document version V --
23
- * S(V) differs from S(V-1) in either direction, with S(-1) empty for a
24
- * genesis-version anchor -- and no verified entry may already anchor at V or
25
- * later (`headAnchorIndex >= anchorIndex` refuses; the license is one-shot,
26
- * so a torn ceremony's late-arriving tail still passes while a second
27
- * rotation against the same anchor does not). A `null` anchor index (an
28
- * unversioned controller, where no anchor exists to license against) is
29
- * refused fail-closed.
22
+ * append: the append must carry an inventory-changing document version V --
23
+ * S(V) differs from S(V-1) in either direction, with S(-1) empty for the
24
+ * genesis version -- and no verified entry may already carry V or later
25
+ * (`headControllerVersionIndex >= controllerVersionIndex` refuses; the
26
+ * license is one-shot, so a torn ceremony's late-arriving tail still passes
27
+ * while a second rotation against the same version does not). A `null`
28
+ * controller version index (an unversioned controller, where no version
29
+ * exists to license against) is refused fail-closed.
30
30
  *
31
31
  * @param options {object}
32
- * @param options.controller {ResourceLogController} the verified controller
33
- * view
34
- * @param options.anchorIndex {number | null} the append's anchor as an
35
- * index into `controller.versionIds` (`null`: unanchored)
36
- * @param options.headAnchorIndex {number | null} the verified log head's
37
- * effective anchor before this append (`null`: the log has no anchored
38
- * entries yet)
32
+ * @param options.controller {object} the verified controller view's
33
+ * version list and inventory accessor
34
+ * @param options.controllerVersionIndex {number | null} the append's
35
+ * controller version as an index into `controller.versionIds` (`null`:
36
+ * no controller version)
37
+ * @param options.headControllerVersionIndex {number | null} the verified
38
+ * log head's effective controller version index before this append
39
+ * (`null`: the log has no versioned entries yet)
39
40
  * @returns {Promise<void>}
40
41
  */
41
- export async function assertLadderAppendLicensed({ controller, anchorIndex, headAnchorIndex }) {
42
- if (anchorIndex === null ||
43
- anchorIndex < 0 ||
44
- anchorIndex >= controller.versionIds.length) {
42
+ export async function assertLadderAppendLicensed({ controller, controllerVersionIndex, headControllerVersionIndex }) {
43
+ if (controllerVersionIndex === null ||
44
+ controllerVersionIndex < 0 ||
45
+ controllerVersionIndex >= controller.versionIds.length) {
45
46
  throw new ResourceLogLicenseError('A ladder-signed append past the genesis entry cannot be licensed ' +
46
- 'without an anchor into the controller document version history.');
47
+ 'without a controller document version to license against.');
47
48
  }
48
- const current = (await controller.postureAt(controller.versionIds[anchorIndex])).postureKeys;
49
- const previous = anchorIndex === 0
49
+ const current = (await controller.inventoryAt(controller.versionIds[controllerVersionIndex])).inventoryKeys;
50
+ const previous = controllerVersionIndex === 0
50
51
  ? new Set()
51
- : (await controller.postureAt(controller.versionIds[anchorIndex - 1]))
52
- .postureKeys;
52
+ : (await controller.inventoryAt(controller.versionIds[controllerVersionIndex - 1])).inventoryKeys;
53
53
  if (setsEqual(current, previous)) {
54
- throw new ResourceLogLicenseError('The ladder-signed append anchors at a controller document version ' +
55
- 'that did not change the credential posture (a rotation against an ' +
54
+ throw new ResourceLogLicenseError('The ladder-signed append carries a controller document version ' +
55
+ 'that did not change the credential inventory (a rotation against an ' +
56
56
  'unchanged document is never licensed).');
57
57
  }
58
- if (headAnchorIndex !== null && headAnchorIndex >= anchorIndex) {
59
- throw new ResourceLogLicenseError('The verified log head already carries an entry anchored at or past ' +
60
- 'this posture-changing document version (the license is one-shot).');
58
+ if (headControllerVersionIndex !== null &&
59
+ headControllerVersionIndex >= controllerVersionIndex) {
60
+ throw new ResourceLogLicenseError('The verified log head already carries an entry at or past this ' +
61
+ 'inventory-changing document version (the license is one-shot).');
61
62
  }
62
63
  }
63
64
  //# sourceMappingURL=license.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/resourceLog/license.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAErD;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,IAAiB,EAAE,KAAkB;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,EAC/C,UAAU,EACV,WAAW,EACX,eAAe,EAKhB;IACC,IACE,WAAW,KAAK,IAAI;QACpB,WAAW,GAAG,CAAC;QACf,WAAW,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EAC3C,CAAC;QACD,MAAM,IAAI,uBAAuB,CAC/B,mEAAmE;YACjE,iEAAiE,CACpE,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,CACd,MAAM,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAE,CAAC,CAChE,CAAC,WAAW,CAAA;IACb,MAAM,QAAQ,GACZ,WAAW,KAAK,CAAC;QACf,CAAC,CAAC,IAAI,GAAG,EAAU;QACnB,CAAC,CAAC,CAAC,MAAM,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,GAAG,CAAC,CAAE,CAAC,CAAC;aAClE,WAAW,CAAA;IACpB,IAAI,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,uBAAuB,CAC/B,oEAAoE;YAClE,oEAAoE;YACpE,wCAAwC,CAC3C,CAAA;IACH,CAAC;IACD,IAAI,eAAe,KAAK,IAAI,IAAI,eAAe,IAAI,WAAW,EAAE,CAAC;QAC/D,MAAM,IAAI,uBAAuB,CAC/B,qEAAqE;YACnE,mEAAmE,CACtE,CAAA;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/resourceLog/license.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA;AAErD;;;;;;GAMG;AACH,SAAS,SAAS,CAAC,IAAiB,EAAE,KAAkB;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACvB,OAAO,KAAK,CAAA;QACd,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,EAC/C,UAAU,EACV,sBAAsB,EACtB,0BAA0B,EAK3B;IACC,IACE,sBAAsB,KAAK,IAAI;QAC/B,sBAAsB,GAAG,CAAC;QAC1B,sBAAsB,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,EACtD,CAAC;QACD,MAAM,IAAI,uBAAuB,CAC/B,mEAAmE;YACjE,2DAA2D,CAC9D,CAAA;IACH,CAAC;IACD,MAAM,OAAO,GAAG,CACd,MAAM,UAAU,CAAC,WAAW,CAAC,UAAU,CAAC,UAAU,CAAC,sBAAsB,CAAE,CAAC,CAC7E,CAAC,aAAa,CAAA;IACf,MAAM,QAAQ,GACZ,sBAAsB,KAAK,CAAC;QAC1B,CAAC,CAAC,IAAI,GAAG,EAAU;QACnB,CAAC,CAAC,CACE,MAAM,UAAU,CAAC,WAAW,CAC1B,UAAU,CAAC,UAAU,CAAC,sBAAsB,GAAG,CAAC,CAAE,CACnD,CACF,CAAC,aAAa,CAAA;IACrB,IAAI,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,uBAAuB,CAC/B,iEAAiE;YAC/D,sEAAsE;YACtE,wCAAwC,CAC3C,CAAA;IACH,CAAC;IACD,IACE,0BAA0B,KAAK,IAAI;QACnC,0BAA0B,IAAI,sBAAsB,EACpD,CAAC;QACD,MAAM,IAAI,uBAAuB,CAC/B,iEAAiE;YAC/D,gEAAgE,CACnE,CAAA;IACH,CAAC;AACH,CAAC"}
@@ -4,7 +4,7 @@
4
4
  /**
5
5
  * The `@interop/wallet-core/unlock` subpath: standing unlock credentials --
6
6
  * every unlock method (passphrase, passkey PRF, recovery code) as a standing
7
- * credential in the recovery-code posture, with self-enrolling login. The
7
+ * credential in the recovery-code configuration, with self-enrolling login. The
8
8
  * recovery subpath's spend-on-use flows sit on top of the machinery here.
9
9
  *
10
10
  * - `standingClientFromUnlockSeed` / `unlockClientIdentityFromSeed` -- the
@@ -16,17 +16,17 @@
16
16
  * client-annex Space `delegatedClients` delegations re-mintable; the ladder
17
17
  * seed sealed and carried verbatim, its `LADDER_SEED_BYTES` size owned by
18
18
  * the record format).
19
- * - `publishUnlockKey` / `removeUnlockKey` -- the merged document posture
19
+ * - `publishUnlockKey` / `removeUnlockKey` -- the merged document inventory
20
20
  * edit, parameterized by credential class: a verbatim `keyAgreement` entry,
21
21
  * or a `MultikeyCommitment` entry for a low-entropy-derived key.
22
22
  * - `retireUnlockCredential` -- the retirement ceremony behind "change my
23
- * passphrase" and "remove this passkey": the posture edit, then the shared
23
+ * passphrase" and "remove this passkey": the inventory edit, then the shared
24
24
  * roster rotation and collection fan-out off the retired credential's wrap.
25
25
  *
26
26
  * The ladder itself, and every ceremony that exercises it (the ladder-anchored
27
27
  * genesis, self-enrollment, the forget ceremony), live in
28
- * `@interop/wallet-core/clientAnnex` -- what stays here is the posture and
29
- * record machinery every wallet needs regardless of posture.
28
+ * `@interop/wallet-core/clientAnnex` -- what stays here is the inventory and
29
+ * record machinery every wallet needs regardless of account configuration.
30
30
  *
31
31
  * Kept out of the root export: this subpath pulls the webkms-client / ezcap /
32
32
  * was-client dependency graph (the same isolation pattern as `./keyring`).
@@ -38,5 +38,5 @@ export type { SealedRecordMember, SignedUnlockRecord, UnlockRecordContents, Unlo
38
38
  export { publishUnlockKey, removeUnlockKey, unlockKeyVerificationMethod, unlockKeyVmId } from './standingWebvh.js';
39
39
  export type { StandingUnlockKeys, UnlockKeyAgreementPublication, UnlockLogStore } from './standingWebvh.js';
40
40
  export { retireUnlockCredential } from './retire.js';
41
- export type { ClientAnnexPostureRetirement, UnlockCredentialRetirementResult } from './retire.js';
41
+ export type { ClientAnnexInventoryRetirement, UnlockCredentialRetirementResult } from './retire.js';
42
42
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/unlock/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,2BAA2B,EAC3B,aAAa,EACd,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,EACf,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,YAAY,EACV,4BAA4B,EAC5B,gCAAgC,EACjC,MAAM,aAAa,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/unlock/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,4BAA4B,EAC7B,MAAM,qBAAqB,CAAA;AAC5B,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAE5B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,6BAA6B,EAC7B,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,mBAAmB,CAAA;AAC1B,YAAY,EACV,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,2BAA2B,EAC3B,aAAa,EACd,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACV,kBAAkB,EAClB,6BAA6B,EAC7B,cAAc,EACf,MAAM,oBAAoB,CAAA;AAE3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,YAAY,EACV,8BAA8B,EAC9B,gCAAgC,EACjC,MAAM,aAAa,CAAA"}
@@ -4,7 +4,7 @@
4
4
  /**
5
5
  * The `@interop/wallet-core/unlock` subpath: standing unlock credentials --
6
6
  * every unlock method (passphrase, passkey PRF, recovery code) as a standing
7
- * credential in the recovery-code posture, with self-enrolling login. The
7
+ * credential in the recovery-code configuration, with self-enrolling login. The
8
8
  * recovery subpath's spend-on-use flows sit on top of the machinery here.
9
9
  *
10
10
  * - `standingClientFromUnlockSeed` / `unlockClientIdentityFromSeed` -- the
@@ -16,17 +16,17 @@
16
16
  * client-annex Space `delegatedClients` delegations re-mintable; the ladder
17
17
  * seed sealed and carried verbatim, its `LADDER_SEED_BYTES` size owned by
18
18
  * the record format).
19
- * - `publishUnlockKey` / `removeUnlockKey` -- the merged document posture
19
+ * - `publishUnlockKey` / `removeUnlockKey` -- the merged document inventory
20
20
  * edit, parameterized by credential class: a verbatim `keyAgreement` entry,
21
21
  * or a `MultikeyCommitment` entry for a low-entropy-derived key.
22
22
  * - `retireUnlockCredential` -- the retirement ceremony behind "change my
23
- * passphrase" and "remove this passkey": the posture edit, then the shared
23
+ * passphrase" and "remove this passkey": the inventory edit, then the shared
24
24
  * roster rotation and collection fan-out off the retired credential's wrap.
25
25
  *
26
26
  * The ladder itself, and every ceremony that exercises it (the ladder-anchored
27
27
  * genesis, self-enrollment, the forget ceremony), live in
28
- * `@interop/wallet-core/clientAnnex` -- what stays here is the posture and
29
- * record machinery every wallet needs regardless of posture.
28
+ * `@interop/wallet-core/clientAnnex` -- what stays here is the inventory and
29
+ * record machinery every wallet needs regardless of account configuration.
30
30
  *
31
31
  * Kept out of the root export: this subpath pulls the webkms-client / ezcap /
32
32
  * was-client dependency graph (the same isolation pattern as `./keyring`).
@@ -6,10 +6,10 @@
6
6
  * passphrase" and "remove this passkey", run synchronously in an enrolled
7
7
  * client, in dependency order. A standing credential is not a stored string to
8
8
  * overwrite -- it holds a wrap in the user key roster and a `keyAgreement`
9
- * posture in the account's did:webvh document -- so retiring one is a real
9
+ * inventory in the account's did:webvh document -- so retiring one is a real
10
10
  * rotation, on the same stages the client-revocation cascade runs.
11
11
  *
12
- * 1. **The document posture edit** (`removeUnlockKey`): the credential's
12
+ * 1. **The document inventory edit** (`removeUnlockKey`): the credential's
13
13
  * `keyAgreement` entry (verbatim key or commitment) and its committed
14
14
  * update-key hash leave the document in one log entry. That kills the
15
15
  * credential's latent self-enrollment authority -- with its rung
@@ -26,7 +26,7 @@
26
26
  * first means a run torn anywhere after it leaves the roster keying a
27
27
  * recipient the document no longer backs -- exactly the state the login-time
28
28
  * sweep detects and finishes. Torn the other way around, a rotation with the
29
- * posture still standing would simply re-escrow the credential and look
29
+ * inventory still standing would simply re-escrow the credential and look
30
30
  * healthy.
31
31
  *
32
32
  * There is deliberately no recovery-delegation re-mint stage here (the
@@ -36,7 +36,7 @@
36
36
  * credential's bridge chains through it.
37
37
  *
38
38
  * The client annex reach is its own stage (1b, the injected
39
- * `retireClientAnnexPosture` closure), between the document edit and the
39
+ * `retireClientAnnexInventory` closure), between the document edit and the
40
40
  * roster tail: a standing credential's annex rung-0 key and hash live in
41
41
  * the pointed generation's log, kept nowhere the account document edit can
42
42
  * reach, so without it a retired credential keeps annex-write authority
@@ -49,12 +49,13 @@
49
49
  * `delegatedClients` sibling: no server revocation is possible or needed --
50
50
  * the sibling delegation's record dies with the unlock Space the caller
51
51
  * deletes, and a swap (or the ordinary GC cadence) retires the generation it
52
- * targeted. Best-effort by contract: the closure catches its own failures
53
- * and reports them, so the roster rotation -- the ceremony's essential
54
- * remedy -- always runs.
52
+ * targeted. Best-effort by contract, enforced by the ceremony itself: a
53
+ * throw escaping the closure is caught here and reported as the `failed`
54
+ * skip, so the roster rotation -- the ceremony's essential remedy -- always
55
+ * runs.
55
56
  *
56
57
  * Convergence is the design: every stage detects its own completion from
57
- * durable state alone -- the posture edit no-ops when the document is already
58
+ * durable state alone -- the inventory edit no-ops when the document is already
58
59
  * settled, the rotation no-ops once every current-epoch recipient is
59
60
  * document-backed, and a collection is stale exactly when its current epoch
60
61
  * names a non-current user key generation -- so a naive full re-run finishes
@@ -76,7 +77,7 @@ import { type StandingUnlockKeys } from './standingWebvh.js';
76
77
  * this run (a re-run of an already-complete retirement reports `false`), the
77
78
  * roster's seal-backstop report (present when the roster store is sealable and
78
79
  * the roster stage ran), the per-collection fan-out result, the document as
79
- * the posture edit left it, and the rotated key with the roster descriptor it
80
+ * the inventory edit left it, and the rotated key with the roster descriptor it
80
81
  * was read from.
81
82
  */
82
83
  export interface UnlockCredentialRetirementResult {
@@ -86,40 +87,40 @@ export interface UnlockCredentialRetirementResult {
86
87
  document: object;
87
88
  userKey?: UserKey;
88
89
  rosterDescriptor?: CollectionEncryption;
89
- clientAnnex?: ClientAnnexPostureRetirement;
90
+ clientAnnex?: ClientAnnexInventoryRetirement;
90
91
  }
91
92
  /**
92
- * What the annex-posture stage reports: `struck` (a strike entry dropped
93
+ * What the annex-inventory stage reports: `struck` (a strike entry dropped
93
94
  * the retired rung's key and hash), `swapped` (a fresh generation replaced
94
- * the old one wholesale), `clean` (the pointed generation held no posture
95
+ * the old one wholesale), `clean` (the pointed generation held no inventory
95
96
  * for the retired credential), or `skipped` with the reason (`no-pointer`:
96
- * the account has no annex posture; `no-ladder-seed`: the ceremony holds
97
- * no seed that could strike or swap; `failed`: the closure's best-effort
98
- * catch).
97
+ * the account has no annex inventory; `no-ladder-seed`: the ceremony holds
98
+ * no seed that could strike or swap; `failed`: the closure reported a
99
+ * failure, or threw and the ceremony caught it).
99
100
  */
100
- export interface ClientAnnexPostureRetirement {
101
+ export interface ClientAnnexInventoryRetirement {
101
102
  action: 'struck' | 'swapped' | 'clean' | 'skipped';
102
103
  reason?: 'no-pointer' | 'no-ladder-seed' | 'failed';
103
104
  }
104
105
  /**
105
106
  * Retires one standing unlock credential from an account. See the module doc
106
- * for the order and the convergence story. Once the posture edit lands, a
107
+ * for the order and the convergence story. Once the inventory edit lands, a
107
108
  * thrown later stage leaves durable state a naive re-run -- or the login-time
108
109
  * sweep -- converges from.
109
110
  *
110
111
  * @param options {object}
111
112
  * @param options.idStore {WebvhIdStore} the account's `id` collection store
112
113
  * @param options.updateKeys {ClientWebvhUpdateKeys} the RETIRING (enrolled)
113
- * client's own did:webvh update-key seeds, which sign the posture edit
114
+ * client's own did:webvh update-key seeds, which sign the inventory edit
114
115
  * @param options.unlockKeys {StandingUnlockKeys} the retired credential's
115
- * public posture (its key-agreement publication and its recorded update
116
- * key, which the posture edit treats as a ladder anchor rather than truth
116
+ * public inventory (its key-agreement publication and its recorded update
117
+ * key, which the inventory edit treats as a ladder anchor rather than truth
117
118
  * -- see `removeUnlockKey`)
118
119
  * @param [options.ladderSeed] {Uint8Array} the retired credential's ladder
119
120
  * seed, when the ceremony holds the credential's secret; it strengthens the
120
121
  * ladder attribution but is not required
121
122
  * @param [options.expectedDid] {string} the account DID from the caller's
122
- * stored account pointer; supplied, the posture edit refuses a `did.jsonl`
123
+ * stored account pointer; supplied, the inventory edit refuses a `did.jsonl`
123
124
  * resolving to any other account
124
125
  * @param [options.verb] {string} what the caller is doing, for the
125
126
  * pending-rotation refusal message (e.g. `'changing your passphrase'`)
@@ -134,16 +135,16 @@ export interface ClientAnnexPostureRetirement {
134
135
  * called with `{ userKey, latestEpochId, descriptor }` after the roster read
135
136
  * and BEFORE the fan-out. The key and the epoch pin must persist atomically
136
137
  * @param options.collections {CascadeCollections} the fan-out's work
137
- * @param [options.retireClientAnnexPosture] {Function} `({ document }) =>
138
- * Promise<ClientAnnexPostureRetirement>` -- the annex reach (stage 1b in
139
- * the module doc), run against the post-edit document; expected to catch
140
- * its own failures and report them
138
+ * @param [options.retireClientAnnexInventory] {Function} `({ document }) =>
139
+ * Promise<ClientAnnexInventoryRetirement>` -- the annex reach (stage 1b in
140
+ * the module doc), run against the post-edit document; a throw is caught
141
+ * and reported as `{ action: 'skipped', reason: 'failed' }`
141
142
  * @param [options.onRotationAdopted] {Function} `({ userKey }) =>
142
143
  * Promise<void>` -- the live-session adoption of a rotated key, run last so
143
144
  * the session keeps operating without a re-login
144
145
  * @returns {Promise<UnlockCredentialRetirementResult>}
145
146
  */
146
- export declare function retireUnlockCredential({ idStore, updateKeys, unlockKeys, ladderSeed, expectedDid, verb, rosterStore, userKey, clientKeyAgreementKey, pinnedEpochId, onUserKeyAdopted, collections, retireClientAnnexPosture, onRotationAdopted }: {
147
+ export declare function retireUnlockCredential({ idStore, updateKeys, unlockKeys, ladderSeed, expectedDid, verb, rosterStore, userKey, clientKeyAgreementKey, pinnedEpochId, onUserKeyAdopted, collections, retireClientAnnexInventory, onRotationAdopted }: {
147
148
  idStore: WebvhIdStore;
148
149
  updateKeys: ClientWebvhUpdateKeys;
149
150
  unlockKeys: StandingUnlockKeys;
@@ -160,9 +161,9 @@ export declare function retireUnlockCredential({ idStore, updateKeys, unlockKeys
160
161
  descriptor: CollectionEncryption;
161
162
  }) => Promise<void>;
162
163
  collections: CascadeCollections;
163
- retireClientAnnexPosture?: (options: {
164
+ retireClientAnnexInventory?: (options: {
164
165
  document: object;
165
- }) => Promise<ClientAnnexPostureRetirement>;
166
+ }) => Promise<ClientAnnexInventoryRetirement>;
166
167
  onRotationAdopted?: (rotation: {
167
168
  userKey: UserKey;
168
169
  }) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"retire.d.ts","sourceRoot":"","sources":["../../src/unlock/retire.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+DG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE7E;;;;;;;GAOG;AACH,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,WAAW,EAAE,oBAAoB,CAAA;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;IACvC,WAAW,CAAC,EAAE,4BAA4B,CAAA;CAC3C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IAClD,MAAM,CAAC,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,CAAA;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,sBAAsB,CAAC,EAC3C,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,IAAI,EACJ,WAAW,EACX,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EAClB,EAAE;IACD,OAAO,EAAE,YAAY,CAAA;IACrB,UAAU,EAAE,qBAAqB,CAAA;IACjC,UAAU,EAAE,kBAAkB,CAAA;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,yBAAyB,CAAA;IACtC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qBAAqB,EAAE,gBAAgB,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE;QAC3B,OAAO,EAAE,OAAO,CAAA;QAChB,aAAa,EAAE,MAAM,CAAA;QACrB,UAAU,EAAE,oBAAoB,CAAA;KACjC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB,WAAW,EAAE,kBAAkB,CAAA;IAC/B,wBAAwB,CAAC,EAAE,CAAC,OAAO,EAAE;QACnC,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,CAAC,4BAA4B,CAAC,CAAA;IAC3C,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAyD5C"}
1
+ {"version":3,"file":"retire.d.ts","sourceRoot":"","sources":["../../src/unlock/retire.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AACxE,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,oBAAoB,EAC1B,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC5E,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE7E;;;;;;;GAOG;AACH,MAAM,WAAW,gCAAgC;IAC/C,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,CAAC,EAAE,gBAAgB,CAAA;IAC7B,WAAW,EAAE,oBAAoB,CAAA;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,gBAAgB,CAAC,EAAE,oBAAoB,CAAA;IACvC,WAAW,CAAC,EAAE,8BAA8B,CAAA;CAC7C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,8BAA8B;IAC7C,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAA;IAClD,MAAM,CAAC,EAAE,YAAY,GAAG,gBAAgB,GAAG,QAAQ,CAAA;CACpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,wBAAsB,sBAAsB,CAAC,EAC3C,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,IAAI,EACJ,WAAW,EACX,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,0BAA0B,EAC1B,iBAAiB,EAClB,EAAE;IACD,OAAO,EAAE,YAAY,CAAA;IACrB,UAAU,EAAE,qBAAqB,CAAA;IACjC,UAAU,EAAE,kBAAkB,CAAA;IAC9B,UAAU,CAAC,EAAE,UAAU,CAAA;IACvB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,yBAAyB,CAAA;IACtC,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,qBAAqB,EAAE,gBAAgB,CAAA;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE;QAC3B,OAAO,EAAE,OAAO,CAAA;QAChB,aAAa,EAAE,MAAM,CAAA;QACrB,UAAU,EAAE,oBAAoB,CAAA;KACjC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACnB,WAAW,EAAE,kBAAkB,CAAA;IAC/B,0BAA0B,CAAC,EAAE,CAAC,OAAO,EAAE;QACrC,QAAQ,EAAE,MAAM,CAAA;KACjB,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAA;IAC7C,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAiE5C"}
@@ -2,23 +2,23 @@ import { rotateRosterToDocumentAndCascade } from '../keys/index.js';
2
2
  import { removeUnlockKey } from './standingWebvh.js';
3
3
  /**
4
4
  * Retires one standing unlock credential from an account. See the module doc
5
- * for the order and the convergence story. Once the posture edit lands, a
5
+ * for the order and the convergence story. Once the inventory edit lands, a
6
6
  * thrown later stage leaves durable state a naive re-run -- or the login-time
7
7
  * sweep -- converges from.
8
8
  *
9
9
  * @param options {object}
10
10
  * @param options.idStore {WebvhIdStore} the account's `id` collection store
11
11
  * @param options.updateKeys {ClientWebvhUpdateKeys} the RETIRING (enrolled)
12
- * client's own did:webvh update-key seeds, which sign the posture edit
12
+ * client's own did:webvh update-key seeds, which sign the inventory edit
13
13
  * @param options.unlockKeys {StandingUnlockKeys} the retired credential's
14
- * public posture (its key-agreement publication and its recorded update
15
- * key, which the posture edit treats as a ladder anchor rather than truth
14
+ * public inventory (its key-agreement publication and its recorded update
15
+ * key, which the inventory edit treats as a ladder anchor rather than truth
16
16
  * -- see `removeUnlockKey`)
17
17
  * @param [options.ladderSeed] {Uint8Array} the retired credential's ladder
18
18
  * seed, when the ceremony holds the credential's secret; it strengthens the
19
19
  * ladder attribution but is not required
20
20
  * @param [options.expectedDid] {string} the account DID from the caller's
21
- * stored account pointer; supplied, the posture edit refuses a `did.jsonl`
21
+ * stored account pointer; supplied, the inventory edit refuses a `did.jsonl`
22
22
  * resolving to any other account
23
23
  * @param [options.verb] {string} what the caller is doing, for the
24
24
  * pending-rotation refusal message (e.g. `'changing your passphrase'`)
@@ -33,17 +33,17 @@ import { removeUnlockKey } from './standingWebvh.js';
33
33
  * called with `{ userKey, latestEpochId, descriptor }` after the roster read
34
34
  * and BEFORE the fan-out. The key and the epoch pin must persist atomically
35
35
  * @param options.collections {CascadeCollections} the fan-out's work
36
- * @param [options.retireClientAnnexPosture] {Function} `({ document }) =>
37
- * Promise<ClientAnnexPostureRetirement>` -- the annex reach (stage 1b in
38
- * the module doc), run against the post-edit document; expected to catch
39
- * its own failures and report them
36
+ * @param [options.retireClientAnnexInventory] {Function} `({ document }) =>
37
+ * Promise<ClientAnnexInventoryRetirement>` -- the annex reach (stage 1b in
38
+ * the module doc), run against the post-edit document; a throw is caught
39
+ * and reported as `{ action: 'skipped', reason: 'failed' }`
40
40
  * @param [options.onRotationAdopted] {Function} `({ userKey }) =>
41
41
  * Promise<void>` -- the live-session adoption of a rotated key, run last so
42
42
  * the session keeps operating without a re-login
43
43
  * @returns {Promise<UnlockCredentialRetirementResult>}
44
44
  */
45
- export async function retireUnlockCredential({ idStore, updateKeys, unlockKeys, ladderSeed, expectedDid, verb, rosterStore, userKey, clientKeyAgreementKey, pinnedEpochId, onUserKeyAdopted, collections, retireClientAnnexPosture, onRotationAdopted }) {
46
- // 1. The document posture edit -- the credential's standing, first. It
45
+ export async function retireUnlockCredential({ idStore, updateKeys, unlockKeys, ladderSeed, expectedDid, verb, rosterStore, userKey, clientKeyAgreementKey, pinnedEpochId, onUserKeyAdopted, collections, retireClientAnnexInventory, onRotationAdopted }) {
46
+ // 1. The document inventory edit -- the credential's standing, first. It
47
47
  // resolves the document as it now stands, which is what stage 2 resolves
48
48
  // its remaining recipients from.
49
49
  const { did, doc, log } = await removeUnlockKey({
@@ -55,10 +55,19 @@ export async function retireUnlockCredential({ idStore, updateKeys, unlockKeys,
55
55
  ...(verb !== undefined ? { verb } : {})
56
56
  });
57
57
  // 1b. The annex reach, against the post-edit document: strike the
58
- // retired credential's rung posture out of the pointed generation, or swap
59
- // the generation out from under it. Best-effort by the closure's own
60
- // contract, so the roster rotation below always runs.
61
- const clientAnnex = await retireClientAnnexPosture?.({ document: doc });
58
+ // retired credential's rung inventory out of the pointed generation, or swap
59
+ // the generation out from under it. Best-effort by contract, enforced here:
60
+ // a throw escaping the closure maps to the `failed` skip, so the roster
61
+ // rotation below always runs.
62
+ let clientAnnex;
63
+ if (retireClientAnnexInventory) {
64
+ try {
65
+ clientAnnex = await retireClientAnnexInventory({ document: doc });
66
+ }
67
+ catch {
68
+ clientAnnex = { action: 'skipped', reason: 'failed' };
69
+ }
70
+ }
62
71
  // 2. The shared roster-and-cascade tail: the roster rotation onto the
63
72
  // post-edit document (with its post-edit controller floor and its seal
64
73
  // backstop), then the collection fan-out onto the fresh key.
@@ -74,7 +83,7 @@ export async function retireUnlockCredential({ idStore, updateKeys, unlockKeys,
74
83
  collections
75
84
  });
76
85
  if (!tail.rosterDescriptor || !tail.userKey) {
77
- // No roster to rotate: the posture edit has landed, so the credential IS
86
+ // No roster to rotate: the inventory edit has landed, so the credential IS
78
87
  // retired -- a completed ceremony with nothing rotated.
79
88
  return {
80
89
  rotated: false,
@@ -1 +1 @@
1
- {"version":3,"file":"retire.js","sourceRoot":"","sources":["../../src/unlock/retire.ts"],"names":[],"mappings":"AAsEA,OAAO,EACL,gCAAgC,EAKjC,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAA2B,MAAM,oBAAoB,CAAA;AAkC7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,IAAI,EACJ,WAAW,EACX,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,wBAAwB,EACxB,iBAAiB,EAsBlB;IACC,uEAAuE;IACvE,yEAAyE;IACzE,iCAAiC;IACjC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,eAAe,CAAC;QAC9C,OAAO;QACP,UAAU;QACV,UAAU;QACV,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC,CAAA;IAEF,kEAAkE;IAClE,2EAA2E;IAC3E,qEAAqE;IACrE,sDAAsD;IACtD,MAAM,WAAW,GAAG,MAAM,wBAAwB,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAA;IAEvE,sEAAsE;IACtE,uEAAuE;IACvE,6DAA6D;IAC7D,MAAM,IAAI,GAAG,MAAM,gCAAgC,CAAC;QAClD,WAAW;QACX,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,qBAAqB;QACrB,aAAa;QACb,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,WAAW;KACZ,CAAC,CAAA;IACF,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5C,yEAAyE;QACzE,wDAAwD;QACxD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,GAAG;YACb,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAA;IACH,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"retire.js","sourceRoot":"","sources":["../../src/unlock/retire.ts"],"names":[],"mappings":"AAuEA,OAAO,EACL,gCAAgC,EAKjC,MAAM,kBAAkB,CAAA;AAEzB,OAAO,EAAE,eAAe,EAA2B,MAAM,oBAAoB,CAAA;AAkC7E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,OAAO,EACP,UAAU,EACV,UAAU,EACV,UAAU,EACV,WAAW,EACX,IAAI,EACJ,WAAW,EACX,OAAO,EACP,qBAAqB,EACrB,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,0BAA0B,EAC1B,iBAAiB,EAsBlB;IACC,yEAAyE;IACzE,yEAAyE;IACzE,iCAAiC;IACjC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,eAAe,CAAC;QAC9C,OAAO;QACP,UAAU;QACV,UAAU;QACV,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC,CAAA;IAEF,kEAAkE;IAClE,6EAA6E;IAC7E,4EAA4E;IAC5E,wEAAwE;IACxE,8BAA8B;IAC9B,IAAI,WAAuD,CAAA;IAC3D,IAAI,0BAA0B,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,0BAA0B,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAA;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;QACvD,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,uEAAuE;IACvE,6DAA6D;IAC7D,MAAM,IAAI,GAAG,MAAM,gCAAgC,CAAC;QAClD,WAAW;QACX,GAAG;QACH,GAAG;QACH,GAAG;QACH,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,qBAAqB;QACrB,aAAa;QACb,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,WAAW;KACZ,CAAC,CAAA;IACF,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5C,2EAA2E;QAC3E,wDAAwD;QACxD,OAAO;YACL,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,GAAG;YACb,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAA;IACH,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,iBAAiB,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IACtD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,GAAG;QACb,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAA;AACH,CAAC"}
@@ -32,7 +32,7 @@ export interface UnlockClientIdentity {
32
32
  * Assembles a client identity from its 32-byte client seed: the one place the
33
33
  * agents, multibases, and roster kid are derived, shared by the standing
34
34
  * credential derivation here and the recovery code's
35
- * (`recoveryClientFromCode`), so the two postures can never disagree on how a
35
+ * (`recoveryClientFromCode`), so the two derivations can never disagree on how a
36
36
  * seed becomes an identity.
37
37
  *
38
38
  * @param options {object}
@@ -4,8 +4,8 @@
4
4
  /**
5
5
  * The standing unlock credential's client identity: the deterministic key set
6
6
  * every unlock method (a passphrase, a passkey PRF output) derives from its
7
- * own unlock seed under the standing-credential posture -- the recovery-code
8
- * posture minus spend-on-use. The credential's key-agreement key holds a
7
+ * own unlock seed under the standing-credential configuration -- the recovery-code
8
+ * configuration minus spend-on-use. The credential's key-agreement key holds a
9
9
  * standing wrap in the user key roster (escrowed into every epoch, kept alive
10
10
  * by rotation fan-out), and its binding MAC key authenticates the unlock
11
11
  * record's account core, so a fresh browser holding nothing but the
@@ -37,7 +37,7 @@ const STANDING_BINDING_MAC_INFO = 'binding-mac';
37
37
  * Assembles a client identity from its 32-byte client seed: the one place the
38
38
  * agents, multibases, and roster kid are derived, shared by the standing
39
39
  * credential derivation here and the recovery code's
40
- * (`recoveryClientFromCode`), so the two postures can never disagree on how a
40
+ * (`recoveryClientFromCode`), so the two derivations can never disagree on how a
41
41
  * seed becomes an identity.
42
42
  *
43
43
  * @param options {object}