@openvtc/trust-tasks 0.25.1 → 0.25.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 (115) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/_shared/components.d.ts +304 -2
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/device/list/0.1/payload.d.ts +4 -4
  5. package/dist/device/list/0.1/payload.d.ts.map +1 -1
  6. package/dist/device/list/0.1/payload.js +6 -2
  7. package/dist/device/list/0.1/payload.js.map +1 -1
  8. package/dist/device/list/0.2/payload.d.ts +4 -4
  9. package/dist/device/list/0.2/payload.d.ts.map +1 -1
  10. package/dist/device/list/0.2/payload.js +6 -2
  11. package/dist/device/list/0.2/payload.js.map +1 -1
  12. package/dist/device/register/0.1/payload.d.ts +4 -4
  13. package/dist/device/register/0.1/payload.d.ts.map +1 -1
  14. package/dist/device/register/0.1/payload.js +6 -2
  15. package/dist/device/register/0.1/payload.js.map +1 -1
  16. package/dist/device/register/0.2/payload.d.ts +4 -4
  17. package/dist/device/register/0.2/payload.d.ts.map +1 -1
  18. package/dist/device/register/0.2/payload.js +6 -2
  19. package/dist/device/register/0.2/payload.js.map +1 -1
  20. package/dist/index.d.ts +14 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +14 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/vetting/_shared/0.1/hidden-vetting.d.ts +16 -0
  25. package/dist/vetting/_shared/0.1/hidden-vetting.d.ts.map +1 -0
  26. package/dist/vetting/_shared/0.1/hidden-vetting.js +6 -0
  27. package/dist/vetting/_shared/0.1/hidden-vetting.js.map +1 -0
  28. package/dist/vetting/attestation/0.1/payload.d.ts +94 -146
  29. package/dist/vetting/attestation/0.1/payload.d.ts.map +1 -1
  30. package/dist/vetting/attestation/0.1/payload.js +43 -43
  31. package/dist/vetting/attestation/0.1/payload.js.map +1 -1
  32. package/dist/vta/_shared/0.4/pcs-engine.d.ts +16 -0
  33. package/dist/vta/_shared/0.4/pcs-engine.d.ts.map +1 -0
  34. package/dist/vta/_shared/0.4/pcs-engine.js +6 -0
  35. package/dist/vta/_shared/0.4/pcs-engine.js.map +1 -0
  36. package/dist/vta/pcs/applications/create/0.1/payload.d.ts +1215 -0
  37. package/dist/vta/pcs/applications/create/0.1/payload.d.ts.map +1 -0
  38. package/dist/vta/pcs/applications/create/0.1/payload.js +724 -0
  39. package/dist/vta/pcs/applications/create/0.1/payload.js.map +1 -0
  40. package/dist/vta/pcs/applications/delete/0.1/payload.d.ts +253 -0
  41. package/dist/vta/pcs/applications/delete/0.1/payload.d.ts.map +1 -0
  42. package/dist/vta/pcs/applications/delete/0.1/payload.js +146 -0
  43. package/dist/vta/pcs/applications/delete/0.1/payload.js.map +1 -0
  44. package/dist/vta/pcs/applications/show/0.1/payload.d.ts +733 -0
  45. package/dist/vta/pcs/applications/show/0.1/payload.d.ts.map +1 -0
  46. package/dist/vta/pcs/applications/show/0.1/payload.js +450 -0
  47. package/dist/vta/pcs/applications/show/0.1/payload.js.map +1 -0
  48. package/dist/vta/pcs/attest/0.1/payload.d.ts +1456 -0
  49. package/dist/vta/pcs/attest/0.1/payload.d.ts.map +1 -0
  50. package/dist/vta/pcs/attest/0.1/payload.js +876 -0
  51. package/dist/vta/pcs/attest/0.1/payload.js.map +1 -0
  52. package/dist/vta/pcs/prove/0.1/payload.d.ts +1348 -0
  53. package/dist/vta/pcs/prove/0.1/payload.d.ts.map +1 -0
  54. package/dist/vta/pcs/prove/0.1/payload.js +804 -0
  55. package/dist/vta/pcs/prove/0.1/payload.js.map +1 -0
  56. package/dist/vta/pcs/root-accept/0.1/payload.d.ts +1100 -0
  57. package/dist/vta/pcs/root-accept/0.1/payload.d.ts.map +1 -0
  58. package/dist/vta/pcs/root-accept/0.1/payload.js +634 -0
  59. package/dist/vta/pcs/root-accept/0.1/payload.js.map +1 -0
  60. package/dist/vta/pcs/root-request/0.1/payload.d.ts +880 -0
  61. package/dist/vta/pcs/root-request/0.1/payload.d.ts.map +1 -0
  62. package/dist/vta/pcs/root-request/0.1/payload.js +496 -0
  63. package/dist/vta/pcs/root-request/0.1/payload.js.map +1 -0
  64. package/dist/vta/pcs/tokens/abandon/0.1/payload.d.ts +612 -0
  65. package/dist/vta/pcs/tokens/abandon/0.1/payload.d.ts.map +1 -0
  66. package/dist/vta/pcs/tokens/abandon/0.1/payload.js +355 -0
  67. package/dist/vta/pcs/tokens/abandon/0.1/payload.js.map +1 -0
  68. package/dist/vta/pcs/tokens/accept/0.1/payload.d.ts +1149 -0
  69. package/dist/vta/pcs/tokens/accept/0.1/payload.d.ts.map +1 -0
  70. package/dist/vta/pcs/tokens/accept/0.1/payload.js +657 -0
  71. package/dist/vta/pcs/tokens/accept/0.1/payload.js.map +1 -0
  72. package/dist/vta/pcs/tokens/request/0.1/payload.d.ts +908 -0
  73. package/dist/vta/pcs/tokens/request/0.1/payload.d.ts.map +1 -0
  74. package/dist/vta/pcs/tokens/request/0.1/payload.js +508 -0
  75. package/dist/vta/pcs/tokens/request/0.1/payload.js.map +1 -0
  76. package/dist/vta/pcs/verify-attestation/0.1/payload.d.ts +1423 -0
  77. package/dist/vta/pcs/verify-attestation/0.1/payload.d.ts.map +1 -0
  78. package/dist/vta/pcs/verify-attestation/0.1/payload.js +850 -0
  79. package/dist/vta/pcs/verify-attestation/0.1/payload.js.map +1 -0
  80. package/dist/vta/pcs/vetter/show/0.1/payload.d.ts +605 -0
  81. package/dist/vta/pcs/vetter/show/0.1/payload.d.ts.map +1 -0
  82. package/dist/vta/pcs/vetter/show/0.1/payload.js +351 -0
  83. package/dist/vta/pcs/vetter/show/0.1/payload.js.map +1 -0
  84. package/dist/vtc/vetting/hidden/publish/0.1/payload.d.ts +403 -486
  85. package/dist/vtc/vetting/hidden/publish/0.1/payload.d.ts.map +1 -1
  86. package/dist/vtc/vetting/hidden/publish/0.1/payload.js +240 -240
  87. package/dist/vtc/vetting/hidden/publish/0.1/payload.js.map +1 -1
  88. package/dist/vtc/vetting/hidden/show/0.1/payload.d.ts +482 -565
  89. package/dist/vtc/vetting/hidden/show/0.1/payload.d.ts.map +1 -1
  90. package/dist/vtc/vetting/hidden/show/0.1/payload.js +294 -294
  91. package/dist/vtc/vetting/hidden/show/0.1/payload.js.map +1 -1
  92. package/package.json +1 -1
  93. package/src/_shared/components.ts +308 -2
  94. package/src/device/list/0.1/payload.ts +6 -2
  95. package/src/device/list/0.2/payload.ts +6 -2
  96. package/src/device/register/0.1/payload.ts +6 -2
  97. package/src/device/register/0.2/payload.ts +6 -2
  98. package/src/index.ts +14 -0
  99. package/src/vetting/_shared/0.1/hidden-vetting.ts +17 -0
  100. package/src/vetting/attestation/0.1/payload.ts +49 -101
  101. package/src/vta/_shared/0.4/pcs-engine.ts +17 -0
  102. package/src/vta/pcs/applications/create/0.1/payload.ts +768 -0
  103. package/src/vta/pcs/applications/delete/0.1/payload.ts +182 -0
  104. package/src/vta/pcs/applications/show/0.1/payload.ts +482 -0
  105. package/src/vta/pcs/attest/0.1/payload.ts +943 -0
  106. package/src/vta/pcs/prove/0.1/payload.ts +845 -0
  107. package/src/vta/pcs/root-accept/0.1/payload.ts +681 -0
  108. package/src/vta/pcs/root-request/0.1/payload.ts +559 -0
  109. package/src/vta/pcs/tokens/abandon/0.1/payload.ts +392 -0
  110. package/src/vta/pcs/tokens/accept/0.1/payload.ts +713 -0
  111. package/src/vta/pcs/tokens/request/0.1/payload.ts +581 -0
  112. package/src/vta/pcs/verify-attestation/0.1/payload.ts +888 -0
  113. package/src/vta/pcs/vetter/show/0.1/payload.ts +387 -0
  114. package/src/vtc/vetting/hidden/publish/0.1/payload.ts +247 -331
  115. package/src/vtc/vetting/hidden/show/0.1/payload.ts +295 -379
