@quolu/lattice 0.63.0 → 0.63.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/LICENSE +147 -147
  2. package/README.ja.md +378 -378
  3. package/README.md +303 -303
  4. package/bin/lattice-mcp.mjs +0 -0
  5. package/bin/lattice-scripted-adapter.mjs +0 -0
  6. package/bin/lattice-scripted-worker.mjs +0 -0
  7. package/bin/lattice-work-order-adapter.mjs +0 -0
  8. package/bin/lattice.mjs +3 -1
  9. package/docs/bridge-setup.md +248 -248
  10. package/docs/schemas/lattice.executor_packet.v1.schema.json +57 -57
  11. package/docs/schemas/lattice.executor_receipt.v1.schema.json +66 -66
  12. package/docs/schemas/lattice.phase_todo_revision.v3.schema.json +360 -360
  13. package/docs/schemas/lattice.plan_create_input.v1.schema.json +56 -56
  14. package/docs/schemas/lattice.plan_create_input.v2.schema.json +72 -72
  15. package/docs/schemas/lattice.plan_create_input.v3.schema.json +81 -81
  16. package/docs/schemas/lattice.plan_create_input.v4.schema.json +357 -85
  17. package/docs/schemas/lattice.plan_scope_review.v1.schema.json +55 -55
  18. package/docs/schemas/lattice.run_request.v1.schema.json +238 -238
  19. package/docs/schemas/lattice.runtime_adapter_capabilities.v2.schema.json +55 -55
  20. package/docs/schemas/lattice.runtime_adapter_registration_input.v1.schema.json +78 -78
  21. package/docs/schemas/lattice.runtime_adapter_registration_input.v2.schema.json +86 -86
  22. package/docs/schemas/lattice.todo_extraction.v2.schema.json +298 -298
  23. package/docs/schemas/lattice.todo_extraction.v3.schema.json +150 -150
  24. package/docs/schemas/lattice.todo_extraction.v4.schema.json +161 -161
  25. package/docs/schemas/lattice.todo_revision.v2.schema.json +260 -260
  26. package/docs/schemas/lattice.todo_revision_set.v3.schema.json +363 -363
  27. package/docs/schemas/lattice.todo_structure_binding.v1.schema.json +47 -47
  28. package/docs/schemas/lattice.todo_structure_realization.v1.schema.json +55 -55
  29. package/docs/schemas/lattice.todo_structure_set.v1.schema.json +264 -264
  30. package/package.json +109 -109
  31. package/sensor/LICENSE +21 -21
  32. package/sensor/NOTICE +19 -19
  33. package/sensor/dist/bin/lattice-sensor.js +9 -9
  34. package/sensor/dist/db/index.js +24 -24
  35. package/sensor/dist/db/migrations.js +41 -41
  36. package/sensor/dist/db/queries.js +164 -164
  37. package/sensor/dist/db/schema.sql +205 -205
  38. package/sensor/dist/directory.js +5 -5
  39. package/sensor/dist/extraction/wasm/tree-sitter-c_sharp.wasm +0 -0
  40. package/sensor/dist/extraction/wasm/tree-sitter-cfml.wasm +0 -0
  41. package/sensor/dist/extraction/wasm/tree-sitter-cfquery.wasm +0 -0
  42. package/sensor/dist/extraction/wasm/tree-sitter-cfscript.wasm +0 -0
  43. package/sensor/dist/extraction/wasm/tree-sitter-cobol.wasm +0 -0
  44. package/sensor/dist/extraction/wasm/tree-sitter-erlang.wasm +0 -0
  45. package/sensor/dist/extraction/wasm/tree-sitter-go.wasm +0 -0
  46. package/sensor/dist/extraction/wasm/tree-sitter-java.wasm +0 -0
  47. package/sensor/dist/extraction/wasm/tree-sitter-javascript.wasm +0 -0
  48. package/sensor/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
  49. package/sensor/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  50. package/sensor/dist/extraction/wasm/tree-sitter-python.wasm +0 -0
  51. package/sensor/dist/extraction/wasm/tree-sitter-tsx.wasm +0 -0
  52. package/sensor/dist/extraction/wasm/tree-sitter-typescript.wasm +0 -0
  53. package/sensor/dist/extraction/wasm/tree-sitter-vbnet.wasm +0 -0
  54. package/sensor/dist/mcp/liveness-watchdog.js +53 -53
  55. package/sensor/dist/mcp/server-instructions.js +95 -95
  56. package/sensor/package.json +56 -56
  57. package/src/project-cli.mjs +164 -24
  58. package/src/todo-authoring-input.mjs +35 -5
  59. package/src/todo-cli.mjs +2 -2
  60. package/src/todo-store.mjs +52 -21
