@openvtc/trust-tasks 0.27.0 → 0.27.2

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 (261) hide show
  1. package/CHANGELOG.md +267 -0
  2. package/dist/_runtime/freshness.d.ts +3 -1
  3. package/dist/_runtime/freshness.d.ts.map +1 -1
  4. package/dist/_runtime/freshness.js +4 -2
  5. package/dist/_runtime/freshness.js.map +1 -1
  6. package/dist/_shared/components.d.ts +361 -24
  7. package/dist/_shared/components.d.ts.map +1 -1
  8. package/dist/device/list/0.1/payload.d.ts +4 -4
  9. package/dist/device/list/0.1/payload.d.ts.map +1 -1
  10. package/dist/device/list/0.1/payload.js +4 -2
  11. package/dist/device/list/0.1/payload.js.map +1 -1
  12. package/dist/device/list/0.2/payload.d.ts +4 -4
  13. package/dist/device/list/0.2/payload.d.ts.map +1 -1
  14. package/dist/device/list/0.2/payload.js +4 -2
  15. package/dist/device/list/0.2/payload.js.map +1 -1
  16. package/dist/device/register/0.1/payload.d.ts +4 -4
  17. package/dist/device/register/0.1/payload.d.ts.map +1 -1
  18. package/dist/device/register/0.1/payload.js +4 -2
  19. package/dist/device/register/0.1/payload.js.map +1 -1
  20. package/dist/device/register/0.2/payload.d.ts +4 -4
  21. package/dist/device/register/0.2/payload.d.ts.map +1 -1
  22. package/dist/device/register/0.2/payload.js +4 -2
  23. package/dist/device/register/0.2/payload.js.map +1 -1
  24. package/dist/index.d.ts +31 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +31 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/rooms/_shared/0.1/room.d.ts +1 -1
  29. package/dist/rooms/_shared/0.1/room.d.ts.map +1 -1
  30. package/dist/rooms/create/0.2/payload.d.ts +534 -0
  31. package/dist/rooms/create/0.2/payload.d.ts.map +1 -0
  32. package/dist/rooms/create/0.2/payload.js +293 -0
  33. package/dist/rooms/create/0.2/payload.js.map +1 -0
  34. package/dist/rooms/epoch/chain/0.2/payload.d.ts +534 -0
  35. package/dist/rooms/epoch/chain/0.2/payload.d.ts.map +1 -0
  36. package/dist/rooms/epoch/chain/0.2/payload.js +292 -0
  37. package/dist/rooms/epoch/chain/0.2/payload.js.map +1 -0
  38. package/dist/rooms/epoch/prune/0.2/payload.d.ts +467 -0
  39. package/dist/rooms/epoch/prune/0.2/payload.d.ts.map +1 -0
  40. package/dist/rooms/epoch/prune/0.2/payload.js +251 -0
  41. package/dist/rooms/epoch/prune/0.2/payload.js.map +1 -0
  42. package/dist/rooms/info/0.2/payload.d.ts +1129 -0
  43. package/dist/rooms/info/0.2/payload.d.ts.map +1 -0
  44. package/dist/rooms/info/0.2/payload.js +618 -0
  45. package/dist/rooms/info/0.2/payload.js.map +1 -0
  46. package/dist/rooms/keys/backfill/0.2/payload.d.ts +380 -0
  47. package/dist/rooms/keys/backfill/0.2/payload.d.ts.map +1 -0
  48. package/dist/rooms/keys/backfill/0.2/payload.js +197 -0
  49. package/dist/rooms/keys/backfill/0.2/payload.js.map +1 -0
  50. package/dist/rooms/keys/browse/0.1/payload.d.ts +4 -4
  51. package/dist/rooms/keys/browse/0.1/payload.js +2 -2
  52. package/dist/rooms/keys/browse/0.1/payload.js.map +1 -1
  53. package/dist/rooms/keys/browse/0.2/payload.d.ts +941 -0
  54. package/dist/rooms/keys/browse/0.2/payload.d.ts.map +1 -0
  55. package/dist/rooms/keys/browse/0.2/payload.js +558 -0
  56. package/dist/rooms/keys/browse/0.2/payload.js.map +1 -0
  57. package/dist/rooms/keys/chain/0.2/payload.d.ts +450 -0
  58. package/dist/rooms/keys/chain/0.2/payload.d.ts.map +1 -0
  59. package/dist/rooms/keys/chain/0.2/payload.js +248 -0
  60. package/dist/rooms/keys/chain/0.2/payload.js.map +1 -0
  61. package/dist/rooms/keys/profile/read/0.1/payload.d.ts +4 -4
  62. package/dist/rooms/keys/profile/read/0.1/payload.js +2 -2
  63. package/dist/rooms/keys/profile/read/0.1/payload.js.map +1 -1
  64. package/dist/rooms/keys/read/0.1/payload.d.ts +4 -4
  65. package/dist/rooms/keys/read/0.1/payload.js +2 -2
  66. package/dist/rooms/keys/read/0.1/payload.js.map +1 -1
  67. package/dist/rooms/owner/anchor/0.1/payload.d.ts +4 -4
  68. package/dist/rooms/owner/anchor/0.1/payload.js +2 -2
  69. package/dist/rooms/owner/anchor/0.1/payload.js.map +1 -1
  70. package/dist/rooms/records/get/0.1/payload.d.ts +4 -4
  71. package/dist/rooms/records/get/0.1/payload.js +2 -2
  72. package/dist/rooms/records/get/0.1/payload.js.map +1 -1
  73. package/dist/rooms/records/get/0.2/payload.d.ts +4 -4
  74. package/dist/rooms/records/get/0.2/payload.js +2 -2
  75. package/dist/rooms/records/get/0.2/payload.js.map +1 -1
  76. package/dist/rooms/records/list/0.1/payload.d.ts +4 -4
  77. package/dist/rooms/records/list/0.1/payload.js +2 -2
  78. package/dist/rooms/records/list/0.1/payload.js.map +1 -1
  79. package/dist/rooms/records/list/0.2/payload.d.ts +4 -4
  80. package/dist/rooms/records/list/0.2/payload.js +2 -2
  81. package/dist/rooms/records/list/0.2/payload.js.map +1 -1
  82. package/dist/rooms/records/list/0.3/payload.d.ts +970 -0
  83. package/dist/rooms/records/list/0.3/payload.d.ts.map +1 -0
  84. package/dist/rooms/records/list/0.3/payload.js +526 -0
  85. package/dist/rooms/records/list/0.3/payload.js.map +1 -0
  86. package/dist/rooms/records/prune/0.1/payload.d.ts +706 -0
  87. package/dist/rooms/records/prune/0.1/payload.d.ts.map +1 -0
  88. package/dist/rooms/records/prune/0.1/payload.js +374 -0
  89. package/dist/rooms/records/prune/0.1/payload.js.map +1 -0
  90. package/dist/rooms/records/put/0.3/payload.d.ts +1212 -0
  91. package/dist/rooms/records/put/0.3/payload.d.ts.map +1 -0
  92. package/dist/rooms/records/put/0.3/payload.js +646 -0
  93. package/dist/rooms/records/put/0.3/payload.js.map +1 -0
  94. package/dist/rooms/records/retention/set/0.1/payload.d.ts +521 -0
  95. package/dist/rooms/records/retention/set/0.1/payload.d.ts.map +1 -0
  96. package/dist/rooms/records/retention/set/0.1/payload.js +276 -0
  97. package/dist/rooms/records/retention/set/0.1/payload.js.map +1 -0
  98. package/dist/vault/credentials/present/0.1/payload.d.ts +407 -0
  99. package/dist/vault/credentials/present/0.1/payload.d.ts.map +1 -0
  100. package/dist/vault/credentials/present/0.1/payload.js +217 -0
  101. package/dist/vault/credentials/present/0.1/payload.js.map +1 -0
  102. package/dist/voting/_shared/0.1/voting.d.ts +1 -1
  103. package/dist/voting/_shared/0.1/voting.d.ts.map +1 -1
  104. package/dist/voting/board/read/0.1/payload.d.ts +58 -2
  105. package/dist/voting/board/read/0.1/payload.d.ts.map +1 -1
  106. package/dist/voting/board/read/0.1/payload.js +36 -0
  107. package/dist/voting/board/read/0.1/payload.js.map +1 -1
  108. package/dist/voting/trustees/authorize/0.1/payload.d.ts +617 -0
  109. package/dist/voting/trustees/authorize/0.1/payload.d.ts.map +1 -0
  110. package/dist/voting/trustees/authorize/0.1/payload.js +386 -0
  111. package/dist/voting/trustees/authorize/0.1/payload.js.map +1 -0
  112. package/dist/voting/trustees/status/0.1/payload.d.ts +106 -2
  113. package/dist/voting/trustees/status/0.1/payload.d.ts.map +1 -1
  114. package/dist/voting/trustees/status/0.1/payload.js +48 -0
  115. package/dist/voting/trustees/status/0.1/payload.js.map +1 -1
  116. package/dist/vta/pcs/trustee/deal/0.2/payload.d.ts +1832 -0
  117. package/dist/vta/pcs/trustee/deal/0.2/payload.d.ts.map +1 -0
  118. package/dist/vta/pcs/trustee/deal/0.2/payload.js +1077 -0
  119. package/dist/vta/pcs/trustee/deal/0.2/payload.js.map +1 -0
  120. package/dist/vta/pcs/trustee/decrypt/0.2/payload.d.ts +758 -0
  121. package/dist/vta/pcs/trustee/decrypt/0.2/payload.d.ts.map +1 -0
  122. package/dist/vta/pcs/trustee/decrypt/0.2/payload.js +423 -0
  123. package/dist/vta/pcs/trustee/decrypt/0.2/payload.js.map +1 -0
  124. package/dist/vta/pcs/trustee/justify/0.2/payload.d.ts +1867 -0
  125. package/dist/vta/pcs/trustee/justify/0.2/payload.d.ts.map +1 -0
  126. package/dist/vta/pcs/trustee/justify/0.2/payload.js +1095 -0
  127. package/dist/vta/pcs/trustee/justify/0.2/payload.js.map +1 -0
  128. package/dist/vta/pcs/trustee/keys/0.2/payload.d.ts +1912 -0
  129. package/dist/vta/pcs/trustee/keys/0.2/payload.d.ts.map +1 -0
  130. package/dist/vta/pcs/trustee/keys/0.2/payload.js +1115 -0
  131. package/dist/vta/pcs/trustee/keys/0.2/payload.js.map +1 -0
  132. package/dist/vta/pcs/vote-encrypted/0.2/payload.d.ts +2228 -0
  133. package/dist/vta/pcs/vote-encrypted/0.2/payload.d.ts.map +1 -0
  134. package/dist/vta/pcs/vote-encrypted/0.2/payload.js +1300 -0
  135. package/dist/vta/pcs/vote-encrypted/0.2/payload.js.map +1 -0
  136. package/dist/vta/webvh/dids/create/1.2/payload.d.ts +961 -0
  137. package/dist/vta/webvh/dids/create/1.2/payload.d.ts.map +1 -0
  138. package/dist/vta/webvh/dids/create/1.2/payload.js +480 -0
  139. package/dist/vta/webvh/dids/create/1.2/payload.js.map +1 -0
  140. package/dist/vtc/_shared/0.1/room-migration.d.ts +16 -0
  141. package/dist/vtc/_shared/0.1/room-migration.d.ts.map +1 -0
  142. package/dist/vtc/_shared/0.1/room-migration.js +6 -0
  143. package/dist/vtc/_shared/0.1/room-migration.js.map +1 -0
  144. package/dist/vtc/_shared/0.1/room-storage.d.ts +1 -1
  145. package/dist/vtc/_shared/0.1/room-storage.d.ts.map +1 -1
  146. package/dist/vtc/_shared/0.2/room-storage.d.ts +16 -0
  147. package/dist/vtc/_shared/0.2/room-storage.d.ts.map +1 -0
  148. package/dist/vtc/_shared/0.2/room-storage.js +6 -0
  149. package/dist/vtc/_shared/0.2/room-storage.js.map +1 -0
  150. package/dist/vtc/admin/events/_shared/0.4/topic.d.ts +31 -0
  151. package/dist/vtc/admin/events/_shared/0.4/topic.d.ts.map +1 -0
  152. package/dist/vtc/admin/events/_shared/0.4/topic.js +6 -0
  153. package/dist/vtc/admin/events/_shared/0.4/topic.js.map +1 -0
  154. package/dist/vtc/admin/events/event/0.4/payload.d.ts +172 -0
  155. package/dist/vtc/admin/events/event/0.4/payload.d.ts.map +1 -0
  156. package/dist/vtc/admin/events/event/0.4/payload.js +103 -0
  157. package/dist/vtc/admin/events/event/0.4/payload.js.map +1 -0
  158. package/dist/vtc/admin/events/subscribe/0.4/payload.d.ts +409 -0
  159. package/dist/vtc/admin/events/subscribe/0.4/payload.d.ts.map +1 -0
  160. package/dist/vtc/admin/events/subscribe/0.4/payload.js +238 -0
  161. package/dist/vtc/admin/events/subscribe/0.4/payload.js.map +1 -0
  162. package/dist/vtc/elections/show/0.1/payload.d.ts +86 -2
  163. package/dist/vtc/elections/show/0.1/payload.d.ts.map +1 -1
  164. package/dist/vtc/elections/show/0.1/payload.js +40 -0
  165. package/dist/vtc/elections/show/0.1/payload.js.map +1 -1
  166. package/dist/vtc/rooms/get/0.2/payload.d.ts +1966 -0
  167. package/dist/vtc/rooms/get/0.2/payload.d.ts.map +1 -0
  168. package/dist/vtc/rooms/get/0.2/payload.js +976 -0
  169. package/dist/vtc/rooms/get/0.2/payload.js.map +1 -0
  170. package/dist/vtc/rooms/storage/migrate/0.2/payload.d.ts +595 -0
  171. package/dist/vtc/rooms/storage/migrate/0.2/payload.d.ts.map +1 -0
  172. package/dist/vtc/rooms/storage/migrate/0.2/payload.js +336 -0
  173. package/dist/vtc/rooms/storage/migrate/0.2/payload.js.map +1 -0
  174. package/dist/vtc/storage/configs/create/0.1/payload.d.ts +1 -1
  175. package/dist/vtc/storage/configs/create/0.1/payload.d.ts.map +1 -1
  176. package/dist/vtc/storage/configs/create/0.2/payload.d.ts +1360 -0
  177. package/dist/vtc/storage/configs/create/0.2/payload.d.ts.map +1 -0
  178. package/dist/vtc/storage/configs/create/0.2/payload.js +783 -0
  179. package/dist/vtc/storage/configs/create/0.2/payload.js.map +1 -0
  180. package/dist/vtc/storage/configs/get/0.1/payload.d.ts +1 -1
  181. package/dist/vtc/storage/configs/get/0.1/payload.d.ts.map +1 -1
  182. package/dist/vtc/storage/configs/get/0.2/payload.d.ts +1854 -0
  183. package/dist/vtc/storage/configs/get/0.2/payload.d.ts.map +1 -0
  184. package/dist/vtc/storage/configs/get/0.2/payload.js +1075 -0
  185. package/dist/vtc/storage/configs/get/0.2/payload.js.map +1 -0
  186. package/dist/vtc/storage/configs/list/0.1/payload.d.ts +1 -1
  187. package/dist/vtc/storage/configs/list/0.1/payload.d.ts.map +1 -1
  188. package/dist/vtc/storage/configs/list/0.2/payload.d.ts +1955 -0
  189. package/dist/vtc/storage/configs/list/0.2/payload.d.ts.map +1 -0
  190. package/dist/vtc/storage/configs/list/0.2/payload.js +1125 -0
  191. package/dist/vtc/storage/configs/list/0.2/payload.js.map +1 -0
  192. package/dist/vtc/storage/configs/update/0.1/payload.d.ts +1 -1
  193. package/dist/vtc/storage/configs/update/0.1/payload.d.ts.map +1 -1
  194. package/dist/vtc/storage/configs/update/0.2/payload.d.ts +1362 -0
  195. package/dist/vtc/storage/configs/update/0.2/payload.d.ts.map +1 -0
  196. package/dist/vtc/storage/configs/update/0.2/payload.js +782 -0
  197. package/dist/vtc/storage/configs/update/0.2/payload.js.map +1 -0
  198. package/dist/vtc/storage/credentials/set/0.1/payload.d.ts +1 -1
  199. package/dist/vtc/storage/credentials/set/0.1/payload.d.ts.map +1 -1
  200. package/dist/vtc/storage/credentials/set/0.2/payload.d.ts +979 -0
  201. package/dist/vtc/storage/credentials/set/0.2/payload.d.ts.map +1 -0
  202. package/dist/vtc/storage/credentials/set/0.2/payload.js +573 -0
  203. package/dist/vtc/storage/credentials/set/0.2/payload.js.map +1 -0
  204. package/package.json +1 -1
  205. package/src/_runtime/freshness.ts +4 -2
  206. package/src/_shared/components.ts +388 -24
  207. package/src/device/list/0.1/payload.ts +4 -2
  208. package/src/device/list/0.2/payload.ts +4 -2
  209. package/src/device/register/0.1/payload.ts +4 -2
  210. package/src/device/register/0.2/payload.ts +4 -2
  211. package/src/index.ts +31 -0
  212. package/src/rooms/_shared/0.1/room.ts +1 -1
  213. package/src/rooms/create/0.2/payload.ts +364 -0
  214. package/src/rooms/epoch/chain/0.2/payload.ts +347 -0
  215. package/src/rooms/epoch/prune/0.2/payload.ts +315 -0
  216. package/src/rooms/info/0.2/payload.ts +700 -0
  217. package/src/rooms/keys/backfill/0.2/payload.ts +260 -0
  218. package/src/rooms/keys/browse/0.1/payload.ts +2 -2
  219. package/src/rooms/keys/browse/0.2/payload.ts +628 -0
  220. package/src/rooms/keys/chain/0.2/payload.ts +308 -0
  221. package/src/rooms/keys/profile/read/0.1/payload.ts +2 -2
  222. package/src/rooms/keys/read/0.1/payload.ts +2 -2
  223. package/src/rooms/owner/anchor/0.1/payload.ts +2 -2
  224. package/src/rooms/records/get/0.1/payload.ts +2 -2
  225. package/src/rooms/records/get/0.2/payload.ts +2 -2
  226. package/src/rooms/records/list/0.1/payload.ts +2 -2
  227. package/src/rooms/records/list/0.2/payload.ts +2 -2
  228. package/src/rooms/records/list/0.3/payload.ts +601 -0
  229. package/src/rooms/records/prune/0.1/payload.ts +451 -0
  230. package/src/rooms/records/put/0.3/payload.ts +741 -0
  231. package/src/rooms/records/retention/set/0.1/payload.ts +338 -0
  232. package/src/vault/credentials/present/0.1/payload.ts +283 -0
  233. package/src/voting/_shared/0.1/voting.ts +1 -1
  234. package/src/voting/board/read/0.1/payload.ts +38 -2
  235. package/src/voting/trustees/authorize/0.1/payload.ts +434 -0
  236. package/src/voting/trustees/status/0.1/payload.ts +58 -2
  237. package/src/vta/pcs/trustee/deal/0.2/payload.ts +1148 -0
  238. package/src/vta/pcs/trustee/decrypt/0.2/payload.ts +500 -0
  239. package/src/vta/pcs/trustee/justify/0.2/payload.ts +1167 -0
  240. package/src/vta/pcs/trustee/keys/0.2/payload.ts +1194 -0
  241. package/src/vta/pcs/vote-encrypted/0.2/payload.ts +1369 -0
  242. package/src/vta/webvh/dids/create/1.2/payload.ts +660 -0
  243. package/src/vtc/_shared/0.1/room-migration.ts +17 -0
  244. package/src/vtc/_shared/0.1/room-storage.ts +1 -1
  245. package/src/vtc/_shared/0.2/room-storage.ts +17 -0
  246. package/src/vtc/admin/events/_shared/0.4/topic.ts +32 -0
  247. package/src/vtc/admin/events/event/0.4/payload.ts +137 -0
  248. package/src/vtc/admin/events/subscribe/0.4/payload.ts +318 -0
  249. package/src/vtc/elections/show/0.1/payload.ts +46 -2
  250. package/src/vtc/rooms/get/0.2/payload.ts +1372 -0
  251. package/src/vtc/rooms/storage/migrate/0.2/payload.ts +408 -0
  252. package/src/vtc/storage/configs/create/0.1/payload.ts +1 -1
  253. package/src/vtc/storage/configs/create/0.2/payload.ts +830 -0
  254. package/src/vtc/storage/configs/get/0.1/payload.ts +1 -1
  255. package/src/vtc/storage/configs/get/0.2/payload.ts +1110 -0
  256. package/src/vtc/storage/configs/list/0.1/payload.ts +1 -1
  257. package/src/vtc/storage/configs/list/0.2/payload.ts +1177 -0
  258. package/src/vtc/storage/configs/update/0.1/payload.ts +1 -1
  259. package/src/vtc/storage/configs/update/0.2/payload.ts +829 -0
  260. package/src/vtc/storage/credentials/set/0.1/payload.ts +1 -1
  261. package/src/vtc/storage/credentials/set/0.2/payload.ts +619 -0
