@mplp/schema 1.0.4 → 1.0.6

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 (43) hide show
  1. package/LICENSE +17 -0
  2. package/LICENSE.txt +201 -201
  3. package/README.md +25 -7
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.js +15 -0
  6. package/dist/kernel-duties.d.ts +9 -0
  7. package/dist/kernel-duties.js +19 -0
  8. package/package.json +17 -7
  9. package/schemas/common/common-types.schema.json +49 -49
  10. package/schemas/common/events.schema.json +66 -66
  11. package/schemas/common/identifiers.schema.json +13 -13
  12. package/schemas/common/learning-sample.schema.json +194 -194
  13. package/schemas/common/metadata.schema.json +115 -113
  14. package/schemas/common/trace-base.schema.json +43 -43
  15. package/schemas/events/mplp-event-core.schema.json +58 -58
  16. package/schemas/events/mplp-graph-update-event.schema.json +58 -58
  17. package/schemas/events/mplp-map-event.schema.json +147 -147
  18. package/schemas/events/mplp-pipeline-stage-event.schema.json +56 -56
  19. package/schemas/events/mplp-runtime-execution-event.schema.json +58 -58
  20. package/schemas/events/mplp-sa-event.schema.json +109 -109
  21. package/schemas/integration/mplp-ci-event.schema.json +130 -130
  22. package/schemas/integration/mplp-file-update-event.schema.json +70 -70
  23. package/schemas/integration/mplp-git-event.schema.json +98 -98
  24. package/schemas/integration/mplp-tool-event.schema.json +83 -83
  25. package/schemas/invariants/integration-invariants.yaml +139 -147
  26. package/schemas/invariants/learning-invariants.yaml +98 -106
  27. package/schemas/invariants/map-invariants.yaml +65 -73
  28. package/schemas/invariants/observability-invariants.yaml +98 -106
  29. package/schemas/invariants/sa-invariants.yaml +64 -72
  30. package/schemas/kernel-duties.json +18 -0
  31. package/schemas/learning/mplp-learning-sample-core.schema.json +94 -94
  32. package/schemas/learning/mplp-learning-sample-delta.schema.json +137 -137
  33. package/schemas/learning/mplp-learning-sample-intent.schema.json +119 -119
  34. package/schemas/mplp-collab.schema.json +243 -243
  35. package/schemas/mplp-confirm.schema.json +226 -226
  36. package/schemas/mplp-context.schema.json +246 -246
  37. package/schemas/mplp-core.schema.json +183 -183
  38. package/schemas/mplp-dialog.schema.json +198 -198
  39. package/schemas/mplp-extension.schema.json +179 -179
  40. package/schemas/mplp-network.schema.json +230 -230
  41. package/schemas/mplp-plan.schema.json +193 -193
  42. package/schemas/mplp-role.schema.json +139 -139
  43. package/schemas/mplp-trace.schema.json +216 -216