@@ -2,11 +2,7 @@
2
2
  * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
3
  * Source: specs/vtc/vetting/hidden/show/0.1/payload.schema.json
4
4
  */
5
- import type { Ext } from "../../../../../_shared/components.js";
6
- /**
7
- * The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`).
8
- */
9
- export type TickLength = string;
5
+ import type { Ext, PublishedConfig, PublishedEvent, StoredConfig, StoredEvent, TickLength, Tier } from "../../../../../_shared/components.js";
10
6
  /**
11
7
  * Read one criterion's stored hidden-vetting configuration, what it publishes, and the aggregate counts an administrator needs to run it. The outer document members are owned by the framework — SPEC §6.3.
12
8
  */
@@ -44,85 +40,6 @@ export interface VTCVettingHiddenShowResponsePayload {
44
40
  requirementsDigest: string | null;
45
41
  ext?: Ext;
46
42
  }
47
- /**
48
- * The parameters exactly as the community stores them, including the helper key it never publishes.
49
- */
50
- export interface StoredConfig {
51
- /**
52
- * The blind-signature suite in force, e.g. ps-ddh-bls12381.
53
- */
54
- suite: string;
55
- /**
56
- * The helper verification key, multibase. A public value, published as helperKey.
57
- */
58
- hvk: string;
59
- /**
60
- * The token verification key, multibase. Never the same key as hvk.
61
- */
62
- tvk: string;
63
- /**
64
- * Live vetter class periods, current first, stored as the bare YYYY-MM period.
65
- */
66
- livePeriods: string[];
67
- liveTokenLabels: string[];
68
- dripPerTick: number;
69
- tickLength: TickLength;
70
- events: StoredEvent[];
71
- }
72
- export interface StoredEvent {
73
- eventId: string;
74
- startDate: string;
75
- endDate: string;
76
- graceDays: number;
77
- groupFloor: number;
78
- tiers: Tier[];
79
- /**
80
- * Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).
81
- */
82
- approvedBy?: string | null;
83
- }
84
- export interface Tier {
85
- /**
86
- * How the menu names it: desk, busy-desk.
87
- */
88
- name: string;
89
- /**
90
- * How many tokens a tick under this tier yields.
91
- */
92
- dripPerTick: number;
93
- }
94
- /**
95
- * The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.
96
- */
97
- export interface PublishedConfig {
98
- suite: string;
99
- /**
100
- * The helper verification key, multibase — named for its role on the wire rather than for hvk.
101
- */
102
- helperKey: string;
103
- /**
104
- * The token verification key, multibase — named for its role on the wire rather than for tvk.
105
- */
106
- tokenKey: string;
107
- /**
108
- * Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.
109
- */
110
- vetterLabels: string[];
111
- tokenLabels: string[];
112
- dripPerTick: number;
113
- tickLength: TickLength;
114
- events: PublishedEvent[];
115
- }
116
- /**
117
- * The published shape drops approvedBy and graceDays: who approved is the community's own record, and a vetter is told closesAfter when its request is approved rather than being handed the raw grace period here.
118
- */
119
- export interface PublishedEvent {
120
- eventId: string;
121
- startDate: string;
122
- endDate: string;
123
- groupFloor: number;
124
- tiers: Tier[];
125
- }
126
43
  /**
127
44
  * How one stored event stands today. Counts only — never which members asked.
128
45
  */
@@ -146,7 +63,7 @@ export interface EventStatus {
146
63
  live: boolean;
147
64
  }
148
65
  /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
149
- export type { Ext };
66
+ export type { Ext, PublishedConfig, PublishedEvent, StoredConfig, StoredEvent, TickLength, Tier };
150
67
  /** Trust Task type URI. */
151
68
  export declare const TYPE_URI: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1";
152
69
  /** Stable alias for this specification's request payload shape. */
@@ -183,60 +100,151 @@ export declare const PAYLOAD_SCHEMA: {
183
100
  };
184
101
  };
