@awebai/oats 0.25.9 → 0.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/README.md +8 -6
  2. package/bin/oats.mjs +576 -1714
  3. package/capabilities/oats-authoring/oats-package.json +2 -2
  4. package/capabilities/oats-authoring/oats.json +2 -2
  5. package/capabilities/oats-authoring/skills/integration-authoring/SKILL.md +46 -25
  6. package/capabilities/oats-authoring/skills/soul-craft/SKILL.md +13 -6
  7. package/capabilities/oats-aweb/bin/oats-aweb.mjs +279 -93
  8. package/capabilities/oats-aweb/injects/aweb.md +7 -2
  9. package/capabilities/oats-aweb/lib/binding-wire.mjs +89 -13
  10. package/capabilities/oats-aweb/lib/captured-native.mjs +1 -1
  11. package/capabilities/oats-aweb/lib/grant-custody.mjs +38 -0
  12. package/capabilities/oats-aweb/oats.json +8 -4
  13. package/capabilities/oats-jira/bin/oats-jira.mjs +4 -4
  14. package/capabilities/oats-jira/oats.json +2 -2
  15. package/capabilities/oats-jira/skills/jira-tasks/SKILL.md +6 -3
  16. package/capabilities/oats-linear/bin/oats-linear-hook.mjs +6 -4
  17. package/capabilities/oats-linear/oats.json +2 -2
  18. package/capabilities/oats-linear/skills/linear-tasks/SKILL.md +6 -0
  19. package/capabilities/oats-review/oats.json +3 -2
  20. package/docs/capabilities.md +218 -47
  21. package/docs/capability-manifest.schema.json +13 -4
  22. package/docs/configuration.md +17 -5
  23. package/docs/conventions.md +16 -26
  24. package/docs/design/2026-09-08-expert-assisted-deployment-proposal.md +1 -1
  25. package/docs/design/2026-09-13-knowledge-and-memory-direction.md +3 -3
  26. package/docs/design/2026-09-14-portable-souls-and-git-workspaces.md +2 -2
  27. package/docs/design/2026-09-15-portable-souls-handoff.md +2 -2
  28. package/docs/design/2026-09-15-portable-souls-implementation.md +1 -1
  29. package/docs/design/2026-09-20-redesign-program-board.md +2 -2
  30. package/docs/design/2026-09-23-workspace-module-contracts.md +1 -1
  31. package/docs/design/2026-09-23-workspace-v2-implementation-plan.md +1 -1
  32. package/docs/design/2026-09-24-desktop-phase-f-boundary.md +34 -1
  33. package/docs/design/2026-09-24-phase-d-plan.md +57 -0
  34. package/docs/design/2026-09-25-teams-contract.md +226 -0
  35. package/docs/design/README.md +3 -3
  36. package/docs/design/launch-configurations.md +20 -16
  37. package/docs/design/operations-contract.md +27 -10
  38. package/docs/desktop-cli-api.md +537 -261
  39. package/docs/desktop-instance-start.md +1 -1
  40. package/docs/desktop.md +7 -13
  41. package/docs/execution-targets.md +16 -18
  42. package/docs/first-team.md +14 -17
  43. package/docs/implementation.md +28 -59
  44. package/docs/integrations.md +64 -33
  45. package/docs/knowledge-capability-authoring.md +1 -1
  46. package/docs/knowledge-reference/package-craft.md +10 -8
  47. package/docs/knowledge-theory.md +1 -1
  48. package/docs/knowledge.md +10 -11
  49. package/docs/layers.md +16 -17
  50. package/docs/oats-local.schema.json +29 -1
  51. package/docs/oats-membership.schema.json +5 -3
  52. package/docs/oats-package.schema.json +2 -2
  53. package/docs/oats-workspace.schema.json +1 -1
  54. package/docs/{official-marketplace.md → official-catalog.md} +15 -16
  55. package/docs/packages.md +75 -52
  56. package/docs/release-notes/v0.22.0.md +1 -1
  57. package/docs/release-notes/v0.23.1.md +1 -1
  58. package/docs/release-notes/v0.26.0.md +670 -0
  59. package/docs/schedules.md +48 -126
  60. package/docs/soul.schema.json +11 -4
  61. package/docs/souls-and-instances.md +56 -43
  62. package/docs/workspaces.md +80 -58
  63. package/injects/instance-boundary.md +1 -1
  64. package/injects/work-attached.md +1 -1
  65. package/injects/work-workspace.md +2 -2
  66. package/lib/{portable-files.mjs → bounded-read.mjs} +6 -6
  67. package/lib/{portable-values.mjs → canonical-json.mjs} +3 -12
  68. package/lib/capability-contract.mjs +110 -0
  69. package/lib/config-data.mjs +2 -2
  70. package/lib/core.mjs +700 -4824
  71. package/lib/digest.mjs +12 -0
  72. package/lib/instance-inspect.mjs +396 -0
  73. package/lib/instance-lifecycle.mjs +3 -4
  74. package/lib/instance-resolution.mjs +212 -26
  75. package/lib/instruction-composition.mjs +0 -20
  76. package/lib/materialize.mjs +6 -4
  77. package/lib/operator-dispatch.mjs +33 -13
  78. package/lib/packages.mjs +25 -190
  79. package/lib/provider-binding.mjs +4 -2
  80. package/lib/provider-reasons.mjs +3 -68
  81. package/lib/resolve.mjs +204 -68
  82. package/lib/schedule.mjs +97 -272
  83. package/lib/servers.mjs +13 -13
  84. package/lib/{portable-shape.mjs → shape.mjs} +4 -3
  85. package/lib/tree-copy.mjs +44 -0
  86. package/lib/workspace.mjs +125 -20
  87. package/package-catalog.json +6 -6
  88. package/package.json +1 -1
  89. package/skills/integration-authoring/SKILL.md +48 -40
  90. package/skills/oats-getting-started/SKILL.md +105 -110
  91. package/skills/oats-support/SKILL.md +2 -2
  92. package/skills/soul-craft/SKILL.md +13 -6
  93. package/bin/oats-pi-sdk-host.mjs +0 -17
  94. package/docs/2026-09-03-architecture-proposal.md +0 -642
  95. package/docs/artifact-approvals.schema.json +0 -7
  96. package/docs/captured-invocation-context.schema.json +0 -7
  97. package/docs/captured-resolution.schema.json +0 -7
  98. package/docs/design/package-engine-contract.md +0 -813
  99. package/docs/design/package-runtime-api.md +0 -588
  100. package/docs/desktop-succession.md +0 -57
  101. package/docs/execution-capsule.schema.json +0 -108
  102. package/docs/first-team-demo.md +0 -92
  103. package/docs/knowledge-migration.md +0 -147
  104. package/docs/migration-from-oas.md +0 -103
  105. package/docs/oats-config.schema.json +0 -172
  106. package/docs/oats-lock-v3.schema.json +0 -7
  107. package/docs/oats-lock.schema.json +0 -175
  108. package/docs/operating-team-migration.md +0 -470
  109. package/docs/portable.schema.json +0 -2512
  110. package/docs/provider-check-input.schema.json +0 -7
  111. package/docs/rebuild-to-v2.md +0 -511
  112. package/docs/workspace-adoption.md +0 -74
  113. package/injects/framework-workspace.md +0 -7
  114. package/injects/local-soul.md +0 -19
  115. package/injects/oats-portable.md +0 -20
  116. package/injects/oats.md +0 -11
  117. package/injects/portable-instance-boundary.md +0 -39
  118. package/injects/portable-work-directory.md +0 -29
  119. package/lib/artifact-approvals.mjs +0 -120
  120. package/lib/artifact-tree.mjs +0 -141
  121. package/lib/capability-artifacts.mjs +0 -179
  122. package/lib/capability-execution.mjs +0 -15
  123. package/lib/capability-inputs.mjs +0 -39
  124. package/lib/capability-provenance.mjs +0 -231
  125. package/lib/captured-action-shape.mjs +0 -21
  126. package/lib/captured-admission-shape.mjs +0 -20
  127. package/lib/captured-binding-file.mjs +0 -36
  128. package/lib/captured-dispatch.mjs +0 -66
  129. package/lib/captured-instance-index.mjs +0 -277
  130. package/lib/captured-invocation-context.mjs +0 -130
  131. package/lib/captured-launch-request.mjs +0 -66
  132. package/lib/captured-operation-process.mjs +0 -15
  133. package/lib/captured-pi-custody.mjs +0 -29
  134. package/lib/captured-pi-host.mjs +0 -167
  135. package/lib/captured-pi-outcome.mjs +0 -172
  136. package/lib/captured-resolutions.mjs +0 -275
  137. package/lib/captured-scaffold.mjs +0 -87
  138. package/lib/captured-selector.mjs +0 -28
  139. package/lib/captured-session-backend.mjs +0 -52
  140. package/lib/captured-source-receipt-file.mjs +0 -72
  141. package/lib/helper-injection-policy.mjs +0 -104
  142. package/lib/legacy-lock-codec.mjs +0 -106
  143. package/lib/manifest-settings.mjs +0 -84
  144. package/lib/package-closure.mjs +0 -48
  145. package/lib/package-materialization.mjs +0 -83
  146. package/lib/pi-sdk-host.mjs +0 -229
  147. package/lib/portable-artifacts.mjs +0 -115
  148. package/lib/portable-choices.mjs +0 -82
  149. package/lib/portable-composition.mjs +0 -136
  150. package/lib/portable-digest.mjs +0 -105
  151. package/lib/portable-identity.mjs +0 -40
  152. package/lib/portable-lock.mjs +0 -117
  153. package/lib/portable-onboarding-request.mjs +0 -49
  154. package/lib/portable-onboarding.mjs +0 -256
  155. package/lib/portable-package-preparation.mjs +0 -188
  156. package/lib/portable-policy.mjs +0 -44
  157. package/lib/portable-soul.mjs +0 -42
  158. package/lib/portable-state.mjs +0 -80
  159. package/lib/prepare-composition.mjs +0 -170
  160. package/lib/prepared-bindings.mjs +0 -92
  161. package/lib/prepared-resources.mjs +0 -127
  162. package/lib/provider-binding-broker.mjs +0 -65
  163. package/lib/provider-binding-wire.mjs +0 -116
  164. package/lib/readiness.mjs +0 -225
  165. package/lib/repository-observation.mjs +0 -226
  166. package/lib/resolution-shape.mjs +0 -393
  167. package/lib/schedule-capsule.mjs +0 -206
  168. package/lib/soul-constraints.mjs +0 -40
  169. package/lib/source-projection.mjs +0 -84
  170. package/lib/source-spec.mjs +0 -189
  171. package/lib/workspace-definition.mjs +0 -126
  172. package/lib/workspace-discovery.mjs +0 -146
  173. package/skills/oats/SKILL.md +0 -162
  174. package/skills/oats-config/SKILL.md +0 -164
  175. package/skills/oats-packages/SKILL.md +0 -184
  176. package/skills/oats-portable/SKILL.md +0 -115
  177. package/skills/oats-portable-artifacts/SKILL.md +0 -63
