@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.
- package/LICENSE +17 -0
- package/LICENSE.txt +201 -201
- package/README.md +25 -7
- package/dist/index.d.ts +1 -0
- package/dist/index.js +15 -0
- package/dist/kernel-duties.d.ts +9 -0
- package/dist/kernel-duties.js +19 -0
- package/package.json +17 -7
- package/schemas/common/common-types.schema.json +49 -49
- package/schemas/common/events.schema.json +66 -66
- package/schemas/common/identifiers.schema.json +13 -13
- package/schemas/common/learning-sample.schema.json +194 -194
- package/schemas/common/metadata.schema.json +115 -113
- package/schemas/common/trace-base.schema.json +43 -43
- package/schemas/events/mplp-event-core.schema.json +58 -58
- package/schemas/events/mplp-graph-update-event.schema.json +58 -58
- package/schemas/events/mplp-map-event.schema.json +147 -147
- package/schemas/events/mplp-pipeline-stage-event.schema.json +56 -56
- package/schemas/events/mplp-runtime-execution-event.schema.json +58 -58
- package/schemas/events/mplp-sa-event.schema.json +109 -109
- package/schemas/integration/mplp-ci-event.schema.json +130 -130
- package/schemas/integration/mplp-file-update-event.schema.json +70 -70
- package/schemas/integration/mplp-git-event.schema.json +98 -98
- package/schemas/integration/mplp-tool-event.schema.json +83 -83
- package/schemas/invariants/integration-invariants.yaml +139 -147
- package/schemas/invariants/learning-invariants.yaml +98 -106
- package/schemas/invariants/map-invariants.yaml +65 -73
- package/schemas/invariants/observability-invariants.yaml +98 -106
- package/schemas/invariants/sa-invariants.yaml +64 -72
- package/schemas/kernel-duties.json +18 -0
- package/schemas/learning/mplp-learning-sample-core.schema.json +94 -94
- package/schemas/learning/mplp-learning-sample-delta.schema.json +137 -137
- package/schemas/learning/mplp-learning-sample-intent.schema.json +119 -119
- package/schemas/mplp-collab.schema.json +243 -243
- package/schemas/mplp-confirm.schema.json +226 -226
- package/schemas/mplp-context.schema.json +246 -246
- package/schemas/mplp-core.schema.json +183 -183
- package/schemas/mplp-dialog.schema.json +198 -198
- package/schemas/mplp-extension.schema.json +179 -179
- package/schemas/mplp-network.schema.json +230 -230
- package/schemas/mplp-plan.schema.json +193 -193
- package/schemas/mplp-role.schema.json +139 -139
- package/schemas/mplp-trace.schema.json +216 -216
|
@@ -1,98 +1,98 @@
|
|
|
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: ©
|
|
3
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
-
"$id": "https://mplp.dev/schemas/v1.0/integration/mplp-git-event.json",
|
|
5
|
-
"title": "MPLP Git Event v1.0",
|
|
6
|
-
"description": "Git operations (commit, push, branch/merge/tag)",
|
|
7
|
-
"type": "object",
|
|
8
|
-
"additionalProperties": false,
|
|
9
|
-
"properties": {
|
|
10
|
-
"repo_url": {
|
|
11
|
-
"type": "string",
|
|
12
|
-
"minLength": 1,
|
|
13
|
-
"description": "Repository URL or identifier",
|
|
14
|
-
"examples": [
|
|
15
|
-
"https://github.com/org/repo.git",
|
|
16
|
-
"git@github.com:org/repo.git"
|
|
17
|
-
]
|
|
18
|
-
},
|
|
19
|
-
"commit_id": {
|
|
20
|
-
"type": "string",
|
|
21
|
-
"minLength": 1,
|
|
22
|
-
"description": "Commit SHA or identifier",
|
|
23
|
-
"examples": [
|
|
24
|
-
"abc123def456",
|
|
25
|
-
"1a2b3c4d5e6f7g8h9i0j"
|
|
26
|
-
]
|
|
27
|
-
},
|
|
28
|
-
"ref_name": {
|
|
29
|
-
"type": "string",
|
|
30
|
-
"minLength": 1,
|
|
31
|
-
"description": "Branch, tag, or ref name",
|
|
32
|
-
"examples": [
|
|
33
|
-
"refs/heads/main",
|
|
34
|
-
"refs/tags/v1.0.0",
|
|
35
|
-
"main"
|
|
36
|
-
]
|
|
37
|
-
},
|
|
38
|
-
"event_kind": {
|
|
39
|
-
"type": "string",
|
|
40
|
-
"enum": [
|
|
41
|
-
"commit",
|
|
42
|
-
"push",
|
|
43
|
-
"merge",
|
|
44
|
-
"tag",
|
|
45
|
-
"branch_create",
|
|
46
|
-
"branch_delete"
|
|
47
|
-
],
|
|
48
|
-
"description": "Type of Git operation"
|
|
49
|
-
},
|
|
50
|
-
"author_name": {
|
|
51
|
-
"type": "string",
|
|
52
|
-
"description": "Commit author name"
|
|
53
|
-
},
|
|
54
|
-
"author_email": {
|
|
55
|
-
"type": "string",
|
|
56
|
-
"format": "email",
|
|
57
|
-
"description": "Commit author email"
|
|
58
|
-
},
|
|
59
|
-
"commit_message": {
|
|
60
|
-
"type": "string",
|
|
61
|
-
"description": "Commit message (first line or summary)"
|
|
62
|
-
},
|
|
63
|
-
"timestamp": {
|
|
64
|
-
"type": "string",
|
|
65
|
-
"format": "date-time",
|
|
66
|
-
"description": "When the Git operation occurred (ISO 8601)"
|
|
67
|
-
},
|
|
68
|
-
"files_changed": {
|
|
69
|
-
"type": "integer",
|
|
70
|
-
"minimum": 0,
|
|
71
|
-
"description": "Number of files changed in commit"
|
|
72
|
-
},
|
|
73
|
-
"insertions": {
|
|
74
|
-
"type": "integer",
|
|
75
|
-
"minimum": 0,
|
|
76
|
-
"description": "Total lines inserted"
|
|
77
|
-
},
|
|
78
|
-
"deletions": {
|
|
79
|
-
"type": "integer",
|
|
80
|
-
"minimum": 0,
|
|
81
|
-
"description": "Total lines deleted"
|
|
82
|
-
},
|
|
83
|
-
"parent_commits": {
|
|
84
|
-
"type": "array",
|
|
85
|
-
"items": {
|
|
86
|
-
"type": "string"
|
|
87
|
-
},
|
|
88
|
-
"description": "Parent commit SHA(s) - multiple for merges"
|
|
89
|
-
}
|
|
90
|
-
},
|
|
91
|
-
"required": [
|
|
92
|
-
"repo_url",
|
|
93
|
-
"commit_id",
|
|
94
|
-
"ref_name",
|
|
95
|
-
"event_kind",
|
|
96
|
-
"timestamp"
|
|
97
|
-
]
|
|
98
|
-
}
|
|
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://mplp.dev/schemas/v1.0/integration/mplp-git-event.json",
|
|
5
|
+
"title": "MPLP Git Event v1.0",
|
|
6
|
+
"description": "Git operations (commit, push, branch/merge/tag)",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"repo_url": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"minLength": 1,
|
|
13
|
+
"description": "Repository URL or identifier",
|
|
14
|
+
"examples": [
|
|
15
|
+
"https://github.com/org/repo.git",
|
|
16
|
+
"git@github.com:org/repo.git"
|
|
17
|
+
]
|
|
18
|
+
},
|
|
19
|
+
"commit_id": {
|
|
20
|
+
"type": "string",
|
|
21
|
+
"minLength": 1,
|
|
22
|
+
"description": "Commit SHA or identifier",
|
|
23
|
+
"examples": [
|
|
24
|
+
"abc123def456",
|
|
25
|
+
"1a2b3c4d5e6f7g8h9i0j"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"ref_name": {
|
|
29
|
+
"type": "string",
|
|
30
|
+
"minLength": 1,
|
|
31
|
+
"description": "Branch, tag, or ref name",
|
|
32
|
+
"examples": [
|
|
33
|
+
"refs/heads/main",
|
|
34
|
+
"refs/tags/v1.0.0",
|
|
35
|
+
"main"
|
|
36
|
+
]
|
|
37
|
+
},
|
|
38
|
+
"event_kind": {
|
|
39
|
+
"type": "string",
|
|
40
|
+
"enum": [
|
|
41
|
+
"commit",
|
|
42
|
+
"push",
|
|
43
|
+
"merge",
|
|
44
|
+
"tag",
|
|
45
|
+
"branch_create",
|
|
46
|
+
"branch_delete"
|
|
47
|
+
],
|
|
48
|
+
"description": "Type of Git operation"
|
|
49
|
+
},
|
|
50
|
+
"author_name": {
|
|
51
|
+
"type": "string",
|
|
52
|
+
"description": "Commit author name"
|
|
53
|
+
},
|
|
54
|
+
"author_email": {
|
|
55
|
+
"type": "string",
|
|
56
|
+
"format": "email",
|
|
57
|
+
"description": "Commit author email"
|
|
58
|
+
},
|
|
59
|
+
"commit_message": {
|
|
60
|
+
"type": "string",
|
|
61
|
+
"description": "Commit message (first line or summary)"
|
|
62
|
+
},
|
|
63
|
+
"timestamp": {
|
|
64
|
+
"type": "string",
|
|
65
|
+
"format": "date-time",
|
|
66
|
+
"description": "When the Git operation occurred (ISO 8601)"
|
|
67
|
+
},
|
|
68
|
+
"files_changed": {
|
|
69
|
+
"type": "integer",
|
|
70
|
+
"minimum": 0,
|
|
71
|
+
"description": "Number of files changed in commit"
|
|
72
|
+
},
|
|
73
|
+
"insertions": {
|
|
74
|
+
"type": "integer",
|
|
75
|
+
"minimum": 0,
|
|
76
|
+
"description": "Total lines inserted"
|
|
77
|
+
},
|
|
78
|
+
"deletions": {
|
|
79
|
+
"type": "integer",
|
|
80
|
+
"minimum": 0,
|
|
81
|
+
"description": "Total lines deleted"
|
|
82
|
+
},
|
|
83
|
+
"parent_commits": {
|
|
84
|
+
"type": "array",
|
|
85
|
+
"items": {
|
|
86
|
+
"type": "string"
|
|
87
|
+
},
|
|
88
|
+
"description": "Parent commit SHA(s) - multiple for merges"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"required": [
|
|
92
|
+
"repo_url",
|
|
93
|
+
"commit_id",
|
|
94
|
+
"ref_name",
|
|
95
|
+
"event_kind",
|
|
96
|
+
"timestamp"
|
|
97
|
+
]
|
|
98
|
+
}
|
|
@@ -1,83 +1,83 @@
|
|
|
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: ©
|
|
3
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
4
|
-
"$id": "https://mplp.dev/schemas/v1.0/integration/mplp-tool-event.json",
|
|
5
|
-
"title": "MPLP Tool Event v1.0",
|
|
6
|
-
"description": "External tool invocation and results (formatters, linters, test runners, generators)",
|
|
7
|
-
"type": "object",
|
|
8
|
-
"additionalProperties": false,
|
|
9
|
-
"properties": {
|
|
10
|
-
"tool_id": {
|
|
11
|
-
"type": "string",
|
|
12
|
-
"minLength": 1,
|
|
13
|
-
"description": "Unique identifier for the tool",
|
|
14
|
-
"examples": [
|
|
15
|
-
"eslint-v8.50.0",
|
|
16
|
-
"prettier-v3.0.0",
|
|
17
|
-
"black-v23.10.0"
|
|
18
|
-
]
|
|
19
|
-
},
|
|
20
|
-
"tool_kind": {
|
|
21
|
-
"type": "string",
|
|
22
|
-
"enum": [
|
|
23
|
-
"formatter",
|
|
24
|
-
"linter",
|
|
25
|
-
"test_runner",
|
|
26
|
-
"generator",
|
|
27
|
-
"other"
|
|
28
|
-
],
|
|
29
|
-
"description": "Category of tool"
|
|
30
|
-
},
|
|
31
|
-
"invocation_id": {
|
|
32
|
-
"type": "string",
|
|
33
|
-
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
|
|
34
|
-
"description": "UUID v4 identifier for this specific invocation"
|
|
35
|
-
},
|
|
36
|
-
"status": {
|
|
37
|
-
"type": "string",
|
|
38
|
-
"enum": [
|
|
39
|
-
"pending",
|
|
40
|
-
"running",
|
|
41
|
-
"succeeded",
|
|
42
|
-
"failed",
|
|
43
|
-
"cancelled"
|
|
44
|
-
],
|
|
45
|
-
"description": "Current execution status"
|
|
46
|
-
},
|
|
47
|
-
"started_at": {
|
|
48
|
-
"type": "string",
|
|
49
|
-
"format": "date-time",
|
|
50
|
-
"description": "Invocation start timestamp (ISO 8601)"
|
|
51
|
-
},
|
|
52
|
-
"completed_at": {
|
|
53
|
-
"type": "string",
|
|
54
|
-
"format": "date-time",
|
|
55
|
-
"description": "Invocation completion timestamp (ISO 8601)"
|
|
56
|
-
},
|
|
57
|
-
"exit_code": {
|
|
58
|
-
"type": "integer",
|
|
59
|
-
"description": "Tool process exit code (if applicable)"
|
|
60
|
-
},
|
|
61
|
-
"output_summary": {
|
|
62
|
-
"type": "string",
|
|
63
|
-
"description": "Brief summary of tool output or errors"
|
|
64
|
-
},
|
|
65
|
-
"args": {
|
|
66
|
-
"type": "array",
|
|
67
|
-
"items": {
|
|
68
|
-
"type": "string"
|
|
69
|
-
},
|
|
70
|
-
"description": "Command-line arguments passed to tool (optional)"
|
|
71
|
-
},
|
|
72
|
-
"working_directory": {
|
|
73
|
-
"type": "string",
|
|
74
|
-
"description": "Working directory where tool was executed (optional)"
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
"required": [
|
|
78
|
-
"tool_id",
|
|
79
|
-
"tool_kind",
|
|
80
|
-
"invocation_id",
|
|
81
|
-
"status"
|
|
82
|
-
]
|
|
83
|
-
}
|
|
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://mplp.dev/schemas/v1.0/integration/mplp-tool-event.json",
|
|
5
|
+
"title": "MPLP Tool Event v1.0",
|
|
6
|
+
"description": "External tool invocation and results (formatters, linters, test runners, generators)",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"tool_id": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"minLength": 1,
|
|
13
|
+
"description": "Unique identifier for the tool",
|
|
14
|
+
"examples": [
|
|
15
|
+
"eslint-v8.50.0",
|
|
16
|
+
"prettier-v3.0.0",
|
|
17
|
+
"black-v23.10.0"
|
|
18
|
+
]
|
|
19
|
+
},
|
|
20
|
+
"tool_kind": {
|
|
21
|
+
"type": "string",
|
|
22
|
+
"enum": [
|
|
23
|
+
"formatter",
|
|
24
|
+
"linter",
|
|
25
|
+
"test_runner",
|
|
26
|
+
"generator",
|
|
27
|
+
"other"
|
|
28
|
+
],
|
|
29
|
+
"description": "Category of tool"
|
|
30
|
+
},
|
|
31
|
+
"invocation_id": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
|
|
34
|
+
"description": "UUID v4 identifier for this specific invocation"
|
|
35
|
+
},
|
|
36
|
+
"status": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"enum": [
|
|
39
|
+
"pending",
|
|
40
|
+
"running",
|
|
41
|
+
"succeeded",
|
|
42
|
+
"failed",
|
|
43
|
+
"cancelled"
|
|
44
|
+
],
|
|
45
|
+
"description": "Current execution status"
|
|
46
|
+
},
|
|
47
|
+
"started_at": {
|
|
48
|
+
"type": "string",
|
|
49
|
+
"format": "date-time",
|
|
50
|
+
"description": "Invocation start timestamp (ISO 8601)"
|
|
51
|
+
},
|
|
52
|
+
"completed_at": {
|
|
53
|
+
"type": "string",
|
|
54
|
+
"format": "date-time",
|
|
55
|
+
"description": "Invocation completion timestamp (ISO 8601)"
|
|
56
|
+
},
|
|
57
|
+
"exit_code": {
|
|
58
|
+
"type": "integer",
|
|
59
|
+
"description": "Tool process exit code (if applicable)"
|
|
60
|
+
},
|
|
61
|
+
"output_summary": {
|
|
62
|
+
"type": "string",
|
|
63
|
+
"description": "Brief summary of tool output or errors"
|
|
64
|
+
},
|
|
65
|
+
"args": {
|
|
66
|
+
"type": "array",
|
|
67
|
+
"items": {
|
|
68
|
+
"type": "string"
|
|
69
|
+
},
|
|
70
|
+
"description": "Command-line arguments passed to tool (optional)"
|
|
71
|
+
},
|
|
72
|
+
"working_directory": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"description": "Working directory where tool was executed (optional)"
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
"required": [
|
|
78
|
+
"tool_id",
|
|
79
|
+
"tool_kind",
|
|
80
|
+
"invocation_id",
|
|
81
|
+
"status"
|
|
82
|
+
]
|
|
83
|
+
}
|
|
@@ -1,147 +1,139 @@
|
|
|
1
|
-
# MPLP v1.0.0 FROZEN – Invariant Set
|
|
2
|
-
# ©
|
|
3
|
-
# Governance: MPLP Protocol Governance Committee (MPGC)
|
|
4
|
-
|
|
5
|
-
# MPLP Protocol
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
#
|
|
14
|
-
#
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
note: "Apply only when started_at field exists"
|
|
141
|
-
|
|
142
|
-
- id: integration_ci_completed_at_iso
|
|
143
|
-
scope: ci_event
|
|
144
|
-
path: completed_at
|
|
145
|
-
rule: iso-datetime
|
|
146
|
-
description: "If completed_at present, must be ISO 8601 datetime"
|
|
147
|
-
note: "Apply only when completed_at field exists"
|
|
1
|
+
# MPLP v1.0.0 FROZEN – Invariant Set
|
|
2
|
+
# © 2026 Bangshi Beijing Network Technology Limited Company – Apache-2.0
|
|
3
|
+
# Governance: MPLP Protocol Governance Committee (MPGC)
|
|
4
|
+
|
|
5
|
+
# MPLP Protocol 1.0.0 — Frozen Specification
|
|
6
|
+
# Status: Frozen as of 2025-11-30
|
|
7
|
+
# Copyright: © 2026 Bangshi Beijing Network Technology Limited Company
|
|
8
|
+
# License: Apache-2.0 (see LICENSE at repository root)
|
|
9
|
+
# Any normative change requires a new protocol version.
|
|
10
|
+
|
|
11
|
+
invariants:
|
|
12
|
+
# ========================================
|
|
13
|
+
# Tool Event Invariants
|
|
14
|
+
# ========================================
|
|
15
|
+
- id: integration_tool_event_id_non_empty
|
|
16
|
+
scope: tool_event
|
|
17
|
+
path: tool_id
|
|
18
|
+
rule: non-empty-string
|
|
19
|
+
description: "Tool event must have non-empty tool_id"
|
|
20
|
+
|
|
21
|
+
- id: integration_tool_kind_valid
|
|
22
|
+
scope: tool_event
|
|
23
|
+
path: tool_kind
|
|
24
|
+
rule: enum(formatter,linter,test_runner,generator,other)
|
|
25
|
+
description: "Tool kind must be valid enum value"
|
|
26
|
+
|
|
27
|
+
- id: integration_tool_invocation_id_uuid
|
|
28
|
+
scope: tool_event
|
|
29
|
+
path: invocation_id
|
|
30
|
+
rule: uuid-v4
|
|
31
|
+
description: "Tool invocation_id must be UUID v4"
|
|
32
|
+
|
|
33
|
+
- id: integration_tool_status_valid
|
|
34
|
+
scope: tool_event
|
|
35
|
+
path: status
|
|
36
|
+
rule: enum(pending,running,succeeded,failed,cancelled)
|
|
37
|
+
description: "Tool event status must be valid enum value"
|
|
38
|
+
|
|
39
|
+
- id: integration_tool_started_at_iso
|
|
40
|
+
scope: tool_event
|
|
41
|
+
path: started_at
|
|
42
|
+
rule: iso-datetime
|
|
43
|
+
description: "If started_at present, must be ISO 8601 datetime"
|
|
44
|
+
note: "Apply only when started_at field exists"
|
|
45
|
+
|
|
46
|
+
# ========================================
|
|
47
|
+
# File Update Event Invariants
|
|
48
|
+
# ========================================
|
|
49
|
+
- id: integration_file_path_non_empty
|
|
50
|
+
scope: file_update_event
|
|
51
|
+
path: file_path
|
|
52
|
+
rule: non-empty-string
|
|
53
|
+
description: "File update event must have non-empty file_path"
|
|
54
|
+
|
|
55
|
+
- id: integration_file_change_type_valid
|
|
56
|
+
scope: file_update_event
|
|
57
|
+
path: change_type
|
|
58
|
+
rule: enum(created,modified,deleted,renamed)
|
|
59
|
+
description: "File change_type must be valid enum value"
|
|
60
|
+
|
|
61
|
+
- id: integration_file_timestamp_iso
|
|
62
|
+
scope: file_update_event
|
|
63
|
+
path: timestamp
|
|
64
|
+
rule: iso-datetime
|
|
65
|
+
description: "File update timestamp must be ISO 8601 datetime"
|
|
66
|
+
|
|
67
|
+
# ========================================
|
|
68
|
+
# Git Event Invariants
|
|
69
|
+
# ========================================
|
|
70
|
+
- id: integration_git_repo_url_non_empty
|
|
71
|
+
scope: git_event
|
|
72
|
+
path: repo_url
|
|
73
|
+
rule: non-empty-string
|
|
74
|
+
description: "Git event must have non-empty repo_url"
|
|
75
|
+
|
|
76
|
+
- id: integration_git_commit_id_non_empty
|
|
77
|
+
scope: git_event
|
|
78
|
+
path: commit_id
|
|
79
|
+
rule: non-empty-string
|
|
80
|
+
description: "Git event must have non-empty commit_id"
|
|
81
|
+
|
|
82
|
+
- id: integration_git_ref_name_non_empty
|
|
83
|
+
scope: git_event
|
|
84
|
+
path: ref_name
|
|
85
|
+
rule: non-empty-string
|
|
86
|
+
description: "Git event must have non-empty ref_name"
|
|
87
|
+
|
|
88
|
+
- id: integration_git_event_kind_valid
|
|
89
|
+
scope: git_event
|
|
90
|
+
path: event_kind
|
|
91
|
+
rule: enum(commit,push,merge,tag,branch_create,branch_delete)
|
|
92
|
+
description: "Git event_kind must be valid enum value"
|
|
93
|
+
|
|
94
|
+
- id: integration_git_timestamp_iso
|
|
95
|
+
scope: git_event
|
|
96
|
+
path: timestamp
|
|
97
|
+
rule: iso-datetime
|
|
98
|
+
description: "Git event timestamp must be ISO 8601 datetime"
|
|
99
|
+
|
|
100
|
+
# ========================================
|
|
101
|
+
# CI Event Invariants
|
|
102
|
+
# ========================================
|
|
103
|
+
- id: integration_ci_provider_non_empty
|
|
104
|
+
scope: ci_event
|
|
105
|
+
path: ci_provider
|
|
106
|
+
rule: non-empty-string
|
|
107
|
+
description: "CI event must have non-empty ci_provider"
|
|
108
|
+
|
|
109
|
+
- id: integration_ci_pipeline_id_non_empty
|
|
110
|
+
scope: ci_event
|
|
111
|
+
path: pipeline_id
|
|
112
|
+
rule: non-empty-string
|
|
113
|
+
description: "CI event must have non-empty pipeline_id"
|
|
114
|
+
|
|
115
|
+
- id: integration_ci_run_id_non_empty
|
|
116
|
+
scope: ci_event
|
|
117
|
+
path: run_id
|
|
118
|
+
rule: non-empty-string
|
|
119
|
+
description: "CI event must have non-empty run_id"
|
|
120
|
+
|
|
121
|
+
- id: integration_ci_status_valid
|
|
122
|
+
scope: ci_event
|
|
123
|
+
path: status
|
|
124
|
+
rule: enum(pending,running,succeeded,failed,cancelled)
|
|
125
|
+
description: "CI event status must be valid enum value"
|
|
126
|
+
|
|
127
|
+
- id: integration_ci_started_at_iso
|
|
128
|
+
scope: ci_event
|
|
129
|
+
path: started_at
|
|
130
|
+
rule: iso-datetime
|
|
131
|
+
description: "If started_at present, must be ISO 8601 datetime"
|
|
132
|
+
note: "Apply only when started_at field exists"
|
|
133
|
+
|
|
134
|
+
- id: integration_ci_completed_at_iso
|
|
135
|
+
scope: ci_event
|
|
136
|
+
path: completed_at
|
|
137
|
+
rule: iso-datetime
|
|
138
|
+
description: "If completed_at present, must be ISO 8601 datetime"
|
|
139
|
+
note: "Apply only when completed_at field exists"
|