@cygnuxlabs/tracekit 0.0.0-stage → 1.2.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.
- package/README.md +294 -2
- package/bin/tracekit.mjs +30 -0
- package/dist/v1.d.ts +97 -0
- package/dist/v1.js +535 -0
- package/dist/v2/adapters/claude-agent-sdk.d.ts +45 -0
- package/dist/v2/adapters/claude-agent-sdk.js +142 -0
- package/dist/v2/adapters/gate.d.ts +62 -0
- package/dist/v2/adapters/gate.js +195 -0
- package/dist/v2/adapters/openai-agents.d.ts +85 -0
- package/dist/v2/adapters/openai-agents.js +114 -0
- package/dist/v2/adapters/vercel-ai.d.ts +51 -0
- package/dist/v2/adapters/vercel-ai.js +132 -0
- package/dist/v2/client.d.ts +159 -0
- package/dist/v2/client.js +749 -0
- package/dist/v2/executor.d.ts +49 -0
- package/dist/v2/executor.js +57 -0
- package/dist/v2/jcs.d.ts +5 -0
- package/dist/v2/jcs.js +12 -0
- package/dist/v2/launcher.d.ts +10 -0
- package/dist/v2/launcher.js +50 -0
- package/dist/v2/rpc_schema.d.ts +3 -0
- package/dist/v2/rpc_schema.js +43 -0
- package/dist/v2/validate.d.ts +6 -0
- package/dist/v2/validate.js +70 -0
- package/dist/verify/cli.d.ts +1 -0
- package/dist/verify/cli.js +46 -0
- package/dist/verify/detect.d.ts +41 -0
- package/dist/verify/detect.js +289 -0
- package/dist/verify/index.d.ts +34 -0
- package/dist/verify/index.js +930 -0
- package/dist/verify/jcs.d.ts +19 -0
- package/dist/verify/jcs.js +154 -0
- package/dist/verify/primitives.d.ts +62 -0
- package/dist/verify/primitives.js +298 -0
- package/dist/verify/schema.d.ts +11 -0
- package/dist/verify/schema.js +98 -0
- package/dist/verify/tracekit.event.v2.json +4588 -0
- package/dist/verify/zip.d.ts +17 -0
- package/dist/verify/zip.js +145 -0
- package/package.json +42 -4
|
@@ -0,0 +1,4588 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://github.com/Cygnux-Labs/Tracekit/schema/tracekit.event.v2.json",
|
|
4
|
+
"title": "Tracekit event v2",
|
|
5
|
+
"description": "One event in a format v2 record log. Additive over tracekit.event.v1: new optional fields and types, and bounds on every string and array. Validated with full-match ASCII patterns.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"additionalProperties": false,
|
|
8
|
+
"required": [
|
|
9
|
+
"schema_version",
|
|
10
|
+
"id",
|
|
11
|
+
"seq",
|
|
12
|
+
"prev_hash",
|
|
13
|
+
"ts",
|
|
14
|
+
"run_id",
|
|
15
|
+
"agent_id",
|
|
16
|
+
"parent_id",
|
|
17
|
+
"source",
|
|
18
|
+
"type",
|
|
19
|
+
"data",
|
|
20
|
+
"log_id",
|
|
21
|
+
"tenant",
|
|
22
|
+
"run_seq",
|
|
23
|
+
"run_prev_hash"
|
|
24
|
+
],
|
|
25
|
+
"properties": {
|
|
26
|
+
"schema_version": {
|
|
27
|
+
"const": "tracekit.event.v2"
|
|
28
|
+
},
|
|
29
|
+
"id": {
|
|
30
|
+
"type": "string",
|
|
31
|
+
"pattern": "^[0-9a-f]{32}$",
|
|
32
|
+
"description": "Random 128-bit id, hex.",
|
|
33
|
+
"maxLength": 4096
|
|
34
|
+
},
|
|
35
|
+
"seq": {
|
|
36
|
+
"type": "integer",
|
|
37
|
+
"minimum": 0,
|
|
38
|
+
"maximum": 9007199254740991,
|
|
39
|
+
"description": "Signer's monotonic counter. Assigned by tracekitd, never by the client."
|
|
40
|
+
},
|
|
41
|
+
"prev_hash": {
|
|
42
|
+
"$ref": "#/$defs/hash",
|
|
43
|
+
"description": "Hash of the previous record in this log; sha256: and 64 zeros for seq 0."
|
|
44
|
+
},
|
|
45
|
+
"ts": {
|
|
46
|
+
"type": "string",
|
|
47
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
48
|
+
"description": "Client-reported time, UTC, microseconds.",
|
|
49
|
+
"maxLength": 4096
|
|
50
|
+
},
|
|
51
|
+
"ts_signed": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
54
|
+
"description": "Time the signer accepted the event.",
|
|
55
|
+
"maxLength": 4096
|
|
56
|
+
},
|
|
57
|
+
"run_id": {
|
|
58
|
+
"type": "string",
|
|
59
|
+
"minLength": 1,
|
|
60
|
+
"maxLength": 200
|
|
61
|
+
},
|
|
62
|
+
"agent_id": {
|
|
63
|
+
"type": "string",
|
|
64
|
+
"minLength": 1,
|
|
65
|
+
"maxLength": 200,
|
|
66
|
+
"description": "\"main\" for the top-level agent, otherwise the harness's sub-agent id."
|
|
67
|
+
},
|
|
68
|
+
"parent_id": {
|
|
69
|
+
"type": [
|
|
70
|
+
"string",
|
|
71
|
+
"null"
|
|
72
|
+
],
|
|
73
|
+
"maxLength": 200,
|
|
74
|
+
"description": "agent_id of the spawning agent, or null."
|
|
75
|
+
},
|
|
76
|
+
"source": {
|
|
77
|
+
"enum": [
|
|
78
|
+
"hook",
|
|
79
|
+
"proxy",
|
|
80
|
+
"transcript",
|
|
81
|
+
"signer",
|
|
82
|
+
"sdk",
|
|
83
|
+
"migrated",
|
|
84
|
+
"import",
|
|
85
|
+
"gateway"
|
|
86
|
+
],
|
|
87
|
+
"description": "Capture path. transcript = harness-reported, lower trust; import = received over OTLP, or another system's decision (decision_import) (tier T3): receipt only; gateway = model.exchange recorded by the LLM gateway, or a tool call (policy.decision, approval.request, tool.result) or an input (input.observed) the MCP gateway or a tool executor decided, ran or received for its client (tier T2)."
|
|
88
|
+
},
|
|
89
|
+
"type": {
|
|
90
|
+
"enum": [
|
|
91
|
+
"run.start",
|
|
92
|
+
"run.end",
|
|
93
|
+
"tool.call",
|
|
94
|
+
"policy.decision",
|
|
95
|
+
"approval",
|
|
96
|
+
"tool.result",
|
|
97
|
+
"error",
|
|
98
|
+
"review",
|
|
99
|
+
"trace.tamper",
|
|
100
|
+
"capture.gap",
|
|
101
|
+
"checkpoint",
|
|
102
|
+
"user.prompt",
|
|
103
|
+
"model.message",
|
|
104
|
+
"model.exchange",
|
|
105
|
+
"run.registered",
|
|
106
|
+
"run.closing",
|
|
107
|
+
"run.final",
|
|
108
|
+
"approval.request",
|
|
109
|
+
"approval.consumed",
|
|
110
|
+
"approval.expired",
|
|
111
|
+
"approval.refused",
|
|
112
|
+
"approval.binding_mismatch",
|
|
113
|
+
"approval.abandoned",
|
|
114
|
+
"approval.escalated",
|
|
115
|
+
"approval.revoked",
|
|
116
|
+
"approval.suggested",
|
|
117
|
+
"approval.agents",
|
|
118
|
+
"input.observed",
|
|
119
|
+
"state.write",
|
|
120
|
+
"signer.epoch",
|
|
121
|
+
"key.retire",
|
|
122
|
+
"log.closed",
|
|
123
|
+
"reconcile.hook_missing",
|
|
124
|
+
"reconcile.fabricated",
|
|
125
|
+
"reconcile.args_mismatch",
|
|
126
|
+
"reconcile.result_without_call",
|
|
127
|
+
"reconcile.unexplained_effect",
|
|
128
|
+
"reconcile.args_unparseable",
|
|
129
|
+
"refusal.summary",
|
|
130
|
+
"policy.external",
|
|
131
|
+
"content.accessed",
|
|
132
|
+
"content.erased",
|
|
133
|
+
"why.finding",
|
|
134
|
+
"run.child",
|
|
135
|
+
"incident.opened",
|
|
136
|
+
"incident.updated",
|
|
137
|
+
"incident.capped",
|
|
138
|
+
"run.held",
|
|
139
|
+
"run.resumed",
|
|
140
|
+
"run.quarantined",
|
|
141
|
+
"incident.resolved",
|
|
142
|
+
"incident.response",
|
|
143
|
+
"identity.suspension",
|
|
144
|
+
"effect.observed"
|
|
145
|
+
]
|
|
146
|
+
},
|
|
147
|
+
"data": {
|
|
148
|
+
"type": "object"
|
|
149
|
+
},
|
|
150
|
+
"transcript": {
|
|
151
|
+
"type": "object",
|
|
152
|
+
"additionalProperties": false,
|
|
153
|
+
"required": [
|
|
154
|
+
"path",
|
|
155
|
+
"length",
|
|
156
|
+
"hash"
|
|
157
|
+
],
|
|
158
|
+
"description": "C2: what the hook read of the harness transcript at this point (prefix hash). Lets the signer detect later edits, truncation or deletion.",
|
|
159
|
+
"properties": {
|
|
160
|
+
"path": {
|
|
161
|
+
"type": "string",
|
|
162
|
+
"maxLength": 4096
|
|
163
|
+
},
|
|
164
|
+
"length": {
|
|
165
|
+
"type": "integer",
|
|
166
|
+
"minimum": 0
|
|
167
|
+
},
|
|
168
|
+
"hash": {
|
|
169
|
+
"$ref": "#/$defs/commitment"
|
|
170
|
+
},
|
|
171
|
+
"prefix_length": {
|
|
172
|
+
"type": [
|
|
173
|
+
"integer",
|
|
174
|
+
"null"
|
|
175
|
+
],
|
|
176
|
+
"minimum": 0,
|
|
177
|
+
"description": "Length the signer last acknowledged for this path."
|
|
178
|
+
},
|
|
179
|
+
"prefix_hash": {
|
|
180
|
+
"oneOf": [
|
|
181
|
+
{
|
|
182
|
+
"$ref": "#/$defs/commitment"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"type": "null"
|
|
186
|
+
}
|
|
187
|
+
],
|
|
188
|
+
"description": "Hash of the first prefix_length bytes as read now."
|
|
189
|
+
},
|
|
190
|
+
"missing": {
|
|
191
|
+
"type": "boolean"
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
},
|
|
195
|
+
"log_id": {
|
|
196
|
+
"type": "string",
|
|
197
|
+
"pattern": "^[0-9a-f]{32}$",
|
|
198
|
+
"description": "The record log this event belongs to.",
|
|
199
|
+
"maxLength": 4096
|
|
200
|
+
},
|
|
201
|
+
"tenant": {
|
|
202
|
+
"$ref": "#/$defs/id"
|
|
203
|
+
},
|
|
204
|
+
"tenant_attested": {
|
|
205
|
+
"type": "boolean"
|
|
206
|
+
},
|
|
207
|
+
"principal": {
|
|
208
|
+
"type": "string",
|
|
209
|
+
"maxLength": 256
|
|
210
|
+
},
|
|
211
|
+
"principal_attested": {
|
|
212
|
+
"type": "boolean"
|
|
213
|
+
},
|
|
214
|
+
"request_id": {
|
|
215
|
+
"$ref": "#/$defs/id"
|
|
216
|
+
},
|
|
217
|
+
"stream": {
|
|
218
|
+
"$ref": "#/$defs/id"
|
|
219
|
+
},
|
|
220
|
+
"client_seq": {
|
|
221
|
+
"type": "integer",
|
|
222
|
+
"minimum": 0,
|
|
223
|
+
"maximum": 9007199254740991
|
|
224
|
+
},
|
|
225
|
+
"tool_call_id": {
|
|
226
|
+
"$ref": "#/$defs/id"
|
|
227
|
+
},
|
|
228
|
+
"attempt": {
|
|
229
|
+
"type": "integer",
|
|
230
|
+
"minimum": 0,
|
|
231
|
+
"maximum": 9007199254740991
|
|
232
|
+
},
|
|
233
|
+
"step": {
|
|
234
|
+
"type": "integer",
|
|
235
|
+
"minimum": 0,
|
|
236
|
+
"maximum": 9007199254740991
|
|
237
|
+
},
|
|
238
|
+
"run_seq": {
|
|
239
|
+
"type": "integer",
|
|
240
|
+
"minimum": 0,
|
|
241
|
+
"maximum": 9007199254740991
|
|
242
|
+
},
|
|
243
|
+
"run_prev_hash": {
|
|
244
|
+
"$ref": "#/$defs/hash"
|
|
245
|
+
},
|
|
246
|
+
"capture_layer": {
|
|
247
|
+
"enum": [
|
|
248
|
+
"L1",
|
|
249
|
+
"L2",
|
|
250
|
+
"L3",
|
|
251
|
+
"L4",
|
|
252
|
+
"L5",
|
|
253
|
+
"L6"
|
|
254
|
+
]
|
|
255
|
+
},
|
|
256
|
+
"tier": {
|
|
257
|
+
"enum": [
|
|
258
|
+
"T1",
|
|
259
|
+
"T2",
|
|
260
|
+
"T3"
|
|
261
|
+
]
|
|
262
|
+
},
|
|
263
|
+
"span_id": {
|
|
264
|
+
"type": "string",
|
|
265
|
+
"pattern": "^[0-9a-f]{16}$",
|
|
266
|
+
"maxLength": 16,
|
|
267
|
+
"description": "source import: the OpenTelemetry span the record was imported from"
|
|
268
|
+
},
|
|
269
|
+
"args_commitment": {
|
|
270
|
+
"type": "string",
|
|
271
|
+
"pattern": "^hmac-sha256:[0-9a-f]{64}$",
|
|
272
|
+
"maxLength": 4096
|
|
273
|
+
},
|
|
274
|
+
"args_source": {
|
|
275
|
+
"enum": [
|
|
276
|
+
"raw",
|
|
277
|
+
"parsed",
|
|
278
|
+
"coerced"
|
|
279
|
+
]
|
|
280
|
+
},
|
|
281
|
+
"engine": {
|
|
282
|
+
"type": "string",
|
|
283
|
+
"maxLength": 128,
|
|
284
|
+
"pattern": "^[A-Za-z0-9._-]+@[A-Za-z0-9._+-]+$",
|
|
285
|
+
"description": "Policy engine id@version."
|
|
286
|
+
}
|
|
287
|
+
},
|
|
288
|
+
"allOf": [
|
|
289
|
+
{
|
|
290
|
+
"if": {
|
|
291
|
+
"properties": {
|
|
292
|
+
"type": {
|
|
293
|
+
"const": "run.start"
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
},
|
|
297
|
+
"then": {
|
|
298
|
+
"properties": {
|
|
299
|
+
"data": {
|
|
300
|
+
"$ref": "#/$defs/run_start"
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
},
|
|
305
|
+
{
|
|
306
|
+
"if": {
|
|
307
|
+
"properties": {
|
|
308
|
+
"type": {
|
|
309
|
+
"const": "run.end"
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
},
|
|
313
|
+
"then": {
|
|
314
|
+
"properties": {
|
|
315
|
+
"data": {
|
|
316
|
+
"$ref": "#/$defs/run_end"
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"if": {
|
|
323
|
+
"properties": {
|
|
324
|
+
"type": {
|
|
325
|
+
"const": "tool.call"
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
"then": {
|
|
330
|
+
"properties": {
|
|
331
|
+
"data": {
|
|
332
|
+
"$ref": "#/$defs/tool_call"
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
"if": {
|
|
339
|
+
"properties": {
|
|
340
|
+
"type": {
|
|
341
|
+
"const": "policy.decision"
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
},
|
|
345
|
+
"then": {
|
|
346
|
+
"properties": {
|
|
347
|
+
"data": {
|
|
348
|
+
"$ref": "#/$defs/policy_decision"
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
"if": {
|
|
355
|
+
"properties": {
|
|
356
|
+
"type": {
|
|
357
|
+
"const": "approval"
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
},
|
|
361
|
+
"then": {
|
|
362
|
+
"properties": {
|
|
363
|
+
"data": {
|
|
364
|
+
"$ref": "#/$defs/approval"
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
"if": {
|
|
371
|
+
"properties": {
|
|
372
|
+
"type": {
|
|
373
|
+
"const": "tool.result"
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
"then": {
|
|
378
|
+
"properties": {
|
|
379
|
+
"data": {
|
|
380
|
+
"$ref": "#/$defs/tool_result"
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
"if": {
|
|
387
|
+
"properties": {
|
|
388
|
+
"type": {
|
|
389
|
+
"const": "error"
|
|
390
|
+
}
|
|
391
|
+
}
|
|
392
|
+
},
|
|
393
|
+
"then": {
|
|
394
|
+
"properties": {
|
|
395
|
+
"data": {
|
|
396
|
+
"$ref": "#/$defs/error"
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"if": {
|
|
403
|
+
"properties": {
|
|
404
|
+
"type": {
|
|
405
|
+
"const": "review"
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
},
|
|
409
|
+
"then": {
|
|
410
|
+
"properties": {
|
|
411
|
+
"data": {
|
|
412
|
+
"$ref": "#/$defs/review"
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
},
|
|
417
|
+
{
|
|
418
|
+
"if": {
|
|
419
|
+
"properties": {
|
|
420
|
+
"type": {
|
|
421
|
+
"const": "trace.tamper"
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
},
|
|
425
|
+
"then": {
|
|
426
|
+
"properties": {
|
|
427
|
+
"data": {
|
|
428
|
+
"$ref": "#/$defs/trace_tamper"
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
},
|
|
433
|
+
{
|
|
434
|
+
"if": {
|
|
435
|
+
"properties": {
|
|
436
|
+
"type": {
|
|
437
|
+
"const": "capture.gap"
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
},
|
|
441
|
+
"then": {
|
|
442
|
+
"properties": {
|
|
443
|
+
"data": {
|
|
444
|
+
"$ref": "#/$defs/capture_gap"
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"if": {
|
|
451
|
+
"properties": {
|
|
452
|
+
"type": {
|
|
453
|
+
"const": "checkpoint"
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
},
|
|
457
|
+
"then": {
|
|
458
|
+
"properties": {
|
|
459
|
+
"data": {
|
|
460
|
+
"$ref": "#/$defs/checkpoint"
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
{
|
|
466
|
+
"if": {
|
|
467
|
+
"properties": {
|
|
468
|
+
"type": {
|
|
469
|
+
"const": "user.prompt"
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
},
|
|
473
|
+
"then": {
|
|
474
|
+
"properties": {
|
|
475
|
+
"data": {
|
|
476
|
+
"$ref": "#/$defs/user_prompt"
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
"if": {
|
|
483
|
+
"properties": {
|
|
484
|
+
"type": {
|
|
485
|
+
"const": "model.message"
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
},
|
|
489
|
+
"then": {
|
|
490
|
+
"properties": {
|
|
491
|
+
"data": {
|
|
492
|
+
"$ref": "#/$defs/model_message"
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
"if": {
|
|
499
|
+
"properties": {
|
|
500
|
+
"type": {
|
|
501
|
+
"const": "model.exchange"
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
},
|
|
505
|
+
"then": {
|
|
506
|
+
"properties": {
|
|
507
|
+
"data": {
|
|
508
|
+
"$ref": "#/$defs/model_exchange"
|
|
509
|
+
}
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
{
|
|
514
|
+
"if": {
|
|
515
|
+
"properties": {
|
|
516
|
+
"type": {
|
|
517
|
+
"const": "run.registered"
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
},
|
|
521
|
+
"then": {
|
|
522
|
+
"properties": {
|
|
523
|
+
"data": {
|
|
524
|
+
"$ref": "#/$defs/run_registered"
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
"if": {
|
|
531
|
+
"properties": {
|
|
532
|
+
"type": {
|
|
533
|
+
"const": "run.closing"
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
},
|
|
537
|
+
"then": {
|
|
538
|
+
"properties": {
|
|
539
|
+
"data": {
|
|
540
|
+
"$ref": "#/$defs/run_closing"
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
}
|
|
544
|
+
},
|
|
545
|
+
{
|
|
546
|
+
"if": {
|
|
547
|
+
"properties": {
|
|
548
|
+
"type": {
|
|
549
|
+
"const": "run.final"
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
},
|
|
553
|
+
"then": {
|
|
554
|
+
"properties": {
|
|
555
|
+
"data": {
|
|
556
|
+
"$ref": "#/$defs/run_final"
|
|
557
|
+
}
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
"if": {
|
|
563
|
+
"properties": {
|
|
564
|
+
"type": {
|
|
565
|
+
"const": "approval.request"
|
|
566
|
+
}
|
|
567
|
+
}
|
|
568
|
+
},
|
|
569
|
+
"then": {
|
|
570
|
+
"properties": {
|
|
571
|
+
"data": {
|
|
572
|
+
"$ref": "#/$defs/approval_request"
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"if": {
|
|
579
|
+
"properties": {
|
|
580
|
+
"type": {
|
|
581
|
+
"const": "approval.consumed"
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
},
|
|
585
|
+
"then": {
|
|
586
|
+
"properties": {
|
|
587
|
+
"data": {
|
|
588
|
+
"$ref": "#/$defs/approval_consumed"
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
"if": {
|
|
595
|
+
"properties": {
|
|
596
|
+
"type": {
|
|
597
|
+
"const": "approval.expired"
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
},
|
|
601
|
+
"then": {
|
|
602
|
+
"properties": {
|
|
603
|
+
"data": {
|
|
604
|
+
"$ref": "#/$defs/approval_expired"
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
},
|
|
609
|
+
{
|
|
610
|
+
"if": {
|
|
611
|
+
"properties": {
|
|
612
|
+
"type": {
|
|
613
|
+
"const": "approval.refused"
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
"then": {
|
|
618
|
+
"properties": {
|
|
619
|
+
"data": {
|
|
620
|
+
"$ref": "#/$defs/approval_refused"
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
"if": {
|
|
627
|
+
"properties": {
|
|
628
|
+
"type": {
|
|
629
|
+
"const": "approval.binding_mismatch"
|
|
630
|
+
}
|
|
631
|
+
}
|
|
632
|
+
},
|
|
633
|
+
"then": {
|
|
634
|
+
"properties": {
|
|
635
|
+
"data": {
|
|
636
|
+
"$ref": "#/$defs/approval_binding_mismatch"
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"if": {
|
|
643
|
+
"properties": {
|
|
644
|
+
"type": {
|
|
645
|
+
"const": "approval.abandoned"
|
|
646
|
+
}
|
|
647
|
+
}
|
|
648
|
+
},
|
|
649
|
+
"then": {
|
|
650
|
+
"properties": {
|
|
651
|
+
"data": {
|
|
652
|
+
"$ref": "#/$defs/approval_abandoned"
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
},
|
|
657
|
+
{
|
|
658
|
+
"if": {
|
|
659
|
+
"properties": {
|
|
660
|
+
"type": {
|
|
661
|
+
"const": "approval.escalated"
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
},
|
|
665
|
+
"then": {
|
|
666
|
+
"properties": {
|
|
667
|
+
"data": {
|
|
668
|
+
"$ref": "#/$defs/approval_escalated"
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
"if": {
|
|
675
|
+
"properties": {
|
|
676
|
+
"type": {
|
|
677
|
+
"const": "approval.revoked"
|
|
678
|
+
}
|
|
679
|
+
}
|
|
680
|
+
},
|
|
681
|
+
"then": {
|
|
682
|
+
"properties": {
|
|
683
|
+
"data": {
|
|
684
|
+
"$ref": "#/$defs/approval_revoked"
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
}
|
|
688
|
+
},
|
|
689
|
+
{
|
|
690
|
+
"if": {
|
|
691
|
+
"properties": {
|
|
692
|
+
"type": {
|
|
693
|
+
"const": "approval.suggested"
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
},
|
|
697
|
+
"then": {
|
|
698
|
+
"properties": {
|
|
699
|
+
"data": {
|
|
700
|
+
"$ref": "#/$defs/approval_suggested"
|
|
701
|
+
}
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
},
|
|
705
|
+
{
|
|
706
|
+
"if": {
|
|
707
|
+
"properties": {
|
|
708
|
+
"type": {
|
|
709
|
+
"const": "approval.agents"
|
|
710
|
+
}
|
|
711
|
+
}
|
|
712
|
+
},
|
|
713
|
+
"then": {
|
|
714
|
+
"properties": {
|
|
715
|
+
"data": {
|
|
716
|
+
"$ref": "#/$defs/approval_agents"
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
},
|
|
721
|
+
{
|
|
722
|
+
"if": {
|
|
723
|
+
"properties": {
|
|
724
|
+
"type": {
|
|
725
|
+
"const": "input.observed"
|
|
726
|
+
}
|
|
727
|
+
}
|
|
728
|
+
},
|
|
729
|
+
"then": {
|
|
730
|
+
"properties": {
|
|
731
|
+
"data": {
|
|
732
|
+
"$ref": "#/$defs/input_observed"
|
|
733
|
+
}
|
|
734
|
+
}
|
|
735
|
+
}
|
|
736
|
+
},
|
|
737
|
+
{
|
|
738
|
+
"if": {
|
|
739
|
+
"properties": {
|
|
740
|
+
"type": {
|
|
741
|
+
"const": "state.write"
|
|
742
|
+
}
|
|
743
|
+
}
|
|
744
|
+
},
|
|
745
|
+
"then": {
|
|
746
|
+
"properties": {
|
|
747
|
+
"data": {
|
|
748
|
+
"$ref": "#/$defs/state_write"
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
},
|
|
753
|
+
{
|
|
754
|
+
"if": {
|
|
755
|
+
"properties": {
|
|
756
|
+
"type": {
|
|
757
|
+
"const": "signer.epoch"
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
},
|
|
761
|
+
"then": {
|
|
762
|
+
"properties": {
|
|
763
|
+
"data": {
|
|
764
|
+
"$ref": "#/$defs/signer_epoch"
|
|
765
|
+
}
|
|
766
|
+
}
|
|
767
|
+
}
|
|
768
|
+
},
|
|
769
|
+
{
|
|
770
|
+
"if": {
|
|
771
|
+
"properties": {
|
|
772
|
+
"type": {
|
|
773
|
+
"const": "key.retire"
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
},
|
|
777
|
+
"then": {
|
|
778
|
+
"properties": {
|
|
779
|
+
"data": {
|
|
780
|
+
"$ref": "#/$defs/key_retire"
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
"if": {
|
|
787
|
+
"properties": {
|
|
788
|
+
"type": {
|
|
789
|
+
"const": "log.closed"
|
|
790
|
+
}
|
|
791
|
+
}
|
|
792
|
+
},
|
|
793
|
+
"then": {
|
|
794
|
+
"properties": {
|
|
795
|
+
"data": {
|
|
796
|
+
"$ref": "#/$defs/log_closed"
|
|
797
|
+
}
|
|
798
|
+
}
|
|
799
|
+
}
|
|
800
|
+
},
|
|
801
|
+
{
|
|
802
|
+
"if": {
|
|
803
|
+
"properties": {
|
|
804
|
+
"type": {
|
|
805
|
+
"const": "reconcile.hook_missing"
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
},
|
|
809
|
+
"then": {
|
|
810
|
+
"properties": {
|
|
811
|
+
"data": {
|
|
812
|
+
"$ref": "#/$defs/reconcile"
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
}
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
"if": {
|
|
819
|
+
"properties": {
|
|
820
|
+
"type": {
|
|
821
|
+
"const": "reconcile.fabricated"
|
|
822
|
+
}
|
|
823
|
+
}
|
|
824
|
+
},
|
|
825
|
+
"then": {
|
|
826
|
+
"properties": {
|
|
827
|
+
"data": {
|
|
828
|
+
"$ref": "#/$defs/reconcile"
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
}
|
|
832
|
+
},
|
|
833
|
+
{
|
|
834
|
+
"if": {
|
|
835
|
+
"properties": {
|
|
836
|
+
"type": {
|
|
837
|
+
"const": "reconcile.args_mismatch"
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
},
|
|
841
|
+
"then": {
|
|
842
|
+
"properties": {
|
|
843
|
+
"data": {
|
|
844
|
+
"$ref": "#/$defs/reconcile"
|
|
845
|
+
}
|
|
846
|
+
}
|
|
847
|
+
}
|
|
848
|
+
},
|
|
849
|
+
{
|
|
850
|
+
"if": {
|
|
851
|
+
"properties": {
|
|
852
|
+
"type": {
|
|
853
|
+
"const": "reconcile.result_without_call"
|
|
854
|
+
}
|
|
855
|
+
}
|
|
856
|
+
},
|
|
857
|
+
"then": {
|
|
858
|
+
"properties": {
|
|
859
|
+
"data": {
|
|
860
|
+
"$ref": "#/$defs/reconcile"
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
}
|
|
864
|
+
},
|
|
865
|
+
{
|
|
866
|
+
"if": {
|
|
867
|
+
"properties": {
|
|
868
|
+
"type": {
|
|
869
|
+
"const": "reconcile.unexplained_effect"
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
},
|
|
873
|
+
"then": {
|
|
874
|
+
"properties": {
|
|
875
|
+
"data": {
|
|
876
|
+
"$ref": "#/$defs/reconcile_effect"
|
|
877
|
+
}
|
|
878
|
+
}
|
|
879
|
+
}
|
|
880
|
+
},
|
|
881
|
+
{
|
|
882
|
+
"if": {
|
|
883
|
+
"properties": {
|
|
884
|
+
"type": {
|
|
885
|
+
"const": "reconcile.args_unparseable"
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
},
|
|
889
|
+
"then": {
|
|
890
|
+
"properties": {
|
|
891
|
+
"data": {
|
|
892
|
+
"$ref": "#/$defs/reconcile"
|
|
893
|
+
}
|
|
894
|
+
}
|
|
895
|
+
}
|
|
896
|
+
},
|
|
897
|
+
{
|
|
898
|
+
"if": {
|
|
899
|
+
"properties": {
|
|
900
|
+
"type": {
|
|
901
|
+
"const": "refusal.summary"
|
|
902
|
+
}
|
|
903
|
+
}
|
|
904
|
+
},
|
|
905
|
+
"then": {
|
|
906
|
+
"properties": {
|
|
907
|
+
"data": {
|
|
908
|
+
"$ref": "#/$defs/refusal_summary"
|
|
909
|
+
}
|
|
910
|
+
}
|
|
911
|
+
}
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
"if": {
|
|
915
|
+
"properties": {
|
|
916
|
+
"type": {
|
|
917
|
+
"const": "policy.external"
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
},
|
|
921
|
+
"then": {
|
|
922
|
+
"properties": {
|
|
923
|
+
"data": {
|
|
924
|
+
"$ref": "#/$defs/policy_external"
|
|
925
|
+
}
|
|
926
|
+
}
|
|
927
|
+
}
|
|
928
|
+
},
|
|
929
|
+
{
|
|
930
|
+
"if": {
|
|
931
|
+
"properties": {
|
|
932
|
+
"type": {
|
|
933
|
+
"const": "content.accessed"
|
|
934
|
+
}
|
|
935
|
+
}
|
|
936
|
+
},
|
|
937
|
+
"then": {
|
|
938
|
+
"properties": {
|
|
939
|
+
"data": {
|
|
940
|
+
"$ref": "#/$defs/content_accessed"
|
|
941
|
+
}
|
|
942
|
+
}
|
|
943
|
+
}
|
|
944
|
+
},
|
|
945
|
+
{
|
|
946
|
+
"if": {
|
|
947
|
+
"properties": {
|
|
948
|
+
"type": {
|
|
949
|
+
"const": "content.erased"
|
|
950
|
+
}
|
|
951
|
+
}
|
|
952
|
+
},
|
|
953
|
+
"then": {
|
|
954
|
+
"properties": {
|
|
955
|
+
"data": {
|
|
956
|
+
"$ref": "#/$defs/content_erased"
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
}
|
|
960
|
+
},
|
|
961
|
+
{
|
|
962
|
+
"if": {
|
|
963
|
+
"properties": {
|
|
964
|
+
"type": {
|
|
965
|
+
"const": "why.finding"
|
|
966
|
+
}
|
|
967
|
+
}
|
|
968
|
+
},
|
|
969
|
+
"then": {
|
|
970
|
+
"properties": {
|
|
971
|
+
"data": {
|
|
972
|
+
"$ref": "#/$defs/why_finding"
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
},
|
|
977
|
+
{
|
|
978
|
+
"if": {
|
|
979
|
+
"properties": {
|
|
980
|
+
"type": {
|
|
981
|
+
"const": "run.child"
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
},
|
|
985
|
+
"then": {
|
|
986
|
+
"properties": {
|
|
987
|
+
"data": {
|
|
988
|
+
"$ref": "#/$defs/run_child"
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
}
|
|
992
|
+
},
|
|
993
|
+
{
|
|
994
|
+
"if": {
|
|
995
|
+
"properties": {
|
|
996
|
+
"type": {
|
|
997
|
+
"const": "incident.opened"
|
|
998
|
+
}
|
|
999
|
+
}
|
|
1000
|
+
},
|
|
1001
|
+
"then": {
|
|
1002
|
+
"properties": {
|
|
1003
|
+
"data": {
|
|
1004
|
+
"$ref": "#/$defs/incident_opened"
|
|
1005
|
+
}
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
1008
|
+
},
|
|
1009
|
+
{
|
|
1010
|
+
"if": {
|
|
1011
|
+
"properties": {
|
|
1012
|
+
"type": {
|
|
1013
|
+
"const": "incident.updated"
|
|
1014
|
+
}
|
|
1015
|
+
}
|
|
1016
|
+
},
|
|
1017
|
+
"then": {
|
|
1018
|
+
"properties": {
|
|
1019
|
+
"data": {
|
|
1020
|
+
"$ref": "#/$defs/incident_updated"
|
|
1021
|
+
}
|
|
1022
|
+
}
|
|
1023
|
+
}
|
|
1024
|
+
},
|
|
1025
|
+
{
|
|
1026
|
+
"if": {
|
|
1027
|
+
"properties": {
|
|
1028
|
+
"type": {
|
|
1029
|
+
"const": "incident.capped"
|
|
1030
|
+
}
|
|
1031
|
+
}
|
|
1032
|
+
},
|
|
1033
|
+
"then": {
|
|
1034
|
+
"properties": {
|
|
1035
|
+
"data": {
|
|
1036
|
+
"$ref": "#/$defs/incident_capped"
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
}
|
|
1040
|
+
},
|
|
1041
|
+
{
|
|
1042
|
+
"if": {
|
|
1043
|
+
"properties": {
|
|
1044
|
+
"type": {
|
|
1045
|
+
"const": "run.held"
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
},
|
|
1049
|
+
"then": {
|
|
1050
|
+
"properties": {
|
|
1051
|
+
"data": {
|
|
1052
|
+
"$ref": "#/$defs/run_held"
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
},
|
|
1057
|
+
{
|
|
1058
|
+
"if": {
|
|
1059
|
+
"properties": {
|
|
1060
|
+
"type": {
|
|
1061
|
+
"const": "run.resumed"
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
},
|
|
1065
|
+
"then": {
|
|
1066
|
+
"properties": {
|
|
1067
|
+
"data": {
|
|
1068
|
+
"$ref": "#/$defs/run_resumed"
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
}
|
|
1072
|
+
},
|
|
1073
|
+
{
|
|
1074
|
+
"if": {
|
|
1075
|
+
"properties": {
|
|
1076
|
+
"type": {
|
|
1077
|
+
"const": "run.quarantined"
|
|
1078
|
+
}
|
|
1079
|
+
}
|
|
1080
|
+
},
|
|
1081
|
+
"then": {
|
|
1082
|
+
"properties": {
|
|
1083
|
+
"data": {
|
|
1084
|
+
"$ref": "#/$defs/run_quarantined"
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
1088
|
+
},
|
|
1089
|
+
{
|
|
1090
|
+
"if": {
|
|
1091
|
+
"properties": {
|
|
1092
|
+
"type": {
|
|
1093
|
+
"const": "incident.resolved"
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
},
|
|
1097
|
+
"then": {
|
|
1098
|
+
"properties": {
|
|
1099
|
+
"data": {
|
|
1100
|
+
"$ref": "#/$defs/incident_resolved"
|
|
1101
|
+
}
|
|
1102
|
+
}
|
|
1103
|
+
}
|
|
1104
|
+
},
|
|
1105
|
+
{
|
|
1106
|
+
"if": {
|
|
1107
|
+
"properties": {
|
|
1108
|
+
"type": {
|
|
1109
|
+
"const": "incident.response"
|
|
1110
|
+
}
|
|
1111
|
+
}
|
|
1112
|
+
},
|
|
1113
|
+
"then": {
|
|
1114
|
+
"properties": {
|
|
1115
|
+
"data": {
|
|
1116
|
+
"$ref": "#/$defs/incident_response"
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
1120
|
+
},
|
|
1121
|
+
{
|
|
1122
|
+
"if": {
|
|
1123
|
+
"properties": {
|
|
1124
|
+
"type": {
|
|
1125
|
+
"const": "identity.suspension"
|
|
1126
|
+
}
|
|
1127
|
+
}
|
|
1128
|
+
},
|
|
1129
|
+
"then": {
|
|
1130
|
+
"properties": {
|
|
1131
|
+
"data": {
|
|
1132
|
+
"$ref": "#/$defs/identity_suspension"
|
|
1133
|
+
}
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
},
|
|
1137
|
+
{
|
|
1138
|
+
"if": {
|
|
1139
|
+
"properties": {
|
|
1140
|
+
"type": {
|
|
1141
|
+
"const": "effect.observed"
|
|
1142
|
+
}
|
|
1143
|
+
}
|
|
1144
|
+
},
|
|
1145
|
+
"then": {
|
|
1146
|
+
"properties": {
|
|
1147
|
+
"data": {
|
|
1148
|
+
"$ref": "#/$defs/effect_observed"
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
}
|
|
1152
|
+
}
|
|
1153
|
+
],
|
|
1154
|
+
"$defs": {
|
|
1155
|
+
"hash": {
|
|
1156
|
+
"type": "string",
|
|
1157
|
+
"pattern": "^sha256:[0-9a-f]{64}$",
|
|
1158
|
+
"maxLength": 71
|
|
1159
|
+
},
|
|
1160
|
+
"commitment": {
|
|
1161
|
+
"type": "string",
|
|
1162
|
+
"pattern": "^hmac-sha256:[0-9a-f]{64}$",
|
|
1163
|
+
"maxLength": 76,
|
|
1164
|
+
"description": "HMAC-SHA256 of a sha256: digest of agent content under a per-record salt the signer keeps and can reveal for that one record (tracekit signer reveal)"
|
|
1165
|
+
},
|
|
1166
|
+
"redaction": {
|
|
1167
|
+
"type": "object",
|
|
1168
|
+
"additionalProperties": false,
|
|
1169
|
+
"required": [
|
|
1170
|
+
"rules",
|
|
1171
|
+
"count",
|
|
1172
|
+
"client_claimed"
|
|
1173
|
+
],
|
|
1174
|
+
"description": "what the signer redacted from this record's content before committing to it; never the values",
|
|
1175
|
+
"properties": {
|
|
1176
|
+
"rules": {
|
|
1177
|
+
"type": "array",
|
|
1178
|
+
"maxItems": 64,
|
|
1179
|
+
"items": {
|
|
1180
|
+
"type": "string",
|
|
1181
|
+
"maxLength": 64
|
|
1182
|
+
},
|
|
1183
|
+
"description": "the redaction rules that fired"
|
|
1184
|
+
},
|
|
1185
|
+
"count": {
|
|
1186
|
+
"type": "integer",
|
|
1187
|
+
"minimum": 0
|
|
1188
|
+
},
|
|
1189
|
+
"client_claimed": {
|
|
1190
|
+
"type": "boolean",
|
|
1191
|
+
"description": "the client said it redacted the content already"
|
|
1192
|
+
},
|
|
1193
|
+
"client": {
|
|
1194
|
+
"type": "object",
|
|
1195
|
+
"additionalProperties": false,
|
|
1196
|
+
"description": "the client's own manifest, as it claimed it",
|
|
1197
|
+
"properties": {
|
|
1198
|
+
"rules": {
|
|
1199
|
+
"type": "array",
|
|
1200
|
+
"maxItems": 32,
|
|
1201
|
+
"items": {
|
|
1202
|
+
"type": "string",
|
|
1203
|
+
"maxLength": 64
|
|
1204
|
+
}
|
|
1205
|
+
},
|
|
1206
|
+
"count": {
|
|
1207
|
+
"type": "integer",
|
|
1208
|
+
"minimum": 0
|
|
1209
|
+
}
|
|
1210
|
+
}
|
|
1211
|
+
},
|
|
1212
|
+
"client_redaction_incomplete": {
|
|
1213
|
+
"const": true,
|
|
1214
|
+
"description": "the client claimed redaction and the signer still found a secret"
|
|
1215
|
+
}
|
|
1216
|
+
}
|
|
1217
|
+
},
|
|
1218
|
+
"content": {
|
|
1219
|
+
"description": "Either the (redacted) value or a reference to it. Which one is decided by docs/privacy.md, never by the caller.",
|
|
1220
|
+
"oneOf": [
|
|
1221
|
+
{
|
|
1222
|
+
"type": "object",
|
|
1223
|
+
"additionalProperties": false,
|
|
1224
|
+
"required": [
|
|
1225
|
+
"value",
|
|
1226
|
+
"redacted"
|
|
1227
|
+
],
|
|
1228
|
+
"properties": {
|
|
1229
|
+
"value": {},
|
|
1230
|
+
"redacted": {
|
|
1231
|
+
"type": "boolean"
|
|
1232
|
+
}
|
|
1233
|
+
}
|
|
1234
|
+
},
|
|
1235
|
+
{
|
|
1236
|
+
"type": "object",
|
|
1237
|
+
"additionalProperties": false,
|
|
1238
|
+
"required": [
|
|
1239
|
+
"hash",
|
|
1240
|
+
"size",
|
|
1241
|
+
"redacted"
|
|
1242
|
+
],
|
|
1243
|
+
"properties": {
|
|
1244
|
+
"hash": {
|
|
1245
|
+
"$ref": "#/$defs/commitment"
|
|
1246
|
+
},
|
|
1247
|
+
"size": {
|
|
1248
|
+
"type": "integer",
|
|
1249
|
+
"minimum": 0
|
|
1250
|
+
},
|
|
1251
|
+
"redacted": {
|
|
1252
|
+
"type": "boolean"
|
|
1253
|
+
}
|
|
1254
|
+
}
|
|
1255
|
+
}
|
|
1256
|
+
]
|
|
1257
|
+
},
|
|
1258
|
+
"run_start": {
|
|
1259
|
+
"type": "object",
|
|
1260
|
+
"additionalProperties": false,
|
|
1261
|
+
"required": [
|
|
1262
|
+
"agent",
|
|
1263
|
+
"host",
|
|
1264
|
+
"os_user",
|
|
1265
|
+
"fail_mode",
|
|
1266
|
+
"policy",
|
|
1267
|
+
"capture_sources",
|
|
1268
|
+
"sandbox",
|
|
1269
|
+
"content_capture",
|
|
1270
|
+
"signer_isolation"
|
|
1271
|
+
],
|
|
1272
|
+
"properties": {
|
|
1273
|
+
"agent": {
|
|
1274
|
+
"type": "object",
|
|
1275
|
+
"required": [
|
|
1276
|
+
"name"
|
|
1277
|
+
],
|
|
1278
|
+
"properties": {
|
|
1279
|
+
"name": {
|
|
1280
|
+
"type": "string",
|
|
1281
|
+
"maxLength": 4096
|
|
1282
|
+
},
|
|
1283
|
+
"version": {
|
|
1284
|
+
"type": [
|
|
1285
|
+
"string",
|
|
1286
|
+
"null"
|
|
1287
|
+
],
|
|
1288
|
+
"maxLength": 4096
|
|
1289
|
+
}
|
|
1290
|
+
}
|
|
1291
|
+
},
|
|
1292
|
+
"model": {
|
|
1293
|
+
"type": [
|
|
1294
|
+
"string",
|
|
1295
|
+
"null"
|
|
1296
|
+
],
|
|
1297
|
+
"maxLength": 4096
|
|
1298
|
+
},
|
|
1299
|
+
"repo": {
|
|
1300
|
+
"type": [
|
|
1301
|
+
"string",
|
|
1302
|
+
"null"
|
|
1303
|
+
],
|
|
1304
|
+
"maxLength": 4096
|
|
1305
|
+
},
|
|
1306
|
+
"commit": {
|
|
1307
|
+
"type": [
|
|
1308
|
+
"string",
|
|
1309
|
+
"null"
|
|
1310
|
+
],
|
|
1311
|
+
"maxLength": 4096
|
|
1312
|
+
},
|
|
1313
|
+
"cwd": {
|
|
1314
|
+
"type": [
|
|
1315
|
+
"string",
|
|
1316
|
+
"null"
|
|
1317
|
+
],
|
|
1318
|
+
"maxLength": 4096
|
|
1319
|
+
},
|
|
1320
|
+
"host": {
|
|
1321
|
+
"type": "string",
|
|
1322
|
+
"maxLength": 4096
|
|
1323
|
+
},
|
|
1324
|
+
"os_user": {
|
|
1325
|
+
"type": "string",
|
|
1326
|
+
"maxLength": 4096
|
|
1327
|
+
},
|
|
1328
|
+
"fail_mode": {
|
|
1329
|
+
"enum": [
|
|
1330
|
+
"open",
|
|
1331
|
+
"closed"
|
|
1332
|
+
]
|
|
1333
|
+
},
|
|
1334
|
+
"policy": {
|
|
1335
|
+
"type": "object",
|
|
1336
|
+
"additionalProperties": false,
|
|
1337
|
+
"required": [
|
|
1338
|
+
"version",
|
|
1339
|
+
"hash"
|
|
1340
|
+
],
|
|
1341
|
+
"properties": {
|
|
1342
|
+
"version": {
|
|
1343
|
+
"type": "string",
|
|
1344
|
+
"maxLength": 4096
|
|
1345
|
+
},
|
|
1346
|
+
"hash": {
|
|
1347
|
+
"$ref": "#/$defs/hash"
|
|
1348
|
+
}
|
|
1349
|
+
}
|
|
1350
|
+
},
|
|
1351
|
+
"capture_sources": {
|
|
1352
|
+
"type": "array",
|
|
1353
|
+
"items": {
|
|
1354
|
+
"enum": [
|
|
1355
|
+
"hook",
|
|
1356
|
+
"proxy",
|
|
1357
|
+
"transcript",
|
|
1358
|
+
"sdk"
|
|
1359
|
+
]
|
|
1360
|
+
},
|
|
1361
|
+
"maxItems": 1024
|
|
1362
|
+
},
|
|
1363
|
+
"sandbox": {
|
|
1364
|
+
"enum": [
|
|
1365
|
+
"none",
|
|
1366
|
+
"unknown",
|
|
1367
|
+
"self-reported-active"
|
|
1368
|
+
]
|
|
1369
|
+
},
|
|
1370
|
+
"content_capture": {
|
|
1371
|
+
"enum": [
|
|
1372
|
+
"hashed",
|
|
1373
|
+
"full"
|
|
1374
|
+
]
|
|
1375
|
+
},
|
|
1376
|
+
"reasoning_capture": {
|
|
1377
|
+
"type": "boolean"
|
|
1378
|
+
},
|
|
1379
|
+
"signer_isolation": {
|
|
1380
|
+
"enum": [
|
|
1381
|
+
"separate-user",
|
|
1382
|
+
"same-user"
|
|
1383
|
+
]
|
|
1384
|
+
},
|
|
1385
|
+
"os_user_attested": {
|
|
1386
|
+
"type": "boolean",
|
|
1387
|
+
"description": "true when tracekitd set os_user from the socket peer's credentials rather than trusting the client."
|
|
1388
|
+
},
|
|
1389
|
+
"harness": {
|
|
1390
|
+
"type": "object",
|
|
1391
|
+
"additionalProperties": false,
|
|
1392
|
+
"description": "0.3: set only by the signer. The registered harness instance the run.start came from (pid + kernel start time), found from the kernel's view of the sender's process tree.",
|
|
1393
|
+
"required": [
|
|
1394
|
+
"name",
|
|
1395
|
+
"exe",
|
|
1396
|
+
"pid",
|
|
1397
|
+
"attested"
|
|
1398
|
+
],
|
|
1399
|
+
"properties": {
|
|
1400
|
+
"name": {
|
|
1401
|
+
"type": "string",
|
|
1402
|
+
"maxLength": 4096
|
|
1403
|
+
},
|
|
1404
|
+
"exe": {
|
|
1405
|
+
"type": "string",
|
|
1406
|
+
"maxLength": 4096
|
|
1407
|
+
},
|
|
1408
|
+
"pid": {
|
|
1409
|
+
"type": "integer"
|
|
1410
|
+
},
|
|
1411
|
+
"start_time": {
|
|
1412
|
+
"type": [
|
|
1413
|
+
"integer",
|
|
1414
|
+
"null"
|
|
1415
|
+
]
|
|
1416
|
+
},
|
|
1417
|
+
"attested": {
|
|
1418
|
+
"type": "boolean"
|
|
1419
|
+
}
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1422
|
+
}
|
|
1423
|
+
},
|
|
1424
|
+
"run_end": {
|
|
1425
|
+
"type": "object",
|
|
1426
|
+
"additionalProperties": false,
|
|
1427
|
+
"required": [
|
|
1428
|
+
"reason"
|
|
1429
|
+
],
|
|
1430
|
+
"properties": {
|
|
1431
|
+
"reason": {
|
|
1432
|
+
"type": "string",
|
|
1433
|
+
"maxLength": 4096
|
|
1434
|
+
}
|
|
1435
|
+
}
|
|
1436
|
+
},
|
|
1437
|
+
"tool_call": {
|
|
1438
|
+
"type": "object",
|
|
1439
|
+
"additionalProperties": false,
|
|
1440
|
+
"required": [
|
|
1441
|
+
"tool_use_id",
|
|
1442
|
+
"name",
|
|
1443
|
+
"input"
|
|
1444
|
+
],
|
|
1445
|
+
"properties": {
|
|
1446
|
+
"tool_use_id": {
|
|
1447
|
+
"type": "string",
|
|
1448
|
+
"maxLength": 4096
|
|
1449
|
+
},
|
|
1450
|
+
"name": {
|
|
1451
|
+
"type": "string",
|
|
1452
|
+
"maxLength": 4096
|
|
1453
|
+
},
|
|
1454
|
+
"input": {
|
|
1455
|
+
"type": "object",
|
|
1456
|
+
"additionalProperties": {
|
|
1457
|
+
"$ref": "#/$defs/content"
|
|
1458
|
+
}
|
|
1459
|
+
},
|
|
1460
|
+
"salt_id": {
|
|
1461
|
+
"$ref": "#/$defs/id",
|
|
1462
|
+
"description": "the signer's salt id for this record's commitments (salt label <type>:<salt_id>)"
|
|
1463
|
+
}
|
|
1464
|
+
}
|
|
1465
|
+
},
|
|
1466
|
+
"policy_decision": {
|
|
1467
|
+
"type": "object",
|
|
1468
|
+
"additionalProperties": false,
|
|
1469
|
+
"required": [
|
|
1470
|
+
"tool_use_id",
|
|
1471
|
+
"decision",
|
|
1472
|
+
"rule_ids"
|
|
1473
|
+
],
|
|
1474
|
+
"properties": {
|
|
1475
|
+
"tool_use_id": {
|
|
1476
|
+
"type": "string",
|
|
1477
|
+
"maxLength": 4096
|
|
1478
|
+
},
|
|
1479
|
+
"decision": {
|
|
1480
|
+
"enum": [
|
|
1481
|
+
"allow",
|
|
1482
|
+
"deny",
|
|
1483
|
+
"flag",
|
|
1484
|
+
"ask"
|
|
1485
|
+
]
|
|
1486
|
+
},
|
|
1487
|
+
"rule_ids": {
|
|
1488
|
+
"type": "array",
|
|
1489
|
+
"items": {
|
|
1490
|
+
"type": "string",
|
|
1491
|
+
"maxLength": 4096
|
|
1492
|
+
},
|
|
1493
|
+
"maxItems": 1024
|
|
1494
|
+
},
|
|
1495
|
+
"reasons": {
|
|
1496
|
+
"type": "array",
|
|
1497
|
+
"items": {
|
|
1498
|
+
"type": "string",
|
|
1499
|
+
"maxLength": 4096
|
|
1500
|
+
},
|
|
1501
|
+
"maxItems": 1024
|
|
1502
|
+
},
|
|
1503
|
+
"policy_hash": {
|
|
1504
|
+
"$ref": "#/$defs/hash",
|
|
1505
|
+
"description": "hash of the policy that produced this decision"
|
|
1506
|
+
},
|
|
1507
|
+
"policy_version": {
|
|
1508
|
+
"type": "string",
|
|
1509
|
+
"maxLength": 4096
|
|
1510
|
+
},
|
|
1511
|
+
"tool": {
|
|
1512
|
+
"type": "string",
|
|
1513
|
+
"maxLength": 256,
|
|
1514
|
+
"description": "tool name the decision is for"
|
|
1515
|
+
},
|
|
1516
|
+
"decision_id": {
|
|
1517
|
+
"$ref": "#/$defs/id",
|
|
1518
|
+
"description": "signer-assigned; `complete` consumes it once"
|
|
1519
|
+
},
|
|
1520
|
+
"args_commitment": {
|
|
1521
|
+
"type": "string",
|
|
1522
|
+
"pattern": "^hmac-sha256:[0-9a-f]{64}$",
|
|
1523
|
+
"maxLength": 76,
|
|
1524
|
+
"description": "HMAC of the signer's args digest under a per-decision salt the signer can reveal to an auditor; absent when the args failed strict parsing"
|
|
1525
|
+
},
|
|
1526
|
+
"engine": {
|
|
1527
|
+
"type": "string",
|
|
1528
|
+
"maxLength": 64,
|
|
1529
|
+
"description": "matching engine id@version"
|
|
1530
|
+
},
|
|
1531
|
+
"nonce": {
|
|
1532
|
+
"type": "string",
|
|
1533
|
+
"pattern": "^[0-9a-f]{32}$",
|
|
1534
|
+
"maxLength": 32
|
|
1535
|
+
},
|
|
1536
|
+
"expires_at": {
|
|
1537
|
+
"type": "string",
|
|
1538
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
1539
|
+
"maxLength": 27
|
|
1540
|
+
},
|
|
1541
|
+
"nondeterministic": {
|
|
1542
|
+
"type": "boolean",
|
|
1543
|
+
"description": "a fallback-engine match ran out of time and denied"
|
|
1544
|
+
},
|
|
1545
|
+
"provenance": {
|
|
1546
|
+
"type": "array",
|
|
1547
|
+
"maxItems": 16,
|
|
1548
|
+
"description": "argument values that only untrusted content brought into the run: the top-level argument, the kind of value and the record that brought it; never the value",
|
|
1549
|
+
"items": {
|
|
1550
|
+
"type": "object",
|
|
1551
|
+
"additionalProperties": false,
|
|
1552
|
+
"required": [
|
|
1553
|
+
"field",
|
|
1554
|
+
"kind",
|
|
1555
|
+
"source"
|
|
1556
|
+
],
|
|
1557
|
+
"properties": {
|
|
1558
|
+
"field": {
|
|
1559
|
+
"type": "string",
|
|
1560
|
+
"maxLength": 256
|
|
1561
|
+
},
|
|
1562
|
+
"kind": {
|
|
1563
|
+
"enum": [
|
|
1564
|
+
"email",
|
|
1565
|
+
"url",
|
|
1566
|
+
"host",
|
|
1567
|
+
"path",
|
|
1568
|
+
"digits",
|
|
1569
|
+
"string"
|
|
1570
|
+
]
|
|
1571
|
+
},
|
|
1572
|
+
"source": {
|
|
1573
|
+
"type": "object",
|
|
1574
|
+
"additionalProperties": false,
|
|
1575
|
+
"required": [
|
|
1576
|
+
"run_seq"
|
|
1577
|
+
],
|
|
1578
|
+
"properties": {
|
|
1579
|
+
"run_seq": {
|
|
1580
|
+
"type": "integer",
|
|
1581
|
+
"minimum": 0
|
|
1582
|
+
},
|
|
1583
|
+
"tool": {
|
|
1584
|
+
"type": "string",
|
|
1585
|
+
"maxLength": 256
|
|
1586
|
+
},
|
|
1587
|
+
"tool_call_id": {
|
|
1588
|
+
"$ref": "#/$defs/id"
|
|
1589
|
+
}
|
|
1590
|
+
}
|
|
1591
|
+
}
|
|
1592
|
+
}
|
|
1593
|
+
}
|
|
1594
|
+
},
|
|
1595
|
+
"provenance_state": {
|
|
1596
|
+
"enum": [
|
|
1597
|
+
"complete",
|
|
1598
|
+
"partial",
|
|
1599
|
+
"truncated",
|
|
1600
|
+
"unavailable",
|
|
1601
|
+
"timeout"
|
|
1602
|
+
],
|
|
1603
|
+
"description": "the run's provenance index: complete, partial (an untrusted tool's result came as a digest), truncated (more values than it reads), unavailable (lost in a signer restart) or timeout (this call's values took past the decision's deadline); when not complete, from: untrusted rules match whenever their pattern does"
|
|
1604
|
+
},
|
|
1605
|
+
"provenance_reason": {
|
|
1606
|
+
"type": "string",
|
|
1607
|
+
"maxLength": 256,
|
|
1608
|
+
"description": "why provenance_state is not complete"
|
|
1609
|
+
},
|
|
1610
|
+
"detect": {
|
|
1611
|
+
"type": "object",
|
|
1612
|
+
"additionalProperties": false,
|
|
1613
|
+
"required": [
|
|
1614
|
+
"sequences",
|
|
1615
|
+
"limits",
|
|
1616
|
+
"state"
|
|
1617
|
+
],
|
|
1618
|
+
"description": "format 1.2: what the policy's sequences and limits saw of this call (signer/detect.py): the step each sequence it advanced reached, the count (a sum limit: the total of the call's currency) and window start of each limit it counted, and whether the detector's state is complete or was lost in a restart (unavailable)",
|
|
1619
|
+
"properties": {
|
|
1620
|
+
"rule_ids": {
|
|
1621
|
+
"type": "array",
|
|
1622
|
+
"maxItems": 1024,
|
|
1623
|
+
"items": {
|
|
1624
|
+
"type": "string",
|
|
1625
|
+
"maxLength": 256
|
|
1626
|
+
},
|
|
1627
|
+
"description": "the rule ids of both class readings, when the client's class hint disagreed and they differ from rule_ids"
|
|
1628
|
+
},
|
|
1629
|
+
"sums": {
|
|
1630
|
+
"type": "object",
|
|
1631
|
+
"description": "per sum limit: [amount in minor units, currency] of this call",
|
|
1632
|
+
"additionalProperties": {
|
|
1633
|
+
"type": "array",
|
|
1634
|
+
"minItems": 2,
|
|
1635
|
+
"maxItems": 2,
|
|
1636
|
+
"items": {
|
|
1637
|
+
"type": [
|
|
1638
|
+
"integer",
|
|
1639
|
+
"string"
|
|
1640
|
+
],
|
|
1641
|
+
"maxLength": 16
|
|
1642
|
+
}
|
|
1643
|
+
}
|
|
1644
|
+
},
|
|
1645
|
+
"sequences": {
|
|
1646
|
+
"type": "array",
|
|
1647
|
+
"maxItems": 1024,
|
|
1648
|
+
"items": {
|
|
1649
|
+
"type": "object",
|
|
1650
|
+
"additionalProperties": false,
|
|
1651
|
+
"required": [
|
|
1652
|
+
"id",
|
|
1653
|
+
"step"
|
|
1654
|
+
],
|
|
1655
|
+
"properties": {
|
|
1656
|
+
"id": {
|
|
1657
|
+
"type": "string",
|
|
1658
|
+
"maxLength": 256
|
|
1659
|
+
},
|
|
1660
|
+
"step": {
|
|
1661
|
+
"type": "integer",
|
|
1662
|
+
"minimum": 1
|
|
1663
|
+
}
|
|
1664
|
+
}
|
|
1665
|
+
}
|
|
1666
|
+
},
|
|
1667
|
+
"limits": {
|
|
1668
|
+
"type": "array",
|
|
1669
|
+
"maxItems": 1024,
|
|
1670
|
+
"items": {
|
|
1671
|
+
"type": "object",
|
|
1672
|
+
"additionalProperties": false,
|
|
1673
|
+
"required": [
|
|
1674
|
+
"id",
|
|
1675
|
+
"count",
|
|
1676
|
+
"window_start"
|
|
1677
|
+
],
|
|
1678
|
+
"properties": {
|
|
1679
|
+
"id": {
|
|
1680
|
+
"type": "string",
|
|
1681
|
+
"maxLength": 256
|
|
1682
|
+
},
|
|
1683
|
+
"count": {
|
|
1684
|
+
"type": "integer"
|
|
1685
|
+
},
|
|
1686
|
+
"window_start": {
|
|
1687
|
+
"type": "string",
|
|
1688
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
1689
|
+
"maxLength": 27
|
|
1690
|
+
}
|
|
1691
|
+
}
|
|
1692
|
+
}
|
|
1693
|
+
},
|
|
1694
|
+
"state": {
|
|
1695
|
+
"enum": [
|
|
1696
|
+
"complete",
|
|
1697
|
+
"unavailable"
|
|
1698
|
+
]
|
|
1699
|
+
}
|
|
1700
|
+
}
|
|
1701
|
+
},
|
|
1702
|
+
"via": {
|
|
1703
|
+
"type": "string",
|
|
1704
|
+
"maxLength": 256,
|
|
1705
|
+
"description": "format 1.2: the gateway or tool executor (its identity, scheme:subject) that wrote this record for the run's client (source gateway, tier T2); the signer takes the call's later steps from it only"
|
|
1706
|
+
},
|
|
1707
|
+
"caller": {
|
|
1708
|
+
"type": "string",
|
|
1709
|
+
"maxLength": 256,
|
|
1710
|
+
"description": "format 1.2, with via: the client (scheme:subject) the gateway or tool executor decided the call for"
|
|
1711
|
+
},
|
|
1712
|
+
"incident_id": {
|
|
1713
|
+
"$ref": "#/$defs/id",
|
|
1714
|
+
"description": "format 1.2: the incident whose hold (ask, TK-HOLD) or quarantine (deny, TK-QUARANTINE) decided the call"
|
|
1715
|
+
}
|
|
1716
|
+
}
|
|
1717
|
+
},
|
|
1718
|
+
"approval": {
|
|
1719
|
+
"type": "object",
|
|
1720
|
+
"additionalProperties": false,
|
|
1721
|
+
"required": [
|
|
1722
|
+
"tool_use_id",
|
|
1723
|
+
"decision",
|
|
1724
|
+
"approver",
|
|
1725
|
+
"channel"
|
|
1726
|
+
],
|
|
1727
|
+
"properties": {
|
|
1728
|
+
"tool_use_id": {
|
|
1729
|
+
"type": "string",
|
|
1730
|
+
"maxLength": 4096
|
|
1731
|
+
},
|
|
1732
|
+
"decision": {
|
|
1733
|
+
"enum": [
|
|
1734
|
+
"approve",
|
|
1735
|
+
"reject",
|
|
1736
|
+
"timeout",
|
|
1737
|
+
"self_approval_refused"
|
|
1738
|
+
]
|
|
1739
|
+
},
|
|
1740
|
+
"approver": {
|
|
1741
|
+
"type": "string",
|
|
1742
|
+
"maxLength": 4096
|
|
1743
|
+
},
|
|
1744
|
+
"channel": {
|
|
1745
|
+
"type": "string",
|
|
1746
|
+
"maxLength": 4096
|
|
1747
|
+
},
|
|
1748
|
+
"approver_uid": {
|
|
1749
|
+
"type": [
|
|
1750
|
+
"integer",
|
|
1751
|
+
"null"
|
|
1752
|
+
]
|
|
1753
|
+
},
|
|
1754
|
+
"wait_ms": {
|
|
1755
|
+
"type": [
|
|
1756
|
+
"integer",
|
|
1757
|
+
"null"
|
|
1758
|
+
]
|
|
1759
|
+
},
|
|
1760
|
+
"same_user": {
|
|
1761
|
+
"type": [
|
|
1762
|
+
"boolean",
|
|
1763
|
+
"null"
|
|
1764
|
+
],
|
|
1765
|
+
"description": "true when the approver is the agent's own OS user (dev mode only; not trustworthy)"
|
|
1766
|
+
},
|
|
1767
|
+
"approval_id": {
|
|
1768
|
+
"$ref": "#/$defs/id"
|
|
1769
|
+
},
|
|
1770
|
+
"self_approved": {
|
|
1771
|
+
"type": "boolean",
|
|
1772
|
+
"description": "the approver is the requester (dev mode only); caps assurance at dev"
|
|
1773
|
+
},
|
|
1774
|
+
"reason": {
|
|
1775
|
+
"type": "string",
|
|
1776
|
+
"maxLength": 1024
|
|
1777
|
+
},
|
|
1778
|
+
"approver_identity": {
|
|
1779
|
+
"type": "object",
|
|
1780
|
+
"additionalProperties": false,
|
|
1781
|
+
"required": [
|
|
1782
|
+
"scheme",
|
|
1783
|
+
"subject",
|
|
1784
|
+
"attested"
|
|
1785
|
+
],
|
|
1786
|
+
"properties": {
|
|
1787
|
+
"scheme": {
|
|
1788
|
+
"type": "string",
|
|
1789
|
+
"maxLength": 32
|
|
1790
|
+
},
|
|
1791
|
+
"subject": {
|
|
1792
|
+
"type": "string",
|
|
1793
|
+
"maxLength": 256
|
|
1794
|
+
},
|
|
1795
|
+
"attested": {
|
|
1796
|
+
"type": "boolean"
|
|
1797
|
+
},
|
|
1798
|
+
"person": {
|
|
1799
|
+
"type": "string",
|
|
1800
|
+
"maxLength": 256,
|
|
1801
|
+
"description": "an OIDC identity's stable person id"
|
|
1802
|
+
}
|
|
1803
|
+
},
|
|
1804
|
+
"description": "the approver as the signer's transport established it"
|
|
1805
|
+
},
|
|
1806
|
+
"break_glass": {
|
|
1807
|
+
"type": "boolean",
|
|
1808
|
+
"description": "answered under the break-glass role, which may answer any approval"
|
|
1809
|
+
},
|
|
1810
|
+
"via": {
|
|
1811
|
+
"type": "object",
|
|
1812
|
+
"additionalProperties": false,
|
|
1813
|
+
"required": [
|
|
1814
|
+
"scheme",
|
|
1815
|
+
"subject",
|
|
1816
|
+
"attested"
|
|
1817
|
+
],
|
|
1818
|
+
"properties": {
|
|
1819
|
+
"scheme": {
|
|
1820
|
+
"type": "string",
|
|
1821
|
+
"maxLength": 32
|
|
1822
|
+
},
|
|
1823
|
+
"subject": {
|
|
1824
|
+
"type": "string",
|
|
1825
|
+
"maxLength": 256
|
|
1826
|
+
},
|
|
1827
|
+
"attested": {
|
|
1828
|
+
"type": "boolean"
|
|
1829
|
+
},
|
|
1830
|
+
"person": {
|
|
1831
|
+
"type": "string",
|
|
1832
|
+
"maxLength": 256,
|
|
1833
|
+
"description": "an OIDC identity's stable person id"
|
|
1834
|
+
}
|
|
1835
|
+
},
|
|
1836
|
+
"description": "the bridge (Slack, or the viewer's approval pages) that answered for the approver, as the signer's transport established it"
|
|
1837
|
+
},
|
|
1838
|
+
"groups": {
|
|
1839
|
+
"type": "array",
|
|
1840
|
+
"maxItems": 32,
|
|
1841
|
+
"items": {
|
|
1842
|
+
"type": "string",
|
|
1843
|
+
"maxLength": 64
|
|
1844
|
+
},
|
|
1845
|
+
"description": "user groups the bridge found the approver in"
|
|
1846
|
+
},
|
|
1847
|
+
"person": {
|
|
1848
|
+
"type": "string",
|
|
1849
|
+
"maxLength": 4096,
|
|
1850
|
+
"description": "the person id the signer's config maps the approver to"
|
|
1851
|
+
},
|
|
1852
|
+
"passkey": {
|
|
1853
|
+
"type": "object",
|
|
1854
|
+
"additionalProperties": false,
|
|
1855
|
+
"required": [
|
|
1856
|
+
"credential_id",
|
|
1857
|
+
"user_verified"
|
|
1858
|
+
],
|
|
1859
|
+
"properties": {
|
|
1860
|
+
"credential_id": {
|
|
1861
|
+
"type": "string",
|
|
1862
|
+
"maxLength": 4096
|
|
1863
|
+
},
|
|
1864
|
+
"user_verified": {
|
|
1865
|
+
"const": true
|
|
1866
|
+
}
|
|
1867
|
+
},
|
|
1868
|
+
"description": "the WebAuthn credential whose assertion over the approval's binding digest the signer verified"
|
|
1869
|
+
},
|
|
1870
|
+
"approver_kind": {
|
|
1871
|
+
"const": "agent",
|
|
1872
|
+
"description": "format 1.2: an agent approver (approvals.agents) answered; absent for people"
|
|
1873
|
+
},
|
|
1874
|
+
"asserted": {
|
|
1875
|
+
"type": "object",
|
|
1876
|
+
"additionalProperties": false,
|
|
1877
|
+
"required": [
|
|
1878
|
+
"attested"
|
|
1879
|
+
],
|
|
1880
|
+
"properties": {
|
|
1881
|
+
"model": {
|
|
1882
|
+
"type": "string",
|
|
1883
|
+
"maxLength": 128
|
|
1884
|
+
},
|
|
1885
|
+
"version": {
|
|
1886
|
+
"type": "string",
|
|
1887
|
+
"maxLength": 64
|
|
1888
|
+
},
|
|
1889
|
+
"prompt_hash": {
|
|
1890
|
+
"$ref": "#/$defs/hash"
|
|
1891
|
+
},
|
|
1892
|
+
"attested": {
|
|
1893
|
+
"const": false
|
|
1894
|
+
}
|
|
1895
|
+
},
|
|
1896
|
+
"description": "format 1.2: what the agent approver says it runs; its own word, never checked"
|
|
1897
|
+
},
|
|
1898
|
+
"spent": {
|
|
1899
|
+
"type": "object",
|
|
1900
|
+
"additionalProperties": {
|
|
1901
|
+
"type": "integer",
|
|
1902
|
+
"minimum": -9007199254740991,
|
|
1903
|
+
"maximum": 9007199254740991
|
|
1904
|
+
},
|
|
1905
|
+
"description": "format 1.2: rule id -> the argument value this agent approval takes from the rule's sum budget"
|
|
1906
|
+
},
|
|
1907
|
+
"not_before": {
|
|
1908
|
+
"type": "string",
|
|
1909
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
1910
|
+
"maxLength": 4096,
|
|
1911
|
+
"description": "format 1.2: an agent's approval is consumed from then on (after the rule's veto_s), so people may revoke it first"
|
|
1912
|
+
},
|
|
1913
|
+
"consume_by": {
|
|
1914
|
+
"type": "string",
|
|
1915
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
1916
|
+
"maxLength": 4096,
|
|
1917
|
+
"description": "format 1.2: an agent's approval is consumed before then (approvals.agent_consume_s), or never"
|
|
1918
|
+
},
|
|
1919
|
+
"incident_id": {
|
|
1920
|
+
"$ref": "#/$defs/id",
|
|
1921
|
+
"description": "format 1.2: the answer to a call held by this incident, by the person `person`"
|
|
1922
|
+
}
|
|
1923
|
+
}
|
|
1924
|
+
},
|
|
1925
|
+
"tool_result": {
|
|
1926
|
+
"type": "object",
|
|
1927
|
+
"additionalProperties": false,
|
|
1928
|
+
"required": [
|
|
1929
|
+
"tool_use_id",
|
|
1930
|
+
"ok",
|
|
1931
|
+
"output"
|
|
1932
|
+
],
|
|
1933
|
+
"properties": {
|
|
1934
|
+
"tool_use_id": {
|
|
1935
|
+
"type": "string",
|
|
1936
|
+
"maxLength": 4096
|
|
1937
|
+
},
|
|
1938
|
+
"ok": {
|
|
1939
|
+
"type": "boolean"
|
|
1940
|
+
},
|
|
1941
|
+
"output": {
|
|
1942
|
+
"$ref": "#/$defs/content"
|
|
1943
|
+
},
|
|
1944
|
+
"duration_ms": {
|
|
1945
|
+
"type": [
|
|
1946
|
+
"integer",
|
|
1947
|
+
"null"
|
|
1948
|
+
]
|
|
1949
|
+
},
|
|
1950
|
+
"decision_id": {
|
|
1951
|
+
"$ref": "#/$defs/id",
|
|
1952
|
+
"description": "the policy.decision this result consumes"
|
|
1953
|
+
},
|
|
1954
|
+
"redaction": {
|
|
1955
|
+
"$ref": "#/$defs/redaction"
|
|
1956
|
+
},
|
|
1957
|
+
"salt_id": {
|
|
1958
|
+
"$ref": "#/$defs/id",
|
|
1959
|
+
"description": "the signer's salt id for this record's commitments (salt label <type>:<salt_id>)"
|
|
1960
|
+
},
|
|
1961
|
+
"via": {
|
|
1962
|
+
"type": "string",
|
|
1963
|
+
"maxLength": 256,
|
|
1964
|
+
"description": "format 1.2: the gateway or tool executor (its identity, scheme:subject) that wrote this record for the run's client (source gateway, tier T2); the signer takes the call's later steps from it only"
|
|
1965
|
+
}
|
|
1966
|
+
}
|
|
1967
|
+
},
|
|
1968
|
+
"error": {
|
|
1969
|
+
"type": "object",
|
|
1970
|
+
"required": [
|
|
1971
|
+
"message"
|
|
1972
|
+
],
|
|
1973
|
+
"properties": {
|
|
1974
|
+
"message": {
|
|
1975
|
+
"type": "string",
|
|
1976
|
+
"maxLength": 4096
|
|
1977
|
+
}
|
|
1978
|
+
}
|
|
1979
|
+
},
|
|
1980
|
+
"review": {
|
|
1981
|
+
"type": "object",
|
|
1982
|
+
"required": [
|
|
1983
|
+
"reviewer",
|
|
1984
|
+
"verdict"
|
|
1985
|
+
],
|
|
1986
|
+
"properties": {
|
|
1987
|
+
"reviewer": {
|
|
1988
|
+
"type": "string",
|
|
1989
|
+
"maxLength": 4096
|
|
1990
|
+
},
|
|
1991
|
+
"verdict": {
|
|
1992
|
+
"type": "object"
|
|
1993
|
+
}
|
|
1994
|
+
}
|
|
1995
|
+
},
|
|
1996
|
+
"trace_tamper": {
|
|
1997
|
+
"type": "object",
|
|
1998
|
+
"additionalProperties": false,
|
|
1999
|
+
"required": [
|
|
2000
|
+
"path",
|
|
2001
|
+
"before",
|
|
2002
|
+
"after"
|
|
2003
|
+
],
|
|
2004
|
+
"properties": {
|
|
2005
|
+
"tenant_level": {
|
|
2006
|
+
"type": "boolean"
|
|
2007
|
+
},
|
|
2008
|
+
"path": {
|
|
2009
|
+
"type": "string",
|
|
2010
|
+
"maxLength": 4096
|
|
2011
|
+
},
|
|
2012
|
+
"before": {
|
|
2013
|
+
"type": "object",
|
|
2014
|
+
"properties": {
|
|
2015
|
+
"hash": {
|
|
2016
|
+
"$ref": "#/$defs/hash"
|
|
2017
|
+
},
|
|
2018
|
+
"length": {
|
|
2019
|
+
"type": "integer"
|
|
2020
|
+
}
|
|
2021
|
+
}
|
|
2022
|
+
},
|
|
2023
|
+
"after": {
|
|
2024
|
+
"type": "object",
|
|
2025
|
+
"properties": {
|
|
2026
|
+
"hash": {
|
|
2027
|
+
"type": [
|
|
2028
|
+
"string",
|
|
2029
|
+
"null"
|
|
2030
|
+
],
|
|
2031
|
+
"maxLength": 4096
|
|
2032
|
+
},
|
|
2033
|
+
"length": {
|
|
2034
|
+
"type": [
|
|
2035
|
+
"integer",
|
|
2036
|
+
"null"
|
|
2037
|
+
]
|
|
2038
|
+
}
|
|
2039
|
+
}
|
|
2040
|
+
},
|
|
2041
|
+
"kind": {
|
|
2042
|
+
"enum": [
|
|
2043
|
+
"deleted",
|
|
2044
|
+
"truncated",
|
|
2045
|
+
"edited",
|
|
2046
|
+
"prefix_unverifiable",
|
|
2047
|
+
"rollback"
|
|
2048
|
+
]
|
|
2049
|
+
}
|
|
2050
|
+
}
|
|
2051
|
+
},
|
|
2052
|
+
"capture_gap": {
|
|
2053
|
+
"type": "object",
|
|
2054
|
+
"additionalProperties": false,
|
|
2055
|
+
"required": [
|
|
2056
|
+
"reason"
|
|
2057
|
+
],
|
|
2058
|
+
"properties": {
|
|
2059
|
+
"tenant_level": {
|
|
2060
|
+
"type": "boolean"
|
|
2061
|
+
},
|
|
2062
|
+
"reason": {
|
|
2063
|
+
"type": "string",
|
|
2064
|
+
"maxLength": 4096
|
|
2065
|
+
},
|
|
2066
|
+
"from_ts": {
|
|
2067
|
+
"type": [
|
|
2068
|
+
"string",
|
|
2069
|
+
"null"
|
|
2070
|
+
],
|
|
2071
|
+
"maxLength": 4096
|
|
2072
|
+
},
|
|
2073
|
+
"to_ts": {
|
|
2074
|
+
"type": [
|
|
2075
|
+
"string",
|
|
2076
|
+
"null"
|
|
2077
|
+
],
|
|
2078
|
+
"maxLength": 4096
|
|
2079
|
+
},
|
|
2080
|
+
"missed_events": {
|
|
2081
|
+
"type": [
|
|
2082
|
+
"integer",
|
|
2083
|
+
"null"
|
|
2084
|
+
]
|
|
2085
|
+
},
|
|
2086
|
+
"kind": {
|
|
2087
|
+
"enum": [
|
|
2088
|
+
"signer_unavailable",
|
|
2089
|
+
"client_counter_gap",
|
|
2090
|
+
"retry_conflict",
|
|
2091
|
+
"run_abandoned",
|
|
2092
|
+
"witness_late",
|
|
2093
|
+
"witness_failed",
|
|
2094
|
+
"degraded_unanchored",
|
|
2095
|
+
"format_upgrade",
|
|
2096
|
+
"policy_timeout",
|
|
2097
|
+
"decision_flip",
|
|
2098
|
+
"class_mismatch",
|
|
2099
|
+
"args_coerced",
|
|
2100
|
+
"reconcile.hook_missing",
|
|
2101
|
+
"reconcile.fabricated",
|
|
2102
|
+
"reconcile.args_mismatch",
|
|
2103
|
+
"reconcile.result_without_call",
|
|
2104
|
+
"reconcile.unexplained_effect",
|
|
2105
|
+
"state_tamper",
|
|
2106
|
+
"tailer_lost",
|
|
2107
|
+
"rollback",
|
|
2108
|
+
"clock_skew",
|
|
2109
|
+
"key_retired",
|
|
2110
|
+
"key_revoked",
|
|
2111
|
+
"log_closed",
|
|
2112
|
+
"quota_refused",
|
|
2113
|
+
"identity_refused",
|
|
2114
|
+
"approval_expired",
|
|
2115
|
+
"executed_against_policy",
|
|
2116
|
+
"decision_mismatch",
|
|
2117
|
+
"decided_not_completed",
|
|
2118
|
+
"late_activity",
|
|
2119
|
+
"concurrent_run",
|
|
2120
|
+
"tailer_redelegated",
|
|
2121
|
+
"reask_after_reject",
|
|
2122
|
+
"held_call_unresolved",
|
|
2123
|
+
"observer_lost",
|
|
2124
|
+
"effect_outside_run"
|
|
2125
|
+
],
|
|
2126
|
+
"description": "Gap and tamper kinds (signer-written only)."
|
|
2127
|
+
},
|
|
2128
|
+
"run_id": {
|
|
2129
|
+
"$ref": "#/$defs/id",
|
|
2130
|
+
"description": "format 1.2: the other run the gap is about (late_activity: the final run that was written to; concurrent_run: the open run this one overlaps; client_counter_gap in a tenant's signer run: the final run whose stream it is; effect_outside_run: the run the client named, its token valid or not, or the effect was attributed to)"
|
|
2131
|
+
},
|
|
2132
|
+
"tool_use_id": {
|
|
2133
|
+
"type": [
|
|
2134
|
+
"string",
|
|
2135
|
+
"null"
|
|
2136
|
+
],
|
|
2137
|
+
"maxLength": 4096
|
|
2138
|
+
}
|
|
2139
|
+
}
|
|
2140
|
+
},
|
|
2141
|
+
"checkpoint": {
|
|
2142
|
+
"type": "object",
|
|
2143
|
+
"additionalProperties": false,
|
|
2144
|
+
"required": [
|
|
2145
|
+
"head_seq",
|
|
2146
|
+
"head_hash",
|
|
2147
|
+
"kid",
|
|
2148
|
+
"witnesses"
|
|
2149
|
+
],
|
|
2150
|
+
"properties": {
|
|
2151
|
+
"head_seq": {
|
|
2152
|
+
"type": "integer"
|
|
2153
|
+
},
|
|
2154
|
+
"head_hash": {
|
|
2155
|
+
"type": "string",
|
|
2156
|
+
"pattern": "^[0-9a-f]{64}$",
|
|
2157
|
+
"maxLength": 4096
|
|
2158
|
+
},
|
|
2159
|
+
"kid": {
|
|
2160
|
+
"type": "string",
|
|
2161
|
+
"maxLength": 4096
|
|
2162
|
+
},
|
|
2163
|
+
"witnesses": {
|
|
2164
|
+
"type": "array",
|
|
2165
|
+
"items": {
|
|
2166
|
+
"type": "string",
|
|
2167
|
+
"maxLength": 4096
|
|
2168
|
+
},
|
|
2169
|
+
"maxItems": 1024
|
|
2170
|
+
}
|
|
2171
|
+
}
|
|
2172
|
+
},
|
|
2173
|
+
"user_prompt": {
|
|
2174
|
+
"type": "object",
|
|
2175
|
+
"additionalProperties": false,
|
|
2176
|
+
"required": [
|
|
2177
|
+
"content"
|
|
2178
|
+
],
|
|
2179
|
+
"properties": {
|
|
2180
|
+
"content": {
|
|
2181
|
+
"$ref": "#/$defs/content"
|
|
2182
|
+
}
|
|
2183
|
+
}
|
|
2184
|
+
},
|
|
2185
|
+
"model_message": {
|
|
2186
|
+
"type": "object",
|
|
2187
|
+
"additionalProperties": false,
|
|
2188
|
+
"required": [
|
|
2189
|
+
"kind",
|
|
2190
|
+
"content"
|
|
2191
|
+
],
|
|
2192
|
+
"description": "Self-reported model output read from the harness transcript. Opt-in, off by default, lower trust.",
|
|
2193
|
+
"properties": {
|
|
2194
|
+
"kind": {
|
|
2195
|
+
"enum": [
|
|
2196
|
+
"text",
|
|
2197
|
+
"thinking",
|
|
2198
|
+
"thinking_withheld"
|
|
2199
|
+
]
|
|
2200
|
+
},
|
|
2201
|
+
"message_id": {
|
|
2202
|
+
"type": [
|
|
2203
|
+
"string",
|
|
2204
|
+
"null"
|
|
2205
|
+
],
|
|
2206
|
+
"maxLength": 4096
|
|
2207
|
+
},
|
|
2208
|
+
"content": {
|
|
2209
|
+
"$ref": "#/$defs/content"
|
|
2210
|
+
}
|
|
2211
|
+
}
|
|
2212
|
+
},
|
|
2213
|
+
"model_exchange": {
|
|
2214
|
+
"type": "object",
|
|
2215
|
+
"additionalProperties": false,
|
|
2216
|
+
"required": [
|
|
2217
|
+
"exchange_id",
|
|
2218
|
+
"phase",
|
|
2219
|
+
"streamed"
|
|
2220
|
+
],
|
|
2221
|
+
"description": "C3: one model API request/response recorded by the proxy (source=proxy) before the request was forwarded and when the response completed.",
|
|
2222
|
+
"properties": {
|
|
2223
|
+
"salt_id": {
|
|
2224
|
+
"$ref": "#/$defs/id",
|
|
2225
|
+
"description": "the signer's salt id for this record's commitments (salt label <type>:<salt_id>); absent on records written before salt_id existed"
|
|
2226
|
+
},
|
|
2227
|
+
"exchange_id": {
|
|
2228
|
+
"type": "string",
|
|
2229
|
+
"maxLength": 4096
|
|
2230
|
+
},
|
|
2231
|
+
"phase": {
|
|
2232
|
+
"enum": [
|
|
2233
|
+
"request",
|
|
2234
|
+
"response"
|
|
2235
|
+
]
|
|
2236
|
+
},
|
|
2237
|
+
"model": {
|
|
2238
|
+
"type": [
|
|
2239
|
+
"string",
|
|
2240
|
+
"null"
|
|
2241
|
+
],
|
|
2242
|
+
"maxLength": 4096
|
|
2243
|
+
},
|
|
2244
|
+
"request": {
|
|
2245
|
+
"$ref": "#/$defs/content"
|
|
2246
|
+
},
|
|
2247
|
+
"response": {
|
|
2248
|
+
"$ref": "#/$defs/content"
|
|
2249
|
+
},
|
|
2250
|
+
"status": {
|
|
2251
|
+
"type": [
|
|
2252
|
+
"integer",
|
|
2253
|
+
"null"
|
|
2254
|
+
]
|
|
2255
|
+
},
|
|
2256
|
+
"streamed": {
|
|
2257
|
+
"type": "boolean"
|
|
2258
|
+
},
|
|
2259
|
+
"duration_ms": {
|
|
2260
|
+
"type": [
|
|
2261
|
+
"integer",
|
|
2262
|
+
"null"
|
|
2263
|
+
]
|
|
2264
|
+
},
|
|
2265
|
+
"first_byte_ms": {
|
|
2266
|
+
"type": [
|
|
2267
|
+
"integer",
|
|
2268
|
+
"null"
|
|
2269
|
+
]
|
|
2270
|
+
},
|
|
2271
|
+
"added_latency_ms": {
|
|
2272
|
+
"type": [
|
|
2273
|
+
"number",
|
|
2274
|
+
"null"
|
|
2275
|
+
]
|
|
2276
|
+
},
|
|
2277
|
+
"tool_uses": {
|
|
2278
|
+
"type": "array",
|
|
2279
|
+
"items": {
|
|
2280
|
+
"type": "object",
|
|
2281
|
+
"additionalProperties": false,
|
|
2282
|
+
"required": [
|
|
2283
|
+
"id",
|
|
2284
|
+
"name"
|
|
2285
|
+
],
|
|
2286
|
+
"properties": {
|
|
2287
|
+
"id": {
|
|
2288
|
+
"type": "string",
|
|
2289
|
+
"maxLength": 4096
|
|
2290
|
+
},
|
|
2291
|
+
"name": {
|
|
2292
|
+
"type": "string",
|
|
2293
|
+
"maxLength": 4096
|
|
2294
|
+
},
|
|
2295
|
+
"executed_by": {
|
|
2296
|
+
"enum": [
|
|
2297
|
+
"client",
|
|
2298
|
+
"provider"
|
|
2299
|
+
]
|
|
2300
|
+
},
|
|
2301
|
+
"args_source": {
|
|
2302
|
+
"enum": [
|
|
2303
|
+
"raw",
|
|
2304
|
+
"parsed",
|
|
2305
|
+
"coerced"
|
|
2306
|
+
]
|
|
2307
|
+
},
|
|
2308
|
+
"args_commitment": {
|
|
2309
|
+
"type": "string",
|
|
2310
|
+
"pattern": "^hmac-sha256:[0-9a-f]{64}$",
|
|
2311
|
+
"maxLength": 76
|
|
2312
|
+
},
|
|
2313
|
+
"args_unparseable": {
|
|
2314
|
+
"const": true,
|
|
2315
|
+
"description": "the raw arguments string failed strict parsing"
|
|
2316
|
+
},
|
|
2317
|
+
"id_synthetic": {
|
|
2318
|
+
"const": true,
|
|
2319
|
+
"description": "the provider gave no id; the reporting client made this one"
|
|
2320
|
+
}
|
|
2321
|
+
}
|
|
2322
|
+
},
|
|
2323
|
+
"maxItems": 1024
|
|
2324
|
+
},
|
|
2325
|
+
"tool_results_sent": {
|
|
2326
|
+
"type": "array",
|
|
2327
|
+
"items": {
|
|
2328
|
+
"type": "string",
|
|
2329
|
+
"maxLength": 4096
|
|
2330
|
+
},
|
|
2331
|
+
"description": "tool_use ids whose results the harness sent back in this request",
|
|
2332
|
+
"maxItems": 1024
|
|
2333
|
+
},
|
|
2334
|
+
"stop_reason": {
|
|
2335
|
+
"type": [
|
|
2336
|
+
"string",
|
|
2337
|
+
"null"
|
|
2338
|
+
],
|
|
2339
|
+
"maxLength": 4096
|
|
2340
|
+
},
|
|
2341
|
+
"upstream": {
|
|
2342
|
+
"type": "string",
|
|
2343
|
+
"maxLength": 4096
|
|
2344
|
+
},
|
|
2345
|
+
"error": {
|
|
2346
|
+
"type": [
|
|
2347
|
+
"string",
|
|
2348
|
+
"null"
|
|
2349
|
+
],
|
|
2350
|
+
"maxLength": 4096
|
|
2351
|
+
},
|
|
2352
|
+
"attribution": {
|
|
2353
|
+
"enum": [
|
|
2354
|
+
"metadata",
|
|
2355
|
+
"tool_use_id",
|
|
2356
|
+
"none"
|
|
2357
|
+
]
|
|
2358
|
+
},
|
|
2359
|
+
"usage": {
|
|
2360
|
+
"type": "object",
|
|
2361
|
+
"additionalProperties": false,
|
|
2362
|
+
"required": [
|
|
2363
|
+
"input_tokens",
|
|
2364
|
+
"output_tokens"
|
|
2365
|
+
],
|
|
2366
|
+
"description": "Token usage on the response (optional). input_tokens excludes cache reads; reasoning_tokens is part of output_tokens.",
|
|
2367
|
+
"properties": {
|
|
2368
|
+
"input_tokens": {
|
|
2369
|
+
"type": "integer",
|
|
2370
|
+
"minimum": 0
|
|
2371
|
+
},
|
|
2372
|
+
"output_tokens": {
|
|
2373
|
+
"type": "integer",
|
|
2374
|
+
"minimum": 0
|
|
2375
|
+
},
|
|
2376
|
+
"cache_read_tokens": {
|
|
2377
|
+
"type": [
|
|
2378
|
+
"integer",
|
|
2379
|
+
"null"
|
|
2380
|
+
],
|
|
2381
|
+
"minimum": 0
|
|
2382
|
+
},
|
|
2383
|
+
"cache_write_tokens": {
|
|
2384
|
+
"type": [
|
|
2385
|
+
"integer",
|
|
2386
|
+
"null"
|
|
2387
|
+
],
|
|
2388
|
+
"minimum": 0
|
|
2389
|
+
},
|
|
2390
|
+
"reasoning_tokens": {
|
|
2391
|
+
"type": [
|
|
2392
|
+
"integer",
|
|
2393
|
+
"null"
|
|
2394
|
+
],
|
|
2395
|
+
"minimum": 0
|
|
2396
|
+
}
|
|
2397
|
+
}
|
|
2398
|
+
},
|
|
2399
|
+
"content_digest": {
|
|
2400
|
+
"$ref": "#/$defs/commitment"
|
|
2401
|
+
}
|
|
2402
|
+
}
|
|
2403
|
+
},
|
|
2404
|
+
"id": {
|
|
2405
|
+
"type": "string",
|
|
2406
|
+
"minLength": 1,
|
|
2407
|
+
"maxLength": 128,
|
|
2408
|
+
"pattern": "^[A-Za-z0-9._:-]+$"
|
|
2409
|
+
},
|
|
2410
|
+
"run_registered": {
|
|
2411
|
+
"type": "object",
|
|
2412
|
+
"additionalProperties": false,
|
|
2413
|
+
"required": [
|
|
2414
|
+
"agent",
|
|
2415
|
+
"identity"
|
|
2416
|
+
],
|
|
2417
|
+
"properties": {
|
|
2418
|
+
"agent": {
|
|
2419
|
+
"type": "object",
|
|
2420
|
+
"additionalProperties": false,
|
|
2421
|
+
"required": [
|
|
2422
|
+
"name"
|
|
2423
|
+
],
|
|
2424
|
+
"properties": {
|
|
2425
|
+
"name": {
|
|
2426
|
+
"type": "string",
|
|
2427
|
+
"minLength": 1,
|
|
2428
|
+
"maxLength": 128
|
|
2429
|
+
},
|
|
2430
|
+
"version": {
|
|
2431
|
+
"type": "string",
|
|
2432
|
+
"maxLength": 64
|
|
2433
|
+
}
|
|
2434
|
+
}
|
|
2435
|
+
},
|
|
2436
|
+
"identity": {
|
|
2437
|
+
"type": "object",
|
|
2438
|
+
"additionalProperties": false,
|
|
2439
|
+
"required": [
|
|
2440
|
+
"scheme",
|
|
2441
|
+
"subject",
|
|
2442
|
+
"attested"
|
|
2443
|
+
],
|
|
2444
|
+
"properties": {
|
|
2445
|
+
"scheme": {
|
|
2446
|
+
"enum": [
|
|
2447
|
+
"uid",
|
|
2448
|
+
"harness",
|
|
2449
|
+
"token",
|
|
2450
|
+
"k8s_sa",
|
|
2451
|
+
"mtls",
|
|
2452
|
+
"oidc"
|
|
2453
|
+
]
|
|
2454
|
+
},
|
|
2455
|
+
"subject": {
|
|
2456
|
+
"type": "string",
|
|
2457
|
+
"maxLength": 256
|
|
2458
|
+
},
|
|
2459
|
+
"attested": {
|
|
2460
|
+
"type": "boolean"
|
|
2461
|
+
},
|
|
2462
|
+
"person": {
|
|
2463
|
+
"type": "string",
|
|
2464
|
+
"maxLength": 256,
|
|
2465
|
+
"description": "an OIDC identity's stable person id"
|
|
2466
|
+
}
|
|
2467
|
+
}
|
|
2468
|
+
},
|
|
2469
|
+
"signer_isolation": {
|
|
2470
|
+
"enum": [
|
|
2471
|
+
"same-user",
|
|
2472
|
+
"separate-user",
|
|
2473
|
+
"remote",
|
|
2474
|
+
"unknown"
|
|
2475
|
+
],
|
|
2476
|
+
"description": "measured by the signer from the caller's identity, never taken from the client"
|
|
2477
|
+
},
|
|
2478
|
+
"harness": {
|
|
2479
|
+
"type": "object",
|
|
2480
|
+
"additionalProperties": false,
|
|
2481
|
+
"required": [
|
|
2482
|
+
"name",
|
|
2483
|
+
"exe",
|
|
2484
|
+
"pid",
|
|
2485
|
+
"start_time",
|
|
2486
|
+
"attested"
|
|
2487
|
+
],
|
|
2488
|
+
"properties": {
|
|
2489
|
+
"name": {
|
|
2490
|
+
"type": "string",
|
|
2491
|
+
"maxLength": 64
|
|
2492
|
+
},
|
|
2493
|
+
"exe": {
|
|
2494
|
+
"type": "string",
|
|
2495
|
+
"maxLength": 4096
|
|
2496
|
+
},
|
|
2497
|
+
"pid": {
|
|
2498
|
+
"type": "integer",
|
|
2499
|
+
"minimum": 1
|
|
2500
|
+
},
|
|
2501
|
+
"start_time": {
|
|
2502
|
+
"type": [
|
|
2503
|
+
"integer",
|
|
2504
|
+
"null"
|
|
2505
|
+
]
|
|
2506
|
+
},
|
|
2507
|
+
"attested": {
|
|
2508
|
+
"const": true
|
|
2509
|
+
}
|
|
2510
|
+
},
|
|
2511
|
+
"description": "the registered harness process the caller descends from, found by the signer through the harness helper"
|
|
2512
|
+
},
|
|
2513
|
+
"fail_modes": {
|
|
2514
|
+
"type": "object",
|
|
2515
|
+
"additionalProperties": {
|
|
2516
|
+
"enum": [
|
|
2517
|
+
"open",
|
|
2518
|
+
"closed"
|
|
2519
|
+
]
|
|
2520
|
+
},
|
|
2521
|
+
"description": "tool class -> fail mode, from the signer's config, never from the client"
|
|
2522
|
+
},
|
|
2523
|
+
"analyzes": {
|
|
2524
|
+
"$ref": "#/$defs/id",
|
|
2525
|
+
"description": "a findings run: the run_id of the run of the same tenant it analyses"
|
|
2526
|
+
},
|
|
2527
|
+
"replay_of": {
|
|
2528
|
+
"$ref": "#/$defs/id",
|
|
2529
|
+
"description": "a tracekit why replay run: the run_id of the run of the same tenant it replays"
|
|
2530
|
+
},
|
|
2531
|
+
"investigation": {
|
|
2532
|
+
"$ref": "#/$defs/id",
|
|
2533
|
+
"description": "with replay_of: the investigation the replay run is an arm of"
|
|
2534
|
+
},
|
|
2535
|
+
"parent_run": {
|
|
2536
|
+
"$ref": "#/$defs/id",
|
|
2537
|
+
"description": "format 1.2: the run of the same tenant that started this one, whose run token the caller presented"
|
|
2538
|
+
},
|
|
2539
|
+
"session": {
|
|
2540
|
+
"$ref": "#/$defs/id",
|
|
2541
|
+
"description": "with parent_run: the root run of the chain of parents (a run without parent_run is its own session)"
|
|
2542
|
+
},
|
|
2543
|
+
"fidelity": {
|
|
2544
|
+
"enum": [
|
|
2545
|
+
"none"
|
|
2546
|
+
],
|
|
2547
|
+
"description": "an imported run (source import): what its records say about the calls beyond their receipt"
|
|
2548
|
+
},
|
|
2549
|
+
"posture": {
|
|
2550
|
+
"type": "object",
|
|
2551
|
+
"additionalProperties": false,
|
|
2552
|
+
"required": [
|
|
2553
|
+
"network",
|
|
2554
|
+
"tool_calls",
|
|
2555
|
+
"gateway_mandatory",
|
|
2556
|
+
"attested"
|
|
2557
|
+
],
|
|
2558
|
+
"description": "format 1.2: the deployment's posture as the operator asserts it in signer.yaml: whether the agent's network is enforced through the egress proxy, whether it acts only through the executor and the MCP gateway, and whether the LLM gateway is its only way to its model (gateway_mandatory); never attested",
|
|
2559
|
+
"properties": {
|
|
2560
|
+
"network": {
|
|
2561
|
+
"enum": [
|
|
2562
|
+
"enforced",
|
|
2563
|
+
"open"
|
|
2564
|
+
]
|
|
2565
|
+
},
|
|
2566
|
+
"tool_calls": {
|
|
2567
|
+
"enum": [
|
|
2568
|
+
"enforced",
|
|
2569
|
+
"open"
|
|
2570
|
+
]
|
|
2571
|
+
},
|
|
2572
|
+
"gateway_mandatory": {
|
|
2573
|
+
"type": "boolean"
|
|
2574
|
+
},
|
|
2575
|
+
"attested": {
|
|
2576
|
+
"const": false
|
|
2577
|
+
}
|
|
2578
|
+
}
|
|
2579
|
+
}
|
|
2580
|
+
}
|
|
2581
|
+
},
|
|
2582
|
+
"run_closing": {
|
|
2583
|
+
"type": "object",
|
|
2584
|
+
"additionalProperties": false,
|
|
2585
|
+
"required": [
|
|
2586
|
+
"reason"
|
|
2587
|
+
],
|
|
2588
|
+
"properties": {
|
|
2589
|
+
"reason": {
|
|
2590
|
+
"enum": [
|
|
2591
|
+
"close_run",
|
|
2592
|
+
"idle_timeout",
|
|
2593
|
+
"quarantine"
|
|
2594
|
+
]
|
|
2595
|
+
}
|
|
2596
|
+
}
|
|
2597
|
+
},
|
|
2598
|
+
"run_child": {
|
|
2599
|
+
"type": "object",
|
|
2600
|
+
"additionalProperties": false,
|
|
2601
|
+
"required": [
|
|
2602
|
+
"run_id"
|
|
2603
|
+
],
|
|
2604
|
+
"description": "format 1.2: a run bound to the same harness process registered with this run as its parent_run (signer-written)",
|
|
2605
|
+
"properties": {
|
|
2606
|
+
"run_id": {
|
|
2607
|
+
"$ref": "#/$defs/id"
|
|
2608
|
+
}
|
|
2609
|
+
}
|
|
2610
|
+
},
|
|
2611
|
+
"run_final": {
|
|
2612
|
+
"type": "object",
|
|
2613
|
+
"additionalProperties": false,
|
|
2614
|
+
"required": [
|
|
2615
|
+
"head_run_seq",
|
|
2616
|
+
"head_hash"
|
|
2617
|
+
],
|
|
2618
|
+
"properties": {
|
|
2619
|
+
"head_run_seq": {
|
|
2620
|
+
"type": "integer",
|
|
2621
|
+
"minimum": 0,
|
|
2622
|
+
"maximum": 9007199254740991
|
|
2623
|
+
},
|
|
2624
|
+
"head_hash": {
|
|
2625
|
+
"$ref": "#/$defs/hash"
|
|
2626
|
+
},
|
|
2627
|
+
"provider_executed": {
|
|
2628
|
+
"type": "integer",
|
|
2629
|
+
"minimum": 1,
|
|
2630
|
+
"maximum": 9007199254740991,
|
|
2631
|
+
"description": "format 1.2: tool uses the model's provider ran itself (executed_by provider), which no decide covers"
|
|
2632
|
+
},
|
|
2633
|
+
"coverage": {
|
|
2634
|
+
"type": "object",
|
|
2635
|
+
"additionalProperties": false,
|
|
2636
|
+
"required": [
|
|
2637
|
+
"layers",
|
|
2638
|
+
"reconciled",
|
|
2639
|
+
"unreconciled"
|
|
2640
|
+
],
|
|
2641
|
+
"description": "the capture layers that reported for the run and the tool calls the signer reconciled",
|
|
2642
|
+
"properties": {
|
|
2643
|
+
"layers": {
|
|
2644
|
+
"type": "array",
|
|
2645
|
+
"maxItems": 6,
|
|
2646
|
+
"items": {
|
|
2647
|
+
"enum": [
|
|
2648
|
+
"L1",
|
|
2649
|
+
"L2",
|
|
2650
|
+
"L3",
|
|
2651
|
+
"L4",
|
|
2652
|
+
"L5",
|
|
2653
|
+
"L6"
|
|
2654
|
+
]
|
|
2655
|
+
}
|
|
2656
|
+
},
|
|
2657
|
+
"reconciled": {
|
|
2658
|
+
"type": "integer",
|
|
2659
|
+
"minimum": 0,
|
|
2660
|
+
"maximum": 9007199254740991
|
|
2661
|
+
},
|
|
2662
|
+
"unreconciled": {
|
|
2663
|
+
"type": "object",
|
|
2664
|
+
"additionalProperties": false,
|
|
2665
|
+
"description": "reconcile.* records of the run, by kind",
|
|
2666
|
+
"properties": {
|
|
2667
|
+
"hook_missing": {
|
|
2668
|
+
"type": "integer",
|
|
2669
|
+
"minimum": 1,
|
|
2670
|
+
"maximum": 9007199254740991
|
|
2671
|
+
},
|
|
2672
|
+
"fabricated": {
|
|
2673
|
+
"type": "integer",
|
|
2674
|
+
"minimum": 1,
|
|
2675
|
+
"maximum": 9007199254740991
|
|
2676
|
+
},
|
|
2677
|
+
"args_mismatch": {
|
|
2678
|
+
"type": "integer",
|
|
2679
|
+
"minimum": 1,
|
|
2680
|
+
"maximum": 9007199254740991
|
|
2681
|
+
},
|
|
2682
|
+
"args_unparseable": {
|
|
2683
|
+
"type": "integer",
|
|
2684
|
+
"minimum": 1,
|
|
2685
|
+
"maximum": 9007199254740991
|
|
2686
|
+
},
|
|
2687
|
+
"result_without_call": {
|
|
2688
|
+
"type": "integer",
|
|
2689
|
+
"minimum": 1,
|
|
2690
|
+
"maximum": 9007199254740991
|
|
2691
|
+
},
|
|
2692
|
+
"unexplained_effect": {
|
|
2693
|
+
"type": "integer",
|
|
2694
|
+
"minimum": 1,
|
|
2695
|
+
"maximum": 9007199254740991
|
|
2696
|
+
}
|
|
2697
|
+
}
|
|
2698
|
+
}
|
|
2699
|
+
}
|
|
2700
|
+
},
|
|
2701
|
+
"paired_by_args": {
|
|
2702
|
+
"type": "integer",
|
|
2703
|
+
"minimum": 1,
|
|
2704
|
+
"maximum": 9007199254740991,
|
|
2705
|
+
"description": "format 1.2: calls reconciled by pairing a decide with the model's tool use of the same turn by their arguments, the adapter having had no tool-call id"
|
|
2706
|
+
},
|
|
2707
|
+
"matrix": {
|
|
2708
|
+
"type": "object",
|
|
2709
|
+
"additionalProperties": false,
|
|
2710
|
+
"required": [
|
|
2711
|
+
"model_calls",
|
|
2712
|
+
"tool_calls",
|
|
2713
|
+
"network",
|
|
2714
|
+
"processes",
|
|
2715
|
+
"services"
|
|
2716
|
+
],
|
|
2717
|
+
"description": "format 1.2: per action class, how the run was covered: enforced (custody: the only way to act records it), observed (an observer outside the agent saw it and it was reconciled), reported (only the agent's own process reported it) or none; and the layers behind it",
|
|
2718
|
+
"properties": {
|
|
2719
|
+
"model_calls": {
|
|
2720
|
+
"$ref": "#/$defs/coverage_class"
|
|
2721
|
+
},
|
|
2722
|
+
"tool_calls": {
|
|
2723
|
+
"$ref": "#/$defs/coverage_class"
|
|
2724
|
+
},
|
|
2725
|
+
"network": {
|
|
2726
|
+
"$ref": "#/$defs/coverage_class"
|
|
2727
|
+
},
|
|
2728
|
+
"processes": {
|
|
2729
|
+
"$ref": "#/$defs/coverage_class"
|
|
2730
|
+
},
|
|
2731
|
+
"services": {
|
|
2732
|
+
"$ref": "#/$defs/coverage_class"
|
|
2733
|
+
}
|
|
2734
|
+
}
|
|
2735
|
+
}
|
|
2736
|
+
}
|
|
2737
|
+
},
|
|
2738
|
+
"approval_request": {
|
|
2739
|
+
"type": "object",
|
|
2740
|
+
"additionalProperties": false,
|
|
2741
|
+
"required": [
|
|
2742
|
+
"approval_id",
|
|
2743
|
+
"policy_hash",
|
|
2744
|
+
"rule_ids",
|
|
2745
|
+
"expires_at",
|
|
2746
|
+
"requester",
|
|
2747
|
+
"decision_id",
|
|
2748
|
+
"binding",
|
|
2749
|
+
"binding_digest"
|
|
2750
|
+
],
|
|
2751
|
+
"properties": {
|
|
2752
|
+
"salt_id": {
|
|
2753
|
+
"$ref": "#/$defs/id",
|
|
2754
|
+
"description": "the signer's salt id for this record's commitments (salt label <type>:<salt_id>); absent on records written before salt_id existed"
|
|
2755
|
+
},
|
|
2756
|
+
"approval_id": {
|
|
2757
|
+
"$ref": "#/$defs/id"
|
|
2758
|
+
},
|
|
2759
|
+
"policy_hash": {
|
|
2760
|
+
"$ref": "#/$defs/hash"
|
|
2761
|
+
},
|
|
2762
|
+
"rule_ids": {
|
|
2763
|
+
"type": "array",
|
|
2764
|
+
"maxItems": 32,
|
|
2765
|
+
"items": {
|
|
2766
|
+
"type": "string",
|
|
2767
|
+
"maxLength": 64
|
|
2768
|
+
}
|
|
2769
|
+
},
|
|
2770
|
+
"expires_at": {
|
|
2771
|
+
"type": "string",
|
|
2772
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
2773
|
+
"maxLength": 4096
|
|
2774
|
+
},
|
|
2775
|
+
"requester": {
|
|
2776
|
+
"type": "string",
|
|
2777
|
+
"maxLength": 256
|
|
2778
|
+
},
|
|
2779
|
+
"requester_person": {
|
|
2780
|
+
"type": "string",
|
|
2781
|
+
"maxLength": 256,
|
|
2782
|
+
"description": "the requester's stable person id, when an OIDC identity"
|
|
2783
|
+
},
|
|
2784
|
+
"decision_id": {
|
|
2785
|
+
"$ref": "#/$defs/id"
|
|
2786
|
+
},
|
|
2787
|
+
"binding": {
|
|
2788
|
+
"type": "object",
|
|
2789
|
+
"additionalProperties": false,
|
|
2790
|
+
"required": [
|
|
2791
|
+
"v",
|
|
2792
|
+
"approval_id",
|
|
2793
|
+
"tenant",
|
|
2794
|
+
"run_id",
|
|
2795
|
+
"tool_call_id",
|
|
2796
|
+
"attempt",
|
|
2797
|
+
"tool",
|
|
2798
|
+
"args_commitment",
|
|
2799
|
+
"args_source",
|
|
2800
|
+
"policy_hash",
|
|
2801
|
+
"nonce",
|
|
2802
|
+
"expires_at"
|
|
2803
|
+
],
|
|
2804
|
+
"description": "what the approval is bound to; binding_digest is sha256(JCS(binding)), the args bound through args_commitment",
|
|
2805
|
+
"properties": {
|
|
2806
|
+
"v": {
|
|
2807
|
+
"const": 1
|
|
2808
|
+
},
|
|
2809
|
+
"approval_id": {
|
|
2810
|
+
"$ref": "#/$defs/id"
|
|
2811
|
+
},
|
|
2812
|
+
"tenant": {
|
|
2813
|
+
"$ref": "#/$defs/id"
|
|
2814
|
+
},
|
|
2815
|
+
"run_id": {
|
|
2816
|
+
"$ref": "#/$defs/id"
|
|
2817
|
+
},
|
|
2818
|
+
"tool_call_id": {
|
|
2819
|
+
"$ref": "#/$defs/id"
|
|
2820
|
+
},
|
|
2821
|
+
"attempt": {
|
|
2822
|
+
"type": "integer",
|
|
2823
|
+
"minimum": 0,
|
|
2824
|
+
"maximum": 9007199254740991
|
|
2825
|
+
},
|
|
2826
|
+
"tool": {
|
|
2827
|
+
"type": "string",
|
|
2828
|
+
"maxLength": 256
|
|
2829
|
+
},
|
|
2830
|
+
"args_commitment": {
|
|
2831
|
+
"type": "string",
|
|
2832
|
+
"pattern": "^hmac-sha256:[0-9a-f]{64}$",
|
|
2833
|
+
"maxLength": 76
|
|
2834
|
+
},
|
|
2835
|
+
"args_source": {
|
|
2836
|
+
"enum": [
|
|
2837
|
+
"raw",
|
|
2838
|
+
"parsed",
|
|
2839
|
+
"coerced"
|
|
2840
|
+
]
|
|
2841
|
+
},
|
|
2842
|
+
"policy_hash": {
|
|
2843
|
+
"$ref": "#/$defs/hash"
|
|
2844
|
+
},
|
|
2845
|
+
"nonce": {
|
|
2846
|
+
"type": "string",
|
|
2847
|
+
"pattern": "^[0-9a-f]{32}$",
|
|
2848
|
+
"maxLength": 32
|
|
2849
|
+
},
|
|
2850
|
+
"expires_at": {
|
|
2851
|
+
"type": "string",
|
|
2852
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
2853
|
+
"maxLength": 4096
|
|
2854
|
+
}
|
|
2855
|
+
}
|
|
2856
|
+
},
|
|
2857
|
+
"binding_digest": {
|
|
2858
|
+
"$ref": "#/$defs/hash"
|
|
2859
|
+
},
|
|
2860
|
+
"executor": {
|
|
2861
|
+
"enum": [
|
|
2862
|
+
"t1",
|
|
2863
|
+
"t2"
|
|
2864
|
+
],
|
|
2865
|
+
"description": "t2: approval_consume returns the approved arguments and its caller runs exactly those"
|
|
2866
|
+
},
|
|
2867
|
+
"agent": {
|
|
2868
|
+
"type": "object",
|
|
2869
|
+
"additionalProperties": false,
|
|
2870
|
+
"required": [
|
|
2871
|
+
"eligible",
|
|
2872
|
+
"reason",
|
|
2873
|
+
"rules",
|
|
2874
|
+
"conditions_hash",
|
|
2875
|
+
"args_key"
|
|
2876
|
+
],
|
|
2877
|
+
"description": "format 1.2: whether an agent approver may answer this approval, computed by the signer from the call's arguments and the run",
|
|
2878
|
+
"properties": {
|
|
2879
|
+
"eligible": {
|
|
2880
|
+
"type": "boolean"
|
|
2881
|
+
},
|
|
2882
|
+
"reason": {
|
|
2883
|
+
"type": "string",
|
|
2884
|
+
"maxLength": 1024
|
|
2885
|
+
},
|
|
2886
|
+
"rules": {
|
|
2887
|
+
"type": "array",
|
|
2888
|
+
"maxItems": 32,
|
|
2889
|
+
"items": {
|
|
2890
|
+
"type": "string",
|
|
2891
|
+
"maxLength": 64
|
|
2892
|
+
},
|
|
2893
|
+
"description": "the rules it asked by with approval.agent"
|
|
2894
|
+
},
|
|
2895
|
+
"conditions_hash": {
|
|
2896
|
+
"$ref": "#/$defs/hash",
|
|
2897
|
+
"description": "sha256 of JCS of those rules' approval.agent sections"
|
|
2898
|
+
},
|
|
2899
|
+
"args_key": {
|
|
2900
|
+
"type": "string",
|
|
2901
|
+
"pattern": "^hmac-sha256:[0-9a-f]{64}$",
|
|
2902
|
+
"maxLength": 76,
|
|
2903
|
+
"description": "an HMAC of the call's arguments under a key of this run: the same in this run for the same arguments, so a call an agent said no to is a person's to answer when asked again"
|
|
2904
|
+
}
|
|
2905
|
+
}
|
|
2906
|
+
},
|
|
2907
|
+
"via": {
|
|
2908
|
+
"type": "string",
|
|
2909
|
+
"maxLength": 256,
|
|
2910
|
+
"description": "format 1.2: the gateway or tool executor (its identity, scheme:subject) that wrote this record for the run's client (source gateway, tier T2); the signer takes the call's later steps from it only"
|
|
2911
|
+
},
|
|
2912
|
+
"incident_id": {
|
|
2913
|
+
"$ref": "#/$defs/id",
|
|
2914
|
+
"description": "format 1.2: the call is held by this incident: only a person who is not the run's owner, principal or requester answers it"
|
|
2915
|
+
},
|
|
2916
|
+
"passkey": {
|
|
2917
|
+
"const": true,
|
|
2918
|
+
"description": "the approval needs a passkey (approval: {passkey: required})"
|
|
2919
|
+
}
|
|
2920
|
+
}
|
|
2921
|
+
},
|
|
2922
|
+
"approval_consumed": {
|
|
2923
|
+
"type": "object",
|
|
2924
|
+
"additionalProperties": false,
|
|
2925
|
+
"required": [
|
|
2926
|
+
"approval_id"
|
|
2927
|
+
],
|
|
2928
|
+
"properties": {
|
|
2929
|
+
"approval_id": {
|
|
2930
|
+
"$ref": "#/$defs/id"
|
|
2931
|
+
}
|
|
2932
|
+
}
|
|
2933
|
+
},
|
|
2934
|
+
"approval_expired": {
|
|
2935
|
+
"type": "object",
|
|
2936
|
+
"additionalProperties": false,
|
|
2937
|
+
"required": [
|
|
2938
|
+
"approval_id"
|
|
2939
|
+
],
|
|
2940
|
+
"properties": {
|
|
2941
|
+
"approval_id": {
|
|
2942
|
+
"$ref": "#/$defs/id"
|
|
2943
|
+
},
|
|
2944
|
+
"reason": {
|
|
2945
|
+
"enum": [
|
|
2946
|
+
"ttl",
|
|
2947
|
+
"run_final",
|
|
2948
|
+
"consume_window",
|
|
2949
|
+
"hold",
|
|
2950
|
+
"quarantine"
|
|
2951
|
+
],
|
|
2952
|
+
"description": "format 1.2, on approvals an agent may answer: approvals.ttl_s passed, the run ended, or an agent's approval was not consumed within approvals.agent_consume_s; on any approval: its run was held or quarantined (hold, quarantine)"
|
|
2953
|
+
}
|
|
2954
|
+
}
|
|
2955
|
+
},
|
|
2956
|
+
"approval_refused": {
|
|
2957
|
+
"type": "object",
|
|
2958
|
+
"additionalProperties": false,
|
|
2959
|
+
"required": [
|
|
2960
|
+
"tool_use_id",
|
|
2961
|
+
"rule_ids",
|
|
2962
|
+
"reason"
|
|
2963
|
+
],
|
|
2964
|
+
"properties": {
|
|
2965
|
+
"tool_use_id": {
|
|
2966
|
+
"$ref": "#/$defs/id"
|
|
2967
|
+
},
|
|
2968
|
+
"approval_id": {
|
|
2969
|
+
"$ref": "#/$defs/id"
|
|
2970
|
+
},
|
|
2971
|
+
"rule_ids": {
|
|
2972
|
+
"type": "array",
|
|
2973
|
+
"maxItems": 32,
|
|
2974
|
+
"items": {
|
|
2975
|
+
"type": "string",
|
|
2976
|
+
"maxLength": 64
|
|
2977
|
+
}
|
|
2978
|
+
},
|
|
2979
|
+
"reason": {
|
|
2980
|
+
"type": "string",
|
|
2981
|
+
"maxLength": 1024
|
|
2982
|
+
}
|
|
2983
|
+
}
|
|
2984
|
+
},
|
|
2985
|
+
"approval_binding_mismatch": {
|
|
2986
|
+
"type": "object",
|
|
2987
|
+
"additionalProperties": false,
|
|
2988
|
+
"required": [
|
|
2989
|
+
"approval_id",
|
|
2990
|
+
"tool_use_id",
|
|
2991
|
+
"approved_commitment",
|
|
2992
|
+
"args_commitment"
|
|
2993
|
+
],
|
|
2994
|
+
"properties": {
|
|
2995
|
+
"salt_id": {
|
|
2996
|
+
"$ref": "#/$defs/id",
|
|
2997
|
+
"description": "the signer's salt id for this record's commitments (salt label <type>:<salt_id>); absent on records written before salt_id existed"
|
|
2998
|
+
},
|
|
2999
|
+
"approval_id": {
|
|
3000
|
+
"$ref": "#/$defs/id"
|
|
3001
|
+
},
|
|
3002
|
+
"tool_use_id": {
|
|
3003
|
+
"$ref": "#/$defs/id"
|
|
3004
|
+
},
|
|
3005
|
+
"approved_commitment": {
|
|
3006
|
+
"type": "string",
|
|
3007
|
+
"pattern": "^hmac-sha256:[0-9a-f]{64}$",
|
|
3008
|
+
"maxLength": 76
|
|
3009
|
+
},
|
|
3010
|
+
"args_commitment": {
|
|
3011
|
+
"type": "string",
|
|
3012
|
+
"pattern": "^hmac-sha256:[0-9a-f]{64}$",
|
|
3013
|
+
"maxLength": 76
|
|
3014
|
+
},
|
|
3015
|
+
"decision_id": {
|
|
3016
|
+
"$ref": "#/$defs/id",
|
|
3017
|
+
"description": "the decision the approval was for (without salt_id: the decision whose salt both commitments are under)"
|
|
3018
|
+
}
|
|
3019
|
+
}
|
|
3020
|
+
},
|
|
3021
|
+
"approval_abandoned": {
|
|
3022
|
+
"type": "object",
|
|
3023
|
+
"additionalProperties": false,
|
|
3024
|
+
"required": [
|
|
3025
|
+
"approval_id"
|
|
3026
|
+
],
|
|
3027
|
+
"properties": {
|
|
3028
|
+
"approval_id": {
|
|
3029
|
+
"$ref": "#/$defs/id"
|
|
3030
|
+
},
|
|
3031
|
+
"reason": {
|
|
3032
|
+
"type": "string",
|
|
3033
|
+
"maxLength": 1024
|
|
3034
|
+
}
|
|
3035
|
+
},
|
|
3036
|
+
"description": "the adapter will never resume the paused call; the approval ends at once"
|
|
3037
|
+
},
|
|
3038
|
+
"approval_escalated": {
|
|
3039
|
+
"type": "object",
|
|
3040
|
+
"additionalProperties": false,
|
|
3041
|
+
"required": [
|
|
3042
|
+
"approval_id",
|
|
3043
|
+
"by"
|
|
3044
|
+
],
|
|
3045
|
+
"properties": {
|
|
3046
|
+
"approval_id": {
|
|
3047
|
+
"$ref": "#/$defs/id"
|
|
3048
|
+
},
|
|
3049
|
+
"by": {
|
|
3050
|
+
"enum": [
|
|
3051
|
+
"agent",
|
|
3052
|
+
"signer"
|
|
3053
|
+
]
|
|
3054
|
+
},
|
|
3055
|
+
"reason": {
|
|
3056
|
+
"type": "string",
|
|
3057
|
+
"maxLength": 1024
|
|
3058
|
+
},
|
|
3059
|
+
"approver_identity": {
|
|
3060
|
+
"type": "object",
|
|
3061
|
+
"additionalProperties": false,
|
|
3062
|
+
"required": [
|
|
3063
|
+
"scheme",
|
|
3064
|
+
"subject",
|
|
3065
|
+
"attested"
|
|
3066
|
+
],
|
|
3067
|
+
"properties": {
|
|
3068
|
+
"scheme": {
|
|
3069
|
+
"type": "string",
|
|
3070
|
+
"maxLength": 32
|
|
3071
|
+
},
|
|
3072
|
+
"subject": {
|
|
3073
|
+
"type": "string",
|
|
3074
|
+
"maxLength": 256
|
|
3075
|
+
},
|
|
3076
|
+
"attested": {
|
|
3077
|
+
"type": "boolean"
|
|
3078
|
+
},
|
|
3079
|
+
"person": {
|
|
3080
|
+
"type": "string",
|
|
3081
|
+
"maxLength": 256,
|
|
3082
|
+
"description": "an OIDC identity's stable person id"
|
|
3083
|
+
}
|
|
3084
|
+
},
|
|
3085
|
+
"description": "the approver as the signer's transport established it"
|
|
3086
|
+
}
|
|
3087
|
+
},
|
|
3088
|
+
"description": "format 1.2: only people answer this approval from now on: an agent approver handed it over, or the signer did (no agent answered within agent_timeout_s, a budget ran out)"
|
|
3089
|
+
},
|
|
3090
|
+
"approval_revoked": {
|
|
3091
|
+
"type": "object",
|
|
3092
|
+
"additionalProperties": false,
|
|
3093
|
+
"required": [
|
|
3094
|
+
"approval_id",
|
|
3095
|
+
"by"
|
|
3096
|
+
],
|
|
3097
|
+
"properties": {
|
|
3098
|
+
"approval_id": {
|
|
3099
|
+
"$ref": "#/$defs/id"
|
|
3100
|
+
},
|
|
3101
|
+
"by": {
|
|
3102
|
+
"type": "string",
|
|
3103
|
+
"maxLength": 256
|
|
3104
|
+
},
|
|
3105
|
+
"reason": {
|
|
3106
|
+
"type": "string",
|
|
3107
|
+
"maxLength": 1024
|
|
3108
|
+
}
|
|
3109
|
+
},
|
|
3110
|
+
"description": "format 1.2: a person (or the kill switch, by signer) vetoed an agent's approval before it was consumed"
|
|
3111
|
+
},
|
|
3112
|
+
"approval_suggested": {
|
|
3113
|
+
"type": "object",
|
|
3114
|
+
"additionalProperties": false,
|
|
3115
|
+
"required": [
|
|
3116
|
+
"tool_use_id",
|
|
3117
|
+
"approval_id",
|
|
3118
|
+
"decision",
|
|
3119
|
+
"approver",
|
|
3120
|
+
"approver_identity",
|
|
3121
|
+
"channel",
|
|
3122
|
+
"approver_kind"
|
|
3123
|
+
],
|
|
3124
|
+
"properties": {
|
|
3125
|
+
"tool_use_id": {
|
|
3126
|
+
"$ref": "#/$defs/id"
|
|
3127
|
+
},
|
|
3128
|
+
"approval_id": {
|
|
3129
|
+
"$ref": "#/$defs/id"
|
|
3130
|
+
},
|
|
3131
|
+
"decision": {
|
|
3132
|
+
"enum": [
|
|
3133
|
+
"approve",
|
|
3134
|
+
"reject",
|
|
3135
|
+
"escalate"
|
|
3136
|
+
]
|
|
3137
|
+
},
|
|
3138
|
+
"approver": {
|
|
3139
|
+
"type": "string",
|
|
3140
|
+
"maxLength": 256
|
|
3141
|
+
},
|
|
3142
|
+
"approver_identity": {
|
|
3143
|
+
"type": "object",
|
|
3144
|
+
"additionalProperties": false,
|
|
3145
|
+
"required": [
|
|
3146
|
+
"scheme",
|
|
3147
|
+
"subject",
|
|
3148
|
+
"attested"
|
|
3149
|
+
],
|
|
3150
|
+
"properties": {
|
|
3151
|
+
"scheme": {
|
|
3152
|
+
"type": "string",
|
|
3153
|
+
"maxLength": 32
|
|
3154
|
+
},
|
|
3155
|
+
"subject": {
|
|
3156
|
+
"type": "string",
|
|
3157
|
+
"maxLength": 256
|
|
3158
|
+
},
|
|
3159
|
+
"attested": {
|
|
3160
|
+
"type": "boolean"
|
|
3161
|
+
},
|
|
3162
|
+
"person": {
|
|
3163
|
+
"type": "string",
|
|
3164
|
+
"maxLength": 256,
|
|
3165
|
+
"description": "an OIDC identity's stable person id"
|
|
3166
|
+
}
|
|
3167
|
+
},
|
|
3168
|
+
"description": "the approver as the signer's transport established it"
|
|
3169
|
+
},
|
|
3170
|
+
"channel": {
|
|
3171
|
+
"type": "string",
|
|
3172
|
+
"maxLength": 64
|
|
3173
|
+
},
|
|
3174
|
+
"approver_kind": {
|
|
3175
|
+
"const": "agent"
|
|
3176
|
+
},
|
|
3177
|
+
"asserted": {
|
|
3178
|
+
"type": "object",
|
|
3179
|
+
"additionalProperties": false,
|
|
3180
|
+
"required": [
|
|
3181
|
+
"attested"
|
|
3182
|
+
],
|
|
3183
|
+
"properties": {
|
|
3184
|
+
"model": {
|
|
3185
|
+
"type": "string",
|
|
3186
|
+
"maxLength": 128
|
|
3187
|
+
},
|
|
3188
|
+
"version": {
|
|
3189
|
+
"type": "string",
|
|
3190
|
+
"maxLength": 64
|
|
3191
|
+
},
|
|
3192
|
+
"prompt_hash": {
|
|
3193
|
+
"$ref": "#/$defs/hash"
|
|
3194
|
+
},
|
|
3195
|
+
"attested": {
|
|
3196
|
+
"const": false
|
|
3197
|
+
}
|
|
3198
|
+
},
|
|
3199
|
+
"description": "format 1.2: what the agent approver says it runs; its own word, never checked"
|
|
3200
|
+
},
|
|
3201
|
+
"reason": {
|
|
3202
|
+
"type": "string",
|
|
3203
|
+
"maxLength": 1024
|
|
3204
|
+
}
|
|
3205
|
+
},
|
|
3206
|
+
"description": "format 1.2: a shadow-mode agent approver's answer, recorded only: it changes nothing"
|
|
3207
|
+
},
|
|
3208
|
+
"approval_agents": {
|
|
3209
|
+
"type": "object",
|
|
3210
|
+
"additionalProperties": false,
|
|
3211
|
+
"required": [
|
|
3212
|
+
"enabled",
|
|
3213
|
+
"by"
|
|
3214
|
+
],
|
|
3215
|
+
"properties": {
|
|
3216
|
+
"enabled": {
|
|
3217
|
+
"type": "boolean"
|
|
3218
|
+
},
|
|
3219
|
+
"by": {
|
|
3220
|
+
"type": "string",
|
|
3221
|
+
"maxLength": 256
|
|
3222
|
+
},
|
|
3223
|
+
"reason": {
|
|
3224
|
+
"type": "string",
|
|
3225
|
+
"maxLength": 1024
|
|
3226
|
+
}
|
|
3227
|
+
},
|
|
3228
|
+
"description": "format 1.2: the operator's kill switch for agent approvals (in the signer run); switching off revokes every agent approval not consumed yet"
|
|
3229
|
+
},
|
|
3230
|
+
"input_observed": {
|
|
3231
|
+
"type": "object",
|
|
3232
|
+
"additionalProperties": false,
|
|
3233
|
+
"description": "content that entered the run other than as a tool result (observe RPC), indexed for provenance; the value itself is only committed to",
|
|
3234
|
+
"required": [
|
|
3235
|
+
"source",
|
|
3236
|
+
"trust",
|
|
3237
|
+
"output",
|
|
3238
|
+
"redaction",
|
|
3239
|
+
"salt_id"
|
|
3240
|
+
],
|
|
3241
|
+
"properties": {
|
|
3242
|
+
"source": {
|
|
3243
|
+
"type": "string",
|
|
3244
|
+
"maxLength": 256,
|
|
3245
|
+
"description": "the caller's name for where the content came from"
|
|
3246
|
+
},
|
|
3247
|
+
"trust": {
|
|
3248
|
+
"enum": [
|
|
3249
|
+
"trusted",
|
|
3250
|
+
"untrusted"
|
|
3251
|
+
],
|
|
3252
|
+
"description": "the caller's claim; it only decides how this content's own values count"
|
|
3253
|
+
},
|
|
3254
|
+
"output": {
|
|
3255
|
+
"$ref": "#/$defs/content"
|
|
3256
|
+
},
|
|
3257
|
+
"redaction": {
|
|
3258
|
+
"$ref": "#/$defs/redaction"
|
|
3259
|
+
},
|
|
3260
|
+
"salt_id": {
|
|
3261
|
+
"$ref": "#/$defs/id",
|
|
3262
|
+
"description": "the signer's salt id for this record's commitments (salt label <type>:<salt_id>)"
|
|
3263
|
+
},
|
|
3264
|
+
"via": {
|
|
3265
|
+
"type": "string",
|
|
3266
|
+
"maxLength": 256,
|
|
3267
|
+
"description": "format 1.2: the gateway or tool executor (its identity, scheme:subject) that wrote this record for the run's client (source gateway, tier T2); the signer takes the call's later steps from it only"
|
|
3268
|
+
}
|
|
3269
|
+
}
|
|
3270
|
+
},
|
|
3271
|
+
"state_write": {
|
|
3272
|
+
"type": "object",
|
|
3273
|
+
"additionalProperties": false,
|
|
3274
|
+
"required": [
|
|
3275
|
+
"store",
|
|
3276
|
+
"key",
|
|
3277
|
+
"digest"
|
|
3278
|
+
],
|
|
3279
|
+
"properties": {
|
|
3280
|
+
"salt_id": {
|
|
3281
|
+
"$ref": "#/$defs/id",
|
|
3282
|
+
"description": "the signer's salt id for this record's commitments (salt label <type>:<salt_id>); absent on records written before salt_id existed"
|
|
3283
|
+
},
|
|
3284
|
+
"store": {
|
|
3285
|
+
"type": "string",
|
|
3286
|
+
"maxLength": 256
|
|
3287
|
+
},
|
|
3288
|
+
"key": {
|
|
3289
|
+
"type": "string",
|
|
3290
|
+
"maxLength": 256
|
|
3291
|
+
},
|
|
3292
|
+
"prev_digest": {
|
|
3293
|
+
"oneOf": [
|
|
3294
|
+
{
|
|
3295
|
+
"$ref": "#/$defs/commitment"
|
|
3296
|
+
},
|
|
3297
|
+
{
|
|
3298
|
+
"type": "null"
|
|
3299
|
+
}
|
|
3300
|
+
]
|
|
3301
|
+
},
|
|
3302
|
+
"digest": {
|
|
3303
|
+
"$ref": "#/$defs/commitment"
|
|
3304
|
+
}
|
|
3305
|
+
}
|
|
3306
|
+
},
|
|
3307
|
+
"signer_epoch": {
|
|
3308
|
+
"type": "object",
|
|
3309
|
+
"additionalProperties": false,
|
|
3310
|
+
"required": [
|
|
3311
|
+
"keys"
|
|
3312
|
+
],
|
|
3313
|
+
"properties": {
|
|
3314
|
+
"keys": {
|
|
3315
|
+
"type": "array",
|
|
3316
|
+
"maxItems": 16,
|
|
3317
|
+
"items": {
|
|
3318
|
+
"type": "object",
|
|
3319
|
+
"additionalProperties": false,
|
|
3320
|
+
"required": [
|
|
3321
|
+
"kid",
|
|
3322
|
+
"alg",
|
|
3323
|
+
"spki"
|
|
3324
|
+
],
|
|
3325
|
+
"properties": {
|
|
3326
|
+
"kid": {
|
|
3327
|
+
"$ref": "#/$defs/hash"
|
|
3328
|
+
},
|
|
3329
|
+
"alg": {
|
|
3330
|
+
"type": "string",
|
|
3331
|
+
"maxLength": 32,
|
|
3332
|
+
"pattern": "^[a-z0-9-]+$"
|
|
3333
|
+
},
|
|
3334
|
+
"spki": {
|
|
3335
|
+
"type": "string",
|
|
3336
|
+
"maxLength": 4096,
|
|
3337
|
+
"pattern": "^[A-Za-z0-9+/]+={0,2}$",
|
|
3338
|
+
"description": "base64 DER SubjectPublicKeyInfo"
|
|
3339
|
+
},
|
|
3340
|
+
"cert": {
|
|
3341
|
+
"type": "object",
|
|
3342
|
+
"additionalProperties": false,
|
|
3343
|
+
"required": [
|
|
3344
|
+
"certificate",
|
|
3345
|
+
"index",
|
|
3346
|
+
"inclusion",
|
|
3347
|
+
"checkpoint"
|
|
3348
|
+
],
|
|
3349
|
+
"description": "the key's issuance entry from a record-key issuer (tracekit.format.cert, docs/issuer.md)",
|
|
3350
|
+
"properties": {
|
|
3351
|
+
"certificate": {
|
|
3352
|
+
"type": "object",
|
|
3353
|
+
"additionalProperties": false,
|
|
3354
|
+
"required": [
|
|
3355
|
+
"cert",
|
|
3356
|
+
"sig"
|
|
3357
|
+
],
|
|
3358
|
+
"properties": {
|
|
3359
|
+
"cert": {
|
|
3360
|
+
"type": "object",
|
|
3361
|
+
"additionalProperties": false,
|
|
3362
|
+
"required": [
|
|
3363
|
+
"kid",
|
|
3364
|
+
"spki",
|
|
3365
|
+
"log_id",
|
|
3366
|
+
"tenants",
|
|
3367
|
+
"not_before",
|
|
3368
|
+
"not_after",
|
|
3369
|
+
"serial"
|
|
3370
|
+
],
|
|
3371
|
+
"properties": {
|
|
3372
|
+
"kid": {
|
|
3373
|
+
"$ref": "#/$defs/hash"
|
|
3374
|
+
},
|
|
3375
|
+
"spki": {
|
|
3376
|
+
"type": "string",
|
|
3377
|
+
"maxLength": 4096,
|
|
3378
|
+
"pattern": "^[A-Za-z0-9+/]+={0,2}$"
|
|
3379
|
+
},
|
|
3380
|
+
"log_id": {
|
|
3381
|
+
"type": "string",
|
|
3382
|
+
"maxLength": 64
|
|
3383
|
+
},
|
|
3384
|
+
"tenants": {
|
|
3385
|
+
"type": "array",
|
|
3386
|
+
"maxItems": 256,
|
|
3387
|
+
"items": {
|
|
3388
|
+
"type": "string",
|
|
3389
|
+
"maxLength": 256
|
|
3390
|
+
}
|
|
3391
|
+
},
|
|
3392
|
+
"not_before": {
|
|
3393
|
+
"type": "integer",
|
|
3394
|
+
"minimum": 0,
|
|
3395
|
+
"maximum": 9007199254740991
|
|
3396
|
+
},
|
|
3397
|
+
"not_after": {
|
|
3398
|
+
"type": "integer",
|
|
3399
|
+
"minimum": 0,
|
|
3400
|
+
"maximum": 9007199254740991
|
|
3401
|
+
},
|
|
3402
|
+
"serial": {
|
|
3403
|
+
"type": "string",
|
|
3404
|
+
"maxLength": 64,
|
|
3405
|
+
"pattern": "^[0-9a-f]+$"
|
|
3406
|
+
}
|
|
3407
|
+
}
|
|
3408
|
+
},
|
|
3409
|
+
"sig": {
|
|
3410
|
+
"type": "string",
|
|
3411
|
+
"maxLength": 128,
|
|
3412
|
+
"pattern": "^[A-Za-z0-9+/]+={0,2}$"
|
|
3413
|
+
}
|
|
3414
|
+
}
|
|
3415
|
+
},
|
|
3416
|
+
"index": {
|
|
3417
|
+
"type": "integer",
|
|
3418
|
+
"minimum": 0,
|
|
3419
|
+
"maximum": 9007199254740991
|
|
3420
|
+
},
|
|
3421
|
+
"inclusion": {
|
|
3422
|
+
"type": "array",
|
|
3423
|
+
"maxItems": 64,
|
|
3424
|
+
"items": {
|
|
3425
|
+
"type": "string",
|
|
3426
|
+
"maxLength": 64,
|
|
3427
|
+
"pattern": "^[A-Za-z0-9+/]+={0,2}$"
|
|
3428
|
+
}
|
|
3429
|
+
},
|
|
3430
|
+
"checkpoint": {
|
|
3431
|
+
"type": "string",
|
|
3432
|
+
"maxLength": 16384
|
|
3433
|
+
}
|
|
3434
|
+
}
|
|
3435
|
+
}
|
|
3436
|
+
}
|
|
3437
|
+
}
|
|
3438
|
+
},
|
|
3439
|
+
"bridge": {
|
|
3440
|
+
"type": "object",
|
|
3441
|
+
"additionalProperties": false,
|
|
3442
|
+
"required": [
|
|
3443
|
+
"v1_kid",
|
|
3444
|
+
"v1_last_seq",
|
|
3445
|
+
"v1_head"
|
|
3446
|
+
],
|
|
3447
|
+
"description": "the v1 ledger this log continues: its key, the seq and hash of its last (key retirement) record",
|
|
3448
|
+
"properties": {
|
|
3449
|
+
"v1_kid": {
|
|
3450
|
+
"type": "string",
|
|
3451
|
+
"maxLength": 24,
|
|
3452
|
+
"pattern": "^ed25519:[0-9a-f]{16}$"
|
|
3453
|
+
},
|
|
3454
|
+
"v1_last_seq": {
|
|
3455
|
+
"type": "integer",
|
|
3456
|
+
"minimum": 0,
|
|
3457
|
+
"maximum": 9007199254740991
|
|
3458
|
+
},
|
|
3459
|
+
"v1_head": {
|
|
3460
|
+
"type": "string",
|
|
3461
|
+
"maxLength": 64,
|
|
3462
|
+
"pattern": "^[0-9a-f]{64}$"
|
|
3463
|
+
}
|
|
3464
|
+
}
|
|
3465
|
+
}
|
|
3466
|
+
}
|
|
3467
|
+
},
|
|
3468
|
+
"key_retire": {
|
|
3469
|
+
"type": "object",
|
|
3470
|
+
"additionalProperties": false,
|
|
3471
|
+
"required": [
|
|
3472
|
+
"kid",
|
|
3473
|
+
"last_seq"
|
|
3474
|
+
],
|
|
3475
|
+
"properties": {
|
|
3476
|
+
"kid": {
|
|
3477
|
+
"$ref": "#/$defs/hash"
|
|
3478
|
+
},
|
|
3479
|
+
"last_seq": {
|
|
3480
|
+
"type": "integer",
|
|
3481
|
+
"minimum": 0,
|
|
3482
|
+
"maximum": 9007199254740991
|
|
3483
|
+
}
|
|
3484
|
+
}
|
|
3485
|
+
},
|
|
3486
|
+
"log_closed": {
|
|
3487
|
+
"type": "object",
|
|
3488
|
+
"additionalProperties": false,
|
|
3489
|
+
"required": [
|
|
3490
|
+
"final_seq"
|
|
3491
|
+
],
|
|
3492
|
+
"properties": {
|
|
3493
|
+
"final_seq": {
|
|
3494
|
+
"type": "integer",
|
|
3495
|
+
"minimum": 0,
|
|
3496
|
+
"maximum": 9007199254740991
|
|
3497
|
+
}
|
|
3498
|
+
}
|
|
3499
|
+
},
|
|
3500
|
+
"reconcile": {
|
|
3501
|
+
"type": "object",
|
|
3502
|
+
"additionalProperties": false,
|
|
3503
|
+
"required": [
|
|
3504
|
+
"layers"
|
|
3505
|
+
],
|
|
3506
|
+
"properties": {
|
|
3507
|
+
"layers": {
|
|
3508
|
+
"type": "array",
|
|
3509
|
+
"maxItems": 6,
|
|
3510
|
+
"items": {
|
|
3511
|
+
"enum": [
|
|
3512
|
+
"L1",
|
|
3513
|
+
"L2",
|
|
3514
|
+
"L3",
|
|
3515
|
+
"L4",
|
|
3516
|
+
"L5",
|
|
3517
|
+
"L6"
|
|
3518
|
+
]
|
|
3519
|
+
}
|
|
3520
|
+
},
|
|
3521
|
+
"detail": {
|
|
3522
|
+
"type": "string",
|
|
3523
|
+
"maxLength": 1024
|
|
3524
|
+
}
|
|
3525
|
+
}
|
|
3526
|
+
},
|
|
3527
|
+
"refusal_summary": {
|
|
3528
|
+
"type": "object",
|
|
3529
|
+
"additionalProperties": false,
|
|
3530
|
+
"required": [
|
|
3531
|
+
"code",
|
|
3532
|
+
"count",
|
|
3533
|
+
"from_ts",
|
|
3534
|
+
"to_ts"
|
|
3535
|
+
],
|
|
3536
|
+
"properties": {
|
|
3537
|
+
"code": {
|
|
3538
|
+
"type": "string",
|
|
3539
|
+
"maxLength": 64
|
|
3540
|
+
},
|
|
3541
|
+
"count": {
|
|
3542
|
+
"type": "integer",
|
|
3543
|
+
"minimum": 1,
|
|
3544
|
+
"maximum": 9007199254740991
|
|
3545
|
+
},
|
|
3546
|
+
"from_ts": {
|
|
3547
|
+
"type": "string",
|
|
3548
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
3549
|
+
"maxLength": 4096
|
|
3550
|
+
},
|
|
3551
|
+
"to_ts": {
|
|
3552
|
+
"type": "string",
|
|
3553
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
3554
|
+
"maxLength": 4096
|
|
3555
|
+
},
|
|
3556
|
+
"identity": {
|
|
3557
|
+
"type": "string",
|
|
3558
|
+
"maxLength": 256
|
|
3559
|
+
}
|
|
3560
|
+
}
|
|
3561
|
+
},
|
|
3562
|
+
"policy_external": {
|
|
3563
|
+
"type": "object",
|
|
3564
|
+
"additionalProperties": false,
|
|
3565
|
+
"required": [
|
|
3566
|
+
"system",
|
|
3567
|
+
"decision",
|
|
3568
|
+
"tool_use_id",
|
|
3569
|
+
"tool",
|
|
3570
|
+
"rule_ids",
|
|
3571
|
+
"signature",
|
|
3572
|
+
"record",
|
|
3573
|
+
"identity",
|
|
3574
|
+
"salt_id"
|
|
3575
|
+
],
|
|
3576
|
+
"description": "Another system's decision about a tool call, imported by an identity authorized for decision_import (tier T3). The signer's own policy.decision stays authoritative.",
|
|
3577
|
+
"properties": {
|
|
3578
|
+
"system": {
|
|
3579
|
+
"type": "string",
|
|
3580
|
+
"minLength": 1,
|
|
3581
|
+
"maxLength": 64
|
|
3582
|
+
},
|
|
3583
|
+
"decision": {
|
|
3584
|
+
"enum": [
|
|
3585
|
+
"allow",
|
|
3586
|
+
"deny",
|
|
3587
|
+
"ask"
|
|
3588
|
+
]
|
|
3589
|
+
},
|
|
3590
|
+
"tool_use_id": {
|
|
3591
|
+
"$ref": "#/$defs/id"
|
|
3592
|
+
},
|
|
3593
|
+
"tool": {
|
|
3594
|
+
"type": "string",
|
|
3595
|
+
"minLength": 1,
|
|
3596
|
+
"maxLength": 256
|
|
3597
|
+
},
|
|
3598
|
+
"rule_ids": {
|
|
3599
|
+
"type": "array",
|
|
3600
|
+
"items": {
|
|
3601
|
+
"type": "string",
|
|
3602
|
+
"maxLength": 64
|
|
3603
|
+
},
|
|
3604
|
+
"maxItems": 32
|
|
3605
|
+
},
|
|
3606
|
+
"reason": {
|
|
3607
|
+
"type": "string",
|
|
3608
|
+
"maxLength": 4096,
|
|
3609
|
+
"description": "the system's reason, redacted"
|
|
3610
|
+
},
|
|
3611
|
+
"signature": {
|
|
3612
|
+
"enum": [
|
|
3613
|
+
"verified",
|
|
3614
|
+
"unverified"
|
|
3615
|
+
],
|
|
3616
|
+
"description": "verified: the system's Ed25519 signature over its record holds under the key the signer's config pins for it"
|
|
3617
|
+
},
|
|
3618
|
+
"record": {
|
|
3619
|
+
"type": "object",
|
|
3620
|
+
"additionalProperties": false,
|
|
3621
|
+
"required": [
|
|
3622
|
+
"hash",
|
|
3623
|
+
"size"
|
|
3624
|
+
],
|
|
3625
|
+
"description": "the system's own record: an HMAC of its sha256 under this record's salt (salt_id), and its size in bytes",
|
|
3626
|
+
"properties": {
|
|
3627
|
+
"hash": {
|
|
3628
|
+
"type": "string",
|
|
3629
|
+
"pattern": "^hmac-sha256:[0-9a-f]{64}$",
|
|
3630
|
+
"maxLength": 76
|
|
3631
|
+
},
|
|
3632
|
+
"size": {
|
|
3633
|
+
"type": "integer",
|
|
3634
|
+
"minimum": 0,
|
|
3635
|
+
"maximum": 9007199254740991
|
|
3636
|
+
}
|
|
3637
|
+
}
|
|
3638
|
+
},
|
|
3639
|
+
"identity": {
|
|
3640
|
+
"type": "object",
|
|
3641
|
+
"additionalProperties": false,
|
|
3642
|
+
"required": [
|
|
3643
|
+
"scheme",
|
|
3644
|
+
"subject",
|
|
3645
|
+
"attested"
|
|
3646
|
+
],
|
|
3647
|
+
"properties": {
|
|
3648
|
+
"scheme": {
|
|
3649
|
+
"enum": [
|
|
3650
|
+
"uid",
|
|
3651
|
+
"harness",
|
|
3652
|
+
"token",
|
|
3653
|
+
"k8s_sa",
|
|
3654
|
+
"mtls",
|
|
3655
|
+
"oidc"
|
|
3656
|
+
]
|
|
3657
|
+
},
|
|
3658
|
+
"subject": {
|
|
3659
|
+
"type": "string",
|
|
3660
|
+
"maxLength": 256
|
|
3661
|
+
},
|
|
3662
|
+
"attested": {
|
|
3663
|
+
"type": "boolean"
|
|
3664
|
+
}
|
|
3665
|
+
}
|
|
3666
|
+
},
|
|
3667
|
+
"salt_id": {
|
|
3668
|
+
"$ref": "#/$defs/id",
|
|
3669
|
+
"description": "the signer's salt id for this record's commitments (salt label <type>:<salt_id>)"
|
|
3670
|
+
}
|
|
3671
|
+
}
|
|
3672
|
+
},
|
|
3673
|
+
"content_accessed": {
|
|
3674
|
+
"type": "object",
|
|
3675
|
+
"additionalProperties": false,
|
|
3676
|
+
"required": [
|
|
3677
|
+
"principal",
|
|
3678
|
+
"run_id",
|
|
3679
|
+
"seqs",
|
|
3680
|
+
"purpose"
|
|
3681
|
+
],
|
|
3682
|
+
"description": "The signer returned retained content of records of a run of this tenant (format 1.1; content_get): who asked, the run, its run_seqs and why. Never the content.",
|
|
3683
|
+
"properties": {
|
|
3684
|
+
"principal": {
|
|
3685
|
+
"type": "string",
|
|
3686
|
+
"maxLength": 256
|
|
3687
|
+
},
|
|
3688
|
+
"run_id": {
|
|
3689
|
+
"type": "string",
|
|
3690
|
+
"maxLength": 128
|
|
3691
|
+
},
|
|
3692
|
+
"seqs": {
|
|
3693
|
+
"type": "array",
|
|
3694
|
+
"maxItems": 1000,
|
|
3695
|
+
"items": {
|
|
3696
|
+
"type": "integer",
|
|
3697
|
+
"minimum": 0,
|
|
3698
|
+
"maximum": 9007199254740991
|
|
3699
|
+
}
|
|
3700
|
+
},
|
|
3701
|
+
"purpose": {
|
|
3702
|
+
"type": "string",
|
|
3703
|
+
"maxLength": 512
|
|
3704
|
+
}
|
|
3705
|
+
}
|
|
3706
|
+
},
|
|
3707
|
+
"content_erased": {
|
|
3708
|
+
"type": "object",
|
|
3709
|
+
"additionalProperties": false,
|
|
3710
|
+
"required": [
|
|
3711
|
+
"run_id",
|
|
3712
|
+
"reason",
|
|
3713
|
+
"by"
|
|
3714
|
+
],
|
|
3715
|
+
"description": "The signer deleted the retained content of a run of this tenant (format 1.1; content_erase or retention); the run's records are unchanged.",
|
|
3716
|
+
"properties": {
|
|
3717
|
+
"run_id": {
|
|
3718
|
+
"type": "string",
|
|
3719
|
+
"maxLength": 128
|
|
3720
|
+
},
|
|
3721
|
+
"reason": {
|
|
3722
|
+
"type": "string",
|
|
3723
|
+
"maxLength": 1024
|
|
3724
|
+
},
|
|
3725
|
+
"by": {
|
|
3726
|
+
"type": "string",
|
|
3727
|
+
"maxLength": 256
|
|
3728
|
+
}
|
|
3729
|
+
}
|
|
3730
|
+
},
|
|
3731
|
+
"why_finding": {
|
|
3732
|
+
"type": "object",
|
|
3733
|
+
"additionalProperties": false,
|
|
3734
|
+
"required": [
|
|
3735
|
+
"target",
|
|
3736
|
+
"intervention",
|
|
3737
|
+
"n",
|
|
3738
|
+
"p_with",
|
|
3739
|
+
"p_without",
|
|
3740
|
+
"effect",
|
|
3741
|
+
"interval",
|
|
3742
|
+
"verdict",
|
|
3743
|
+
"replay_runs",
|
|
3744
|
+
"models",
|
|
3745
|
+
"rung",
|
|
3746
|
+
"off_tape",
|
|
3747
|
+
"investigation",
|
|
3748
|
+
"looks",
|
|
3749
|
+
"family",
|
|
3750
|
+
"min_effect",
|
|
3751
|
+
"applied",
|
|
3752
|
+
"stopped"
|
|
3753
|
+
],
|
|
3754
|
+
"description": "A finished tracekit why test (format 1.1; why_finding), written in a findings run about the run it analyses: how often the target happened in the control arm (p_with) and with the intervention (p_without) over n paired replays, the interval and verdict with what they were decided on (looks: the sequential test's planned looks, family: the tests corrected for together, min_effect, applied: whether the intervention matched anything, stopped: why the test ended), every replay run with its arm and outcome, and the replay runs of the investigation it does not count (uncounted: the surrogate's ranking calls, arms a budget stop abandoned). rung 1: one recorded model call re-sent; rung 2: the agent loop re-simulated from the recorded run.",
|
|
3755
|
+
"properties": {
|
|
3756
|
+
"target": {
|
|
3757
|
+
"type": "string",
|
|
3758
|
+
"maxLength": 1024
|
|
3759
|
+
},
|
|
3760
|
+
"intervention": {
|
|
3761
|
+
"type": "string",
|
|
3762
|
+
"maxLength": 1024
|
|
3763
|
+
},
|
|
3764
|
+
"n": {
|
|
3765
|
+
"type": "integer",
|
|
3766
|
+
"minimum": 0,
|
|
3767
|
+
"maximum": 9007199254740991
|
|
3768
|
+
},
|
|
3769
|
+
"p_with": {
|
|
3770
|
+
"type": "number",
|
|
3771
|
+
"minimum": 0,
|
|
3772
|
+
"maximum": 1
|
|
3773
|
+
},
|
|
3774
|
+
"p_without": {
|
|
3775
|
+
"type": "number",
|
|
3776
|
+
"minimum": 0,
|
|
3777
|
+
"maximum": 1
|
|
3778
|
+
},
|
|
3779
|
+
"effect": {
|
|
3780
|
+
"type": "number",
|
|
3781
|
+
"minimum": -1,
|
|
3782
|
+
"maximum": 1
|
|
3783
|
+
},
|
|
3784
|
+
"interval": {
|
|
3785
|
+
"type": "array",
|
|
3786
|
+
"minItems": 2,
|
|
3787
|
+
"maxItems": 2,
|
|
3788
|
+
"items": {
|
|
3789
|
+
"type": "number",
|
|
3790
|
+
"minimum": -1,
|
|
3791
|
+
"maximum": 1
|
|
3792
|
+
}
|
|
3793
|
+
},
|
|
3794
|
+
"verdict": {
|
|
3795
|
+
"enum": [
|
|
3796
|
+
"causal",
|
|
3797
|
+
"suppressive",
|
|
3798
|
+
"ruled-out",
|
|
3799
|
+
"inconclusive",
|
|
3800
|
+
"not-applied"
|
|
3801
|
+
]
|
|
3802
|
+
},
|
|
3803
|
+
"replay_runs": {
|
|
3804
|
+
"type": "array",
|
|
3805
|
+
"maxItems": 4096,
|
|
3806
|
+
"items": {
|
|
3807
|
+
"type": "object",
|
|
3808
|
+
"additionalProperties": false,
|
|
3809
|
+
"required": [
|
|
3810
|
+
"run_id",
|
|
3811
|
+
"arm",
|
|
3812
|
+
"hit"
|
|
3813
|
+
],
|
|
3814
|
+
"properties": {
|
|
3815
|
+
"run_id": {
|
|
3816
|
+
"$ref": "#/$defs/id"
|
|
3817
|
+
},
|
|
3818
|
+
"arm": {
|
|
3819
|
+
"enum": [
|
|
3820
|
+
"control",
|
|
3821
|
+
"ablated"
|
|
3822
|
+
]
|
|
3823
|
+
},
|
|
3824
|
+
"hit": {
|
|
3825
|
+
"type": "boolean"
|
|
3826
|
+
}
|
|
3827
|
+
}
|
|
3828
|
+
}
|
|
3829
|
+
},
|
|
3830
|
+
"models": {
|
|
3831
|
+
"type": "array",
|
|
3832
|
+
"maxItems": 32,
|
|
3833
|
+
"items": {
|
|
3834
|
+
"type": "string",
|
|
3835
|
+
"maxLength": 128
|
|
3836
|
+
}
|
|
3837
|
+
},
|
|
3838
|
+
"rung": {
|
|
3839
|
+
"enum": [
|
|
3840
|
+
1,
|
|
3841
|
+
2
|
|
3842
|
+
]
|
|
3843
|
+
},
|
|
3844
|
+
"off_tape": {
|
|
3845
|
+
"type": "integer",
|
|
3846
|
+
"minimum": 0,
|
|
3847
|
+
"maximum": 9007199254740991
|
|
3848
|
+
},
|
|
3849
|
+
"investigation": {
|
|
3850
|
+
"$ref": "#/$defs/id"
|
|
3851
|
+
},
|
|
3852
|
+
"looks": {
|
|
3853
|
+
"type": "integer",
|
|
3854
|
+
"minimum": 1,
|
|
3855
|
+
"maximum": 4096
|
|
3856
|
+
},
|
|
3857
|
+
"family": {
|
|
3858
|
+
"type": "integer",
|
|
3859
|
+
"minimum": 1,
|
|
3860
|
+
"maximum": 4096
|
|
3861
|
+
},
|
|
3862
|
+
"min_effect": {
|
|
3863
|
+
"type": "number",
|
|
3864
|
+
"minimum": 0,
|
|
3865
|
+
"maximum": 1
|
|
3866
|
+
},
|
|
3867
|
+
"applied": {
|
|
3868
|
+
"type": "boolean"
|
|
3869
|
+
},
|
|
3870
|
+
"stopped": {
|
|
3871
|
+
"enum": [
|
|
3872
|
+
"decisive",
|
|
3873
|
+
"futility",
|
|
3874
|
+
"n_max",
|
|
3875
|
+
"budget"
|
|
3876
|
+
]
|
|
3877
|
+
},
|
|
3878
|
+
"uncounted": {
|
|
3879
|
+
"type": "array",
|
|
3880
|
+
"maxItems": 4096,
|
|
3881
|
+
"items": {
|
|
3882
|
+
"type": "object",
|
|
3883
|
+
"additionalProperties": false,
|
|
3884
|
+
"required": [
|
|
3885
|
+
"run_id",
|
|
3886
|
+
"reason"
|
|
3887
|
+
],
|
|
3888
|
+
"properties": {
|
|
3889
|
+
"run_id": {
|
|
3890
|
+
"$ref": "#/$defs/id"
|
|
3891
|
+
},
|
|
3892
|
+
"reason": {
|
|
3893
|
+
"enum": [
|
|
3894
|
+
"ranking",
|
|
3895
|
+
"budget"
|
|
3896
|
+
]
|
|
3897
|
+
}
|
|
3898
|
+
}
|
|
3899
|
+
}
|
|
3900
|
+
}
|
|
3901
|
+
}
|
|
3902
|
+
},
|
|
3903
|
+
"incident_opened": {
|
|
3904
|
+
"type": "object",
|
|
3905
|
+
"additionalProperties": false,
|
|
3906
|
+
"required": [
|
|
3907
|
+
"incident_id",
|
|
3908
|
+
"trigger",
|
|
3909
|
+
"rule_ids",
|
|
3910
|
+
"scope",
|
|
3911
|
+
"cites",
|
|
3912
|
+
"mode",
|
|
3913
|
+
"actions",
|
|
3914
|
+
"would"
|
|
3915
|
+
],
|
|
3916
|
+
"description": "format 1.2: a trigger of the policy's detection fired (a sequence completed, a limit was exceeded, or a respond trigger), an operator held or quarantined a run (trigger operator), or the detector could not vouch for a decision under an enforced response (detector_unavailable); one open incident per scope, trigger and rule, later matches are incident.updated. mode shadow: no action taken, `would` the configured one; mode enforce: `actions` the ones taken (none while the response engine is paused: then `would` and `reason` say so)",
|
|
3917
|
+
"properties": {
|
|
3918
|
+
"incident_id": {
|
|
3919
|
+
"$ref": "#/$defs/id"
|
|
3920
|
+
},
|
|
3921
|
+
"trigger": {
|
|
3922
|
+
"enum": [
|
|
3923
|
+
"sequence",
|
|
3924
|
+
"limit",
|
|
3925
|
+
"executed_against_policy",
|
|
3926
|
+
"denied_calls",
|
|
3927
|
+
"provenance",
|
|
3928
|
+
"class_mismatch",
|
|
3929
|
+
"refusal_burst",
|
|
3930
|
+
"tamper",
|
|
3931
|
+
"operator",
|
|
3932
|
+
"detector_unavailable",
|
|
3933
|
+
"unexplained_effect"
|
|
3934
|
+
]
|
|
3935
|
+
},
|
|
3936
|
+
"rule_ids": {
|
|
3937
|
+
"type": "array",
|
|
3938
|
+
"maxItems": 1024,
|
|
3939
|
+
"items": {
|
|
3940
|
+
"type": "string",
|
|
3941
|
+
"maxLength": 256
|
|
3942
|
+
}
|
|
3943
|
+
},
|
|
3944
|
+
"scope": {
|
|
3945
|
+
"type": "object",
|
|
3946
|
+
"additionalProperties": false,
|
|
3947
|
+
"required": [
|
|
3948
|
+
"kind",
|
|
3949
|
+
"id"
|
|
3950
|
+
],
|
|
3951
|
+
"properties": {
|
|
3952
|
+
"kind": {
|
|
3953
|
+
"enum": [
|
|
3954
|
+
"run",
|
|
3955
|
+
"session",
|
|
3956
|
+
"owner",
|
|
3957
|
+
"principal"
|
|
3958
|
+
]
|
|
3959
|
+
},
|
|
3960
|
+
"id": {
|
|
3961
|
+
"type": "string",
|
|
3962
|
+
"maxLength": 256
|
|
3963
|
+
}
|
|
3964
|
+
}
|
|
3965
|
+
},
|
|
3966
|
+
"cites": {
|
|
3967
|
+
"type": "array",
|
|
3968
|
+
"maxItems": 64,
|
|
3969
|
+
"items": {
|
|
3970
|
+
"type": "object",
|
|
3971
|
+
"additionalProperties": false,
|
|
3972
|
+
"required": [
|
|
3973
|
+
"run_id",
|
|
3974
|
+
"run_seq"
|
|
3975
|
+
],
|
|
3976
|
+
"properties": {
|
|
3977
|
+
"run_id": {
|
|
3978
|
+
"type": "string",
|
|
3979
|
+
"minLength": 1,
|
|
3980
|
+
"maxLength": 200
|
|
3981
|
+
},
|
|
3982
|
+
"run_seq": {
|
|
3983
|
+
"type": "integer",
|
|
3984
|
+
"minimum": 0
|
|
3985
|
+
}
|
|
3986
|
+
}
|
|
3987
|
+
},
|
|
3988
|
+
"description": "the records that make up the match"
|
|
3989
|
+
},
|
|
3990
|
+
"mode": {
|
|
3991
|
+
"enum": [
|
|
3992
|
+
"shadow",
|
|
3993
|
+
"enforce"
|
|
3994
|
+
]
|
|
3995
|
+
},
|
|
3996
|
+
"actions": {
|
|
3997
|
+
"type": "array",
|
|
3998
|
+
"maxItems": 3,
|
|
3999
|
+
"items": {
|
|
4000
|
+
"enum": [
|
|
4001
|
+
"notify",
|
|
4002
|
+
"hold",
|
|
4003
|
+
"quarantine"
|
|
4004
|
+
]
|
|
4005
|
+
}
|
|
4006
|
+
},
|
|
4007
|
+
"would": {
|
|
4008
|
+
"type": "array",
|
|
4009
|
+
"maxItems": 4,
|
|
4010
|
+
"items": {
|
|
4011
|
+
"enum": [
|
|
4012
|
+
"notify",
|
|
4013
|
+
"hold",
|
|
4014
|
+
"quarantine",
|
|
4015
|
+
"suspend"
|
|
4016
|
+
]
|
|
4017
|
+
}
|
|
4018
|
+
},
|
|
4019
|
+
"reason": {
|
|
4020
|
+
"type": "string",
|
|
4021
|
+
"maxLength": 1024,
|
|
4022
|
+
"description": "why the actions differ from the configured one (paused, no person approvers), or an operator's reason"
|
|
4023
|
+
},
|
|
4024
|
+
"in_flight": {
|
|
4025
|
+
"type": "array",
|
|
4026
|
+
"maxItems": 1024,
|
|
4027
|
+
"description": "format 1.2: calls allowed (or approved and consumed) and not completed when the response took effect: they may complete after it",
|
|
4028
|
+
"items": {
|
|
4029
|
+
"type": "object",
|
|
4030
|
+
"additionalProperties": false,
|
|
4031
|
+
"required": [
|
|
4032
|
+
"run_id",
|
|
4033
|
+
"tool_call_id",
|
|
4034
|
+
"decision_id"
|
|
4035
|
+
],
|
|
4036
|
+
"properties": {
|
|
4037
|
+
"run_id": {
|
|
4038
|
+
"type": "string",
|
|
4039
|
+
"minLength": 1,
|
|
4040
|
+
"maxLength": 200
|
|
4041
|
+
},
|
|
4042
|
+
"tool_call_id": {
|
|
4043
|
+
"$ref": "#/$defs/id"
|
|
4044
|
+
},
|
|
4045
|
+
"decision_id": {
|
|
4046
|
+
"$ref": "#/$defs/id"
|
|
4047
|
+
}
|
|
4048
|
+
}
|
|
4049
|
+
}
|
|
4050
|
+
}
|
|
4051
|
+
}
|
|
4052
|
+
},
|
|
4053
|
+
"incident_updated": {
|
|
4054
|
+
"type": "object",
|
|
4055
|
+
"additionalProperties": false,
|
|
4056
|
+
"required": [
|
|
4057
|
+
"incident_id",
|
|
4058
|
+
"cites"
|
|
4059
|
+
],
|
|
4060
|
+
"description": "format 1.2: another match of an open incident (at most one per window of its trigger), written in the run whose record matched",
|
|
4061
|
+
"properties": {
|
|
4062
|
+
"incident_id": {
|
|
4063
|
+
"$ref": "#/$defs/id"
|
|
4064
|
+
},
|
|
4065
|
+
"cites": {
|
|
4066
|
+
"type": "array",
|
|
4067
|
+
"maxItems": 64,
|
|
4068
|
+
"items": {
|
|
4069
|
+
"type": "object",
|
|
4070
|
+
"additionalProperties": false,
|
|
4071
|
+
"required": [
|
|
4072
|
+
"run_id",
|
|
4073
|
+
"run_seq"
|
|
4074
|
+
],
|
|
4075
|
+
"properties": {
|
|
4076
|
+
"run_id": {
|
|
4077
|
+
"type": "string",
|
|
4078
|
+
"minLength": 1,
|
|
4079
|
+
"maxLength": 200
|
|
4080
|
+
},
|
|
4081
|
+
"run_seq": {
|
|
4082
|
+
"type": "integer",
|
|
4083
|
+
"minimum": 0
|
|
4084
|
+
}
|
|
4085
|
+
}
|
|
4086
|
+
}
|
|
4087
|
+
}
|
|
4088
|
+
}
|
|
4089
|
+
},
|
|
4090
|
+
"incident_capped": {
|
|
4091
|
+
"type": "object",
|
|
4092
|
+
"additionalProperties": false,
|
|
4093
|
+
"required": [
|
|
4094
|
+
"cap",
|
|
4095
|
+
"max",
|
|
4096
|
+
"trigger",
|
|
4097
|
+
"reason"
|
|
4098
|
+
],
|
|
4099
|
+
"description": "format 1.2: a cap on opened incidents was reached: the run's per trigger (cap run), or per minute the tenant's or one run's share of it (cap tenant); the incidents after it are not written",
|
|
4100
|
+
"properties": {
|
|
4101
|
+
"cap": {
|
|
4102
|
+
"enum": [
|
|
4103
|
+
"run",
|
|
4104
|
+
"tenant"
|
|
4105
|
+
]
|
|
4106
|
+
},
|
|
4107
|
+
"trigger": {
|
|
4108
|
+
"enum": [
|
|
4109
|
+
"sequence",
|
|
4110
|
+
"limit",
|
|
4111
|
+
"executed_against_policy",
|
|
4112
|
+
"denied_calls",
|
|
4113
|
+
"provenance",
|
|
4114
|
+
"class_mismatch",
|
|
4115
|
+
"refusal_burst",
|
|
4116
|
+
"tamper",
|
|
4117
|
+
"operator",
|
|
4118
|
+
"detector_unavailable",
|
|
4119
|
+
"unexplained_effect"
|
|
4120
|
+
],
|
|
4121
|
+
"description": "the trigger of the first incident not written"
|
|
4122
|
+
},
|
|
4123
|
+
"max": {
|
|
4124
|
+
"type": "integer",
|
|
4125
|
+
"minimum": 1
|
|
4126
|
+
},
|
|
4127
|
+
"reason": {
|
|
4128
|
+
"type": "string",
|
|
4129
|
+
"maxLength": 512
|
|
4130
|
+
}
|
|
4131
|
+
}
|
|
4132
|
+
},
|
|
4133
|
+
"run_held": {
|
|
4134
|
+
"type": "object",
|
|
4135
|
+
"additionalProperties": false,
|
|
4136
|
+
"required": [
|
|
4137
|
+
"incident_id",
|
|
4138
|
+
"scope",
|
|
4139
|
+
"by",
|
|
4140
|
+
"reason"
|
|
4141
|
+
],
|
|
4142
|
+
"description": "format 1.2: the run is held: every further call is asked of a person (TK-HOLD) and its live approvals expired; written in each run the incident's scope reaches",
|
|
4143
|
+
"properties": {
|
|
4144
|
+
"incident_id": {
|
|
4145
|
+
"$ref": "#/$defs/id"
|
|
4146
|
+
},
|
|
4147
|
+
"scope": {
|
|
4148
|
+
"type": "object",
|
|
4149
|
+
"additionalProperties": false,
|
|
4150
|
+
"required": [
|
|
4151
|
+
"kind",
|
|
4152
|
+
"id"
|
|
4153
|
+
],
|
|
4154
|
+
"properties": {
|
|
4155
|
+
"kind": {
|
|
4156
|
+
"enum": [
|
|
4157
|
+
"run",
|
|
4158
|
+
"session",
|
|
4159
|
+
"owner",
|
|
4160
|
+
"principal"
|
|
4161
|
+
]
|
|
4162
|
+
},
|
|
4163
|
+
"id": {
|
|
4164
|
+
"type": "string",
|
|
4165
|
+
"maxLength": 256
|
|
4166
|
+
}
|
|
4167
|
+
}
|
|
4168
|
+
},
|
|
4169
|
+
"by": {
|
|
4170
|
+
"type": "string",
|
|
4171
|
+
"maxLength": 256,
|
|
4172
|
+
"description": "signer, or the operator's identity"
|
|
4173
|
+
},
|
|
4174
|
+
"reason": {
|
|
4175
|
+
"type": "string",
|
|
4176
|
+
"maxLength": 1024
|
|
4177
|
+
},
|
|
4178
|
+
"in_flight": {
|
|
4179
|
+
"type": "array",
|
|
4180
|
+
"maxItems": 1024,
|
|
4181
|
+
"description": "format 1.2: calls allowed (or approved and consumed) and not completed when the response took effect: they may complete after it",
|
|
4182
|
+
"items": {
|
|
4183
|
+
"type": "object",
|
|
4184
|
+
"additionalProperties": false,
|
|
4185
|
+
"required": [
|
|
4186
|
+
"run_id",
|
|
4187
|
+
"tool_call_id",
|
|
4188
|
+
"decision_id"
|
|
4189
|
+
],
|
|
4190
|
+
"properties": {
|
|
4191
|
+
"run_id": {
|
|
4192
|
+
"type": "string",
|
|
4193
|
+
"minLength": 1,
|
|
4194
|
+
"maxLength": 200
|
|
4195
|
+
},
|
|
4196
|
+
"tool_call_id": {
|
|
4197
|
+
"$ref": "#/$defs/id"
|
|
4198
|
+
},
|
|
4199
|
+
"decision_id": {
|
|
4200
|
+
"$ref": "#/$defs/id"
|
|
4201
|
+
}
|
|
4202
|
+
}
|
|
4203
|
+
}
|
|
4204
|
+
},
|
|
4205
|
+
"inherited": {
|
|
4206
|
+
"const": true,
|
|
4207
|
+
"description": "a new run of a held owner and principal (or of a held parent run) took the hold over"
|
|
4208
|
+
},
|
|
4209
|
+
"inherit_until": {
|
|
4210
|
+
"type": "string",
|
|
4211
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
4212
|
+
"maxLength": 27,
|
|
4213
|
+
"description": "until when new runs of this run's owner and attested principal inherit the hold"
|
|
4214
|
+
}
|
|
4215
|
+
}
|
|
4216
|
+
},
|
|
4217
|
+
"run_resumed": {
|
|
4218
|
+
"type": "object",
|
|
4219
|
+
"additionalProperties": false,
|
|
4220
|
+
"required": [
|
|
4221
|
+
"incident_id",
|
|
4222
|
+
"by",
|
|
4223
|
+
"person",
|
|
4224
|
+
"held_by"
|
|
4225
|
+
],
|
|
4226
|
+
"description": "format 1.2: a person ended the hold of one incident on the run (run_resume, which ends each, or incident_resolve of that incident); held_by: the incidents that still hold it",
|
|
4227
|
+
"properties": {
|
|
4228
|
+
"incident_id": {
|
|
4229
|
+
"$ref": "#/$defs/id"
|
|
4230
|
+
},
|
|
4231
|
+
"by": {
|
|
4232
|
+
"type": "string",
|
|
4233
|
+
"maxLength": 256
|
|
4234
|
+
},
|
|
4235
|
+
"person": {
|
|
4236
|
+
"type": "string",
|
|
4237
|
+
"maxLength": 256
|
|
4238
|
+
},
|
|
4239
|
+
"reason": {
|
|
4240
|
+
"type": "string",
|
|
4241
|
+
"maxLength": 1024
|
|
4242
|
+
},
|
|
4243
|
+
"break_glass": {
|
|
4244
|
+
"const": true
|
|
4245
|
+
},
|
|
4246
|
+
"held_by": {
|
|
4247
|
+
"type": "array",
|
|
4248
|
+
"maxItems": 1024,
|
|
4249
|
+
"items": {
|
|
4250
|
+
"$ref": "#/$defs/id"
|
|
4251
|
+
}
|
|
4252
|
+
}
|
|
4253
|
+
}
|
|
4254
|
+
},
|
|
4255
|
+
"run_quarantined": {
|
|
4256
|
+
"type": "object",
|
|
4257
|
+
"additionalProperties": false,
|
|
4258
|
+
"required": [
|
|
4259
|
+
"incident_id",
|
|
4260
|
+
"scope",
|
|
4261
|
+
"by",
|
|
4262
|
+
"reason"
|
|
4263
|
+
],
|
|
4264
|
+
"description": "format 1.2: the run is quarantined for good: decisions are deny (TK-QUARANTINE), approvals are refused, a gateway forwards no more model requests",
|
|
4265
|
+
"properties": {
|
|
4266
|
+
"incident_id": {
|
|
4267
|
+
"$ref": "#/$defs/id"
|
|
4268
|
+
},
|
|
4269
|
+
"scope": {
|
|
4270
|
+
"type": "object",
|
|
4271
|
+
"additionalProperties": false,
|
|
4272
|
+
"required": [
|
|
4273
|
+
"kind",
|
|
4274
|
+
"id"
|
|
4275
|
+
],
|
|
4276
|
+
"properties": {
|
|
4277
|
+
"kind": {
|
|
4278
|
+
"enum": [
|
|
4279
|
+
"run",
|
|
4280
|
+
"session",
|
|
4281
|
+
"owner",
|
|
4282
|
+
"principal"
|
|
4283
|
+
]
|
|
4284
|
+
},
|
|
4285
|
+
"id": {
|
|
4286
|
+
"type": "string",
|
|
4287
|
+
"maxLength": 256
|
|
4288
|
+
}
|
|
4289
|
+
}
|
|
4290
|
+
},
|
|
4291
|
+
"by": {
|
|
4292
|
+
"type": "string",
|
|
4293
|
+
"maxLength": 256
|
|
4294
|
+
},
|
|
4295
|
+
"reason": {
|
|
4296
|
+
"type": "string",
|
|
4297
|
+
"maxLength": 1024
|
|
4298
|
+
},
|
|
4299
|
+
"in_flight": {
|
|
4300
|
+
"type": "array",
|
|
4301
|
+
"maxItems": 1024,
|
|
4302
|
+
"description": "format 1.2: calls allowed (or approved and consumed) and not completed when the response took effect: they may complete after it",
|
|
4303
|
+
"items": {
|
|
4304
|
+
"type": "object",
|
|
4305
|
+
"additionalProperties": false,
|
|
4306
|
+
"required": [
|
|
4307
|
+
"run_id",
|
|
4308
|
+
"tool_call_id",
|
|
4309
|
+
"decision_id"
|
|
4310
|
+
],
|
|
4311
|
+
"properties": {
|
|
4312
|
+
"run_id": {
|
|
4313
|
+
"type": "string",
|
|
4314
|
+
"minLength": 1,
|
|
4315
|
+
"maxLength": 200
|
|
4316
|
+
},
|
|
4317
|
+
"tool_call_id": {
|
|
4318
|
+
"$ref": "#/$defs/id"
|
|
4319
|
+
},
|
|
4320
|
+
"decision_id": {
|
|
4321
|
+
"$ref": "#/$defs/id"
|
|
4322
|
+
}
|
|
4323
|
+
}
|
|
4324
|
+
}
|
|
4325
|
+
},
|
|
4326
|
+
"inherited": {
|
|
4327
|
+
"const": true
|
|
4328
|
+
},
|
|
4329
|
+
"inherit_until": {
|
|
4330
|
+
"type": "string",
|
|
4331
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
4332
|
+
"maxLength": 27,
|
|
4333
|
+
"description": "until when new runs of this run's owner and attested principal inherit the hold"
|
|
4334
|
+
}
|
|
4335
|
+
}
|
|
4336
|
+
},
|
|
4337
|
+
"incident_resolved": {
|
|
4338
|
+
"type": "object",
|
|
4339
|
+
"additionalProperties": false,
|
|
4340
|
+
"required": [
|
|
4341
|
+
"incident_id",
|
|
4342
|
+
"by",
|
|
4343
|
+
"person"
|
|
4344
|
+
],
|
|
4345
|
+
"description": "format 1.2: a person resolved the incident (in the tenant's signer run): its held runs resume, quarantines stay",
|
|
4346
|
+
"properties": {
|
|
4347
|
+
"incident_id": {
|
|
4348
|
+
"$ref": "#/$defs/id"
|
|
4349
|
+
},
|
|
4350
|
+
"by": {
|
|
4351
|
+
"type": "string",
|
|
4352
|
+
"maxLength": 256
|
|
4353
|
+
},
|
|
4354
|
+
"person": {
|
|
4355
|
+
"type": "string",
|
|
4356
|
+
"maxLength": 256
|
|
4357
|
+
},
|
|
4358
|
+
"reason": {
|
|
4359
|
+
"type": "string",
|
|
4360
|
+
"maxLength": 1024
|
|
4361
|
+
},
|
|
4362
|
+
"break_glass": {
|
|
4363
|
+
"const": true
|
|
4364
|
+
},
|
|
4365
|
+
"resumed": {
|
|
4366
|
+
"type": "array",
|
|
4367
|
+
"maxItems": 4096,
|
|
4368
|
+
"items": {
|
|
4369
|
+
"type": "string",
|
|
4370
|
+
"maxLength": 200
|
|
4371
|
+
}
|
|
4372
|
+
}
|
|
4373
|
+
}
|
|
4374
|
+
},
|
|
4375
|
+
"incident_response": {
|
|
4376
|
+
"type": "object",
|
|
4377
|
+
"additionalProperties": false,
|
|
4378
|
+
"required": [
|
|
4379
|
+
"enabled",
|
|
4380
|
+
"by"
|
|
4381
|
+
],
|
|
4382
|
+
"description": "format 1.2: an operator paused (enabled false) or resumed the tenant's response engine; detection keeps recording",
|
|
4383
|
+
"properties": {
|
|
4384
|
+
"enabled": {
|
|
4385
|
+
"type": "boolean"
|
|
4386
|
+
},
|
|
4387
|
+
"by": {
|
|
4388
|
+
"type": "string",
|
|
4389
|
+
"maxLength": 256
|
|
4390
|
+
},
|
|
4391
|
+
"reason": {
|
|
4392
|
+
"type": "string",
|
|
4393
|
+
"maxLength": 1024
|
|
4394
|
+
}
|
|
4395
|
+
}
|
|
4396
|
+
},
|
|
4397
|
+
"identity_suspension": {
|
|
4398
|
+
"type": "object",
|
|
4399
|
+
"additionalProperties": false,
|
|
4400
|
+
"required": [
|
|
4401
|
+
"identity",
|
|
4402
|
+
"state",
|
|
4403
|
+
"by"
|
|
4404
|
+
],
|
|
4405
|
+
"description": "format 1.2: an identity of the tenant is suspended by an operator (written by the signer that changed the shared list), enforced (each signer that starts enforcing an entry) or lifted",
|
|
4406
|
+
"properties": {
|
|
4407
|
+
"identity": {
|
|
4408
|
+
"type": "string",
|
|
4409
|
+
"maxLength": 256
|
|
4410
|
+
},
|
|
4411
|
+
"state": {
|
|
4412
|
+
"enum": [
|
|
4413
|
+
"suspended",
|
|
4414
|
+
"enforced",
|
|
4415
|
+
"lifted"
|
|
4416
|
+
]
|
|
4417
|
+
},
|
|
4418
|
+
"by": {
|
|
4419
|
+
"type": "string",
|
|
4420
|
+
"maxLength": 256
|
|
4421
|
+
},
|
|
4422
|
+
"reason": {
|
|
4423
|
+
"type": "string",
|
|
4424
|
+
"maxLength": 1024
|
|
4425
|
+
}
|
|
4426
|
+
}
|
|
4427
|
+
},
|
|
4428
|
+
"effect_observed": {
|
|
4429
|
+
"type": "object",
|
|
4430
|
+
"additionalProperties": false,
|
|
4431
|
+
"required": [
|
|
4432
|
+
"observer",
|
|
4433
|
+
"kind",
|
|
4434
|
+
"host",
|
|
4435
|
+
"port",
|
|
4436
|
+
"bytes_out",
|
|
4437
|
+
"bytes_in",
|
|
4438
|
+
"connections",
|
|
4439
|
+
"first_ts",
|
|
4440
|
+
"last_ts",
|
|
4441
|
+
"attribution"
|
|
4442
|
+
],
|
|
4443
|
+
"description": "format 1.2: network traffic an egress observer outside the agent saw for the run (tracekit.egress), aggregated per host, port and minute; signer-written",
|
|
4444
|
+
"properties": {
|
|
4445
|
+
"observer": {
|
|
4446
|
+
"type": "string",
|
|
4447
|
+
"maxLength": 256,
|
|
4448
|
+
"description": "the egress observer's signer identity (scheme:subject)"
|
|
4449
|
+
},
|
|
4450
|
+
"kind": {
|
|
4451
|
+
"enum": [
|
|
4452
|
+
"net"
|
|
4453
|
+
]
|
|
4454
|
+
},
|
|
4455
|
+
"host": {
|
|
4456
|
+
"type": "string",
|
|
4457
|
+
"minLength": 1,
|
|
4458
|
+
"maxLength": 253
|
|
4459
|
+
},
|
|
4460
|
+
"port": {
|
|
4461
|
+
"type": "integer",
|
|
4462
|
+
"minimum": 1,
|
|
4463
|
+
"maximum": 65535
|
|
4464
|
+
},
|
|
4465
|
+
"bytes_out": {
|
|
4466
|
+
"type": "integer",
|
|
4467
|
+
"minimum": 0,
|
|
4468
|
+
"maximum": 9007199254740991
|
|
4469
|
+
},
|
|
4470
|
+
"bytes_in": {
|
|
4471
|
+
"type": "integer",
|
|
4472
|
+
"minimum": 0,
|
|
4473
|
+
"maximum": 9007199254740991
|
|
4474
|
+
},
|
|
4475
|
+
"connections": {
|
|
4476
|
+
"type": "integer",
|
|
4477
|
+
"minimum": 0,
|
|
4478
|
+
"maximum": 9007199254740991
|
|
4479
|
+
},
|
|
4480
|
+
"first_ts": {
|
|
4481
|
+
"type": "string",
|
|
4482
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
4483
|
+
"maxLength": 27
|
|
4484
|
+
},
|
|
4485
|
+
"last_ts": {
|
|
4486
|
+
"type": "string",
|
|
4487
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{6}Z$",
|
|
4488
|
+
"maxLength": 27
|
|
4489
|
+
},
|
|
4490
|
+
"attribution": {
|
|
4491
|
+
"enum": [
|
|
4492
|
+
"token",
|
|
4493
|
+
"identity"
|
|
4494
|
+
],
|
|
4495
|
+
"description": "token: the client presented the run's token; identity: the observer authenticated the run's owner and the signer picked that owner's latest open run"
|
|
4496
|
+
},
|
|
4497
|
+
"explained_by": {
|
|
4498
|
+
"enum": [
|
|
4499
|
+
"call",
|
|
4500
|
+
"explains"
|
|
4501
|
+
],
|
|
4502
|
+
"description": "what explains the host: a recorded http or model call to it, or the policy's explains; absent: unexplained (a reconcile.unexplained_effect follows)"
|
|
4503
|
+
}
|
|
4504
|
+
}
|
|
4505
|
+
},
|
|
4506
|
+
"reconcile_effect": {
|
|
4507
|
+
"type": "object",
|
|
4508
|
+
"additionalProperties": false,
|
|
4509
|
+
"required": [
|
|
4510
|
+
"layers",
|
|
4511
|
+
"observer",
|
|
4512
|
+
"kind",
|
|
4513
|
+
"host"
|
|
4514
|
+
],
|
|
4515
|
+
"description": "format 1.2: a host an observer saw the run reach that no record of the run explains",
|
|
4516
|
+
"properties": {
|
|
4517
|
+
"layers": {
|
|
4518
|
+
"type": "array",
|
|
4519
|
+
"maxItems": 6,
|
|
4520
|
+
"items": {
|
|
4521
|
+
"enum": [
|
|
4522
|
+
"L1",
|
|
4523
|
+
"L2",
|
|
4524
|
+
"L3",
|
|
4525
|
+
"L4",
|
|
4526
|
+
"L5",
|
|
4527
|
+
"L6"
|
|
4528
|
+
]
|
|
4529
|
+
}
|
|
4530
|
+
},
|
|
4531
|
+
"detail": {
|
|
4532
|
+
"type": "string",
|
|
4533
|
+
"maxLength": 1024
|
|
4534
|
+
},
|
|
4535
|
+
"observer": {
|
|
4536
|
+
"type": "string",
|
|
4537
|
+
"maxLength": 256,
|
|
4538
|
+
"description": "the egress observer's signer identity (scheme:subject)"
|
|
4539
|
+
},
|
|
4540
|
+
"kind": {
|
|
4541
|
+
"enum": [
|
|
4542
|
+
"net"
|
|
4543
|
+
]
|
|
4544
|
+
},
|
|
4545
|
+
"host": {
|
|
4546
|
+
"type": "string",
|
|
4547
|
+
"minLength": 1,
|
|
4548
|
+
"maxLength": 253
|
|
4549
|
+
},
|
|
4550
|
+
"port": {
|
|
4551
|
+
"type": "integer",
|
|
4552
|
+
"minimum": 1,
|
|
4553
|
+
"maximum": 65535
|
|
4554
|
+
}
|
|
4555
|
+
}
|
|
4556
|
+
},
|
|
4557
|
+
"coverage_class": {
|
|
4558
|
+
"type": "object",
|
|
4559
|
+
"additionalProperties": false,
|
|
4560
|
+
"required": [
|
|
4561
|
+
"status",
|
|
4562
|
+
"layers"
|
|
4563
|
+
],
|
|
4564
|
+
"properties": {
|
|
4565
|
+
"status": {
|
|
4566
|
+
"enum": [
|
|
4567
|
+
"enforced",
|
|
4568
|
+
"observed",
|
|
4569
|
+
"reported",
|
|
4570
|
+
"none"
|
|
4571
|
+
]
|
|
4572
|
+
},
|
|
4573
|
+
"layers": {
|
|
4574
|
+
"type": "array",
|
|
4575
|
+
"maxItems": 8,
|
|
4576
|
+
"items": {
|
|
4577
|
+
"type": "string",
|
|
4578
|
+
"maxLength": 32
|
|
4579
|
+
}
|
|
4580
|
+
},
|
|
4581
|
+
"asserted": {
|
|
4582
|
+
"const": true,
|
|
4583
|
+
"description": "the status rests on the operator's posture (signer.yaml), not on anything the signer measured"
|
|
4584
|
+
}
|
|
4585
|
+
}
|
|
4586
|
+
}
|
|
4587
|
+
}
|
|
4588
|
+
}
|