@@ -1,2512 +0,0 @@
1
- {
2
- "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://oats.dev/schemas/portable-v1.json",
4
- "title": "Portable OATS shared wire values v1",
5
- "description": "Structural schemas only. Strict bounded decoding, canonical source/digest identities, cross-reference equality, constraints, provenance, graph limits and filesystem verification remain mandatory runtime checks. Provider payloads remain opaque; schema acceptance grants no trust, enrollment or privacy guarantee.",
6
- "$defs": {
7
- "Hash": {
8
- "type": "string",
9
- "minLength": 1,
10
- "pattern": "^sha256-[a-f0-9]{64}$"
11
- },
12
- "RelativePath": {
13
- "type": "string",
14
- "minLength": 1,
15
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
16
- },
17
- "RootRelativePath": {
18
- "oneOf": [
19
- {
20
- "const": "."
21
- },
22
- {
23
- "type": "string",
24
- "minLength": 1,
25
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
26
- }
27
- ]
28
- },
29
- "CapabilityId": {
30
- "type": "string",
31
- "minLength": 1,
32
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
33
- },
34
- "TreeIntegrity": {
35
- "type": "object",
36
- "properties": {
37
- "format": {
38
- "const": "oats.tree-exec.v1"
39
- },
40
- "value": {
41
- "type": "string",
42
- "minLength": 1,
43
- "pattern": "^sha256-[a-f0-9]{64}$"
44
- }
45
- },
46
- "required": [
47
- "format",
48
- "value"
49
- ],
50
- "additionalProperties": false
51
- },
52
- "PackageIntegrity": {
53
- "type": "object",
54
- "properties": {
55
- "format": {
56
- "const": "oats.package-payload-exec.v1"
57
- },
58
- "value": {
59
- "type": "string",
60
- "minLength": 1,
61
- "pattern": "^sha256-[a-f0-9]{64}$"
62
- }
63
- },
64
- "required": [
65
- "format",
66
- "value"
67
- ],
68
- "additionalProperties": false
69
- },
70
- "ByteIntegrity": {
71
- "type": "object",
72
- "properties": {
73
- "format": {
74
- "const": "oats.bytes.v1"
75
- },
76
- "value": {
77
- "type": "string",
78
- "minLength": 1,
79
- "pattern": "^sha256-[a-f0-9]{64}$"
80
- }
81
- },
82
- "required": [
83
- "format",
84
- "value"
85
- ],
86
- "additionalProperties": false
87
- },
88
- "ResolutionRef": {
89
- "type": "object",
90
- "properties": {
91
- "schemaVersion": {
92
- "const": 1
93
- },
94
- "id": {
95
- "type": "string",
96
- "minLength": 1,
97
- "pattern": "^sha256-[a-f0-9]{64}$"
98
- }
99
- },
100
- "required": [
101
- "schemaVersion",
102
- "id"
103
- ],
104
- "additionalProperties": false
105
- },
106
- "RepositoryIdentity": {
107
- "oneOf": [
108
- {
109
- "type": "object",
110
- "properties": {
111
- "kind": {
112
- "const": "provider-repository"
113
- },
114
- "provider": {
115
- "type": "string",
116
- "minLength": 1,
117
- "pattern": "^[a-z][a-z0-9.-]*$"
118
- },
119
- "host": {
120
- "type": "string",
121
- "minLength": 1,
122
- "pattern": "^[a-z0-9](?:[a-z0-9.-]*[a-z0-9])?$"
123
- },
124
- "id": {
125
- "type": "string",
126
- "minLength": 1
127
- }
128
- },
129
- "required": [
130
- "kind",
131
- "provider",
132
- "host",
133
- "id"
134
- ],
135
- "additionalProperties": false
136
- },
137
- {
138
- "type": "object",
139
- "properties": {
140
- "kind": {
141
- "const": "canonical-remote"
142
- },
143
- "remote": {
144
- "type": "string",
145
- "minLength": 1,
146
- "pattern": "^git:.+$"
147
- }
148
- },
149
- "required": [
150
- "kind",
151
- "remote"
152
- ],
153
- "additionalProperties": false
154
- }
155
- ]
156
- },
157
- "SoulIdentity": {
158
- "oneOf": [
159
- {
160
- "type": "object",
161
- "properties": {
162
- "kind": {
163
- "const": "git-soul"
164
- },
165
- "repository": {
166
- "$ref": "#/$defs/RepositoryIdentity"
167
- },
168
- "exportPath": {
169
- "type": "string",
170
- "minLength": 1,
171
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
172
- }
173
- },
174
- "required": [
175
- "kind",
176
- "repository",
177
- "exportPath"
178
- ],
179
- "additionalProperties": false
180
- },
181
- {
182
- "type": "object",
183
- "properties": {
184
- "kind": {
185
- "const": "local-soul"
186
- },
187
- "source": {
188
- "type": "string",
189
- "minLength": 1,
190
- "pattern": "^path:/.*$"
191
- },
192
- "exportPath": {
193
- "oneOf": [
194
- {
195
- "const": "."
196
- },
197
- {
198
- "type": "string",
199
- "minLength": 1,
200
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
201
- }
202
- ]
203
- }
204
- },
205
- "required": [
206
- "kind",
207
- "source",
208
- "exportPath"
209
- ],
210
- "additionalProperties": false
211
- }
212
- ]
213
- },
214
- "WorkspaceIdentity": {
215
- "type": "object",
216
- "properties": {
217
- "repository": {
218
- "$ref": "#/$defs/RepositoryIdentity"
219
- },
220
- "path": {
221
- "const": "oats-workspace.yaml"
222
- }
223
- },
224
- "required": [
225
- "repository",
226
- "path"
227
- ],
228
- "additionalProperties": false
229
- },
230
- "CapabilityArtifactRef": {
231
- "type": "object",
232
- "properties": {
233
- "kind": {
234
- "const": "capability"
235
- },
236
- "capability": {
237
- "type": "string",
238
- "minLength": 1,
239
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
240
- },
241
- "integrity": {
242
- "$ref": "#/$defs/TreeIntegrity"
243
- }
244
- },
245
- "required": [
246
- "kind",
247
- "capability",
248
- "integrity"
249
- ],
250
- "additionalProperties": false
251
- },
252
- "SoulArtifactRef": {
253
- "type": "object",
254
- "properties": {
255
- "kind": {
256
- "const": "soul"
257
- },
258
- "identity": {
259
- "$ref": "#/$defs/SoulIdentity"
260
- },
261
- "integrity": {
262
- "$ref": "#/$defs/TreeIntegrity"
263
- }
264
- },
265
- "required": [
266
- "kind",
267
- "identity",
268
- "integrity"
269
- ],
270
- "additionalProperties": false
271
- },
272
- "ResourceArtifactRef": {
273
- "type": "object",
274
- "properties": {
275
- "kind": {
276
- "const": "resource"
277
- },
278
- "integrity": {
279
- "$ref": "#/$defs/TreeIntegrity"
280
- }
281
- },
282
- "required": [
283
- "kind",
284
- "integrity"
285
- ],
286
- "additionalProperties": false
287
- },
288
- "ArtifactRef": {
289
- "oneOf": [
290
- {
291
- "$ref": "#/$defs/CapabilityArtifactRef"
292
- },
293
- {
294
- "$ref": "#/$defs/SoulArtifactRef"
295
- },
296
- {
297
- "$ref": "#/$defs/ResourceArtifactRef"
298
- }
299
- ]
300
- },
301
- "ResourceRef": {
302
- "type": "object",
303
- "properties": {
304
- "owner": {
305
- "$ref": "#/$defs/ArtifactRef"
306
- },
307
- "path": {
308
- "oneOf": [
309
- {
310
- "const": "."
311
- },
312
- {
313
- "type": "string",
314
- "minLength": 1,
315
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
316
- }
317
- ]
318
- },
319
- "kind": {
320
- "enum": [
321
- "file",
322
- "directory",
323
- "manifest",
324
- "skill",
325
- "runtime-package"
326
- ]
327
- }
328
- },
329
- "required": [
330
- "owner",
331
- "path",
332
- "kind"
333
- ],
334
- "additionalProperties": false
335
- },
336
- "OperatorDocument": {
337
- "type": "object",
338
- "properties": {
339
- "kind": {
340
- "const": "operator"
341
- },
342
- "id": {
343
- "type": "string",
344
- "minLength": 1
345
- }
346
- },
347
- "required": [
348
- "kind",
349
- "id"
350
- ],
351
- "additionalProperties": false
352
- },
353
- "SourceDocument": {
354
- "oneOf": [
355
- {
356
- "type": "object",
357
- "properties": {
358
- "kind": {
359
- "const": "source"
360
- },
361
- "source": {
362
- "type": "string",
363
- "minLength": 1,
364
- "pattern": "^git:.+$"
365
- },
366
- "revision": {
367
- "type": "string",
368
- "minLength": 1,
369
- "pattern": "^[a-f0-9]{40}$"
370
- },
371
- "path": {
372
- "type": "string",
373
- "minLength": 1,
374
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
375
- },
376
- "integrity": {
377
- "$ref": "#/$defs/ByteIntegrity"
378
- }
379
- },
380
- "required": [
381
- "kind",
382
- "source",
383
- "revision",
384
- "path",
385
- "integrity"
386
- ],
387
- "additionalProperties": false
388
- },
389
- {
390
- "type": "object",
391
- "properties": {
392
- "kind": {
393
- "const": "source"
394
- },
395
- "source": {
396
- "type": "string",
397
- "minLength": 1,
398
- "pattern": "^path:/.*$"
399
- },
400
- "revision": {
401
- "const": "local"
402
- },
403
- "path": {
404
- "type": "string",
405
- "minLength": 1,
406
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
407
- },
408
- "integrity": {
409
- "$ref": "#/$defs/ByteIntegrity"
410
- }
411
- },
412
- "required": [
413
- "kind",
414
- "source",
415
- "revision",
416
- "path",
417
- "integrity"
418
- ],
419
- "additionalProperties": false
420
- }
421
- ]
422
- },
423
- "DeploymentDocument": {
424
- "type": "object",
425
- "properties": {
426
- "kind": {
427
- "const": "deployment"
428
- },
429
- "path": {
430
- "type": "string",
431
- "minLength": 1,
432
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
433
- },
434
- "integrity": {
435
- "$ref": "#/$defs/ByteIntegrity"
436
- }
437
- },
438
- "required": [
439
- "kind",
440
- "path",
441
- "integrity"
442
- ],
443
- "additionalProperties": false
444
- },
445
- "RecordDocument": {
446
- "type": "object",
447
- "properties": {
448
- "kind": {
449
- "const": "record"
450
- },
451
- "ref": {
452
- "$ref": "#/$defs/ResolutionRef"
453
- }
454
- },
455
- "required": [
456
- "kind",
457
- "ref"
458
- ],
459
- "additionalProperties": false
460
- },
461
- "ArtifactDocument": {
462
- "type": "object",
463
- "properties": {
464
- "kind": {
465
- "const": "artifact"
466
- },
467
- "owner": {
468
- "$ref": "#/$defs/ArtifactRef"
469
- },
470
- "path": {
471
- "type": "string",
472
- "minLength": 1,
473
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
474
- },
475
- "integrity": {
476
- "$ref": "#/$defs/ByteIntegrity"
477
- }
478
- },
479
- "required": [
480
- "kind",
481
- "owner",
482
- "path",
483
- "integrity"
484
- ],
485
- "additionalProperties": false
486
- },
487
- "Origin": {
488
- "type": "object",
489
- "properties": {
490
- "kind": {
491
- "enum": [
492
- "soul-requirement",
493
- "soul-default",
494
- "workspace-default",
495
- "import-adoption",
496
- "operator",
497
- "package-dependency",
498
- "work-target",
499
- "migration-evidence",
500
- "provider-binding",
501
- "workspace-admission",
502
- "member-backlink",
503
- "source-export",
504
- "manifest-default"
505
- ]
506
- },
507
- "document": {
508
- "oneOf": [
509
- {
510
- "$ref": "#/$defs/SourceDocument"
511
- },
512
- {
513
- "$ref": "#/$defs/DeploymentDocument"
514
- },
515
- {
516
- "$ref": "#/$defs/OperatorDocument"
517
- },
518
- {
519
- "$ref": "#/$defs/RecordDocument"
520
- },
521
- {
522
- "$ref": "#/$defs/ArtifactDocument"
523
- }
524
- ]
525
- },
526
- "pointer": {
527
- "type": "string",
528
- "pattern": "^(?:/(?:[^~]|~[01])*)*$"
529
- },
530
- "span": {
531
- "type": "object",
532
- "properties": {
533
- "start": {
534
- "type": "integer",
535
- "minimum": 0,
536
- "maximum": 9007199254740991
537
- },
538
- "end": {
539
- "type": "integer",
540
- "minimum": 0,
541
- "maximum": 9007199254740991
542
- }
543
- },
544
- "required": [
545
- "start",
546
- "end"
547
- ],
548
- "additionalProperties": false
549
- }
550
- },
551
- "required": [
552
- "kind",
553
- "document",
554
- "pointer"
555
- ],
556
- "additionalProperties": false
557
- },
558
- "OperatorOrigin": {
559
- "type": "object",
560
- "properties": {
561
- "kind": {
562
- "const": "operator"
563
- },
564
- "document": {
565
- "$ref": "#/$defs/OperatorDocument"
566
- },
567
- "pointer": {
568
- "type": "string",
569
- "pattern": "^(?:/(?:[^~]|~[01])*)*$"
570
- },
571
- "span": {
572
- "type": "object",
573
- "properties": {
574
- "start": {
575
- "type": "integer",
576
- "minimum": 0,
577
- "maximum": 9007199254740991
578
- },
579
- "end": {
580
- "type": "integer",
581
- "minimum": 0,
582
- "maximum": 9007199254740991
583
- }
584
- },
585
- "required": [
586
- "start",
587
- "end"
588
- ],
589
- "additionalProperties": false
590
- }
591
- },
592
- "required": [
593
- "kind",
594
- "document",
595
- "pointer"
596
- ],
597
- "additionalProperties": false
598
- },
599
- "Constraint": {
600
- "oneOf": [
601
- {
602
- "type": "object",
603
- "properties": {
604
- "kind": {
605
- "const": "equals"
606
- },
607
- "value": {},
608
- "origin": {
609
- "$ref": "#/$defs/Origin"
610
- }
611
- },
612
- "required": [
613
- "kind",
614
- "value",
615
- "origin"
616
- ],
617
- "additionalProperties": false
618
- },
619
- {
620
- "type": "object",
621
- "properties": {
622
- "kind": {
623
- "const": "required"
624
- },
625
- "origin": {
626
- "$ref": "#/$defs/Origin"
627
- }
628
- },
629
- "required": [
630
- "kind",
631
- "origin"
632
- ],
633
- "additionalProperties": false
634
- }
635
- ]
636
- },
637
- "Considered": {
638
- "type": "object",
639
- "properties": {
640
- "kind": {
641
- "enum": [
642
- "manifest-default",
643
- "workspace-default",
644
- "soul-default",
645
- "import-adoption",
646
- "operator"
647
- ]
648
- },
649
- "value": {},
650
- "origin": {
651
- "$ref": "#/$defs/Origin"
652
- },
653
- "disposition": {
654
- "enum": [
655
- "selected",
656
- "overridden"
657
- ]
658
- }
659
- },
660
- "required": [
661
- "kind",
662
- "value",
663
- "origin",
664
- "disposition"
665
- ],
666
- "additionalProperties": false
667
- },
668
- "Choice": {
669
- "type": "object",
670
- "properties": {
671
- "value": {},
672
- "selectedBy": {
673
- "oneOf": [
674
- {
675
- "type": "null"
676
- },
677
- {
678
- "$ref": "#/$defs/Origin"
679
- }
680
- ]
681
- },
682
- "constraints": {
683
- "type": "array",
684
- "items": {
685
- "$ref": "#/$defs/Constraint"
686
- }
687
- },
688
- "considered": {
689
- "type": "array",
690
- "items": {
691
- "$ref": "#/$defs/Considered"
692
- }
693
- }
694
- },
695
- "required": [
696
- "value",
697
- "selectedBy",
698
- "constraints",
699
- "considered"
700
- ],
701
- "additionalProperties": false
702
- },
703
- "GitObservation": {
704
- "type": "object",
705
- "properties": {
706
- "identity": {
707
- "$ref": "#/$defs/RepositoryIdentity"
708
- },
709
- "remote": {
710
- "type": "string",
711
- "minLength": 1,
712
- "pattern": "^git:.+$"
713
- },
714
- "selector": {
715
- "type": "string",
716
- "minLength": 1
717
- },
718
- "commit": {
719
- "type": "string",
720
- "minLength": 1,
721
- "pattern": "^[a-f0-9]{40}$"
722
- },
723
- "provenance": {
724
- "type": "array",
725
- "items": {
726
- "$ref": "#/$defs/Origin"
727
- },
728
- "minItems": 1
729
- }
730
- },
731
- "required": [
732
- "identity",
733
- "remote",
734
- "selector",
735
- "commit",
736
- "provenance"
737
- ],
738
- "additionalProperties": false
739
- },
740
- "LocalObservation": {
741
- "type": "object",
742
- "properties": {
743
- "kind": {
744
- "const": "local"
745
- },
746
- "source": {
747
- "type": "string",
748
- "minLength": 1,
749
- "pattern": "^path:/.*$"
750
- },
751
- "integrity": {
752
- "$ref": "#/$defs/TreeIntegrity"
753
- },
754
- "provenance": {
755
- "type": "array",
756
- "items": {
757
- "$ref": "#/$defs/Origin"
758
- },
759
- "minItems": 1
760
- },
761
- "repository": {
762
- "$ref": "#/$defs/RepositoryIdentity"
763
- }
764
- },
765
- "required": [
766
- "kind",
767
- "source",
768
- "integrity",
769
- "provenance"
770
- ],
771
- "additionalProperties": false
772
- },
773
- "SoulSelection": {
774
- "type": "object",
775
- "properties": {
776
- "identity": {
777
- "$ref": "#/$defs/SoulIdentity"
778
- },
779
- "revision": {
780
- "oneOf": [
781
- {
782
- "$ref": "#/$defs/GitObservation"
783
- },
784
- {
785
- "$ref": "#/$defs/LocalObservation"
786
- }
787
- ]
788
- },
789
- "alias": {
790
- "type": "string",
791
- "minLength": 1,
792
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
793
- },
794
- "sourceArtifact": {
795
- "$ref": "#/$defs/SoulArtifactRef"
796
- },
797
- "definition": {
798
- "type": "string",
799
- "minLength": 1,
800
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
801
- },
802
- "projection": {
803
- "type": "object",
804
- "properties": {
805
- "roots": {
806
- "type": "array",
807
- "items": {
808
- "oneOf": [
809
- {
810
- "const": "."
811
- },
812
- {
813
- "type": "string",
814
- "minLength": 1,
815
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
816
- }
817
- ]
818
- },
819
- "uniqueItems": true,
820
- "minItems": 1,
821
- "description": "Set in canonical UTF-8 order; runtime verifies closure and witnesses."
822
- }
823
- },
824
- "required": [
825
- "roots"
826
- ],
827
- "additionalProperties": false
828
- }
829
- },
830
- "required": [
831
- "identity",
832
- "revision",
833
- "alias",
834
- "sourceArtifact",
835
- "definition",
836
- "projection"
837
- ],
838
- "additionalProperties": false
839
- },
840
- "PackageRow": {
841
- "type": "object",
842
- "properties": {
843
- "source": {
844
- "type": "string",
845
- "minLength": 1,
846
- "pattern": "^(?:git:.+|path:/.*|catalog:.+)$"
847
- },
848
- "path": {
849
- "oneOf": [
850
- {
851
- "const": "."
852
- },
853
- {
854
- "type": "string",
855
- "minLength": 1,
856
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
857
- }
858
- ]
859
- },
860
- "version": {
861
- "type": "string",
862
- "minLength": 1
863
- },
864
- "commit": {
865
- "oneOf": [
866
- {
867
- "type": "string",
868
- "minLength": 1,
869
- "pattern": "^[a-f0-9]{40}$"
870
- },
871
- {
872
- "const": "local"
873
- }
874
- ]
875
- },
876
- "integrity": {
877
- "$ref": "#/$defs/PackageIntegrity"
878
- },
879
- "dependencies": {
880
- "type": "array",
881
- "items": {
882
- "type": "string",
883
- "minLength": 1,
884
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
885
- },
886
- "uniqueItems": true
887
- }
888
- },
889
- "required": [
890
- "source",
891
- "path",
892
- "version",
893
- "commit",
894
- "integrity",
895
- "dependencies"
896
- ],
897
- "additionalProperties": false
898
- },
899
- "CapabilityOrigin": {
900
- "oneOf": [
901
- {
902
- "type": "object",
903
- "properties": {
904
- "kind": {
905
- "const": "package"
906
- },
907
- "package": {
908
- "type": "string",
909
- "minLength": 1,
910
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
911
- },
912
- "path": {
913
- "oneOf": [
914
- {
915
- "const": "."
916
- },
917
- {
918
- "type": "string",
919
- "minLength": 1,
920
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
921
- }
922
- ]
923
- },
924
- "projectionVersion": {
925
- "const": 1
926
- }
927
- },
928
- "required": [
929
- "kind",
930
- "package",
931
- "path",
932
- "projectionVersion"
933
- ],
934
- "additionalProperties": false
935
- },
936
- {
937
- "type": "object",
938
- "properties": {
939
- "kind": {
940
- "const": "local-capability"
941
- },
942
- "source": {
943
- "type": "string",
944
- "minLength": 1,
945
- "pattern": "^path:/.*$"
946
- },
947
- "authoredAs": {
948
- "enum": [
949
- "owned",
950
- "path"
951
- ]
952
- },
953
- "witness": {
954
- "$ref": "#/$defs/Origin"
955
- }
956
- },
957
- "required": [
958
- "kind",
959
- "source",
960
- "authoredAs",
961
- "witness"
962
- ],
963
- "additionalProperties": false
964
- }
965
- ]
966
- },
967
- "CapabilityRow": {
968
- "type": "object",
969
- "properties": {
970
- "version": {
971
- "type": "string",
972
- "minLength": 1
973
- },
974
- "artifact": {
975
- "$ref": "#/$defs/CapabilityArtifactRef"
976
- },
977
- "origin": {
978
- "$ref": "#/$defs/CapabilityOrigin"
979
- }
980
- },
981
- "required": [
982
- "version",
983
- "artifact",
984
- "origin"
985
- ],
986
- "additionalProperties": false
987
- },
988
- "ArtifactSet": {
989
- "type": "object",
990
- "properties": {
991
- "schemaVersion": {
992
- "const": 1
993
- },
994
- "packages": {
995
- "type": "object",
996
- "additionalProperties": {
997
- "$ref": "#/$defs/PackageRow"
998
- },
999
- "propertyNames": {
1000
- "type": "string",
1001
- "minLength": 1,
1002
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
1003
- }
1004
- },
1005
- "capabilities": {
1006
- "type": "object",
1007
- "additionalProperties": {
1008
- "$ref": "#/$defs/CapabilityRow"
1009
- },
1010
- "propertyNames": {
1011
- "type": "string",
1012
- "minLength": 1,
1013
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
1014
- }
1015
- }
1016
- },
1017
- "required": [
1018
- "schemaVersion",
1019
- "packages",
1020
- "capabilities"
1021
- ],
1022
- "additionalProperties": false
1023
- },
1024
- "CredentialRef": {
1025
- "oneOf": [
1026
- {
1027
- "type": "object",
1028
- "properties": {
1029
- "kind": {
1030
- "const": "env"
1031
- },
1032
- "name": {
1033
- "type": "string",
1034
- "minLength": 1,
1035
- "pattern": "^[A-Za-z_][A-Za-z0-9_]*$"
1036
- }
1037
- },
1038
- "required": [
1039
- "kind",
1040
- "name"
1041
- ],
1042
- "additionalProperties": false
1043
- },
1044
- {
1045
- "type": "object",
1046
- "properties": {
1047
- "kind": {
1048
- "const": "provider"
1049
- },
1050
- "provider": {
1051
- "type": "string",
1052
- "minLength": 1
1053
- },
1054
- "key": {
1055
- "type": "string",
1056
- "minLength": 1
1057
- }
1058
- },
1059
- "required": [
1060
- "kind",
1061
- "provider",
1062
- "key"
1063
- ],
1064
- "additionalProperties": false
1065
- }
1066
- ]
1067
- },
1068
- "ProviderBinding": {
1069
- "type": "object",
1070
- "properties": {
1071
- "schemaVersion": {
1072
- "const": 1
1073
- },
1074
- "capability": {
1075
- "type": "string",
1076
- "minLength": 1,
1077
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
1078
- },
1079
- "payloadContract": {
1080
- "type": "string",
1081
- "minLength": 1
1082
- },
1083
- "payloadVersion": {
1084
- "type": "integer",
1085
- "minimum": 1,
1086
- "maximum": 9007199254740991
1087
- },
1088
- "payload": {},
1089
- "credentialRefs": {
1090
- "type": "object",
1091
- "additionalProperties": {
1092
- "$ref": "#/$defs/CredentialRef"
1093
- }
1094
- },
1095
- "provenance": {
1096
- "type": "array",
1097
- "items": {
1098
- "$ref": "#/$defs/Origin"
1099
- }
1100
- }
1101
- },
1102
- "required": [
1103
- "schemaVersion",
1104
- "capability",
1105
- "payloadContract",
1106
- "payloadVersion",
1107
- "payload",
1108
- "credentialRefs",
1109
- "provenance"
1110
- ],
1111
- "additionalProperties": false
1112
- },
1113
- "Context": {
1114
- "oneOf": [
1115
- {
1116
- "type": "object",
1117
- "properties": {
1118
- "kind": {
1119
- "const": "workspace"
1120
- },
1121
- "identity": {
1122
- "$ref": "#/$defs/WorkspaceIdentity"
1123
- },
1124
- "observation": {
1125
- "$ref": "#/$defs/Origin"
1126
- }
1127
- },
1128
- "required": [
1129
- "kind",
1130
- "identity",
1131
- "observation"
1132
- ],
1133
- "additionalProperties": false
1134
- },
1135
- {
1136
- "type": "object",
1137
- "properties": {
1138
- "kind": {
1139
- "const": "standalone"
1140
- },
1141
- "key": {
1142
- "oneOf": [
1143
- {
1144
- "type": "null"
1145
- },
1146
- {
1147
- "type": "string",
1148
- "minLength": 1
1149
- }
1150
- ]
1151
- }
1152
- },
1153
- "required": [
1154
- "kind",
1155
- "key"
1156
- ],
1157
- "additionalProperties": false
1158
- }
1159
- ]
1160
- },
1161
- "PrivateContext": {
1162
- "oneOf": [
1163
- {
1164
- "type": "object",
1165
- "properties": {
1166
- "kind": {
1167
- "const": "workspace"
1168
- },
1169
- "identity": {
1170
- "$ref": "#/$defs/WorkspaceIdentity"
1171
- }
1172
- },
1173
- "required": [
1174
- "kind",
1175
- "identity"
1176
- ],
1177
- "additionalProperties": false
1178
- },
1179
- {
1180
- "type": "object",
1181
- "properties": {
1182
- "kind": {
1183
- "const": "standalone"
1184
- },
1185
- "key": {
1186
- "type": "string",
1187
- "minLength": 1
1188
- }
1189
- },
1190
- "required": [
1191
- "kind",
1192
- "key"
1193
- ],
1194
- "additionalProperties": false
1195
- }
1196
- ]
1197
- },
1198
- "TeamRef": {
1199
- "type": "object",
1200
- "properties": {
1201
- "provider": {
1202
- "type": "string",
1203
- "minLength": 1
1204
- },
1205
- "id": {
1206
- "type": "string",
1207
- "minLength": 1
1208
- }
1209
- },
1210
- "required": [
1211
- "provider",
1212
- "id"
1213
- ],
1214
- "additionalProperties": false
1215
- },
1216
- "MessagingChoice": {
1217
- "oneOf": [
1218
- {
1219
- "type": "object",
1220
- "properties": {
1221
- "schemaVersion": {
1222
- "const": 1
1223
- },
1224
- "enabled": {
1225
- "const": false
1226
- }
1227
- },
1228
- "required": [
1229
- "schemaVersion",
1230
- "enabled"
1231
- ],
1232
- "additionalProperties": false
1233
- },
1234
- {
1235
- "type": "object",
1236
- "properties": {
1237
- "schemaVersion": {
1238
- "const": 1
1239
- },
1240
- "enabled": {
1241
- "const": true
1242
- },
1243
- "privateKey": {
1244
- "type": "object",
1245
- "properties": {
1246
- "provider": {
1247
- "type": "string",
1248
- "minLength": 1,
1249
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
1250
- },
1251
- "human": {
1252
- "$ref": "#/$defs/TeamRef"
1253
- },
1254
- "context": {
1255
- "$ref": "#/$defs/PrivateContext"
1256
- }
1257
- },
1258
- "required": [
1259
- "provider",
1260
- "human",
1261
- "context"
1262
- ],
1263
- "additionalProperties": false
1264
- },
1265
- "wider": {
1266
- "type": "array",
1267
- "items": {
1268
- "$ref": "#/$defs/TeamRef"
1269
- },
1270
- "uniqueItems": true
1271
- },
1272
- "provenance": {
1273
- "type": "array",
1274
- "items": {
1275
- "$ref": "#/$defs/Origin"
1276
- }
1277
- }
1278
- },
1279
- "required": [
1280
- "schemaVersion",
1281
- "enabled",
1282
- "privateKey",
1283
- "wider",
1284
- "provenance"
1285
- ],
1286
- "additionalProperties": false
1287
- }
1288
- ]
1289
- },
1290
- "RuntimeResource": {
1291
- "type": "object",
1292
- "properties": {
1293
- "runtime": {
1294
- "type": "string",
1295
- "minLength": 1
1296
- },
1297
- "package": {
1298
- "type": "string",
1299
- "minLength": 1
1300
- },
1301
- "resource": {
1302
- "type": "string",
1303
- "minLength": 1
1304
- },
1305
- "requiredBy": {
1306
- "type": "array",
1307
- "items": {
1308
- "$ref": "#/$defs/Origin"
1309
- }
1310
- }
1311
- },
1312
- "required": [
1313
- "runtime",
1314
- "package",
1315
- "resource",
1316
- "requiredBy"
1317
- ],
1318
- "additionalProperties": false
1319
- },
1320
- "LaunchRecipe": {
1321
- "type": "object",
1322
- "required": [
1323
- "version",
1324
- "runtime"
1325
- ],
1326
- "properties": {
1327
- "version": {
1328
- "const": 1
1329
- },
1330
- "runtime": {
1331
- "enum": [
1332
- "pi",
1333
- "claude",
1334
- "codex"
1335
- ]
1336
- }
1337
- },
1338
- "description": "Envelope only: the sole existing launch codec owns all remaining recipe fields and their interpretation."
1339
- },
1340
- "InstructionBlock": {
1341
- "type": "object",
1342
- "properties": {
1343
- "source": {
1344
- "type": "string",
1345
- "minLength": 1,
1346
- "pattern": "^(kernel|work-mode|capability|config):[A-Za-z0-9._:-]+$"
1347
- },
1348
- "resource": {
1349
- "type": "string",
1350
- "minLength": 1
1351
- },
1352
- "choice": {
1353
- "type": "string",
1354
- "minLength": 1
1355
- }
1356
- },
1357
- "required": [
1358
- "source",
1359
- "resource"
1360
- ],
1361
- "additionalProperties": false
1362
- },
1363
- "InstructionOmission": {
1364
- "type": "object",
1365
- "properties": {
1366
- "source": {
1367
- "type": "string",
1368
- "minLength": 1,
1369
- "pattern": "^(kernel|work-mode|capability|config):[A-Za-z0-9._:-]+$"
1370
- },
1371
- "reason": {
1372
- "enum": [
1373
- "disabled",
1374
- "helper-knowledge",
1375
- "helper-policy"
1376
- ]
1377
- },
1378
- "choice": {
1379
- "type": "string",
1380
- "minLength": 1
1381
- }
1382
- },
1383
- "required": [
1384
- "source",
1385
- "reason"
1386
- ],
1387
- "additionalProperties": false
1388
- },
1389
- "InstructionComposition": {
1390
- "type": "object",
1391
- "properties": {
1392
- "schemaVersion": {
1393
- "const": 1
1394
- },
1395
- "mode": {
1396
- "enum": [
1397
- "worktree",
1398
- "checkout",
1399
- "attached",
1400
- "workspace",
1401
- "directory"
1402
- ]
1403
- },
1404
- "body": {
1405
- "type": "string",
1406
- "minLength": 1
1407
- },
1408
- "blocks": {
1409
- "type": "array",
1410
- "items": {
1411
- "$ref": "#/$defs/InstructionBlock"
1412
- }
1413
- },
1414
- "omissions": {
1415
- "type": "array",
1416
- "items": {
1417
- "$ref": "#/$defs/InstructionOmission"
1418
- }
1419
- },
1420
- "skills": {
1421
- "type": "array",
1422
- "items": {
1423
- "type": "object",
1424
- "properties": {
1425
- "name": {
1426
- "type": "string",
1427
- "minLength": 1,
1428
- "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
1429
- },
1430
- "resource": {
1431
- "type": "string",
1432
- "minLength": 1
1433
- }
1434
- },
1435
- "required": [
1436
- "name",
1437
- "resource"
1438
- ],
1439
- "additionalProperties": false
1440
- }
1441
- }
1442
- },
1443
- "required": [
1444
- "schemaVersion",
1445
- "mode",
1446
- "body",
1447
- "blocks",
1448
- "omissions",
1449
- "skills"
1450
- ],
1451
- "additionalProperties": false
1452
- },
1453
- "Dispatch": {
1454
- "type": "object",
1455
- "properties": {
1456
- "schemaVersion": {
1457
- "const": 1
1458
- },
1459
- "providerManifests": {
1460
- "type": "object",
1461
- "additionalProperties": {
1462
- "type": "string",
1463
- "minLength": 1
1464
- },
1465
- "propertyNames": {
1466
- "type": "string",
1467
- "minLength": 1,
1468
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
1469
- }
1470
- },
1471
- "settingsChoices": {
1472
- "type": "object",
1473
- "additionalProperties": {
1474
- "type": "object",
1475
- "additionalProperties": {
1476
- "type": "string",
1477
- "minLength": 1
1478
- }
1479
- },
1480
- "propertyNames": {
1481
- "type": "string",
1482
- "minLength": 1,
1483
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
1484
- }
1485
- },
1486
- "launch": {
1487
- "oneOf": [
1488
- {
1489
- "type": "null"
1490
- },
1491
- {
1492
- "$ref": "#/$defs/LaunchRecipe"
1493
- }
1494
- ]
1495
- },
1496
- "runtimePackages": {
1497
- "type": "array",
1498
- "items": {
1499
- "$ref": "#/$defs/RuntimeResource"
1500
- }
1501
- },
1502
- "hostRequirements": {
1503
- "type": "array",
1504
- "items": {}
1505
- },
1506
- "workTargetInputs": {
1507
- "type": "object",
1508
- "additionalProperties": {
1509
- "type": "string",
1510
- "minLength": 1
1511
- }
1512
- },
1513
- "composition": {
1514
- "$ref": "#/$defs/InstructionComposition"
1515
- }
1516
- },
1517
- "required": [
1518
- "schemaVersion",
1519
- "providerManifests",
1520
- "settingsChoices",
1521
- "launch",
1522
- "runtimePackages",
1523
- "hostRequirements",
1524
- "workTargetInputs"
1525
- ],
1526
- "additionalProperties": false,
1527
- "allOf": [
1528
- {
1529
- "if": {
1530
- "type": "object",
1531
- "properties": {
1532
- "launch": {
1533
- "type": "object"
1534
- }
1535
- },
1536
- "required": [
1537
- "launch"
1538
- ]
1539
- },
1540
- "then": {
1541
- "type": "object",
1542
- "properties": {
1543
- "composition": {
1544
- "$ref": "#/$defs/InstructionComposition"
1545
- }
1546
- },
1547
- "required": [
1548
- "composition"
1549
- ]
1550
- }
1551
- }
1552
- ]
1553
- },
1554
- "CapturedSubject": {
1555
- "oneOf": [
1556
- {
1557
- "type": "object",
1558
- "properties": {
1559
- "kind": {
1560
- "const": "persistent"
1561
- },
1562
- "soul": {
1563
- "$ref": "#/$defs/SoulSelection"
1564
- }
1565
- },
1566
- "required": [
1567
- "kind",
1568
- "soul"
1569
- ],
1570
- "additionalProperties": false
1571
- },
1572
- {
1573
- "type": "object",
1574
- "properties": {
1575
- "kind": {
1576
- "const": "helper"
1577
- },
1578
- "provider": {
1579
- "$ref": "#/$defs/CapabilityArtifactRef"
1580
- },
1581
- "definition": {
1582
- "$ref": "#/$defs/ResourceRef"
1583
- },
1584
- "name": {
1585
- "type": "string",
1586
- "minLength": 1,
1587
- "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
1588
- }
1589
- },
1590
- "required": [
1591
- "kind",
1592
- "provider",
1593
- "definition",
1594
- "name"
1595
- ],
1596
- "additionalProperties": false
1597
- }
1598
- ]
1599
- },
1600
- "ExecutionBinding": {
1601
- "type": "object",
1602
- "properties": {
1603
- "schemaVersion": {
1604
- "const": 1
1605
- },
1606
- "deployment": {
1607
- "type": "string",
1608
- "minLength": 1
1609
- },
1610
- "resolution": {
1611
- "$ref": "#/$defs/ResolutionRef"
1612
- }
1613
- },
1614
- "required": [
1615
- "schemaVersion",
1616
- "deployment",
1617
- "resolution"
1618
- ],
1619
- "additionalProperties": false
1620
- },
1621
- "CapturedAction": {
1622
- "oneOf": [
1623
- {
1624
- "type": "object",
1625
- "properties": {
1626
- "kind": {
1627
- "enum": [
1628
- "inspect",
1629
- "compose"
1630
- ]
1631
- }
1632
- },
1633
- "required": [
1634
- "kind"
1635
- ],
1636
- "additionalProperties": false
1637
- },
1638
- {
1639
- "type": "object",
1640
- "properties": {
1641
- "kind": {
1642
- "const": "command"
1643
- },
1644
- "capability": {
1645
- "type": "string",
1646
- "minLength": 1,
1647
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
1648
- },
1649
- "name": {
1650
- "type": "string",
1651
- "minLength": 1
1652
- }
1653
- },
1654
- "required": [
1655
- "kind",
1656
- "capability",
1657
- "name"
1658
- ],
1659
- "additionalProperties": false
1660
- },
1661
- {
1662
- "type": "object",
1663
- "properties": {
1664
- "kind": {
1665
- "const": "command"
1666
- },
1667
- "namespace": {
1668
- "type": "string",
1669
- "minLength": 1
1670
- },
1671
- "name": {
1672
- "type": "string",
1673
- "minLength": 1
1674
- }
1675
- },
1676
- "required": [
1677
- "kind",
1678
- "namespace",
1679
- "name"
1680
- ],
1681
- "additionalProperties": false
1682
- },
1683
- {
1684
- "type": "object",
1685
- "properties": {
1686
- "kind": {
1687
- "const": "hook"
1688
- },
1689
- "capability": {
1690
- "type": "string",
1691
- "minLength": 1,
1692
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
1693
- },
1694
- "name": {
1695
- "type": "string",
1696
- "minLength": 1
1697
- }
1698
- },
1699
- "required": [
1700
- "kind",
1701
- "capability",
1702
- "name"
1703
- ],
1704
- "additionalProperties": false
1705
- },
1706
- {
1707
- "type": "object",
1708
- "properties": {
1709
- "kind": {
1710
- "const": "operation"
1711
- },
1712
- "slot": {
1713
- "enum": [
1714
- "knowledge",
1715
- "messaging",
1716
- "tasks"
1717
- ]
1718
- },
1719
- "name": {
1720
- "type": "string",
1721
- "minLength": 1
1722
- }
1723
- },
1724
- "required": [
1725
- "kind",
1726
- "slot",
1727
- "name"
1728
- ],
1729
- "additionalProperties": false
1730
- }
1731
- ]
1732
- },
1733
- "IncarnationId": {
1734
- "type": "string",
1735
- "minLength": 1,
1736
- "pattern": "^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89ab][a-f0-9]{3}-[a-f0-9]{12}$"
1737
- },
1738
- "CapturedIntentRef": {
1739
- "type": "object",
1740
- "properties": {
1741
- "schemaVersion": {
1742
- "const": 1
1743
- },
1744
- "executionId": {
1745
- "type": "string",
1746
- "minLength": 1,
1747
- "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$"
1748
- },
1749
- "incarnationId": {
1750
- "$ref": "#/$defs/IncarnationId"
1751
- },
1752
- "attempt": {
1753
- "type": "integer",
1754
- "minimum": 1,
1755
- "maximum": 9007199254740991
1756
- }
1757
- },
1758
- "required": [
1759
- "schemaVersion",
1760
- "executionId",
1761
- "incarnationId",
1762
- "attempt"
1763
- ],
1764
- "additionalProperties": false
1765
- },
1766
- "CapturedInvocationContext": {
1767
- "type": "object",
1768
- "properties": {
1769
- "schemaVersion": {
1770
- "const": 1
1771
- },
1772
- "executionBinding": {
1773
- "$ref": "#/$defs/ExecutionBinding"
1774
- },
1775
- "subject": {
1776
- "$ref": "#/$defs/CapturedSubject"
1777
- },
1778
- "instance": {
1779
- "oneOf": [
1780
- {
1781
- "type": "null"
1782
- },
1783
- {
1784
- "type": "object",
1785
- "properties": {
1786
- "home": {
1787
- "type": "string",
1788
- "minLength": 1
1789
- },
1790
- "work": {
1791
- "type": "string",
1792
- "minLength": 1
1793
- },
1794
- "name": {
1795
- "type": "string",
1796
- "minLength": 1
1797
- },
1798
- "agent": {
1799
- "type": "string",
1800
- "minLength": 1
1801
- },
1802
- "incarnationId": {
1803
- "$ref": "#/$defs/IncarnationId"
1804
- }
1805
- },
1806
- "required": [
1807
- "home",
1808
- "work",
1809
- "name",
1810
- "agent",
1811
- "incarnationId"
1812
- ],
1813
- "additionalProperties": false
1814
- }
1815
- ]
1816
- },
1817
- "intent": {
1818
- "oneOf": [
1819
- {
1820
- "type": "null"
1821
- },
1822
- {
1823
- "$ref": "#/$defs/CapturedIntentRef"
1824
- }
1825
- ]
1826
- },
1827
- "context": {
1828
- "$ref": "#/$defs/Context"
1829
- },
1830
- "responsibleHuman": {
1831
- "oneOf": [
1832
- {
1833
- "type": "null"
1834
- },
1835
- {
1836
- "$ref": "#/$defs/TeamRef"
1837
- }
1838
- ]
1839
- },
1840
- "messagingChoice": {
1841
- "$ref": "#/$defs/MessagingChoice"
1842
- },
1843
- "capability": {
1844
- "type": "string",
1845
- "minLength": 1,
1846
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
1847
- },
1848
- "action": {
1849
- "$ref": "#/$defs/CapturedAction"
1850
- },
1851
- "priorReceipt": {}
1852
- },
1853
- "required": [
1854
- "schemaVersion",
1855
- "executionBinding",
1856
- "subject",
1857
- "instance",
1858
- "intent",
1859
- "context",
1860
- "responsibleHuman",
1861
- "messagingChoice",
1862
- "capability",
1863
- "action",
1864
- "priorReceipt"
1865
- ],
1866
- "additionalProperties": false,
1867
- "description": "Bounded generic projection: exact subject union and validated record/instance equality are mandatory. Incarnation and intent are independently minted durable identities, never a resolution/home/name digest. A null intent grants no mutation authority. Prior receipt is opaque nullable JSON, not credentials."
1868
- },
1869
- "ProviderCheckInput": {
1870
- "type": "object",
1871
- "properties": {
1872
- "binding": {
1873
- "$ref": "#/$defs/ProviderBinding"
1874
- },
1875
- "context": {
1876
- "$ref": "#/$defs/Context"
1877
- },
1878
- "action": {
1879
- "type": "object",
1880
- "required": [
1881
- "kind"
1882
- ],
1883
- "properties": {
1884
- "kind": {
1885
- "type": "string",
1886
- "minLength": 1
1887
- }
1888
- }
1889
- },
1890
- "invocation": {
1891
- "$ref": "#/$defs/CapturedInvocationContext"
1892
- }
1893
- },
1894
- "required": [
1895
- "binding",
1896
- "context",
1897
- "action"
1898
- ],
1899
- "additionalProperties": false
1900
- },
1901
- "CapturedResolution": {
1902
- "type": "object",
1903
- "properties": {
1904
- "schemaVersion": {
1905
- "const": 1
1906
- },
1907
- "capture": {
1908
- "enum": [
1909
- "prepared",
1910
- "reconstructed"
1911
- ]
1912
- },
1913
- "subject": {
1914
- "$ref": "#/$defs/CapturedSubject"
1915
- },
1916
- "context": {
1917
- "$ref": "#/$defs/Context"
1918
- },
1919
- "artifacts": {
1920
- "$ref": "#/$defs/ArtifactSet"
1921
- },
1922
- "choices": {
1923
- "type": "object",
1924
- "additionalProperties": {
1925
- "$ref": "#/$defs/Choice"
1926
- },
1927
- "propertyNames": {
1928
- "pattern": "^/"
1929
- }
1930
- },
1931
- "bindings": {
1932
- "type": "object",
1933
- "additionalProperties": false,
1934
- "properties": {
1935
- "knowledge": {
1936
- "$ref": "#/$defs/ProviderBinding"
1937
- },
1938
- "messaging": {
1939
- "$ref": "#/$defs/ProviderBinding"
1940
- },
1941
- "tasks": {
1942
- "$ref": "#/$defs/ProviderBinding"
1943
- }
1944
- }
1945
- },
1946
- "messagingChoice": {
1947
- "$ref": "#/$defs/MessagingChoice"
1948
- },
1949
- "resources": {
1950
- "type": "object",
1951
- "additionalProperties": {
1952
- "$ref": "#/$defs/ResourceRef"
1953
- }
1954
- },
1955
- "resourceBundles": {
1956
- "type": "array",
1957
- "items": {
1958
- "$ref": "#/$defs/ResourceArtifactRef"
1959
- },
1960
- "uniqueItems": true
1961
- },
1962
- "dispatch": {
1963
- "$ref": "#/$defs/Dispatch"
1964
- },
1965
- "helpers": {
1966
- "type": "object",
1967
- "additionalProperties": {
1968
- "$ref": "#/$defs/ResolutionRef"
1969
- }
1970
- },
1971
- "evidence": {
1972
- "type": "array",
1973
- "items": {
1974
- "$ref": "#/$defs/Origin"
1975
- }
1976
- }
1977
- },
1978
- "required": [
1979
- "schemaVersion",
1980
- "capture",
1981
- "subject",
1982
- "context",
1983
- "artifacts",
1984
- "choices",
1985
- "bindings",
1986
- "messagingChoice",
1987
- "resources",
1988
- "resourceBundles",
1989
- "dispatch",
1990
- "helpers",
1991
- "evidence"
1992
- ],
1993
- "additionalProperties": false,
1994
- "allOf": [
1995
- {
1996
- "if": {
1997
- "type": "object",
1998
- "properties": {
1999
- "capture": {
2000
- "const": "reconstructed"
2001
- }
2002
- },
2003
- "required": [
2004
- "capture"
2005
- ]
2006
- },
2007
- "then": {
2008
- "type": "object",
2009
- "properties": {
2010
- "evidence": {
2011
- "type": "array",
2012
- "minItems": 1
2013
- }
2014
- }
2015
- }
2016
- }
2017
- ]
2018
- },
2019
- "CapturedSessionBackend": {
2020
- "oneOf": [
2021
- {
2022
- "type": "object",
2023
- "properties": {
2024
- "backend": {
2025
- "const": "tmux"
2026
- },
2027
- "binary": {
2028
- "type": "string",
2029
- "minLength": 1,
2030
- "pattern": "^/",
2031
- "description": "Runtime also requires a normalized absolute path without NUL."
2032
- },
2033
- "socket": {
2034
- "type": "string",
2035
- "minLength": 1,
2036
- "pattern": "^/",
2037
- "description": "Runtime also requires a normalized absolute path without NUL."
2038
- },
2039
- "session": {
2040
- "type": "string",
2041
- "minLength": 1,
2042
- "pattern": "^[A-Za-z0-9_-]+$"
2043
- }
2044
- },
2045
- "required": [
2046
- "backend",
2047
- "binary",
2048
- "socket",
2049
- "session"
2050
- ],
2051
- "additionalProperties": false
2052
- },
2053
- {
2054
- "type": "object",
2055
- "properties": {
2056
- "backend": {
2057
- "const": "herdr"
2058
- },
2059
- "binary": {
2060
- "type": "string",
2061
- "minLength": 1,
2062
- "pattern": "^/",
2063
- "description": "Runtime also requires a normalized absolute path without NUL."
2064
- },
2065
- "socket": {
2066
- "type": "string",
2067
- "minLength": 1,
2068
- "pattern": "^/",
2069
- "description": "Runtime also requires a normalized absolute path without NUL."
2070
- },
2071
- "protocol": {
2072
- "enum": [
2073
- 20,
2074
- 22
2075
- ]
2076
- }
2077
- },
2078
- "required": [
2079
- "backend",
2080
- "binary",
2081
- "socket",
2082
- "protocol"
2083
- ],
2084
- "additionalProperties": false
2085
- }
2086
- ]
2087
- },
2088
- "CapturedSessionTarget": {
2089
- "oneOf": [
2090
- {
2091
- "type": "object",
2092
- "properties": {
2093
- "backend": {
2094
- "const": "tmux"
2095
- },
2096
- "socket": {
2097
- "type": "string",
2098
- "minLength": 1,
2099
- "pattern": "^/",
2100
- "description": "Runtime also requires a normalized absolute path without NUL."
2101
- },
2102
- "session": {
2103
- "type": "string",
2104
- "minLength": 1
2105
- },
2106
- "window": {
2107
- "type": "string",
2108
- "minLength": 1
2109
- }
2110
- },
2111
- "required": [
2112
- "backend",
2113
- "socket",
2114
- "session",
2115
- "window"
2116
- ],
2117
- "additionalProperties": false
2118
- },
2119
- {
2120
- "type": "object",
2121
- "properties": {
2122
- "backend": {
2123
- "const": "herdr"
2124
- },
2125
- "binary": {
2126
- "type": "string",
2127
- "minLength": 1,
2128
- "pattern": "^/",
2129
- "description": "Runtime also requires a normalized absolute path without NUL."
2130
- },
2131
- "socket": {
2132
- "type": "string",
2133
- "minLength": 1,
2134
- "pattern": "^/",
2135
- "description": "Runtime also requires a normalized absolute path without NUL."
2136
- },
2137
- "protocol": {
2138
- "enum": [
2139
- 20,
2140
- 22
2141
- ]
2142
- },
2143
- "workspaceId": {
2144
- "type": "string",
2145
- "minLength": 1
2146
- },
2147
- "paneId": {
2148
- "type": "string",
2149
- "minLength": 1
2150
- },
2151
- "terminalId": {
2152
- "type": "string",
2153
- "minLength": 1
2154
- }
2155
- },
2156
- "required": [
2157
- "backend",
2158
- "binary",
2159
- "socket",
2160
- "protocol",
2161
- "workspaceId",
2162
- "paneId",
2163
- "terminalId"
2164
- ],
2165
- "additionalProperties": false
2166
- }
2167
- ]
2168
- },
2169
- "CapturedSessionRequest": {
2170
- "type": "object",
2171
- "properties": {
2172
- "schemaVersion": {
2173
- "const": 1
2174
- },
2175
- "backend": {
2176
- "$ref": "#/$defs/CapturedSessionBackend"
2177
- },
2178
- "task": {
2179
- "type": "string"
2180
- },
2181
- "stopGraceMs": {
2182
- "type": "integer",
2183
- "minimum": 1,
2184
- "maximum": 300000
2185
- }
2186
- },
2187
- "required": [
2188
- "schemaVersion"
2189
- ],
2190
- "additionalProperties": false
2191
- },
2192
- "CapturedNativeSessionAvailability": {
2193
- "type": "object",
2194
- "properties": {
2195
- "schemaVersion": {
2196
- "const": 1
2197
- },
2198
- "api": {
2199
- "type": "object",
2200
- "properties": {
2201
- "contract": {
2202
- "const": "oats.captured-session"
2203
- },
2204
- "version": {
2205
- "const": 2
2206
- },
2207
- "available": {
2208
- "const": true
2209
- },
2210
- "backends": {
2211
- "const": [
2212
- "tmux",
2213
- "herdr"
2214
- ]
2215
- }
2216
- },
2217
- "required": [
2218
- "contract",
2219
- "version",
2220
- "available",
2221
- "backends"
2222
- ],
2223
- "additionalProperties": false
2224
- },
2225
- "readiness": {
2226
- "type": "object",
2227
- "properties": {
2228
- "status": {
2229
- "const": "not-checked"
2230
- }
2231
- },
2232
- "required": [
2233
- "status"
2234
- ],
2235
- "additionalProperties": false
2236
- }
2237
- },
2238
- "required": [
2239
- "schemaVersion",
2240
- "api",
2241
- "readiness"
2242
- ],
2243
- "additionalProperties": false,
2244
- "description": "Static callable interface availability only; no selected-record, provider, instance or host readiness is checked. Actual native action validation/receipts remain mandatory."
2245
- },
2246
- "Problem": {
2247
- "type": "object",
2248
- "properties": {
2249
- "code": {
2250
- "type": "string",
2251
- "minLength": 1
2252
- },
2253
- "message": {
2254
- "type": "string",
2255
- "minLength": 1
2256
- },
2257
- "origins": {
2258
- "type": "array",
2259
- "items": {
2260
- "$ref": "#/$defs/Origin"
2261
- }
2262
- },
2263
- "target": {},
2264
- "details": {}
2265
- },
2266
- "required": [
2267
- "code",
2268
- "message",
2269
- "origins"
2270
- ],
2271
- "additionalProperties": false
2272
- },
2273
- "PackageRequest": {
2274
- "type": "object",
2275
- "properties": {
2276
- "source": {
2277
- "type": "string",
2278
- "minLength": 1,
2279
- "pattern": "^(?:git:.+|path:/.*|catalog:.+)$"
2280
- },
2281
- "path": {
2282
- "oneOf": [
2283
- {
2284
- "const": "."
2285
- },
2286
- {
2287
- "type": "string",
2288
- "minLength": 1,
2289
- "pattern": "^(?![A-Za-z]:)(?!.*(?:^|/)\\.{1,2}(?:/|$))[^/\\\\\u0000]+(?:/[^/\\\\\u0000]+)*$"
2290
- }
2291
- ]
2292
- }
2293
- },
2294
- "required": [
2295
- "source",
2296
- "path"
2297
- ],
2298
- "additionalProperties": false
2299
- },
2300
- "Freshness": {
2301
- "type": "object",
2302
- "properties": {
2303
- "state": {
2304
- "enum": [
2305
- "refreshed",
2306
- "offline",
2307
- "failed",
2308
- "not-checked"
2309
- ]
2310
- },
2311
- "observedAt": {
2312
- "oneOf": [
2313
- {
2314
- "type": "null"
2315
- },
2316
- {
2317
- "type": "string",
2318
- "minLength": 1,
2319
- "pattern": "^(?:[0-9]{4}|[+-][0-9]{6})-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"
2320
- }
2321
- ]
2322
- },
2323
- "problems": {
2324
- "type": "array",
2325
- "items": {
2326
- "$ref": "#/$defs/Problem"
2327
- }
2328
- }
2329
- },
2330
- "required": [
2331
- "state",
2332
- "observedAt",
2333
- "problems"
2334
- ],
2335
- "additionalProperties": false
2336
- },
2337
- "Selection": {
2338
- "type": "object",
2339
- "properties": {
2340
- "request": {
2341
- "$ref": "#/$defs/PackageRequest"
2342
- },
2343
- "current": {
2344
- "oneOf": [
2345
- {
2346
- "type": "null"
2347
- },
2348
- {
2349
- "type": "string",
2350
- "minLength": 1,
2351
- "pattern": "^sha256-[a-f0-9]{64}$"
2352
- }
2353
- ]
2354
- },
2355
- "available": {
2356
- "oneOf": [
2357
- {
2358
- "type": "null"
2359
- },
2360
- {
2361
- "type": "string",
2362
- "minLength": 1,
2363
- "pattern": "^sha256-[a-f0-9]{64}$"
2364
- }
2365
- ]
2366
- },
2367
- "freshness": {
2368
- "$ref": "#/$defs/Freshness"
2369
- }
2370
- },
2371
- "required": [
2372
- "request",
2373
- "current",
2374
- "available",
2375
- "freshness"
2376
- ],
2377
- "additionalProperties": false,
2378
- "allOf": [
2379
- {
2380
- "if": {
2381
- "type": "object",
2382
- "properties": {
2383
- "freshness": {
2384
- "type": "object",
2385
- "properties": {
2386
- "state": {
2387
- "const": "refreshed"
2388
- }
2389
- },
2390
- "required": [
2391
- "state"
2392
- ]
2393
- }
2394
- },
2395
- "required": [
2396
- "freshness"
2397
- ]
2398
- },
2399
- "then": {
2400
- "type": "object",
2401
- "properties": {
2402
- "available": {
2403
- "type": "string",
2404
- "minLength": 1,
2405
- "pattern": "^sha256-[a-f0-9]{64}$"
2406
- },
2407
- "freshness": {
2408
- "type": "object",
2409
- "properties": {
2410
- "observedAt": {
2411
- "type": "string",
2412
- "minLength": 1
2413
- }
2414
- }
2415
- }
2416
- }
2417
- }
2418
- }
2419
- ]
2420
- },
2421
- "Lock3": {
2422
- "type": "object",
2423
- "properties": {
2424
- "lockfileVersion": {
2425
- "const": 3
2426
- },
2427
- "artifactSets": {
2428
- "type": "object",
2429
- "additionalProperties": {
2430
- "$ref": "#/$defs/ArtifactSet"
2431
- },
2432
- "propertyNames": {
2433
- "type": "string",
2434
- "minLength": 1,
2435
- "pattern": "^sha256-[a-f0-9]{64}$"
2436
- }
2437
- },
2438
- "selections": {
2439
- "type": "object",
2440
- "additionalProperties": {
2441
- "$ref": "#/$defs/Selection"
2442
- },
2443
- "propertyNames": {
2444
- "type": "string",
2445
- "minLength": 1,
2446
- "pattern": "^sha256-[a-f0-9]{64}$"
2447
- }
2448
- }
2449
- },
2450
- "required": [
2451
- "lockfileVersion",
2452
- "artifactSets",
2453
- "selections"
2454
- ],
2455
- "additionalProperties": false
2456
- },
2457
- "ApprovalEntry": {
2458
- "type": "object",
2459
- "properties": {
2460
- "artifact": {
2461
- "$ref": "#/$defs/CapabilityArtifactRef"
2462
- },
2463
- "approved": {
2464
- "const": true
2465
- },
2466
- "provenance": {
2467
- "type": "array",
2468
- "items": {
2469
- "$ref": "#/$defs/OperatorOrigin"
2470
- },
2471
- "minItems": 1
2472
- }
2473
- },
2474
- "required": [
2475
- "artifact",
2476
- "approved",
2477
- "provenance"
2478
- ],
2479
- "additionalProperties": false
2480
- },
2481
- "ApprovalLedger": {
2482
- "type": "object",
2483
- "properties": {
2484
- "schemaVersion": {
2485
- "const": 1
2486
- },
2487
- "capabilities": {
2488
- "type": "object",
2489
- "additionalProperties": {
2490
- "type": "object",
2491
- "additionalProperties": {
2492
- "$ref": "#/$defs/ApprovalEntry"
2493
- },
2494
- "propertyNames": {
2495
- "pattern": "^oats\\.tree-exec\\.v1:sha256-[a-f0-9]{64}$"
2496
- }
2497
- },
2498
- "propertyNames": {
2499
- "type": "string",
2500
- "minLength": 1,
2501
- "pattern": "^[a-z0-9][a-z0-9._-]*$"
2502
- }
2503
- }
2504
- },
2505
- "required": [
2506
- "schemaVersion",
2507
- "capabilities"
2508
- ],
2509
- "additionalProperties": false
2510
- }
2511
- }
2512
- }