185
102
  readonly $defs: {
186
- readonly Tier: {
187
- readonly title: "Tier";
103
+ readonly EventStatus: {
104
+ readonly title: "EventStatus";
105
+ readonly description: "How one stored event stands today. Counts only — never which members asked.";
188
106
  readonly type: "object";
189
107
  readonly additionalProperties: false;
190
- readonly required: readonly ["name", "dripPerTick"];
108
+ readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
191
109
  readonly properties: {
192
- readonly name: {
110
+ readonly eventId: {
193
111
  readonly type: "string";
194
112
  readonly minLength: 1;
195
- readonly description: "How the menu names it: desk, busy-desk.";
196
113
  };
197
- readonly dripPerTick: {
114
+ readonly groupFloor: {
198
115
  readonly type: "integer";
199
116
  readonly minimum: 1;
200
- readonly description: "How many tokens a tick under this tier yields.";
117
+ readonly description: "The smallest group this community will open the label for, as stored.";
118
+ };
119
+ readonly groupSize: {
120
+ readonly type: "integer";
121
+ readonly minimum: 0;
122
+ readonly description: "How many members have asked to vet at this event through vtc/vetting/vetters/event-mode. The same count event-mode already returns to a vetter.";
123
+ };
124
+ readonly approved: {
125
+ readonly type: "boolean";
126
+ readonly description: "Whether the stored event names an approver.";
127
+ };
128
+ readonly live: {
129
+ readonly type: "boolean";
130
+ readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
201
131
  };
202
132
  };
203
133
  };
204
- readonly StoredEvent: {
205
- readonly title: "StoredEvent";
134
+ readonly Response: {
135
+ readonly $anchor: "response";
136
+ readonly title: "VTC Vetting — Hidden — Show — response payload";
206
137
  readonly type: "object";
207
138
  readonly additionalProperties: false;
208
- readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
139
+ readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
140
+ readonly dependentRequired: {
141
+ readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
142
+ readonly published: readonly ["stored"];
143
+ readonly enrolledVetters: readonly ["stored"];
144
+ readonly eventStatus: readonly ["stored"];
145
+ };
209
146
  readonly properties: {
210
- readonly eventId: {
147
+ readonly criterionId: {
211
148
  readonly type: "string";
212
149
  readonly minLength: 1;
150
+ readonly description: "The criterion read.";
213
151
  };
214
- readonly startDate: {
152
+ readonly enabled: {
153
+ readonly type: "boolean";
154
+ readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
155
+ };
156
+ readonly stored: {
157
+ readonly $ref: "#/$defs/StoredConfig";
158
+ };
159
+ readonly published: {
160
+ readonly $ref: "#/$defs/PublishedConfig";
161
+ };
162
+ readonly enrolledVetters: {
163
+ readonly type: "object";
164
+ readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
165
+ readonly propertyNames: {
166
+ readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
167
+ };
168
+ readonly additionalProperties: {
169
+ readonly type: "integer";
170
+ readonly minimum: 0;
171
+ };
172
+ };
173
+ readonly eventStatus: {
174
+ readonly type: "array";
175
+ readonly items: {
176
+ readonly $ref: "#/$defs/EventStatus";
177
+ };
178
+ readonly description: "One entry per stored event, in stored order.";
179
+ };
180
+ readonly requirementsDigest: {
181
+ readonly type: readonly ["string", "null"];
182
+ readonly description: "The criterion's current requirementsDigest. Null only when its manifest entry carries none.";
183
+ };
184
+ readonly ext: {
185
+ readonly $ref: "#/$defs/Ext";
186
+ };
187
+ };
188
+ };
189
+ readonly Ext: {
190
+ readonly title: "Ext";
191
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
192
+ readonly type: "object";
193
+ readonly minProperties: 1;
194
+ readonly additionalProperties: true;
195
+ readonly propertyNames: {
196
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
197
+ };
198
+ };
199
+ readonly PublishedConfig: {
200
+ readonly title: "PublishedConfig";
201
+ readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
202
+ readonly type: "object";
203
+ readonly additionalProperties: false;
204
+ readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
205
+ readonly properties: {
206
+ readonly suite: {
215
207
  readonly type: "string";
216
- readonly format: "date";
208
+ readonly minLength: 1;
217
209
  };
218
- readonly endDate: {
210
+ readonly helperKey: {
219
211
  readonly type: "string";
220
- readonly format: "date";
212
+ readonly minLength: 1;
213
+ readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
221
214
  };
222
- readonly graceDays: {
223
- readonly type: "integer";
224
- readonly minimum: 0;
215
+ readonly tokenKey: {
216
+ readonly type: "string";
217
+ readonly minLength: 1;
218
+ readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
225
219
  };
226
- readonly groupFloor: {
220
+ readonly vetterLabels: {
221
+ readonly type: "array";
222
+ readonly items: {
223
+ readonly type: "string";
224
+ readonly minLength: 1;
225
+ };
226
+ readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
227
+ };
228
+ readonly tokenLabels: {
229
+ readonly type: "array";
230
+ readonly items: {
231
+ readonly type: "string";
232
+ readonly minLength: 1;
233
+ };
234
+ };
235
+ readonly dripPerTick: {
227
236
  readonly type: "integer";
228
237
  readonly minimum: 1;
229
238
  };
230
- readonly tiers: {
239
+ readonly tickLength: {
240
+ readonly $ref: "#/$defs/TickLength";
241
+ };
242
+ readonly events: {
231
243
  readonly type: "array";
232
244
  readonly items: {
233
- readonly $ref: "#/$defs/Tier";
245
+ readonly $ref: "#/$defs/PublishedEvent";
234
246
  };
235
247
  };
236
- readonly approvedBy: {
237
- readonly type: readonly ["string", "null"];
238
- readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
239
- };
240
248
  };
241
249
  };
242
250
  readonly PublishedEvent: {
@@ -270,6 +278,30 @@ export declare const PAYLOAD_SCHEMA: {
270
278
  };
271
279
  };
272
280
  };
281
+ readonly Tier: {
282
+ readonly title: "Tier";
283
+ readonly type: "object";
284
+ readonly additionalProperties: false;
285
+ readonly required: readonly ["name", "dripPerTick"];
286
+ readonly properties: {
287
+ readonly name: {
288
+ readonly type: "string";
289
+ readonly minLength: 1;
290
+ readonly description: "How the menu names it: desk, busy-desk.";
291
+ };
292
+ readonly dripPerTick: {
293
+ readonly type: "integer";
294
+ readonly minimum: 1;
295
+ readonly description: "How many tokens a tick under this tier yields.";
296
+ };
297
+ };
298
+ };
299
+ readonly TickLength: {
300
+ readonly title: "TickLength";
301
+ readonly type: "string";
302
+ readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
303
+ readonly description: "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`).";
304
+ };
273
305
  readonly StoredConfig: {
274
306
  readonly title: "StoredConfig";
275
307
  readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
@@ -322,62 +354,56 @@ export declare const PAYLOAD_SCHEMA: {
322
354
  };
323
355
  };
324
356
  };
325
- readonly PublishedConfig: {
326
- readonly title: "PublishedConfig";
327
- readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
357
+ readonly StoredEvent: {
358
+ readonly title: "StoredEvent";
328
359
  readonly type: "object";
329
360
  readonly additionalProperties: false;
330
- readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
361
+ readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
331
362
  readonly properties: {
332
- readonly suite: {
363
+ readonly eventId: {
333
364
  readonly type: "string";
334
365
  readonly minLength: 1;
335
366
  };
336
- readonly helperKey: {
367
+ readonly startDate: {
337
368
  readonly type: "string";
338
- readonly minLength: 1;
339
- readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
369
+ readonly format: "date";
340
370
  };
341
- readonly tokenKey: {
371
+ readonly endDate: {
342
372
  readonly type: "string";
343
- readonly minLength: 1;
344
- readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
345
- };
346
- readonly vetterLabels: {
347
- readonly type: "array";
348
- readonly items: {
349
- readonly type: "string";
350
- readonly minLength: 1;
351
- };
352
- readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
373
+ readonly format: "date";
353
374
  };
354
- readonly tokenLabels: {
355
- readonly type: "array";
356
- readonly items: {
357
- readonly type: "string";
358
- readonly minLength: 1;
359
- };
375
+ readonly graceDays: {
376
+ readonly type: "integer";
377
+ readonly minimum: 0;
360
378
  };
361
- readonly dripPerTick: {
379
+ readonly groupFloor: {
362
380
  readonly type: "integer";
363
381
  readonly minimum: 1;
364
382
  };
365
- readonly tickLength: {
366
- readonly $ref: "#/$defs/TickLength";
367
- };
368
- readonly events: {
383
+ readonly tiers: {
369
384
  readonly type: "array";
370
385
  readonly items: {
371
- readonly $ref: "#/$defs/PublishedEvent";
386
+ readonly $ref: "#/$defs/Tier";
372
387
  };
373
388
  };
389
+ readonly approvedBy: {
390
+ readonly type: readonly ["string", "null"];
391
+ readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
392
+ };
374
393
  };
375
394
  };
376
- readonly EventStatus: {
377
- readonly title: "EventStatus";
378
- readonly description: "How one stored event stands today. Counts only — never which members asked.";
379
- readonly type: "object";
380
- readonly additionalProperties: false;
395
+ };
396
+ };
397
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
398
+ export declare const RESPONSE_PAYLOAD_SCHEMA: {
399
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
400
+ readonly $ref: "#/$defs/Response";
401
+ readonly $defs: {
402
+ readonly EventStatus: {
403
+ readonly title: "EventStatus";
404
+ readonly description: "How one stored event stands today. Counts only — never which members asked.";
405
+ readonly type: "object";
406
+ readonly additionalProperties: false;
381
407
  readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
382
408
  readonly properties: {
383
409
  readonly eventId: {
@@ -459,12 +485,6 @@ export declare const PAYLOAD_SCHEMA: {
459
485
  };
460
486
  };
461
487
  };
462
- readonly TickLength: {
463
- readonly title: "TickLength";
464
- readonly type: "string";
465
- readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
466
- readonly description: "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`).";
467
- };
468
488
  readonly Ext: {
469
489
  readonly title: "Ext";
470
490
  readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
@@ -475,67 +495,55 @@ export declare const PAYLOAD_SCHEMA: {
475
495
  readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
476
496
  };
477
497
  };
478
- };
479
- };
480
- /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
481
- export declare const RESPONSE_PAYLOAD_SCHEMA: {
482
- readonly $schema: "https://json-schema.org/draft/2020-12/schema";
483
- readonly $ref: "#/$defs/Response";
484
- readonly $defs: {
485
- readonly Tier: {
486
- readonly title: "Tier";
498
+ readonly PublishedConfig: {
499
+ readonly title: "PublishedConfig";
500
+ readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
487
501
  readonly type: "object";
488
502
  readonly additionalProperties: false;
489
- readonly required: readonly ["name", "dripPerTick"];
503
+ readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
490
504
  readonly properties: {
491
- readonly name: {
505
+ readonly suite: {
492
506
  readonly type: "string";
493
507
  readonly minLength: 1;
494
- readonly description: "How the menu names it: desk, busy-desk.";
495
- };
496
- readonly dripPerTick: {
497
- readonly type: "integer";
498
- readonly minimum: 1;
499
- readonly description: "How many tokens a tick under this tier yields.";
500
508
  };
501
- };
502
- };
503
- readonly StoredEvent: {
504
- readonly title: "StoredEvent";
505
- readonly type: "object";
506
- readonly additionalProperties: false;
507
- readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
508
- readonly properties: {
509
- readonly eventId: {
509
+ readonly helperKey: {
510
510
  readonly type: "string";
511
511
  readonly minLength: 1;
512
+ readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
512
513
  };
513
- readonly startDate: {
514
+ readonly tokenKey: {
514
515
  readonly type: "string";
515
- readonly format: "date";
516
+ readonly minLength: 1;
517
+ readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
516
518
  };
517
- readonly endDate: {
518
- readonly type: "string";
519
- readonly format: "date";
519
+ readonly vetterLabels: {
520
+ readonly type: "array";
521
+ readonly items: {
522
+ readonly type: "string";
523
+ readonly minLength: 1;
524
+ };
525
+ readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
520
526
  };
521
- readonly graceDays: {
522
- readonly type: "integer";
523
- readonly minimum: 0;
527
+ readonly tokenLabels: {
528
+ readonly type: "array";
529
+ readonly items: {
530
+ readonly type: "string";
531
+ readonly minLength: 1;
532
+ };
524
533
  };
525
- readonly groupFloor: {
534
+ readonly dripPerTick: {
526
535
  readonly type: "integer";
527
536
  readonly minimum: 1;
528
537
  };
529
- readonly tiers: {
538
+ readonly tickLength: {
539
+ readonly $ref: "#/$defs/TickLength";
540
+ };
541
+ readonly events: {
530
542
  readonly type: "array";
531
543
  readonly items: {
532
- readonly $ref: "#/$defs/Tier";
544
+ readonly $ref: "#/$defs/PublishedEvent";
533
545
  };
534
546
  };
535
- readonly approvedBy: {
536
- readonly type: readonly ["string", "null"];
537
- readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
538
- };
539
547
  };
540
548
  };
541
549
  readonly PublishedEvent: {
@@ -569,6 +577,30 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
569
577
  };
570
578
  };
571
579
  };
580
+ readonly Tier: {
581
+ readonly title: "Tier";
582
+ readonly type: "object";
583
+ readonly additionalProperties: false;
584
+ readonly required: readonly ["name", "dripPerTick"];
585
+ readonly properties: {
586
+ readonly name: {
587
+ readonly type: "string";
588
+ readonly minLength: 1;
589
+ readonly description: "How the menu names it: desk, busy-desk.";
590
+ };
591
+ readonly dripPerTick: {
592
+ readonly type: "integer";
593
+ readonly minimum: 1;
594
+ readonly description: "How many tokens a tick under this tier yields.";
595
+ };
596
+ };
597
+ };
598
+ readonly TickLength: {
599
+ readonly title: "TickLength";
600
+ readonly type: "string";
601
+ readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
602
+ readonly description: "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`).";
603
+ };
572
604
  readonly StoredConfig: {
573
605
  readonly title: "StoredConfig";
574
606
  readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
@@ -621,159 +653,44 @@ export declare const RESPONSE_PAYLOAD_SCHEMA: {
621
653
  };
622
654
  };
623
655
  };
624
- readonly PublishedConfig: {
625
- readonly title: "PublishedConfig";
626
- readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
656
+ readonly StoredEvent: {
657
+ readonly title: "StoredEvent";
627
658
  readonly type: "object";
628
659
  readonly additionalProperties: false;
629
- readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
660
+ readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
630
661
  readonly properties: {
631
- readonly suite: {
662
+ readonly eventId: {
632
663
  readonly type: "string";
633
664
  readonly minLength: 1;
634
665
  };
635
- readonly helperKey: {
666
+ readonly startDate: {
636
667
  readonly type: "string";
637
- readonly minLength: 1;
638
- readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
668
+ readonly format: "date";
639
669
  };
640
- readonly tokenKey: {
670
+ readonly endDate: {
641
671
  readonly type: "string";
642
- readonly minLength: 1;
643
- readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
644
- };
645
- readonly vetterLabels: {
646
- readonly type: "array";
647
- readonly items: {
648
- readonly type: "string";
649
- readonly minLength: 1;
650
- };
651
- readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
652
- };
653
- readonly tokenLabels: {
654
- readonly type: "array";
655
- readonly items: {
656
- readonly type: "string";
657
- readonly minLength: 1;
658
- };
672
+ readonly format: "date";
659
673
  };
660
- readonly dripPerTick: {
674
+ readonly graceDays: {
661
675
  readonly type: "integer";
662
- readonly minimum: 1;
663
- };
664
- readonly tickLength: {
665
- readonly $ref: "#/$defs/TickLength";
666
- };
667
- readonly events: {
668
- readonly type: "array";
669
- readonly items: {
670
- readonly $ref: "#/$defs/PublishedEvent";
671
- };
672
- };
673
- };
674
- };
675
- readonly EventStatus: {
676
- readonly title: "EventStatus";
677
- readonly description: "How one stored event stands today. Counts only — never which members asked.";
678
- readonly type: "object";
679
- readonly additionalProperties: false;
680
- readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
681
- readonly properties: {
682
- readonly eventId: {
683
- readonly type: "string";
684
- readonly minLength: 1;
676
+ readonly minimum: 0;
685
677
  };
686
678
  readonly groupFloor: {
687
679
  readonly type: "integer";
688
680
  readonly minimum: 1;
689
- readonly description: "The smallest group this community will open the label for, as stored.";
690
- };
691
- readonly groupSize: {
692
- readonly type: "integer";
693
- readonly minimum: 0;
694
- readonly description: "How many members have asked to vet at this event through vtc/vetting/vetters/event-mode. The same count event-mode already returns to a vetter.";
695
- };
696
- readonly approved: {
697
- readonly type: "boolean";
698
- readonly description: "Whether the stored event names an approver.";
699
- };
700
- readonly live: {
701
- readonly type: "boolean";
702
- readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
703
- };
704
- };
705
- };
706
- readonly Response: {
707
- readonly $anchor: "response";
708
- readonly title: "VTC Vetting — Hidden — Show — response payload";
709
- readonly type: "object";
710
- readonly additionalProperties: false;
711
- readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
712
- readonly dependentRequired: {
713
- readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
714
- readonly published: readonly ["stored"];
715
- readonly enrolledVetters: readonly ["stored"];
716
- readonly eventStatus: readonly ["stored"];
717
- };
718
- readonly properties: {
719
- readonly criterionId: {
720
- readonly type: "string";
721
- readonly minLength: 1;
722
- readonly description: "The criterion read.";
723
- };
724
- readonly enabled: {
725
- readonly type: "boolean";
726
- readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
727
- };
728
- readonly stored: {
729
- readonly $ref: "#/$defs/StoredConfig";
730
- };
731
- readonly published: {
732
- readonly $ref: "#/$defs/PublishedConfig";
733
- };
734
- readonly enrolledVetters: {
735
- readonly type: "object";
736
- readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
737
- readonly propertyNames: {
738
- readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
739
- };
740
- readonly additionalProperties: {
741
- readonly type: "integer";
742
- readonly minimum: 0;
743
- };
744
681
  };
745
- readonly eventStatus: {
682
+ readonly tiers: {
746
683
  readonly type: "array";
747
684
  readonly items: {
748
- readonly $ref: "#/$defs/EventStatus";
685
+ readonly $ref: "#/$defs/Tier";
749
686
  };
750
- readonly description: "One entry per stored event, in stored order.";
751
687
  };
752
- readonly requirementsDigest: {
688
+ readonly approvedBy: {
753
689
  readonly type: readonly ["string", "null"];
754
- readonly description: "The criterion's current requirementsDigest. Null only when its manifest entry carries none.";
755
- };
756
- readonly ext: {
757
- readonly $ref: "#/$defs/Ext";
690
+ readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
758
691
  };
759
692
  };
760
693
  };
761
- readonly TickLength: {
762
- readonly title: "TickLength";
763
- readonly type: "string";
764
- readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
765
- readonly description: "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`).";
766
- };
767
- readonly Ext: {
768
- readonly title: "Ext";
769
- readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
770
- readonly type: "object";
771
- readonly minProperties: 1;
772
- readonly additionalProperties: true;
773
- readonly propertyNames: {
774
- readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
775
- };
776
- };
777
694
  };
778
695
  };
779
696
  /**
@@ -807,60 +724,151 @@ export declare const SPEC: {
807
724
  };
808
725
  };
809
726
  readonly $defs: {
810
- readonly Tier: {
811
- readonly title: "Tier";
727
+ readonly EventStatus: {
728
+ readonly title: "EventStatus";
729
+ readonly description: "How one stored event stands today. Counts only — never which members asked.";
812
730
  readonly type: "object";
813
731
  readonly additionalProperties: false;
814
- readonly required: readonly ["name", "dripPerTick"];
732
+ readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
815
733
  readonly properties: {
816
- readonly name: {
734
+ readonly eventId: {
817
735
  readonly type: "string";
818
736
  readonly minLength: 1;
819
- readonly description: "How the menu names it: desk, busy-desk.";
820
737
  };
821
- readonly dripPerTick: {
738
+ readonly groupFloor: {
822
739
  readonly type: "integer";
823
740
  readonly minimum: 1;
824
- readonly description: "How many tokens a tick under this tier yields.";
741
+ readonly description: "The smallest group this community will open the label for, as stored.";
742
+ };
743
+ readonly groupSize: {
744
+ readonly type: "integer";
745
+ readonly minimum: 0;
746
+ readonly description: "How many members have asked to vet at this event through vtc/vetting/vetters/event-mode. The same count event-mode already returns to a vetter.";
747
+ };
748
+ readonly approved: {
749
+ readonly type: "boolean";
750
+ readonly description: "Whether the stored event names an approver.";
751
+ };
752
+ readonly live: {
753
+ readonly type: "boolean";
754
+ readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
825
755
  };
826
756
  };
827
757
  };
828
- readonly StoredEvent: {
829
- readonly title: "StoredEvent";
758
+ readonly Response: {
759
+ readonly $anchor: "response";
760
+ readonly title: "VTC Vetting — Hidden — Show — response payload";
830
761
  readonly type: "object";
831
762
  readonly additionalProperties: false;
832
- readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
763
+ readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
764
+ readonly dependentRequired: {
765
+ readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
766
+ readonly published: readonly ["stored"];
767
+ readonly enrolledVetters: readonly ["stored"];
768
+ readonly eventStatus: readonly ["stored"];
769
+ };
833
770
  readonly properties: {
834
- readonly eventId: {
771
+ readonly criterionId: {
835
772
  readonly type: "string";
836
773
  readonly minLength: 1;
774
+ readonly description: "The criterion read.";
837
775
  };
838
- readonly startDate: {
776
+ readonly enabled: {
777
+ readonly type: "boolean";
778
+ readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
779
+ };
780
+ readonly stored: {
781
+ readonly $ref: "#/$defs/StoredConfig";
782
+ };
783
+ readonly published: {
784
+ readonly $ref: "#/$defs/PublishedConfig";
785
+ };
786
+ readonly enrolledVetters: {
787
+ readonly type: "object";
788
+ readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
789
+ readonly propertyNames: {
790
+ readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
791
+ };
792
+ readonly additionalProperties: {
793
+ readonly type: "integer";
794
+ readonly minimum: 0;
795
+ };
796
+ };
797
+ readonly eventStatus: {
798
+ readonly type: "array";
799
+ readonly items: {
800
+ readonly $ref: "#/$defs/EventStatus";
801
+ };
802
+ readonly description: "One entry per stored event, in stored order.";
803
+ };
804
+ readonly requirementsDigest: {
805
+ readonly type: readonly ["string", "null"];
806
+ readonly description: "The criterion's current requirementsDigest. Null only when its manifest entry carries none.";
807
+ };
808
+ readonly ext: {
809
+ readonly $ref: "#/$defs/Ext";
810
+ };
811
+ };
812
+ };
813
+ readonly Ext: {
814
+ readonly title: "Ext";
815
+ readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
816
+ readonly type: "object";
817
+ readonly minProperties: 1;
818
+ readonly additionalProperties: true;
819
+ readonly propertyNames: {
820
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
821
+ };
822
+ };
823
+ readonly PublishedConfig: {
824
+ readonly title: "PublishedConfig";
825
+ readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
826
+ readonly type: "object";
827
+ readonly additionalProperties: false;
828
+ readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
829
+ readonly properties: {
830
+ readonly suite: {
839
831
  readonly type: "string";
840
- readonly format: "date";
832
+ readonly minLength: 1;
841
833
  };
842
- readonly endDate: {
834
+ readonly helperKey: {
843
835
  readonly type: "string";
844
- readonly format: "date";
836
+ readonly minLength: 1;
837
+ readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
845
838
  };
846
- readonly graceDays: {
847
- readonly type: "integer";
848
- readonly minimum: 0;
839
+ readonly tokenKey: {
840
+ readonly type: "string";
841
+ readonly minLength: 1;
842
+ readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
849
843
  };
850
- readonly groupFloor: {
844
+ readonly vetterLabels: {
845
+ readonly type: "array";
846
+ readonly items: {
847
+ readonly type: "string";
848
+ readonly minLength: 1;
849
+ };
850
+ readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
851
+ };
852
+ readonly tokenLabels: {
853
+ readonly type: "array";
854
+ readonly items: {
855
+ readonly type: "string";
856
+ readonly minLength: 1;
857
+ };
858
+ };
859
+ readonly dripPerTick: {
851
860
  readonly type: "integer";
852
861
  readonly minimum: 1;
853
862
  };
854
- readonly tiers: {
863
+ readonly tickLength: {
864
+ readonly $ref: "#/$defs/TickLength";
865
+ };
866
+ readonly events: {
855
867
  readonly type: "array";
856
868
  readonly items: {
857
- readonly $ref: "#/$defs/Tier";
869
+ readonly $ref: "#/$defs/PublishedEvent";
858
870
  };
859
871
  };
860
- readonly approvedBy: {
861
- readonly type: readonly ["string", "null"];
862
- readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
863
- };
864
872
  };
865
873
  };
866
874
  readonly PublishedEvent: {
@@ -894,6 +902,30 @@ export declare const SPEC: {
894
902
  };
895
903
  };
896
904
  };
905
+ readonly Tier: {
906
+ readonly title: "Tier";
907
+ readonly type: "object";
908
+ readonly additionalProperties: false;
909
+ readonly required: readonly ["name", "dripPerTick"];
910
+ readonly properties: {
911
+ readonly name: {
912
+ readonly type: "string";
913
+ readonly minLength: 1;
914
+ readonly description: "How the menu names it: desk, busy-desk.";
915
+ };
916
+ readonly dripPerTick: {
917
+ readonly type: "integer";
918
+ readonly minimum: 1;
919
+ readonly description: "How many tokens a tick under this tier yields.";
920
+ };
921
+ };
922
+ };
923
+ readonly TickLength: {
924
+ readonly title: "TickLength";
925
+ readonly type: "string";
926
+ readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
927
+ readonly description: "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`).";
928
+ };
897
929
  readonly StoredConfig: {
898
930
  readonly title: "StoredConfig";
899
931
  readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
@@ -946,57 +978,62 @@ export declare const SPEC: {
946
978
  };
947
979
  };
948
980
  };
949
- readonly PublishedConfig: {
950
- readonly title: "PublishedConfig";
951
- readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
981
+ readonly StoredEvent: {
982
+ readonly title: "StoredEvent";
952
983
  readonly type: "object";
953
984
  readonly additionalProperties: false;
954
- readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
985
+ readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
955
986
  readonly properties: {
956
- readonly suite: {
987
+ readonly eventId: {
957
988
  readonly type: "string";
958
989
  readonly minLength: 1;
959
990
  };
960
- readonly helperKey: {
991
+ readonly startDate: {
961
992
  readonly type: "string";
962
- readonly minLength: 1;
963
- readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
993
+ readonly format: "date";
964
994
  };
965
- readonly tokenKey: {
995
+ readonly endDate: {
966
996
  readonly type: "string";
967
- readonly minLength: 1;
968
- readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
969
- };
970
- readonly vetterLabels: {
971
- readonly type: "array";
972
- readonly items: {
973
- readonly type: "string";
974
- readonly minLength: 1;
975
- };
976
- readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
997
+ readonly format: "date";
977
998
  };
978
- readonly tokenLabels: {
979
- readonly type: "array";
980
- readonly items: {
981
- readonly type: "string";
982
- readonly minLength: 1;
983
- };
999
+ readonly graceDays: {
1000
+ readonly type: "integer";
1001
+ readonly minimum: 0;
984
1002
  };
985
- readonly dripPerTick: {
1003
+ readonly groupFloor: {
986
1004
  readonly type: "integer";
987
1005
  readonly minimum: 1;
988
1006
  };
989
- readonly tickLength: {
990
- readonly $ref: "#/$defs/TickLength";
991
- };
992
- readonly events: {
1007
+ readonly tiers: {
993
1008
  readonly type: "array";
994
1009
  readonly items: {
995
- readonly $ref: "#/$defs/PublishedEvent";
1010
+ readonly $ref: "#/$defs/Tier";
996
1011
  };
997
1012
  };
1013
+ readonly approvedBy: {
1014
+ readonly type: readonly ["string", "null"];
1015
+ readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
1016
+ };
998
1017
  };
999
1018
  };
1019
+ };
1020
+ };
1021
+ };
1022
+ /**
1023
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
1024
+ * tracks the *issuer* party's requirement because a response swaps the
1025
+ * parties (§7.3 item 5).
1026
+ */
1027
+ export declare const RESPONSE_SPEC: {
1028
+ readonly typeUri: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1#response";
1029
+ readonly isBearer: false;
1030
+ readonly isProofRequired: true;
1031
+ readonly isRecipientRequired: true;
1032
+ readonly isIssuedAtRequired: false;
1033
+ readonly payloadSchema: {
1034
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
1035
+ readonly $ref: "#/$defs/Response";
1036
+ readonly $defs: {
1000
1037
  readonly EventStatus: {
1001
1038
  readonly title: "EventStatus";
1002
1039
  readonly description: "How one stored event stands today. Counts only — never which members asked.";
@@ -1083,12 +1120,6 @@ export declare const SPEC: {
1083
1120
  };
1084
1121
  };
1085
1122
  };
1086
- readonly TickLength: {
1087
- readonly title: "TickLength";
1088
- readonly type: "string";
1089
- readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
1090
- readonly description: "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`).";
1091
- };
1092
1123
  readonly Ext: {
1093
1124
  readonly title: "Ext";
1094
1125
  readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
@@ -1099,78 +1130,55 @@ export declare const SPEC: {
1099
1130
  readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
1100
1131
  };
1101
1132
  };
1102
- };
1103
- };
1104
- };
1105
- /**
1106
- * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
1107
- * tracks the *issuer* party's requirement because a response swaps the
1108
- * parties (§7.3 item 5).
1109
- */
1110
- export declare const RESPONSE_SPEC: {
1111
- readonly typeUri: "https://trusttasks.org/spec/vtc/vetting/hidden/show/0.1#response";
1112
- readonly isBearer: false;
1113
- readonly isProofRequired: true;
1114
- readonly isRecipientRequired: true;
1115
- readonly isIssuedAtRequired: false;
1116
- readonly payloadSchema: {
1117
- readonly $schema: "https://json-schema.org/draft/2020-12/schema";
1118
- readonly $ref: "#/$defs/Response";
1119
- readonly $defs: {
1120
- readonly Tier: {
1121
- readonly title: "Tier";
1133
+ readonly PublishedConfig: {
1134
+ readonly title: "PublishedConfig";
1135
+ readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
1122
1136
  readonly type: "object";
1123
1137
  readonly additionalProperties: false;
1124
- readonly required: readonly ["name", "dripPerTick"];
1138
+ readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
1125
1139
  readonly properties: {
1126
- readonly name: {
1140
+ readonly suite: {
1127
1141
  readonly type: "string";
1128
1142
  readonly minLength: 1;
1129
- readonly description: "How the menu names it: desk, busy-desk.";
1130
1143
  };
1131
- readonly dripPerTick: {
1132
- readonly type: "integer";
1133
- readonly minimum: 1;
1134
- readonly description: "How many tokens a tick under this tier yields.";
1135
- };
1136
- };
1137
- };
1138
- readonly StoredEvent: {
1139
- readonly title: "StoredEvent";
1140
- readonly type: "object";
1141
- readonly additionalProperties: false;
1142
- readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
1143
- readonly properties: {
1144
- readonly eventId: {
1144
+ readonly helperKey: {
1145
1145
  readonly type: "string";
1146
1146
  readonly minLength: 1;
1147
+ readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
1147
1148
  };
1148
- readonly startDate: {
1149
+ readonly tokenKey: {
1149
1150
  readonly type: "string";
1150
- readonly format: "date";
1151
+ readonly minLength: 1;
1152
+ readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
1151
1153
  };
1152
- readonly endDate: {
1153
- readonly type: "string";
1154
- readonly format: "date";
1154
+ readonly vetterLabels: {
1155
+ readonly type: "array";
1156
+ readonly items: {
1157
+ readonly type: "string";
1158
+ readonly minLength: 1;
1159
+ };
1160
+ readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
1155
1161
  };
1156
- readonly graceDays: {
1157
- readonly type: "integer";
1158
- readonly minimum: 0;
1162
+ readonly tokenLabels: {
1163
+ readonly type: "array";
1164
+ readonly items: {
1165
+ readonly type: "string";
1166
+ readonly minLength: 1;
1167
+ };
1159
1168
  };
1160
- readonly groupFloor: {
1169
+ readonly dripPerTick: {
1161
1170
  readonly type: "integer";
1162
1171
  readonly minimum: 1;
1163
1172
  };
1164
- readonly tiers: {
1173
+ readonly tickLength: {
1174
+ readonly $ref: "#/$defs/TickLength";
1175
+ };
1176
+ readonly events: {
1165
1177
  readonly type: "array";
1166
1178
  readonly items: {
1167
- readonly $ref: "#/$defs/Tier";
1179
+ readonly $ref: "#/$defs/PublishedEvent";
1168
1180
  };
1169
1181
  };
1170
- readonly approvedBy: {
1171
- readonly type: readonly ["string", "null"];
1172
- readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
1173
- };
1174
1182
  };
1175
1183
  };
1176
1184
  readonly PublishedEvent: {
@@ -1204,6 +1212,30 @@ export declare const RESPONSE_SPEC: {
1204
1212
  };
1205
1213
  };
1206
1214
  };
1215
+ readonly Tier: {
1216
+ readonly title: "Tier";
1217
+ readonly type: "object";
1218
+ readonly additionalProperties: false;
1219
+ readonly required: readonly ["name", "dripPerTick"];
1220
+ readonly properties: {
1221
+ readonly name: {
1222
+ readonly type: "string";
1223
+ readonly minLength: 1;
1224
+ readonly description: "How the menu names it: desk, busy-desk.";
1225
+ };
1226
+ readonly dripPerTick: {
1227
+ readonly type: "integer";
1228
+ readonly minimum: 1;
1229
+ readonly description: "How many tokens a tick under this tier yields.";
1230
+ };
1231
+ };
1232
+ };
1233
+ readonly TickLength: {
1234
+ readonly title: "TickLength";
1235
+ readonly type: "string";
1236
+ readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
1237
+ readonly description: "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`).";
1238
+ };
1207
1239
  readonly StoredConfig: {
1208
1240
  readonly title: "StoredConfig";
1209
1241
  readonly description: "The parameters exactly as the community stores them, including the helper key it never publishes.";
@@ -1256,159 +1288,44 @@ export declare const RESPONSE_SPEC: {
1256
1288
  };
1257
1289
  };
1258
1290
  };
1259
- readonly PublishedConfig: {
1260
- readonly title: "PublishedConfig";
1261
- readonly description: "The parameters exactly as they now appear in this community's join manifest, under vetting.ext. What an applicant and a vetter read.";
1291
+ readonly StoredEvent: {
1292
+ readonly title: "StoredEvent";
1262
1293
  readonly type: "object";
1263
1294
  readonly additionalProperties: false;
1264
- readonly required: readonly ["suite", "helperKey", "tokenKey", "vetterLabels", "tokenLabels", "dripPerTick", "tickLength", "events"];
1295
+ readonly required: readonly ["eventId", "startDate", "endDate", "graceDays", "groupFloor", "tiers"];
1265
1296
  readonly properties: {
1266
- readonly suite: {
1297
+ readonly eventId: {
1267
1298
  readonly type: "string";
1268
1299
  readonly minLength: 1;
1269
1300
  };
1270
- readonly helperKey: {
1301
+ readonly startDate: {
1271
1302
  readonly type: "string";
1272
- readonly minLength: 1;
1273
- readonly description: "The helper verification key, multibase — named for its role on the wire rather than for hvk.";
1303
+ readonly format: "date";
1274
1304
  };
1275
- readonly tokenKey: {
1305
+ readonly endDate: {
1276
1306
  readonly type: "string";
1277
- readonly minLength: 1;
1278
- readonly description: "The token verification key, multibase — named for its role on the wire rather than for tvk.";
1279
- };
1280
- readonly vetterLabels: {
1281
- readonly type: "array";
1282
- readonly items: {
1283
- readonly type: "string";
1284
- readonly minLength: 1;
1285
- };
1286
- readonly description: "Class labels published whole, e.g. vetter/2026-09 — a request names one of these, not the bare period.";
1287
- };
1288
- readonly tokenLabels: {
1289
- readonly type: "array";
1290
- readonly items: {
1291
- readonly type: "string";
1292
- readonly minLength: 1;
1293
- };
1307
+ readonly format: "date";
1294
1308
  };
1295
- readonly dripPerTick: {
1309
+ readonly graceDays: {
1296
1310
  readonly type: "integer";
1297
- readonly minimum: 1;
1298
- };
1299
- readonly tickLength: {
1300
- readonly $ref: "#/$defs/TickLength";
1301
- };
1302
- readonly events: {
1303
- readonly type: "array";
1304
- readonly items: {
1305
- readonly $ref: "#/$defs/PublishedEvent";
1306
- };
1307
- };
1308
- };
1309
- };
1310
- readonly EventStatus: {
1311
- readonly title: "EventStatus";
1312
- readonly description: "How one stored event stands today. Counts only — never which members asked.";
1313
- readonly type: "object";
1314
- readonly additionalProperties: false;
1315
- readonly required: readonly ["eventId", "groupFloor", "groupSize", "approved", "live"];
1316
- readonly properties: {
1317
- readonly eventId: {
1318
- readonly type: "string";
1319
- readonly minLength: 1;
1311
+ readonly minimum: 0;
1320
1312
  };
1321
1313
  readonly groupFloor: {
1322
1314
  readonly type: "integer";
1323
1315
  readonly minimum: 1;
1324
- readonly description: "The smallest group this community will open the label for, as stored.";
1325
- };
1326
- readonly groupSize: {
1327
- readonly type: "integer";
1328
- readonly minimum: 0;
1329
- readonly description: "How many members have asked to vet at this event through vtc/vetting/vetters/event-mode. The same count event-mode already returns to a vetter.";
1330
- };
1331
- readonly approved: {
1332
- readonly type: "boolean";
1333
- readonly description: "Whether the stored event names an approver.";
1334
- };
1335
- readonly live: {
1336
- readonly type: "boolean";
1337
- readonly description: "Derived: approved, groupSize at least groupFloor, and today no later than endDate plus graceDays.";
1338
1316
  };
1339
- };
1340
- };
1341
- readonly Response: {
1342
- readonly $anchor: "response";
1343
- readonly title: "VTC Vetting — Hidden — Show — response payload";
1344
- readonly type: "object";
1345
- readonly additionalProperties: false;
1346
- readonly required: readonly ["criterionId", "enabled", "requirementsDigest"];
1347
- readonly dependentRequired: {
1348
- readonly stored: readonly ["published", "enrolledVetters", "eventStatus"];
1349
- readonly published: readonly ["stored"];
1350
- readonly enrolledVetters: readonly ["stored"];
1351
- readonly eventStatus: readonly ["stored"];
1352
- };
1353
- readonly properties: {
1354
- readonly criterionId: {
1355
- readonly type: "string";
1356
- readonly minLength: 1;
1357
- readonly description: "The criterion read.";
1358
- };
1359
- readonly enabled: {
1360
- readonly type: "boolean";
1361
- readonly description: "Whether the criterion carries hidden-vetting parameters. When false, stored, published, enrolledVetters and eventStatus are absent.";
1362
- };
1363
- readonly stored: {
1364
- readonly $ref: "#/$defs/StoredConfig";
1365
- };
1366
- readonly published: {
1367
- readonly $ref: "#/$defs/PublishedConfig";
1368
- };
1369
- readonly enrolledVetters: {
1370
- readonly type: "object";
1371
- readonly description: "For each live class label (vetter/<period>), how many members hold an enrolment under it. Counts only.";
1372
- readonly propertyNames: {
1373
- readonly pattern: "^vetter/[0-9]{4}-(0[1-9]|1[0-2])$";
1374
- };
1375
- readonly additionalProperties: {
1376
- readonly type: "integer";
1377
- readonly minimum: 0;
1378
- };
1379
- };
1380
- readonly eventStatus: {
1317
+ readonly tiers: {
1381
1318
  readonly type: "array";
1382
1319
  readonly items: {
1383
- readonly $ref: "#/$defs/EventStatus";
1320
+ readonly $ref: "#/$defs/Tier";
1384
1321
  };
1385
- readonly description: "One entry per stored event, in stored order.";
1386
1322
  };
1387
- readonly requirementsDigest: {
1323
+ readonly approvedBy: {
1388
1324
  readonly type: readonly ["string", "null"];
1389
- readonly description: "The criterion's current requirementsDigest. Null only when its manifest entry carries none.";
1390
- };
1391
- readonly ext: {
1392
- readonly $ref: "#/$defs/Ext";
1325
+ readonly description: "Who approved the event, or null when nobody has. Recorded in storage only — dropped from the published shape (see published.events).";
1393
1326
  };
1394
1327
  };
1395
1328
  };
1396
- readonly TickLength: {
1397
- readonly title: "TickLength";
1398
- readonly type: "string";
1399
- readonly pattern: "^P(?:\\d+D(?:T\\d+H)?|T\\d+H)$";
1400
- readonly description: "The length of one tick of the drip, as an ISO 8601 duration in days and/or hours — at least `PT1H`. A label's tick `t` is the window starting `t` tick lengths after the label's start (`vtc/vetting/vetters/pcs-tokens`).";
1401
- };
1402
- readonly Ext: {
1403
- readonly title: "Ext";
1404
- readonly description: "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.";
1405
- readonly type: "object";
1406
- readonly minProperties: 1;
1407
- readonly additionalProperties: true;
1408
- readonly propertyNames: {
1409
- readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
1410
- };
1411
- };
1412
1329
  };
1413
1330
  };
1414
1331
  };