package/CHANGELOG.md CHANGED
@@ -11,6 +11,273 @@ The package versions over **its own API** — what a consumer compiles against
11
11
  not over `SPEC.md`. Below 1.0 a breaking change bumps the leading non-zero
12
12
  component.
13
13
 
14
+ ## 0.27.2 — 2026-10-22
15
+
16
+
17
+ ### Added
18
+
19
+ - **vault/credentials/present**: Present a held credential to a verifier the client names, bound to its nonce, disclosing only the named claims (#871)
20
+
21
+ * feat(vault/credentials/present): present a held credential to a verifier the client names, bound to its nonce, disclosing only the named claims
22
+
23
+ A client that holds no holder key (a browser wallet, a phone) could not
24
+ carry a presentation to a verifier that takes one inside its own request
25
+ document, such as vtc/directory/card/present: credential-exchange/present
26
+ answers only a verifier that asks the agent. The maintainer now signs as the
27
+ credential's subject for a named audience and nonce, refuses over-disclosure
28
+ of a credential without selective disclosure (wouldOverDisclose), records the
29
+ disclosure before answering, and conflates custody failures as notFound.
30
+
31
+ - **vta/webvh/dids/create**: 1.2 chooses the did:scid identity and the alsoKnownAs alias (#862)
32
+
33
+ * feat(vta/webvh/dids/create): 1.2 chooses the did:scid identity and the alsoKnownAs alias
34
+
35
+ A did:webvh log can be presented as its did:scid:vh:1 DID, an identity
36
+ the same log verifies but which does not name its host (VTI-KEY-160 to
37
+ VTI-KEY-166 of the VTI specification). 1.2's request may name `didMethod`
38
+ (`webvh` or `scid`) and `scidAlsoKnownAs`. Each falls back to the VTA's
39
+ configuration, then to `webvh` and `true`.
40
+
41
+ The response REQUIRES both as applied, plus `webvhDid` (the log) and
42
+ `scidDidUrl` (the did:scid with the `src` a recipient needs to resolve it).
43
+ `did` is the identity in the applied form, the bare did:scid DID when
44
+ `didMethod` is `scid`, and the family's other tasks accept either `did` or
45
+ `webvhDid`.
46
+
47
+ Asking for the did:scid identity when the alias cannot be listed (refused by
48
+ the request, forbidden by the template, or absent from a supplied log) is
49
+ refused with the new `scidAliasRequired` code.
50
+
51
+ 1.2 is a new version because 1.1's response refuses unknown members. The
52
+ request members are additive, but a 1.1 client would refuse the response.
53
+
54
+ Bindings regenerated (Rust, TS, Go, Dart).
55
+
56
+ - **rooms/records/prune**: A room states how long it keeps its records, and an administrator prunes what that rule makes eligible (#868)
57
+
58
+ Records only had room-level lifecycle: a room could not keep a meeting note
59
+ for a month and a decision for years, and nothing ever removed a retracted
60
+ record's tombstone.
61
+
62
+ - rooms/_shared/0.1 (in place, additive): RecordRetention ({tombstoneDays,
63
+ recordDays}, by host-visible updatedAt; pinned records exempt from
64
+ recordDays; absent or {} means nothing is eligible) and RecordPrune (the
65
+ mark a prune leaves: version, time, count — never which records or what
66
+ they said). HeadVersion answers the note it carried about erasure: a prune
67
+ takes the next version, and on a pruned room headVersion is the higher of
68
+ the highest record version and the latest prune's, so two roots straddling
69
+ a prune never share a version.
70
+ - rooms/records/prune 0.1 (new): admin only, never curate; kinds retracted |
71
+ aged; required reason; dryRun. Removes eligible records outright, releases
72
+ their blobs, records lastPrune. noRetention when the room states no rule
73
+ for the kinds asked. Hosts never prune on their own. Audit keeps the mark,
74
+ reason, requester where the tier discloses one, and the retention applied,
75
+ never content; a reader holding an earlier listing can check every
76
+ disappearance against the reported retention.
77
+ - rooms/records/retention/set 0.1 (new): admin replaces the retention whole,
78
+ with a reason and an optional expectedRetention precondition.
79
+ - rooms/create 0.2: recordRetention at creation. rooms/info 0.2: serves
80
+ recordRetention and lastPrune to every reader. rooms/records/list 0.3 and
81
+ rooms/keys/browse 0.2: lastPrune on every page; a reader synced below it
82
+ rebuilds and drops what is gone.
83
+ - rooms/records/curate 0.1: editorial pointer to the prune.
84
+ - Rust, TypeScript, Go and Dart bindings regenerated.
85
+
86
+ Refs OpenVTC/verifiable-trust-infrastructure#2118.
87
+
88
+ - **vtc/rooms/storage**: Migrate 0.2 and rooms/get 0.2 — reassignment, retry ownership, resume without re-consent, orphans, pause reporting, queueing (#867)
89
+
90
+ migrate/0.2 fixes a migration's toConfig at approval and keeps it if the room
91
+ is reassigned (new uploads go to the new assignment; a second migration may
92
+ follow); makes the community the one retry owner (capped exponential backoff
93
+ with jitter before `paused`); answers a request for a room with a migration in
94
+ progress at once, resuming a paused one, without parking it for consent again;
95
+ does not migrate or count orphaned blobs; reports `pausedCause`, `lastError`
96
+ and `nextAttemptAt`; and permits one migration at a time with a `queued`
97
+ state.
98
+
99
+ rooms/get/0.2 reports the same migration through the new shared component
100
+ vtc/_shared/0.1/room-migration, and adds the required `toConfig`.
101
+
102
+ - **vtc/storage**: Ambient and sealed storage auth — roleArn, room-scoped credential rules, sealed cleartext schema, host gating (#866)
103
+
104
+ vtc/_shared/0.2/room-storage adds `roleArn` to `ambient` auth (S3 only), the
105
+ `notAllowed` credential status, and `SealedStorageCredential` — the cleartext a
106
+ `sealed` credential is carried in (s3 access-key pair with optional session
107
+ token, gcs service-account key file, walrus suiprivkey), naming its configId
108
+ inside the seal.
109
+
110
+ vtc/storage/configs/{create,update,get,list}/0.2 re-pin to it. create/0.2 makes
111
+ room-scoped credentials normative for ambient (and sealed where the backend can
112
+ mint them): one per (config, room), limited to the room prefix
113
+ `rooms/<32 hex of SHA-256(roomId)>/` and the object actions needed, built by a
114
+ JSON encoder / CEL builder and never by interpolation, at most 15 minutes,
115
+ never used for another room. A host MAY refuse ambient or sealed by
116
+ configuration (`authNotAllowed`, now with `details.reason`), and SHOULD label
117
+ sealed as offering no protection against the machine's operator.
118
+
119
+ vtc/storage/credentials/set/0.2 requires the sealed cleartext to be a
120
+ SealedStorageCredential for the request's config, and refuses sealed when the
121
+ host does not permit it.
122
+
123
+ - **vtc/admin/events**: 0.4 adds a communityRooms topic — the owner's view of the rooms the community owns (#864)
124
+
125
+ The console's Community rooms tab polls every 60 s, because no topic covers
126
+ it: `rooms` is the host's view (storage, limits, lifecycle) for holders of
127
+ `vtc.rooms.admin`, carries no room's details, and is not readable by a
128
+ `vtc.rooms.manage` holder who lacks `vtc.rooms.admin`.
129
+
130
+ - vtc/admin/events/_shared/0.4: Topic gains `communityRooms` (10 topics).
131
+ - vtc/admin/events/subscribe/0.4: `topics` maxItems 10; "What 0.4 adds";
132
+ Authorization row — holders of `vtc.rooms.manage`, prompting
133
+ vtc/rooms/community/list 0.2, get 0.2 and members/list 0.1;
134
+ `vtc.rooms.admin` alone does not qualify.
135
+ - vtc/admin/events/event/0.4: producer rules 8–9 — hint when anything those
136
+ reads show changes (a room created or its label, description or tags
137
+ changed; an admission offered, withdrawn, accepted or renewed; a removal
138
+ owed, retried, settled or failed, including on departure; the profile
139
+ write's state; the authority-renewal state). No room, member, DID, offer,
140
+ credential or record identifier in any member, ext included. Not a count
141
+ topic. Coalescing, standing re-checks and stream-ending on a shrink are
142
+ unchanged.
143
+ - vtc/rooms/community/update 0.1 and 0.2 (draft, editorial in place):
144
+ "Live updates" now points at `communityRooms` in events 0.4 instead of
145
+ "a later version".
146
+
147
+ 0.1, 0.2 and 0.3 are unchanged; a community serving several versions answers
148
+ each subscription at its own.
149
+
150
+
151
+
152
+ ### Fixed
153
+
154
+ - A replay record is kept until the skew-extended window closes, so a late replay cannot execute twice (#872)
155
+
156
+ Freshness accepts a document until issuedAt + maxAge + skew, but the replay
157
+ record was retained only until issuedAt + maxAge. A replay arriving in the
158
+ final skew interval (60s under the consequential defaults) passed freshness,
159
+ found its record already dropped, and executed again — the double execution
160
+ SPEC §7.2 item 11 forbids, and a break of the "same bound" rule the record
161
+ expiry documents.
162
+
163
+ recordExpiry now returns issuedAt + maxAge + skew in Rust, TypeScript, Go and
164
+ Dart. The expiresAt branch is unchanged: expiry is checked without skew, so it
165
+ was already exact. Rust and TS gain a regression test at the boundary.
166
+
167
+
168
+
169
+ ### Specifications
170
+
171
+ - **rooms/epoch/prune**: 0.2 — the host keeps the room's epoch floor, and members' key holders forget what they hold below it (#869)
172
+
173
+ * spec(rooms/epoch/prune): 0.2 — the host keeps the room's epoch floor, and members' key holders forget what they hold below it
174
+
175
+ Each member's key holder keeps its own copy of a room's epoch chain, so
176
+ erasing the host's rungs left every key holder able to derive what the owner
177
+ had decided nobody should.
178
+
179
+ - rooms/_shared/0.1 (in place, additive): EpochFloor — the earliest epoch
180
+ whose key the room still lets anybody derive; monotonic. Hosts keep it,
181
+ never store or serve a rung at or below it, and serve it. A member's key
182
+ holder that learns a higher floor discards rungs at or below it and every
183
+ storage, file or cached key below it (including keys derived in passing
184
+ while catching up), never stores them again from any source, refuses to
185
+ derive below it (beyondChain), and keeps the floor. States plainly that
186
+ nothing already read, decrypted or exported is recalled, and that the
187
+ floor is honoured, not enforced.
188
+ - rooms/epoch/prune 0.2: the host raises the floor to beforeEpoch − 1 (also
189
+ where nothing is dropped: a gap, a fromJoin room) and returns it as the
190
+ required epochFloor. beforeEpoch keeps 0.1's meaning; the off-by-one is
191
+ stated with a table, and two 0.1 misstatements are corrected.
192
+ - rooms/epoch/chain 0.2: epochFloor on every response once pruned; never a
193
+ rung at or below it.
194
+ - rooms/keys/chain 0.2: the member relays the floor (alone if need be); the
195
+ key holder applies it. rooms/keys/backfill 0.2: fetches with epoch/chain
196
+ 0.2, applies and reports the floor.
197
+ - Editorial pointers in rooms/keys/open 0.2, rooms/keys/file-key 0.2,
198
+ rooms/keys/read 0.1 and rooms/epoch/prune 0.1.
199
+ - Rust, TypeScript, Go and Dart bindings regenerated.
200
+
201
+ Refs OpenVTC/verifiable-trust-infrastructure#2118.
202
+
203
+ - **rooms/records**: A record says what kind of claim it is, what it cites, what it may be used for, and when it lapses (#865)
204
+
205
+ A sealed record proves who wrote it and whether a member or an agent did,
206
+ but not what kind of claim it is: an agent's inference read the same as an
207
+ observed fact or a credential-backed statement. And records could not
208
+ expire individually — a meeting note and a decision lived equally long.
209
+
210
+ - rooms/_shared/0.1 (in place, additive, as `roomProfile` was):
211
+ SealedRecordBody gains optional `basis` (declared | observed | verified |
212
+ inferred), `confidence` (0–1), `evidence` (record or credential
213
+ citations, discriminated by `kind`), `validFor` (purposes as IRIs plus a
214
+ plain-text note) and `validUntil`, all inside the author's signature.
215
+ Provenance is display and weighting only, never authority; writers
216
+ SHOULD set `basis`, agent writers that do not know SHOULD write
217
+ `inferred`. Readers hide a record past its `validUntil` from default
218
+ listings, search and recall and MAY show it on explicit request; no host
219
+ enforces it and nothing about it is in the clear on sealed tiers.
220
+ Records written before verify unchanged; readers that predate the
221
+ members refuse bodies carrying them by rule (1), showing nothing rather
222
+ than something wrong.
223
+ - rooms/records/put 0.3 (new): an open room's `cleartext` carries the same
224
+ five members, stored and served as received, never acted on by the
225
+ host. `sealed` writes are unchanged.
226
+ - Rust, TypeScript, Go and Dart bindings regenerated.
227
+
228
+ Refs OpenVTC/verifiable-trust-infrastructure#2117, #2118.
229
+
230
+ ## 0.27.1 — 2026-10-21
231
+
232
+
233
+ ### Fixed
234
+
235
+ - **voting**: Trustees and voters act only on signed evidence; the community authorizes decryption; the key needs t dealers; ballots bind their tag (#860)
236
+
237
+ * fix(voting): trustees and voters act only on signed evidence; the community authorizes what is decrypted; the key needs t dealers; ballots bind their tag; the board is in order
238
+
239
+ An adversarial review of community voting found that a dishonest ballot box could take the
240
+ trustees' place, and a single corrupt trustee could hold the election key.
241
+
242
+ - **The box could feed the trustees' VTAs.** They acted on values voting/trustees/status reported,
243
+ which carry no trustee's proof. The box could:
244
+ - substitute transport keys, and open the shares sealed to them;
245
+ - invent complaints, and collect the shares revealed in answer;
246
+ - replace dealings, and overwrite a key share;
247
+ - list one voter's ciphertexts as a "total", or a cast before the close, and collect honest
248
+ trustees' partials of it.
249
+ - **One trustee could hold the key.** The key formed from a single qualified dealer, so a corrupt
250
+ trustee complaining of every other dealer at the last moment was left holding it alone.
251
+ - **The voter's VTA took any key.** It encrypted under whatever key it was handed, so a community
252
+ could give one member a key it held.
253
+ - **Ballots could be copied.** Nothing bound a ballot to its cast: a voter could re-cast another's
254
+ encrypted ballot verbatim under their own tag (Cortier–Smyth).
255
+ - **Certification ignored the lifecycle.** It accepted casts after close, a result before it, and
256
+ an early close a manifest forbade.
257
+
258
+ The changes:
259
+
260
+ - **vta/pcs/trustee/{deal,keys,justify,decrypt}/0.2 and vta/pcs/vote-encrypted/0.2** (the 0.1
261
+ versions retire) take the ceremony as its signed steps, which status now carries as `steps`. The
262
+ VTA verifies each step itself (CONVENTIONS §9.6). In particular:
263
+ - deal pins the transport keys it dealt to;
264
+ - justify needs the complainant's own confirm;
265
+ - keys never replaces a held share;
266
+ - the voter's VTA forms the key itself;
267
+ - vtc/elections/show carries `ceremony` for it.
268
+ - **voting/trustees/authorize/0.1 (new).** After close the community computes the decryption
269
+ targets from the board it checked, and signs their digest under the closing head. The box
270
+ accepts it only if its own targets match, and appends a `decryptionAuthorized` entry. A
271
+ trustee's VTA decrypts only an authorized set, once (decrypt/0.2). The box refuses partials
272
+ before an authorization.
273
+ - **CONVENTIONS §9.6 item 5:** the key forms only from at least t qualified dealers, with at least
274
+ t confirmations.
275
+ - **§9.3/§9.4:** an encrypted form's proofs, and a sealed form's AAD, bind the cast's tag. The box
276
+ refuses a form whose ciphertexts are already on the board under another tag.
277
+ - **§3.9 (new):** the board's order — opened, casts, close, authorization, partials, one result
278
+ whose head is the board before it — enforced at certification (`orderInvalid`,
279
+ `ceremonyInvalid` appended to boardInconsistent's faults).
280
+
14
281
  ## 0.27.0 — 2026-10-21
15
282
 
16
283
 
@@ -96,7 +96,9 @@ export declare function validateFreshness<P>(doc: TrustTaskDocument<P>, now: num
96
96
  * this consumer's willingness to execute it, which SPEC §7.2 makes the same
97
97
  * instant as the end of the record's required retention.
98
98
  *
99
- * `expiresAt` fixes it where present; otherwise `issuedAt + maxAgeMs`.
99
+ * `expiresAt` fixes it where present; otherwise `issuedAt + maxAgeMs + skewMs`
100
+ * — the same bound {@link validateFreshness} accepts up to, so a replay arriving
101
+ * inside the skew allowance still finds the record.
100
102
  * `undefined` means this policy places no bound on the document, in which case
101
103
  * a consumer **MUST NOT** execute a consequential task on it — there is no
102
104
  * window in which to keep the record.
@@ -1 +1 @@
1
- {"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/_runtime/freshness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAErE,+EAA+E;AAC/E,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAE7C,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAA6C,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,eAIrC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,oFACiD,CAAC;AAE/E,8EAA8E;AAC9E,eAAO,MAAM,yBAAyB,qGACyD,CAAC;AAEhG,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,sGACiE,CAAC;AAEjG;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,0EAAqE,CAAC;AAErG;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,eAAe,GACtB,YAAY,GAAG,IAAI,CAyCrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAWpB"}
1
+ {"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/_runtime/freshness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAErE,+EAA+E;AAC/E,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAE7C,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAA6C,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,eAIrC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,oFACiD,CAAC;AAE/E,8EAA8E;AAC9E,eAAO,MAAM,yBAAyB,qGACyD,CAAC;AAEhG,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,sGACiE,CAAC;AAEjG;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,0EAAqE,CAAC;AAErG;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,eAAe,GACtB,YAAY,GAAG,IAAI,CAyCrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAWpB"}
@@ -120,7 +120,9 @@ export function validateFreshness(doc, now, policy) {
120
120
  * this consumer's willingness to execute it, which SPEC §7.2 makes the same
121
121
  * instant as the end of the record's required retention.
122
122
  *
123
- * `expiresAt` fixes it where present; otherwise `issuedAt + maxAgeMs`.
123
+ * `expiresAt` fixes it where present; otherwise `issuedAt + maxAgeMs + skewMs`
124
+ * — the same bound {@link validateFreshness} accepts up to, so a replay arriving
125
+ * inside the skew allowance still finds the record.
124
126
  * `undefined` means this policy places no bound on the document, in which case
125
127
  * a consumer **MUST NOT** execute a consequential task on it — there is no
126
128
  * window in which to keep the record.
@@ -137,6 +139,6 @@ export function recordExpiry(doc, policy, now) {
137
139
  // Fall back to `now` when the producer stamped no usable `issuedAt`: the
138
140
  // record then lives a full window from first sight, which is the longest the
139
141
  // document could still be arriving from a queue.
140
- return (Number.isNaN(issuedAt) ? now : issuedAt) + policy.maxAgeMs;
142
+ return (Number.isNaN(issuedAt) ? now : issuedAt) + policy.maxAgeMs + policy.skewMs;
141
143
  }
142
144
  //# sourceMappingURL=freshness.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/_runtime/freshness.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/_runtime/freshness.ts"],"names":[],"mappings":"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"}