@@ -1,49 +1,49 @@
1
- {
2
- "$comment": "MPLP Protocol v1.0.0 — Frozen Specification\nFreeze Date: 2025-12-03\nStatus: FROZEN (no breaking changes permitted)\nGovernance: MPLP Protocol Governance Committee (MPGC)\nCopyright: © 2025 邦士(北京)网络科技有限公司\nLicense: Apache-2.0\nAny normative change requires a new protocol version.",
3
- "$id": "https://schemas.mplp.dev/v1.0/common/common-types.schema.json",
4
- "$schema": "http://json-schema.org/draft-07/schema#",
5
- "title": "MPLP Common Types",
6
- "description": "Common type definitions used across MPLP modules to ensure consistency and reduce duplication.",
7
- "definitions": {
8
- "MplpId": {
9
- "$ref": "identifiers.schema.json"
10
- },
11
- "Ref": {
12
- "type": "object",
13
- "description": "A standard reference to another MPLP object.",
14
- "properties": {
15
- "id": {
16
- "$ref": "#/definitions/MplpId"
17
- },
18
- "module": {
19
- "type": "string",
20
- "enum": [
21
- "context",
22
- "plan",
23
- "confirm",
24
- "trace",
25
- "role",
26
- "extension",
27
- "dialog",
28
- "collab",
29
- "core",
30
- "network"
31
- ],
32
- "description": "The module name of the referenced object."
33
- },
34
- "description": {
35
- "type": "string",
36
- "description": "Optional description of the reference relationship."
37
- }
38
- },
39
- "required": [
40
- "id",
41
- "module"
42
- ],
43
- "additionalProperties": false
44
- },
45
- "BaseMeta": {
46
- "$ref": "metadata.schema.json"
47
- }
48
- }
49
- }
1
+ {
2
+ "$comment": "MPLP Protocol v1.0.0 — Frozen Specification\nFreeze Date: 2025-12-03\nStatus: FROZEN (no breaking changes permitted)\nGovernance: MPLP Protocol Governance Committee (MPGC)\nCopyright: © 2026 Bangshi Beijing Network Technology Limited Company\nLicense: Apache-2.0\nAny normative change requires a new protocol version.",
3
+ "$id": "https://schemas.mplp.dev/v1.0/common/common-types.schema.json",
4
+ "$schema": "http://json-schema.org/draft-07/schema#",
5
+ "title": "MPLP Common Types",
6
+ "description": "Common type definitions used across MPLP modules to ensure consistency and reduce duplication.",
7
+ "definitions": {
8
+ "MplpId": {
9
+ "$ref": "identifiers.schema.json"
10
+ },
11
+ "Ref": {
12
+ "type": "object",
13
+ "description": "A standard reference to another MPLP object.",
14
+ "properties": {
15
+ "id": {
16
+ "$ref": "#/definitions/MplpId"
17
+ },
18
+ "module": {
19
+ "type": "string",
20
+ "enum": [
21
+ "context",
22
+ "plan",
23
+ "confirm",
24
+ "trace",
25
+ "role",
26
+ "extension",
27
+ "dialog",
28
+ "collab",
29
+ "core",
30
+ "network"
31
+ ],
32
+ "description": "The module name of the referenced object."
33
+ },
34
+ "description": {
35
+ "type": "string",
36
+ "description": "Optional description of the reference relationship."
37
+ }
38
+ },
39
+ "required": [
40
+ "id",
41
+ "module"
42
+ ],
43
+ "additionalProperties": false
44
+ },
45
+ "BaseMeta": {
46
+ "$ref": "metadata.schema.json"
47
+ }
48
+ }
49
+ }
@@ -1,66 +1,66 @@
1
- {
2
- "$comment": "MPLP Protocol v1.0.0 — Frozen Specification\nFreeze Date: 2025-12-03\nStatus: FROZEN (no breaking changes permitted)\nGovernance: MPLP Protocol Governance Committee (MPGC)\nCopyright: © 2025 邦士(北京)网络科技有限公司\nLicense: Apache-2.0\nAny normative change requires a new protocol version.",
3
- "$id": "https://schemas.mplp.dev/v1.0/common/events.schema.json",
4
- "$schema": "http://json-schema.org/draft-07/schema#",
5
- "title": "MPLP Base Event",
6
- "description": "Base model for all event structures in MPLP. Designed based on CloudEvents v1.0 core fields, providing unified event identification, type, source, and timestamp. ExecutionEvent, StateTransitionEvent, etc., are extensions of this.",
7
- "type": "object",
8
- "properties": {
9
- "event_id": {
10
- "$ref": "identifiers.schema.json",
11
- "description": "Unique identifier for the event (UUID v4)."
12
- },
13
- "event_type": {
14
- "type": "string",
15
- "description": "Event type identifier, e.g., execution.started / vsl.transition.applied / plan.created. Uses dot-separated namespace format.",
16
- "pattern": "^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9]*)*$",
17
- "examples": [
18
- "execution.started",
19
- "execution.completed",
20
- "vsl.transition.applied",
21
- "plan.created"
22
- ]
23
- },
24
- "source": {
25
- "type": "string",
26
- "description": "Event source, typically a module or component identifier. Can be a module name (e.g., 'context') or component path (e.g., 'runtime.ael').",
27
- "examples": [
28
- "context",
29
- "plan",
30
- "runtime.ael",
31
- "runtime.vsl"
32
- ]
33
- },
34
- "timestamp": {
35
- "type": "string",
36
- "format": "date-time",
37
- "description": "Event occurrence time (ISO 8601 format).",
38
- "examples": [
39
- "2025-01-28T15:30:00.000Z"
40
- ]
41
- },
42
- "trace_id": {
43
- "description": "Optional trace ID to associate the event with a specific Trace.",
44
- "$ref": "identifiers.schema.json"
45
- },
46
- "data": {
47
- "anyOf": [
48
- {
49
- "type": "object",
50
- "description": "Business data related to the event, constrained by upper-layer structures. Can be any JSON object or null."
51
- },
52
- {
53
- "type": "null",
54
- "description": "Business data related to the event, constrained by upper-layer structures. Can be any JSON object or null."
55
- }
56
- ]
57
- }
58
- },
59
- "required": [
60
- "event_id",
61
- "event_type",
62
- "source",
63
- "timestamp"
64
- ],
65
- "additionalProperties": false
66
- }
1
+ {
2
+ "$comment": "MPLP Protocol v1.0.0 — Frozen Specification\nFreeze Date: 2025-12-03\nStatus: FROZEN (no breaking changes permitted)\nGovernance: MPLP Protocol Governance Committee (MPGC)\nCopyright: © 2026 Bangshi Beijing Network Technology Limited Company\nLicense: Apache-2.0\nAny normative change requires a new protocol version.",
3
+ "$id": "https://schemas.mplp.dev/v1.0/common/events.schema.json",
4
+ "$schema": "http://json-schema.org/draft-07/schema#",
5
+ "title": "MPLP Base Event",
6
+ "description": "Base model for all event structures in MPLP. Designed based on CloudEvents v1.0 core fields, providing unified event identification, type, source, and timestamp. ExecutionEvent, StateTransitionEvent, etc., are extensions of this.",
7
+ "type": "object",
8
+ "properties": {
9
+ "event_id": {
10
+ "$ref": "identifiers.schema.json",
11
+ "description": "Unique identifier for the event (UUID v4)."
12
+ },
13
+ "event_type": {
14
+ "type": "string",
15
+ "description": "Event type identifier, e.g., execution.started / vsl.transition.applied / plan.created. Uses dot-separated namespace format.",
16
+ "pattern": "^[a-z][a-z0-9]*(?:\\.[a-z][a-z0-9]*)*$",
17
+ "examples": [
18
+ "execution.started",
19
+ "execution.completed",
20
+ "vsl.transition.applied",
21
+ "plan.created"
22
+ ]
23
+ },
24
+ "source": {
25
+ "type": "string",
26
+ "description": "Event source, typically a module or component identifier. Can be a module name (e.g., 'context') or component path (e.g., 'runtime.ael').",
27
+ "examples": [
28
+ "context",
29
+ "plan",
30
+ "runtime.ael",
31
+ "runtime.vsl"
32
+ ]
33
+ },
34
+ "timestamp": {
35
+ "type": "string",
36
+ "format": "date-time",
37
+ "description": "Event occurrence time (ISO 8601 format).",
38
+ "examples": [
39
+ "2025-01-28T15:30:00.000Z"
40
+ ]
41
+ },
42
+ "trace_id": {
43
+ "description": "Optional trace ID to associate the event with a specific Trace.",
44
+ "$ref": "identifiers.schema.json"
45
+ },
46
+ "data": {
47
+ "anyOf": [
48
+ {
49
+ "type": "object",
50
+ "description": "Business data related to the event, constrained by upper-layer structures. Can be any JSON object or null."
51
+ },
52
+ {
53
+ "type": "null",
54
+ "description": "Business data related to the event, constrained by upper-layer structures. Can be any JSON object or null."
55
+ }
56
+ ]
57
+ }
58
+ },
59
+ "required": [
60
+ "event_id",
61
+ "event_type",
62
+ "source",
63
+ "timestamp"
64
+ ],
65
+ "additionalProperties": false
66
+ }
@@ -1,13 +1,13 @@
1
- {
2
- "$comment": "MPLP Protocol v1.0.0 — Frozen Specification\nFreeze Date: 2025-12-03\nStatus: FROZEN (no breaking changes permitted)\nGovernance: MPLP Protocol Governance Committee (MPGC)\nCopyright: © 2025 邦士(北京)网络科技有限公司\nLicense: Apache-2.0\nAny normative change requires a new protocol version.",
3
- "$id": "https://schemas.mplp.dev/v1.0/common/identifiers.schema.json",
4
- "$schema": "http://json-schema.org/draft-07/schema#",
5
- "title": "MPLP Identifier",
6
- "description": "Unified identifier type used for contextId/planId/traceId/eventId, etc. Uses UUID v4 standard to ensure global uniqueness and collision-free generation in distributed environments.",
7
- "type": "string",
8
- "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
9
- "examples": [
10
- "123e4567-e89b-12d3-a456-426614174000",
11
- "550e8400-e29b-41d4-a716-446655440000"
12
- ]
13
- }
1
+ {
2
+ "$comment": "MPLP Protocol v1.0.0 — Frozen Specification\nFreeze Date: 2025-12-03\nStatus: FROZEN (no breaking changes permitted)\nGovernance: MPLP Protocol Governance Committee (MPGC)\nCopyright: © 2026 Bangshi Beijing Network Technology Limited Company\nLicense: Apache-2.0\nAny normative change requires a new protocol version.",
3
+ "$id": "https://schemas.mplp.dev/v1.0/common/identifiers.schema.json",
4
+ "$schema": "http://json-schema.org/draft-07/schema#",
5
+ "title": "MPLP Identifier",
6
+ "description": "Unified identifier type used for contextId/planId/traceId/eventId, etc. Uses UUID v4 standard to ensure global uniqueness and collision-free generation in distributed environments.",
7
+ "type": "string",
8
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
9
+ "examples": [
10
+ "123e4567-e89b-12d3-a456-426614174000",
11
+ "550e8400-e29b-41d4-a716-446655440000"
12
+ ]
13
+ }
@@ -1,194 +1,194 @@
1
- {
2
- "$comment": "MPLP Protocol v1.0.0 — Frozen Specification\nFreeze Date: 2025-12-03\nStatus: FROZEN (no breaking changes permitted)\nGovernance: MPLP Protocol Governance Committee (MPGC)\nCopyright: © 2025 邦士(北京)网络科技有限公司\nLicense: Apache-2.0\nAny normative change requires a new protocol version.",
3
- "$schema": "http://json-schema.org/draft-07/schema#",
4
- "$id": "https://schemas.mplp.dev/v1.0/common/learning-sample.schema.json",
5
- "title": "MPLP Learning Sample – Schema v2.0",
6
- "description": "Structured learning sample for MPLP v1.0 runtimes.",
7
- "type": "object",
8
- "additionalProperties": false,
9
- "properties": {
10
- "sample_id": {
11
- "$ref": "identifiers.schema.json",
12
- "description": "Unique identifier for this learning sample."
13
- },
14
- "project_id": {
15
- "type": "string",
16
- "description": "Project identifier this sample belongs to."
17
- },
18
- "intent_before": {
19
- "type": "object",
20
- "description": "Structured representation of the original intent (can reference Context/Plan).",
21
- "additionalProperties": true
22
- },
23
- "plan": {
24
- "type": "object",
25
- "description": "Structured representation of the plan used (can reference Plan module).",
26
- "additionalProperties": true
27
- },
28
- "delta_intents": {
29
- "type": "array",
30
- "description": "Array of delta intents proposed/applied.",
31
- "items": {
32
- "type": "object",
33
- "additionalProperties": true
34
- }
35
- },
36
- "graph_before": {
37
- "type": "object",
38
- "description": "Optional snapshot or summary of the knowledge graph before the change.",
39
- "additionalProperties": true
40
- },
41
- "graph_after": {
42
- "type": "object",
43
- "description": "Optional snapshot or summary of the knowledge graph after the change.",
44
- "additionalProperties": true
45
- },
46
- "pipeline_path": {
47
- "type": "array",
48
- "description": "Sequence of pipeline stages traversed.",
49
- "items": {
50
- "type": "string"
51
- }
52
- },
53
- "success_flag": {
54
- "type": "boolean",
55
- "description": "Whether the action/intent succeeded."
56
- },
57
- "error_info": {
58
- "type": "object",
59
- "description": "Error details if action failed.",
60
- "additionalProperties": false,
61
- "properties": {
62
- "error_code": {
63
- "type": "string"
64
- },
65
- "error_message": {
66
- "type": "string"
67
- },
68
- "stack_trace": {
69
- "type": "string"
70
- }
71
- }
72
- },
73
- "token_usage": {
74
- "type": "object",
75
- "description": "LLM token consumption metrics.",
76
- "additionalProperties": false,
77
- "properties": {
78
- "total_tokens": {
79
- "type": "number",
80
- "minimum": 0
81
- },
82
- "prompt_tokens": {
83
- "type": "number",
84
- "minimum": 0
85
- },
86
- "completion_tokens": {
87
- "type": "number",
88
- "minimum": 0
89
- },
90
- "by_agent": {
91
- "type": "array",
92
- "description": "Token usage breakdown by agent.",
93
- "items": {
94
- "type": "object",
95
- "additionalProperties": false,
96
- "properties": {
97
- "agent_id": {
98
- "type": "string"
99
- },
100
- "role": {
101
- "type": "string"
102
- },
103
- "tokens": {
104
- "type": "number",
105
- "minimum": 0
106
- }
107
- },
108
- "required": [
109
- "agent_id",
110
- "tokens"
111
- ]
112
- }
113
- }
114
- }
115
- },
116
- "execution_time_ms": {
117
- "type": "number",
118
- "description": "Execution time in milliseconds.",
119
- "minimum": 0
120
- },
121
- "impact_score": {
122
- "type": "number",
123
- "description": "Impact score (0.0-1.0).",
124
- "minimum": 0,
125
- "maximum": 1
126
- },
127
- "user_feedback": {
128
- "type": "object",
129
- "description": "Human feedback on the action/result.",
130
- "additionalProperties": false,
131
- "properties": {
132
- "decision": {
133
- "type": "string",
134
- "enum": [
135
- "approve",
136
- "reject",
137
- "override",
138
- "unknown"
139
- ]
140
- },
141
- "comment": {
142
- "type": "string"
143
- },
144
- "rating": {
145
- "type": "number",
146
- "minimum": 0,
147
- "maximum": 5
148
- }
149
- }
150
- },
151
- "governance_decisions": {
152
- "type": "array",
153
- "description": "Governance rules evaluated during execution.",
154
- "items": {
155
- "type": "object",
156
- "additionalProperties": true
157
- }
158
- },
159
- "timestamps": {
160
- "type": "object",
161
- "description": "Execution timeline.",
162
- "additionalProperties": false,
163
- "properties": {
164
- "started_at": {
165
- "type": "string",
166
- "format": "date-time"
167
- },
168
- "completed_at": {
169
- "type": "string",
170
- "format": "date-time"
171
- }
172
- },
173
- "required": [
174
- "started_at"
175
- ]
176
- },
177
- "metadata": {
178
- "type": "object",
179
- "description": "Additional metadata (extensibility point).",
180
- "additionalProperties": true
181
- },
182
- "vendor_extensions": {
183
- "type": "object",
184
- "description": "Optional vendor-specific extensions. Structure is implementation-defined and MUST NOT conflict with core protocol fields.",
185
- "additionalProperties": true
186
- }
187
- },
188
- "required": [
189
- "sample_id",
190
- "project_id",
191
- "success_flag",
192
- "timestamps"
193
- ]
194
- }
1
+ {
2
+ "$comment": "MPLP Protocol v1.0.0 — Frozen Specification\nFreeze Date: 2025-12-03\nStatus: FROZEN (no breaking changes permitted)\nGovernance: MPLP Protocol Governance Committee (MPGC)\nCopyright: © 2026 Bangshi Beijing Network Technology Limited Company\nLicense: Apache-2.0\nAny normative change requires a new protocol version.",
3
+ "$schema": "http://json-schema.org/draft-07/schema#",
4
+ "$id": "https://schemas.mplp.dev/v1.0/common/learning-sample.schema.json",
5
+ "title": "MPLP Learning Sample – Schema v2.0",
6
+ "description": "Structured learning sample for MPLP v1.0 runtimes.",
7
+ "type": "object",
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "sample_id": {
11
+ "$ref": "identifiers.schema.json",
12
+ "description": "Unique identifier for this learning sample."
13
+ },
14
+ "project_id": {
15
+ "type": "string",
16
+ "description": "Project identifier this sample belongs to."
17
+ },
18
+ "intent_before": {
19
+ "type": "object",
20
+ "description": "Structured representation of the original intent (can reference Context/Plan).",
21
+ "additionalProperties": true
22
+ },
23
+ "plan": {
24
+ "type": "object",
25
+ "description": "Structured representation of the plan used (can reference Plan module).",
26
+ "additionalProperties": true
27
+ },
28
+ "delta_intents": {
29
+ "type": "array",
30
+ "description": "Array of delta intents proposed/applied.",
31
+ "items": {
32
+ "type": "object",
33
+ "additionalProperties": true
34
+ }
35
+ },
36
+ "graph_before": {
37
+ "type": "object",
38
+ "description": "Optional snapshot or summary of the knowledge graph before the change.",
39
+ "additionalProperties": true
40
+ },
41
+ "graph_after": {
42
+ "type": "object",
43
+ "description": "Optional snapshot or summary of the knowledge graph after the change.",
44
+ "additionalProperties": true
45
+ },
46
+ "pipeline_path": {
47
+ "type": "array",
48
+ "description": "Sequence of pipeline stages traversed.",
49
+ "items": {
50
+ "type": "string"
51
+ }
52
+ },
53
+ "success_flag": {
54
+ "type": "boolean",
55
+ "description": "Whether the action/intent succeeded."
56
+ },
57
+ "error_info": {
58
+ "type": "object",
59
+ "description": "Error details if action failed.",
60
+ "additionalProperties": false,
61
+ "properties": {
62
+ "error_code": {
63
+ "type": "string"
64
+ },
65
+ "error_message": {
66
+ "type": "string"
67
+ },
68
+ "stack_trace": {
69
+ "type": "string"
70
+ }
71
+ }
72
+ },
73
+ "token_usage": {
74
+ "type": "object",
75
+ "description": "LLM token consumption metrics.",
76
+ "additionalProperties": false,
77
+ "properties": {
78
+ "total_tokens": {
79
+ "type": "number",
80
+ "minimum": 0
81
+ },
82
+ "prompt_tokens": {
83
+ "type": "number",
84
+ "minimum": 0
85
+ },
86
+ "completion_tokens": {
87
+ "type": "number",
88
+ "minimum": 0
89
+ },
90
+ "by_agent": {
91
+ "type": "array",
92
+ "description": "Token usage breakdown by agent.",
93
+ "items": {
94
+ "type": "object",
95
+ "additionalProperties": false,
96
+ "properties": {
97
+ "agent_id": {
98
+ "type": "string"
99
+ },
100
+ "role": {
101
+ "type": "string"
102
+ },
103
+ "tokens": {
104
+ "type": "number",
105
+ "minimum": 0
106
+ }
107
+ },
108
+ "required": [
109
+ "agent_id",
110
+ "tokens"
111
+ ]
112
+ }
113
+ }
114
+ }
115
+ },
116
+ "execution_time_ms": {
117
+ "type": "number",
118
+ "description": "Execution time in milliseconds.",
119
+ "minimum": 0
120
+ },
121
+ "impact_score": {
122
+ "type": "number",
123
+ "description": "Impact score (0.0-1.0).",
124
+ "minimum": 0,
125
+ "maximum": 1
126
+ },
127
+ "user_feedback": {
128
+ "type": "object",
129
+ "description": "Human feedback on the action/result.",
130
+ "additionalProperties": false,
131
+ "properties": {
132
+ "decision": {
133
+ "type": "string",
134
+ "enum": [
135
+ "approve",
136
+ "reject",
137
+ "override",
138
+ "unknown"
139
+ ]
140
+ },
141
+ "comment": {
142
+ "type": "string"
143
+ },
144
+ "rating": {
145
+ "type": "number",
146
+ "minimum": 0,
147
+ "maximum": 5
148
+ }
149
+ }
150
+ },
151
+ "governance_decisions": {
152
+ "type": "array",
153
+ "description": "Governance rules evaluated during execution.",
154
+ "items": {
155
+ "type": "object",
156
+ "additionalProperties": true
157
+ }
158
+ },
159
+ "timestamps": {
160
+ "type": "object",
161
+ "description": "Execution timeline.",
162
+ "additionalProperties": false,
163
+ "properties": {
164
+ "started_at": {
165
+ "type": "string",
166
+ "format": "date-time"
167
+ },
168
+ "completed_at": {
169
+ "type": "string",
170
+ "format": "date-time"
171
+ }
172
+ },
173
+ "required": [
174
+ "started_at"
175
+ ]
176
+ },
177
+ "metadata": {
178
+ "type": "object",
179
+ "description": "Additional metadata (extensibility point).",
180
+ "additionalProperties": true
181
+ },
182
+ "vendor_extensions": {
183
+ "type": "object",
184
+ "description": "Optional vendor-specific extensions. Structure is implementation-defined and MUST NOT conflict with core protocol fields.",
185
+ "additionalProperties": true
186
+ }
187
+ },
188
+ "required": [
189
+ "sample_id",
190
+ "project_id",
191
+ "success_flag",
192
+ "timestamps"
193
+ ]
194
+ }