@@ -1,264 +1,264 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://github.com/kitepon/Lattice/blob/main/docs/schemas/lattice.todo_structure_set.v1.schema.json",
4
- "title": "lattice.todo_structure_set.v1",
5
- "description": "AI-authored logical dataflow overlay for one registered Lattice plan version.",
6
- "$comment": "Runtime validation additionally enforces UTF-8 byte bounds, strict canonical ordering, referential integrity, exact plan task coverage when supplied, unique data IDs, constant canonical-byte limits, the canonical self-digest, and plan-wide totals of at most 512 anchors, 4096 ports, 2048 operations, and 4096 sinks.",
7
- "type": "object",
8
- "additionalProperties": false,
9
- "required": [
10
- "schema", "project_id", "plan_key", "plan_version", "topology_digest", "profile",
11
- "baseline_sha", "external_contracts", "tasks", "structure_set_digest"
12
- ],
13
- "properties": {
14
- "schema": { "const": "lattice.todo_structure_set.v1" },
15
- "project_id": { "$ref": "#/$defs/identifier" },
16
- "plan_key": { "$ref": "#/$defs/identifier" },
17
- "plan_version": { "$ref": "#/$defs/identifier" },
18
- "topology_digest": { "$ref": "#/$defs/digest" },
19
- "profile": { "const": "code-dataflow" },
20
- "baseline_sha": { "$ref": "#/$defs/gitSha" },
21
- "external_contracts": {
22
- "type": "array", "maxItems": 256, "uniqueItems": true,
23
- "items": { "$ref": "#/$defs/externalContract" }
24
- },
25
- "tasks": {
26
- "type": "array", "minItems": 1, "maxItems": 512, "uniqueItems": true,
27
- "items": { "oneOf": [{ "$ref": "#/$defs/graphTask" }, { "$ref": "#/$defs/excludedTask" }] }
28
- },
29
- "structure_set_digest": { "$ref": "#/$defs/digest" }
30
- },
31
- "$defs": {
32
- "identifier": {
33
- "type": "string", "pattern": "^[0-9A-Za-z](?:[0-9A-Za-z._-]{0,127})$"
34
- },
35
- "digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
36
- "gitSha": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
37
- "repoRef": {
38
- "type": "string", "minLength": 1, "maxLength": 1024,
39
- "pattern": "^(?!/)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*\\\\)(?!.*[\\u0000-\\u001f\\u007f])[^/]+(?:/[^/]+)*$"
40
- },
41
- "text": {
42
- "type": "string", "minLength": 1, "maxLength": 4096,
43
- "pattern": "^[^\\u0000-\\u001f\\u007f]+$"
44
- },
45
- "schemaRef": {
46
- "type": "object", "additionalProperties": false,
47
- "required": ["path", "symbol", "json_pointer"],
48
- "properties": {
49
- "path": { "$ref": "#/$defs/repoRef" },
50
- "symbol": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
51
- "json_pointer": {
52
- "oneOf": [
53
- { "type": "null" },
54
- { "type": "string", "pattern": "^(?:/(?:[^~/]|~[01])*)*$" }
55
- ]
56
- }
57
- }
58
- },
59
- "dataContract": {
60
- "type": "object", "additionalProperties": false,
61
- "required": [
62
- "shape_id", "schema_ref", "identity_fields", "lifecycle", "cardinality",
63
- "compatible_shape_ids"
64
- ],
65
- "properties": {
66
- "shape_id": { "$ref": "#/$defs/identifier" },
67
- "schema_ref": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/schemaRef" }] },
68
- "identity_fields": {
69
- "type": "array", "maxItems": 256, "uniqueItems": true,
70
- "items": { "$ref": "#/$defs/identifier" }
71
- },
72
- "lifecycle": {
73
- "enum": ["snapshot", "event", "stream", "mutable_state", "immutable_artifact"]
74
- },
75
- "cardinality": { "enum": ["one", "optional", "many"] },
76
- "compatible_shape_ids": {
77
- "type": "array", "maxItems": 256, "uniqueItems": true,
78
- "items": { "$ref": "#/$defs/identifier" }
79
- }
80
- }
81
- },
82
- "codeAnchor": {
83
- "type": "object", "additionalProperties": false,
84
- "required": ["anchor_id", "effect", "path", "symbol", "expected_at"],
85
- "properties": {
86
- "anchor_id": { "$ref": "#/$defs/identifier" },
87
- "effect": { "enum": ["read", "modify", "create", "delete"] },
88
- "path": { "$ref": "#/$defs/repoRef" },
89
- "symbol": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
90
- "expected_at": { "enum": ["baseline", "current", "after_task"] }
91
- }
92
- },
93
- "sourceRef": {
94
- "oneOf": [
95
- {
96
- "type": "object", "additionalProperties": false,
97
- "required": ["kind", "anchor_id"],
98
- "properties": { "kind": { "const": "code" }, "anchor_id": { "$ref": "#/$defs/identifier" } }
99
- },
100
- {
101
- "type": "object", "additionalProperties": false,
102
- "required": ["kind", "task_id", "port_id"],
103
- "properties": {
104
- "kind": { "const": "task_output" },
105
- "task_id": { "$ref": "#/$defs/identifier" },
106
- "port_id": { "$ref": "#/$defs/identifier" }
107
- }
108
- },
109
- {
110
- "type": "object", "additionalProperties": false,
111
- "required": ["kind", "contract_id"],
112
- "properties": {
113
- "kind": { "const": "external" },
114
- "contract_id": { "$ref": "#/$defs/identifier" }
115
- }
116
- },
117
- {
118
- "type": "object", "additionalProperties": false,
119
- "required": ["kind", "constant_id", "value"],
120
- "properties": {
121
- "kind": { "const": "constant" },
122
- "constant_id": { "$ref": "#/$defs/identifier" },
123
- "value": true
124
- }
125
- }
126
- ]
127
- },
128
- "inputPort": {
129
- "type": "object", "additionalProperties": false,
130
- "required": ["port_id", "source", "access", "contract"],
131
- "properties": {
132
- "port_id": { "$ref": "#/$defs/identifier" },
133
- "source": { "$ref": "#/$defs/sourceRef" },
134
- "access": { "enum": ["read", "consume", "observe"] },
135
- "contract": { "$ref": "#/$defs/dataContract" }
136
- }
137
- },
138
- "outputSink": {
139
- "oneOf": [
140
- {
141
- "type": "object", "additionalProperties": false,
142
- "required": ["kind", "task_id", "port_id"],
143
- "properties": {
144
- "kind": { "const": "task" },
145
- "task_id": { "$ref": "#/$defs/identifier" },
146
- "port_id": { "$ref": "#/$defs/identifier" }
147
- }
148
- },
149
- {
150
- "type": "object", "additionalProperties": false,
151
- "required": ["kind", "anchor_id"],
152
- "properties": { "kind": { "const": "code" }, "anchor_id": { "$ref": "#/$defs/identifier" } }
153
- },
154
- {
155
- "type": "object", "additionalProperties": false,
156
- "required": ["kind", "contract_id"],
157
- "properties": {
158
- "kind": { "const": "external" },
159
- "contract_id": { "$ref": "#/$defs/identifier" }
160
- }
161
- },
162
- {
163
- "type": "object", "additionalProperties": false,
164
- "required": ["kind", "product_id"],
165
- "properties": {
166
- "kind": { "const": "final_product" },
167
- "product_id": { "$ref": "#/$defs/identifier" }
168
- }
169
- }
170
- ]
171
- },
172
- "outputPort": {
173
- "type": "object", "additionalProperties": false,
174
- "required": ["port_id", "data_id", "contract", "sinks"],
175
- "properties": {
176
- "port_id": { "$ref": "#/$defs/identifier" },
177
- "data_id": { "$ref": "#/$defs/identifier" },
178
- "contract": { "$ref": "#/$defs/dataContract" },
179
- "sinks": {
180
- "type": "array", "maxItems": 256, "uniqueItems": true,
181
- "items": { "$ref": "#/$defs/outputSink" }
182
- }
183
- }
184
- },
185
- "operation": {
186
- "type": "object", "additionalProperties": false,
187
- "required": ["operation_id", "input_port_ids", "output_port_ids", "summary"],
188
- "properties": {
189
- "operation_id": { "$ref": "#/$defs/identifier" },
190
- "input_port_ids": {
191
- "type": "array", "maxItems": 256, "uniqueItems": true,
192
- "items": { "$ref": "#/$defs/identifier" }
193
- },
194
- "output_port_ids": {
195
- "type": "array", "minItems": 1, "maxItems": 256, "uniqueItems": true,
196
- "items": { "$ref": "#/$defs/identifier" }
197
- },
198
- "summary": { "$ref": "#/$defs/text" }
199
- }
200
- },
201
- "transform": {
202
- "type": "object", "additionalProperties": false,
203
- "required": [
204
- "outcome", "inputs", "operations", "outputs", "code_anchors", "failures",
205
- "first_live_e2e", "non_goals"
206
- ],
207
- "properties": {
208
- "outcome": { "$ref": "#/$defs/text" },
209
- "inputs": {
210
- "type": "array", "maxItems": 256, "uniqueItems": true,
211
- "items": { "$ref": "#/$defs/inputPort" }
212
- },
213
- "operations": {
214
- "type": "array", "maxItems": 256, "uniqueItems": true,
215
- "items": { "$ref": "#/$defs/operation" }
216
- },
217
- "outputs": {
218
- "type": "array", "maxItems": 256, "uniqueItems": true,
219
- "items": { "$ref": "#/$defs/outputPort" }
220
- },
221
- "code_anchors": {
222
- "type": "array", "maxItems": 256, "uniqueItems": true,
223
- "items": { "$ref": "#/$defs/codeAnchor" }
224
- },
225
- "failures": {
226
- "type": "array", "maxItems": 128, "uniqueItems": true,
227
- "items": { "$ref": "#/$defs/text" }
228
- },
229
- "first_live_e2e": { "$ref": "#/$defs/text" },
230
- "non_goals": {
231
- "type": "array", "maxItems": 128, "uniqueItems": true,
232
- "items": { "$ref": "#/$defs/text" }
233
- }
234
- }
235
- },
236
- "externalContract": {
237
- "type": "object", "additionalProperties": false,
238
- "required": ["contract_id", "description", "contract"],
239
- "properties": {
240
- "contract_id": { "$ref": "#/$defs/identifier" },
241
- "description": { "$ref": "#/$defs/text" },
242
- "contract": { "$ref": "#/$defs/dataContract" }
243
- }
244
- },
245
- "graphTask": {
246
- "type": "object", "additionalProperties": false,
247
- "required": ["task_id", "applicability", "planned"],
248
- "properties": {
249
- "task_id": { "$ref": "#/$defs/identifier" },
250
- "applicability": { "const": "graph" },
251
- "planned": { "$ref": "#/$defs/transform" }
252
- }
253
- },
254
- "excludedTask": {
255
- "type": "object", "additionalProperties": false,
256
- "required": ["task_id", "applicability", "excluded_reason"],
257
- "properties": {
258
- "task_id": { "$ref": "#/$defs/identifier" },
259
- "applicability": { "const": "excluded" },
260
- "excluded_reason": { "$ref": "#/$defs/text" }
261
- }
262
- }
263
- }
264
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/kitepon/Lattice/blob/main/docs/schemas/lattice.todo_structure_set.v1.schema.json",
4
+ "title": "lattice.todo_structure_set.v1",
5
+ "description": "AI-authored logical dataflow overlay for one registered Lattice plan version.",
6
+ "$comment": "Runtime validation additionally enforces UTF-8 byte bounds, strict canonical ordering, referential integrity, exact plan task coverage when supplied, unique data IDs, constant canonical-byte limits, the canonical self-digest, and plan-wide totals of at most 512 anchors, 4096 ports, 2048 operations, and 4096 sinks.",
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "required": [
10
+ "schema", "project_id", "plan_key", "plan_version", "topology_digest", "profile",
11
+ "baseline_sha", "external_contracts", "tasks", "structure_set_digest"
12
+ ],
13
+ "properties": {
14
+ "schema": { "const": "lattice.todo_structure_set.v1" },
15
+ "project_id": { "$ref": "#/$defs/identifier" },
16
+ "plan_key": { "$ref": "#/$defs/identifier" },
17
+ "plan_version": { "$ref": "#/$defs/identifier" },
18
+ "topology_digest": { "$ref": "#/$defs/digest" },
19
+ "profile": { "const": "code-dataflow" },
20
+ "baseline_sha": { "$ref": "#/$defs/gitSha" },
21
+ "external_contracts": {
22
+ "type": "array", "maxItems": 256, "uniqueItems": true,
23
+ "items": { "$ref": "#/$defs/externalContract" }
24
+ },
25
+ "tasks": {
26
+ "type": "array", "minItems": 1, "maxItems": 512, "uniqueItems": true,
27
+ "items": { "oneOf": [{ "$ref": "#/$defs/graphTask" }, { "$ref": "#/$defs/excludedTask" }] }
28
+ },
29
+ "structure_set_digest": { "$ref": "#/$defs/digest" }
30
+ },
31
+ "$defs": {
32
+ "identifier": {
33
+ "type": "string", "pattern": "^[0-9A-Za-z](?:[0-9A-Za-z._-]{0,127})$"
34
+ },
35
+ "digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
36
+ "gitSha": { "type": "string", "pattern": "^[0-9a-f]{40}$" },
37
+ "repoRef": {
38
+ "type": "string", "minLength": 1, "maxLength": 1024,
39
+ "pattern": "^(?!/)(?!.*(?:^|/)\\.{1,2}(?:/|$))(?!.*\\\\)(?!.*[\\u0000-\\u001f\\u007f])[^/]+(?:/[^/]+)*$"
40
+ },
41
+ "text": {
42
+ "type": "string", "minLength": 1, "maxLength": 4096,
43
+ "pattern": "^[^\\u0000-\\u001f\\u007f]+$"
44
+ },
45
+ "schemaRef": {
46
+ "type": "object", "additionalProperties": false,
47
+ "required": ["path", "symbol", "json_pointer"],
48
+ "properties": {
49
+ "path": { "$ref": "#/$defs/repoRef" },
50
+ "symbol": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
51
+ "json_pointer": {
52
+ "oneOf": [
53
+ { "type": "null" },
54
+ { "type": "string", "pattern": "^(?:/(?:[^~/]|~[01])*)*$" }
55
+ ]
56
+ }
57
+ }
58
+ },
59
+ "dataContract": {
60
+ "type": "object", "additionalProperties": false,
61
+ "required": [
62
+ "shape_id", "schema_ref", "identity_fields", "lifecycle", "cardinality",
63
+ "compatible_shape_ids"
64
+ ],
65
+ "properties": {
66
+ "shape_id": { "$ref": "#/$defs/identifier" },
67
+ "schema_ref": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/schemaRef" }] },
68
+ "identity_fields": {
69
+ "type": "array", "maxItems": 256, "uniqueItems": true,
70
+ "items": { "$ref": "#/$defs/identifier" }
71
+ },
72
+ "lifecycle": {
73
+ "enum": ["snapshot", "event", "stream", "mutable_state", "immutable_artifact"]
74
+ },
75
+ "cardinality": { "enum": ["one", "optional", "many"] },
76
+ "compatible_shape_ids": {
77
+ "type": "array", "maxItems": 256, "uniqueItems": true,
78
+ "items": { "$ref": "#/$defs/identifier" }
79
+ }
80
+ }
81
+ },
82
+ "codeAnchor": {
83
+ "type": "object", "additionalProperties": false,
84
+ "required": ["anchor_id", "effect", "path", "symbol", "expected_at"],
85
+ "properties": {
86
+ "anchor_id": { "$ref": "#/$defs/identifier" },
87
+ "effect": { "enum": ["read", "modify", "create", "delete"] },
88
+ "path": { "$ref": "#/$defs/repoRef" },
89
+ "symbol": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
90
+ "expected_at": { "enum": ["baseline", "current", "after_task"] }
91
+ }
92
+ },
93
+ "sourceRef": {
94
+ "oneOf": [
95
+ {
96
+ "type": "object", "additionalProperties": false,
97
+ "required": ["kind", "anchor_id"],
98
+ "properties": { "kind": { "const": "code" }, "anchor_id": { "$ref": "#/$defs/identifier" } }
99
+ },
100
+ {
101
+ "type": "object", "additionalProperties": false,
102
+ "required": ["kind", "task_id", "port_id"],
103
+ "properties": {
104
+ "kind": { "const": "task_output" },
105
+ "task_id": { "$ref": "#/$defs/identifier" },
106
+ "port_id": { "$ref": "#/$defs/identifier" }
107
+ }
108
+ },
109
+ {
110
+ "type": "object", "additionalProperties": false,
111
+ "required": ["kind", "contract_id"],
112
+ "properties": {
113
+ "kind": { "const": "external" },
114
+ "contract_id": { "$ref": "#/$defs/identifier" }
115
+ }
116
+ },
117
+ {
118
+ "type": "object", "additionalProperties": false,
119
+ "required": ["kind", "constant_id", "value"],
120
+ "properties": {
121
+ "kind": { "const": "constant" },
122
+ "constant_id": { "$ref": "#/$defs/identifier" },
123
+ "value": true
124
+ }
125
+ }
126
+ ]
127
+ },
128
+ "inputPort": {
129
+ "type": "object", "additionalProperties": false,
130
+ "required": ["port_id", "source", "access", "contract"],
131
+ "properties": {
132
+ "port_id": { "$ref": "#/$defs/identifier" },
133
+ "source": { "$ref": "#/$defs/sourceRef" },
134
+ "access": { "enum": ["read", "consume", "observe"] },
135
+ "contract": { "$ref": "#/$defs/dataContract" }
136
+ }
137
+ },
138
+ "outputSink": {
139
+ "oneOf": [
140
+ {
141
+ "type": "object", "additionalProperties": false,
142
+ "required": ["kind", "task_id", "port_id"],
143
+ "properties": {
144
+ "kind": { "const": "task" },
145
+ "task_id": { "$ref": "#/$defs/identifier" },
146
+ "port_id": { "$ref": "#/$defs/identifier" }
147
+ }
148
+ },
149
+ {
150
+ "type": "object", "additionalProperties": false,
151
+ "required": ["kind", "anchor_id"],
152
+ "properties": { "kind": { "const": "code" }, "anchor_id": { "$ref": "#/$defs/identifier" } }
153
+ },
154
+ {
155
+ "type": "object", "additionalProperties": false,
156
+ "required": ["kind", "contract_id"],
157
+ "properties": {
158
+ "kind": { "const": "external" },
159
+ "contract_id": { "$ref": "#/$defs/identifier" }
160
+ }
161
+ },
162
+ {
163
+ "type": "object", "additionalProperties": false,
164
+ "required": ["kind", "product_id"],
165
+ "properties": {
166
+ "kind": { "const": "final_product" },
167
+ "product_id": { "$ref": "#/$defs/identifier" }
168
+ }
169
+ }
170
+ ]
171
+ },
172
+ "outputPort": {
173
+ "type": "object", "additionalProperties": false,
174
+ "required": ["port_id", "data_id", "contract", "sinks"],
175
+ "properties": {
176
+ "port_id": { "$ref": "#/$defs/identifier" },
177
+ "data_id": { "$ref": "#/$defs/identifier" },
178
+ "contract": { "$ref": "#/$defs/dataContract" },
179
+ "sinks": {
180
+ "type": "array", "maxItems": 256, "uniqueItems": true,
181
+ "items": { "$ref": "#/$defs/outputSink" }
182
+ }
183
+ }
184
+ },
185
+ "operation": {
186
+ "type": "object", "additionalProperties": false,
187
+ "required": ["operation_id", "input_port_ids", "output_port_ids", "summary"],
188
+ "properties": {
189
+ "operation_id": { "$ref": "#/$defs/identifier" },
190
+ "input_port_ids": {
191
+ "type": "array", "maxItems": 256, "uniqueItems": true,
192
+ "items": { "$ref": "#/$defs/identifier" }
193
+ },
194
+ "output_port_ids": {
195
+ "type": "array", "minItems": 1, "maxItems": 256, "uniqueItems": true,
196
+ "items": { "$ref": "#/$defs/identifier" }
197
+ },
198
+ "summary": { "$ref": "#/$defs/text" }
199
+ }
200
+ },
201
+ "transform": {
202
+ "type": "object", "additionalProperties": false,
203
+ "required": [
204
+ "outcome", "inputs", "operations", "outputs", "code_anchors", "failures",
205
+ "first_live_e2e", "non_goals"
206
+ ],
207
+ "properties": {
208
+ "outcome": { "$ref": "#/$defs/text" },
209
+ "inputs": {
210
+ "type": "array", "maxItems": 256, "uniqueItems": true,
211
+ "items": { "$ref": "#/$defs/inputPort" }
212
+ },
213
+ "operations": {
214
+ "type": "array", "maxItems": 256, "uniqueItems": true,
215
+ "items": { "$ref": "#/$defs/operation" }
216
+ },
217
+ "outputs": {
218
+ "type": "array", "maxItems": 256, "uniqueItems": true,
219
+ "items": { "$ref": "#/$defs/outputPort" }
220
+ },
221
+ "code_anchors": {
222
+ "type": "array", "maxItems": 256, "uniqueItems": true,
223
+ "items": { "$ref": "#/$defs/codeAnchor" }
224
+ },
225
+ "failures": {
226
+ "type": "array", "maxItems": 128, "uniqueItems": true,
227
+ "items": { "$ref": "#/$defs/text" }
228
+ },
229
+ "first_live_e2e": { "$ref": "#/$defs/text" },
230
+ "non_goals": {
231
+ "type": "array", "maxItems": 128, "uniqueItems": true,
232
+ "items": { "$ref": "#/$defs/text" }
233
+ }
234
+ }
235
+ },
236
+ "externalContract": {
237
+ "type": "object", "additionalProperties": false,
238
+ "required": ["contract_id", "description", "contract"],
239
+ "properties": {
240
+ "contract_id": { "$ref": "#/$defs/identifier" },
241
+ "description": { "$ref": "#/$defs/text" },
242
+ "contract": { "$ref": "#/$defs/dataContract" }
243
+ }
244
+ },
245
+ "graphTask": {
246
+ "type": "object", "additionalProperties": false,
247
+ "required": ["task_id", "applicability", "planned"],
248
+ "properties": {
249
+ "task_id": { "$ref": "#/$defs/identifier" },
250
+ "applicability": { "const": "graph" },
251
+ "planned": { "$ref": "#/$defs/transform" }
252
+ }
253
+ },
254
+ "excludedTask": {
255
+ "type": "object", "additionalProperties": false,
256
+ "required": ["task_id", "applicability", "excluded_reason"],
257
+ "properties": {
258
+ "task_id": { "$ref": "#/$defs/identifier" },
259
+ "applicability": { "const": "excluded" },
260
+ "excluded_reason": { "$ref": "#/$defs/text" }
261
+ }
262
+ }
263
+ }
264
+ }