owlrunkit 0.22.1 → 0.24.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.
- package/CHANGELOG.md +36 -0
- package/README.md +123 -9
- package/integrations/codex/skills/owlcoda-runkit/SKILL.md +51 -12
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
- package/package.json +9 -1
- package/packages/attest/distribution-manifest-v1.json +10 -0
- package/packages/attest/src/quick.mjs +10 -0
- package/registry-release-policy-v2.json +5 -5
- package/sbom.spdx.json +5 -5
- package/scripts/runkit-contract/core-contract.mjs +6 -1
- package/scripts/runkit-contract/file-event-stop-hook.mjs +220 -0
- package/scripts/runkit-contract/formal-workflow.mjs +1 -1
- package/scripts/runkit-contract/project-cli-resolver.mjs +8 -0
- package/scripts/runkit-contract/project-completion-continuity.mjs +545 -0
- package/scripts/runkit-contract/registry-adoption.mjs +4 -4
- package/scripts/runkit-contract/runkit-cli.mjs +41 -5
- package/scripts/runkit-contract/schemas/fleet-skill-upgrade-plan-v1.schema.json +1 -1
- package/scripts/runkit-contract/schemas/project-completion-continuity-v1.schema.json +144 -0
- package/scripts/runkit-contract/schemas/successor-scaffold-v1.schema.json +184 -0
- package/scripts/runkit-contract/schemas/team-project-status-v5.schema.json +169 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/project-completion-continuity-v1.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Project Completion Continuity V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion", "status", "projectId", "projectTruthHash", "disposition",
|
|
9
|
+
"targetWorkspaceRef", "baseline", "current", "delta", "nextAction",
|
|
10
|
+
"readOnly", "writesPerformed", "authorityBoundary", "authorizationGranted"
|
|
11
|
+
],
|
|
12
|
+
"properties": {
|
|
13
|
+
"schemaVersion": { "const": "OwlCodaRunKitProjectCompletionContinuityV1" },
|
|
14
|
+
"status": { "enum": ["not_applicable", "baseline_missing", "source_unverifiable", "workspace_drift", "terminal"] },
|
|
15
|
+
"projectId": { "$ref": "#/$defs/text" },
|
|
16
|
+
"projectTruthHash": { "$ref": "#/$defs/hash" },
|
|
17
|
+
"disposition": {
|
|
18
|
+
"enum": [
|
|
19
|
+
"project_work_ledger_incomplete",
|
|
20
|
+
"completed_project_source_baseline_missing",
|
|
21
|
+
"completed_project_source_unverifiable",
|
|
22
|
+
"completed_project_with_unmodeled_workspace_drift",
|
|
23
|
+
"completed_project_terminal"
|
|
24
|
+
]
|
|
25
|
+
},
|
|
26
|
+
"targetWorkspaceRef": { "$ref": "#/$defs/nullableText" },
|
|
27
|
+
"baseline": {
|
|
28
|
+
"oneOf": [
|
|
29
|
+
{ "type": "null" },
|
|
30
|
+
{
|
|
31
|
+
"type": "object",
|
|
32
|
+
"additionalProperties": false,
|
|
33
|
+
"required": ["kind", "deliveryId", "occurredAt", "targetHead", "workspaceSnapshotFingerprint", "truthRef"],
|
|
34
|
+
"properties": {
|
|
35
|
+
"kind": { "const": "imported_source_delivery" },
|
|
36
|
+
"deliveryId": { "$ref": "#/$defs/text" },
|
|
37
|
+
"occurredAt": { "$ref": "#/$defs/text" },
|
|
38
|
+
"targetHead": { "$ref": "#/$defs/gitHash" },
|
|
39
|
+
"workspaceSnapshotFingerprint": { "$ref": "#/$defs/hashRef" },
|
|
40
|
+
"truthRef": { "$ref": "#/$defs/text" }
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"current": {
|
|
46
|
+
"oneOf": [
|
|
47
|
+
{ "type": "null" },
|
|
48
|
+
{
|
|
49
|
+
"type": "object",
|
|
50
|
+
"additionalProperties": false,
|
|
51
|
+
"required": ["headCommit", "workspaceSnapshotFingerprint"],
|
|
52
|
+
"properties": {
|
|
53
|
+
"headCommit": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/gitHash" }] },
|
|
54
|
+
"workspaceSnapshotFingerprint": { "$ref": "#/$defs/hashRef" }
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
"delta": {
|
|
60
|
+
"oneOf": [
|
|
61
|
+
{ "type": "null" },
|
|
62
|
+
{
|
|
63
|
+
"type": "object",
|
|
64
|
+
"additionalProperties": false,
|
|
65
|
+
"required": [
|
|
66
|
+
"baselineHead", "currentHead", "headChanged", "trackedTreeChanged",
|
|
67
|
+
"submodulesChanged", "committedPaths", "overlayPaths",
|
|
68
|
+
"dependencyEnvironmentPaths", "changedPaths", "changedPathCount",
|
|
69
|
+
"changedPathsTruncated", "pathEvidenceComplete"
|
|
70
|
+
],
|
|
71
|
+
"properties": {
|
|
72
|
+
"baselineHead": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/gitHash" }] },
|
|
73
|
+
"currentHead": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/gitHash" }] },
|
|
74
|
+
"headChanged": { "type": "boolean" },
|
|
75
|
+
"trackedTreeChanged": { "type": "boolean" },
|
|
76
|
+
"submodulesChanged": { "type": "boolean" },
|
|
77
|
+
"committedPaths": { "$ref": "#/$defs/paths" },
|
|
78
|
+
"overlayPaths": { "$ref": "#/$defs/paths" },
|
|
79
|
+
"dependencyEnvironmentPaths": { "$ref": "#/$defs/paths" },
|
|
80
|
+
"changedPaths": { "$ref": "#/$defs/paths" },
|
|
81
|
+
"changedPathCount": { "type": "integer", "minimum": 0 },
|
|
82
|
+
"changedPathsTruncated": { "type": "boolean" },
|
|
83
|
+
"pathEvidenceComplete": { "type": "boolean" }
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"nextAction": { "$ref": "#/$defs/nullableText" },
|
|
89
|
+
"readOnly": { "const": true },
|
|
90
|
+
"writesPerformed": { "const": false },
|
|
91
|
+
"authorityBoundary": { "$ref": "#/$defs/authorityBoundary" },
|
|
92
|
+
"authorizationGranted": { "const": false }
|
|
93
|
+
},
|
|
94
|
+
"examples": [
|
|
95
|
+
{
|
|
96
|
+
"schemaVersion": "OwlCodaRunKitProjectCompletionContinuityV1",
|
|
97
|
+
"status": "baseline_missing",
|
|
98
|
+
"projectId": "completed-project",
|
|
99
|
+
"projectTruthHash": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
100
|
+
"disposition": "completed_project_source_baseline_missing",
|
|
101
|
+
"targetWorkspaceRef": null,
|
|
102
|
+
"baseline": null,
|
|
103
|
+
"current": null,
|
|
104
|
+
"delta": null,
|
|
105
|
+
"nextAction": "Review the current workspace and bind an explicit source baseline before deciding whether the project is terminal.",
|
|
106
|
+
"readOnly": true,
|
|
107
|
+
"writesPerformed": false,
|
|
108
|
+
"authorityBoundary": {
|
|
109
|
+
"agentDispatch": false,
|
|
110
|
+
"git": false,
|
|
111
|
+
"release": false,
|
|
112
|
+
"deployment": false,
|
|
113
|
+
"production": false,
|
|
114
|
+
"business": false,
|
|
115
|
+
"automation": false,
|
|
116
|
+
"money": false
|
|
117
|
+
},
|
|
118
|
+
"authorizationGranted": false
|
|
119
|
+
}
|
|
120
|
+
],
|
|
121
|
+
"$defs": {
|
|
122
|
+
"text": { "type": "string", "minLength": 1 },
|
|
123
|
+
"nullableText": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
|
|
124
|
+
"hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
125
|
+
"hashRef": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
126
|
+
"gitHash": { "type": "string", "pattern": "^(?:[a-f0-9]{40}|[a-f0-9]{64})$" },
|
|
127
|
+
"paths": { "type": "array", "maxItems": 256, "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
|
|
128
|
+
"authorityBoundary": {
|
|
129
|
+
"type": "object",
|
|
130
|
+
"additionalProperties": false,
|
|
131
|
+
"required": ["agentDispatch", "git", "release", "deployment", "production", "business", "automation", "money"],
|
|
132
|
+
"properties": {
|
|
133
|
+
"agentDispatch": { "const": false },
|
|
134
|
+
"git": { "const": false },
|
|
135
|
+
"release": { "const": false },
|
|
136
|
+
"deployment": { "const": false },
|
|
137
|
+
"production": { "const": false },
|
|
138
|
+
"business": { "const": false },
|
|
139
|
+
"automation": { "const": false },
|
|
140
|
+
"money": { "const": false }
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/successor-scaffold-v1.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Successor Scaffold V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion", "status", "exitCode", "project", "completionContinuity",
|
|
9
|
+
"unmodeledCandidates", "pathConflicts", "possibleLanes", "draft",
|
|
10
|
+
"nextAction", "persisted", "readOnly", "writesPerformed",
|
|
11
|
+
"authorityBoundary", "authorizationGranted"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"schemaVersion": { "const": "OwlCodaRunKitSuccessorScaffoldV1" },
|
|
15
|
+
"status": { "enum": ["successor_review_required", "successor_baseline_missing", "successor_not_required", "successor_source_unverifiable"] },
|
|
16
|
+
"exitCode": { "const": 0 },
|
|
17
|
+
"project": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"additionalProperties": false,
|
|
20
|
+
"required": ["projectId", "projectTruthHash", "overall"],
|
|
21
|
+
"properties": {
|
|
22
|
+
"projectId": { "$ref": "#/$defs/text" },
|
|
23
|
+
"projectTruthHash": { "$ref": "#/$defs/hash" },
|
|
24
|
+
"overall": { "const": "completed" }
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"completionContinuity": { "$ref": "project-completion-continuity-v1.schema.json" },
|
|
28
|
+
"unmodeledCandidates": {
|
|
29
|
+
"type": "array",
|
|
30
|
+
"maxItems": 1,
|
|
31
|
+
"items": {
|
|
32
|
+
"type": "object",
|
|
33
|
+
"additionalProperties": false,
|
|
34
|
+
"required": ["candidateId", "kind", "targetWorkspaceRef", "baselineFingerprint", "currentFingerprint", "changedPaths", "changedPathCount", "changedPathsTruncated", "pathEvidenceComplete"],
|
|
35
|
+
"properties": {
|
|
36
|
+
"candidateId": { "const": "workspace-drift" },
|
|
37
|
+
"kind": { "const": "workspace_source_delta" },
|
|
38
|
+
"targetWorkspaceRef": { "$ref": "#/$defs/text" },
|
|
39
|
+
"baselineFingerprint": { "$ref": "#/$defs/hashRef" },
|
|
40
|
+
"currentFingerprint": { "$ref": "#/$defs/hashRef" },
|
|
41
|
+
"changedPaths": { "$ref": "#/$defs/paths" },
|
|
42
|
+
"changedPathCount": { "type": "integer", "minimum": 0 },
|
|
43
|
+
"changedPathsTruncated": { "type": "boolean" },
|
|
44
|
+
"pathEvidenceComplete": { "type": "boolean" }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"pathConflicts": {
|
|
49
|
+
"type": "array",
|
|
50
|
+
"items": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"additionalProperties": false,
|
|
53
|
+
"required": ["path", "historicalWorkItemIds"],
|
|
54
|
+
"properties": {
|
|
55
|
+
"path": { "$ref": "#/$defs/text" },
|
|
56
|
+
"historicalWorkItemIds": { "$ref": "#/$defs/nonemptyStrings" }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"possibleLanes": {
|
|
61
|
+
"type": "array",
|
|
62
|
+
"items": {
|
|
63
|
+
"type": "object",
|
|
64
|
+
"additionalProperties": false,
|
|
65
|
+
"required": ["laneId", "basis", "historicalWorkItemId", "suggestedOwnedPaths", "requiresHumanConfirmation"],
|
|
66
|
+
"properties": {
|
|
67
|
+
"laneId": { "$ref": "#/$defs/text" },
|
|
68
|
+
"basis": { "enum": ["historical_owned_paths_only", "unmatched_paths_only"] },
|
|
69
|
+
"historicalWorkItemId": { "$ref": "#/$defs/nullableText" },
|
|
70
|
+
"suggestedOwnedPaths": { "$ref": "#/$defs/nonemptyStrings" },
|
|
71
|
+
"requiresHumanConfirmation": { "const": true }
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"draft": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"additionalProperties": false,
|
|
78
|
+
"required": ["projectId", "objective", "workItems", "requiresHumanConfirmation"],
|
|
79
|
+
"properties": {
|
|
80
|
+
"projectId": { "type": "null" },
|
|
81
|
+
"objective": { "type": "null" },
|
|
82
|
+
"workItems": {
|
|
83
|
+
"type": "array",
|
|
84
|
+
"items": {
|
|
85
|
+
"type": "object",
|
|
86
|
+
"additionalProperties": false,
|
|
87
|
+
"required": ["draftLaneId", "title", "ownedPaths", "ownerAgentId"],
|
|
88
|
+
"properties": {
|
|
89
|
+
"draftLaneId": { "$ref": "#/$defs/text" },
|
|
90
|
+
"title": { "type": "null" },
|
|
91
|
+
"ownedPaths": { "$ref": "#/$defs/nonemptyStrings" },
|
|
92
|
+
"ownerAgentId": { "type": "null" }
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
"requiresHumanConfirmation": { "$ref": "#/$defs/nonemptyStrings" }
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
"nextAction": { "$ref": "#/$defs/nullableText" },
|
|
100
|
+
"persisted": { "const": false },
|
|
101
|
+
"readOnly": { "const": true },
|
|
102
|
+
"writesPerformed": { "const": false },
|
|
103
|
+
"authorityBoundary": { "$ref": "project-completion-continuity-v1.schema.json#/$defs/authorityBoundary" },
|
|
104
|
+
"authorizationGranted": { "const": false }
|
|
105
|
+
},
|
|
106
|
+
"examples": [
|
|
107
|
+
{
|
|
108
|
+
"schemaVersion": "OwlCodaRunKitSuccessorScaffoldV1",
|
|
109
|
+
"status": "successor_baseline_missing",
|
|
110
|
+
"exitCode": 0,
|
|
111
|
+
"project": {
|
|
112
|
+
"projectId": "completed-project",
|
|
113
|
+
"projectTruthHash": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
114
|
+
"overall": "completed"
|
|
115
|
+
},
|
|
116
|
+
"completionContinuity": {
|
|
117
|
+
"schemaVersion": "OwlCodaRunKitProjectCompletionContinuityV1",
|
|
118
|
+
"status": "baseline_missing",
|
|
119
|
+
"projectId": "completed-project",
|
|
120
|
+
"projectTruthHash": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
121
|
+
"disposition": "completed_project_source_baseline_missing",
|
|
122
|
+
"targetWorkspaceRef": "/projects/source",
|
|
123
|
+
"baseline": null,
|
|
124
|
+
"current": {
|
|
125
|
+
"headCommit": "0000000000000000000000000000000000000000",
|
|
126
|
+
"workspaceSnapshotFingerprint": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
|
|
127
|
+
},
|
|
128
|
+
"delta": null,
|
|
129
|
+
"nextAction": "Review the current workspace and bind an explicit source baseline before deciding whether the project is terminal.",
|
|
130
|
+
"readOnly": true,
|
|
131
|
+
"writesPerformed": false,
|
|
132
|
+
"authorityBoundary": {
|
|
133
|
+
"agentDispatch": false,
|
|
134
|
+
"git": false,
|
|
135
|
+
"release": false,
|
|
136
|
+
"deployment": false,
|
|
137
|
+
"production": false,
|
|
138
|
+
"business": false,
|
|
139
|
+
"automation": false,
|
|
140
|
+
"money": false
|
|
141
|
+
},
|
|
142
|
+
"authorizationGranted": false
|
|
143
|
+
},
|
|
144
|
+
"unmodeledCandidates": [],
|
|
145
|
+
"pathConflicts": [],
|
|
146
|
+
"possibleLanes": [],
|
|
147
|
+
"draft": {
|
|
148
|
+
"projectId": null,
|
|
149
|
+
"objective": null,
|
|
150
|
+
"workItems": [],
|
|
151
|
+
"requiresHumanConfirmation": [
|
|
152
|
+
"project_id",
|
|
153
|
+
"objective",
|
|
154
|
+
"work_item_boundaries",
|
|
155
|
+
"owners",
|
|
156
|
+
"acceptance"
|
|
157
|
+
]
|
|
158
|
+
},
|
|
159
|
+
"nextAction": "Review the current workspace and bind an explicit source baseline before deciding whether the project is terminal.",
|
|
160
|
+
"persisted": false,
|
|
161
|
+
"readOnly": true,
|
|
162
|
+
"writesPerformed": false,
|
|
163
|
+
"authorityBoundary": {
|
|
164
|
+
"agentDispatch": false,
|
|
165
|
+
"git": false,
|
|
166
|
+
"release": false,
|
|
167
|
+
"deployment": false,
|
|
168
|
+
"production": false,
|
|
169
|
+
"business": false,
|
|
170
|
+
"automation": false,
|
|
171
|
+
"money": false
|
|
172
|
+
},
|
|
173
|
+
"authorizationGranted": false
|
|
174
|
+
}
|
|
175
|
+
],
|
|
176
|
+
"$defs": {
|
|
177
|
+
"text": { "type": "string", "minLength": 1 },
|
|
178
|
+
"nullableText": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
|
|
179
|
+
"hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
180
|
+
"hashRef": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
181
|
+
"paths": { "type": "array", "maxItems": 256, "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
|
|
182
|
+
"nonemptyStrings": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/text" } }
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/team-project-status-v5.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Team Project Status V5",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion", "status", "projectId", "objective", "overall", "counts",
|
|
9
|
+
"milestones", "workstreams", "workItems", "agents", "readyQueue",
|
|
10
|
+
"criticalWorkItems", "openDecisions", "resolvedDecisions",
|
|
11
|
+
"deferredVerifications", "openDeferredVerificationIds", "integrationGates",
|
|
12
|
+
"dataCandidates", "sourceDeliveries", "warnings", "externalGates",
|
|
13
|
+
"deliveryLifecycle", "projectTruthHash", "authorizationGranted",
|
|
14
|
+
"deliveryDisposition", "headline", "dominantGap", "nextAction",
|
|
15
|
+
"nextActorId", "completionContinuity", "exitCode"
|
|
16
|
+
],
|
|
17
|
+
"properties": {
|
|
18
|
+
"schemaVersion": { "const": "OwlCodaRunKitTeamProjectStatusV5" },
|
|
19
|
+
"status": { "const": "team_project_status" },
|
|
20
|
+
"projectId": { "$ref": "#/$defs/text" },
|
|
21
|
+
"objective": { "$ref": "#/$defs/text" },
|
|
22
|
+
"overall": { "enum": ["planned", "active", "active_with_blockers", "completed"] },
|
|
23
|
+
"counts": { "type": "object" },
|
|
24
|
+
"milestones": { "type": "array", "items": { "type": "object" } },
|
|
25
|
+
"workstreams": { "type": "array", "items": { "type": "object" } },
|
|
26
|
+
"workItems": { "type": "array", "items": { "type": "object" } },
|
|
27
|
+
"agents": { "type": "array", "items": { "type": "object" } },
|
|
28
|
+
"readyQueue": { "$ref": "#/$defs/strings" },
|
|
29
|
+
"criticalWorkItems": { "$ref": "#/$defs/strings" },
|
|
30
|
+
"openDecisions": { "type": "array", "items": { "type": "object" } },
|
|
31
|
+
"resolvedDecisions": { "type": "array", "items": { "type": "object" } },
|
|
32
|
+
"deferredVerifications": { "type": "array", "items": { "type": "object" } },
|
|
33
|
+
"openDeferredVerificationIds": { "$ref": "#/$defs/strings" },
|
|
34
|
+
"integrationGates": { "type": "array", "items": { "type": "object" } },
|
|
35
|
+
"dataCandidates": { "type": "array", "items": { "type": "object" } },
|
|
36
|
+
"sourceDeliveries": { "type": "array", "items": { "type": "object" } },
|
|
37
|
+
"warnings": { "type": "array", "items": { "type": "object" } },
|
|
38
|
+
"externalGates": { "type": "array", "items": { "$ref": "external-gate-v1.schema.json" } },
|
|
39
|
+
"deliveryLifecycle": { "$ref": "delivery-lifecycle-v1.schema.json" },
|
|
40
|
+
"projectTruthHash": { "$ref": "#/$defs/hash" },
|
|
41
|
+
"authorizationGranted": { "const": false },
|
|
42
|
+
"deliveryDisposition": {
|
|
43
|
+
"enum": [
|
|
44
|
+
"work_ledger_incomplete", "work_ledger_complete", "source_accepted",
|
|
45
|
+
"integrated", "materialized", "deployed", "live_readback_passed", "product_accepted"
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"headline": { "$ref": "#/$defs/text" },
|
|
49
|
+
"dominantGap": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"additionalProperties": false,
|
|
52
|
+
"required": ["kind", "id", "title", "workItemId", "agentId", "reason", "truthRefs"],
|
|
53
|
+
"properties": {
|
|
54
|
+
"kind": { "enum": ["decision", "failed_work", "work_item", "deferred_verification", "integration_gate", "release_authority", "external_gate", "delivery_stage", "source_baseline", "unmodeled_workspace_drift", "none"] },
|
|
55
|
+
"id": { "$ref": "#/$defs/nullableText" },
|
|
56
|
+
"title": { "$ref": "#/$defs/nullableText" },
|
|
57
|
+
"workItemId": { "$ref": "#/$defs/nullableText" },
|
|
58
|
+
"agentId": { "$ref": "#/$defs/nullableText" },
|
|
59
|
+
"reason": { "$ref": "#/$defs/nullableText" },
|
|
60
|
+
"truthRefs": { "$ref": "#/$defs/strings" }
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"nextAction": { "$ref": "#/$defs/nullableText" },
|
|
64
|
+
"nextActorId": { "$ref": "#/$defs/nullableText" },
|
|
65
|
+
"completionContinuity": { "$ref": "project-completion-continuity-v1.schema.json" },
|
|
66
|
+
"exitCode": { "const": 0 }
|
|
67
|
+
},
|
|
68
|
+
"allOf": [
|
|
69
|
+
{
|
|
70
|
+
"if": { "properties": { "deliveryDisposition": { "const": "product_accepted" } }, "required": ["deliveryDisposition"] },
|
|
71
|
+
"then": {
|
|
72
|
+
"properties": {
|
|
73
|
+
"dominantGap": { "properties": { "kind": { "const": "none" } } },
|
|
74
|
+
"nextAction": { "type": "null" },
|
|
75
|
+
"nextActorId": { "type": "null" }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"examples": [
|
|
81
|
+
{
|
|
82
|
+
"schemaVersion": "OwlCodaRunKitTeamProjectStatusV5",
|
|
83
|
+
"status": "team_project_status",
|
|
84
|
+
"projectId": "completed-project",
|
|
85
|
+
"objective": "Keep completion continuity honest",
|
|
86
|
+
"overall": "completed",
|
|
87
|
+
"counts": {},
|
|
88
|
+
"milestones": [],
|
|
89
|
+
"workstreams": [],
|
|
90
|
+
"workItems": [],
|
|
91
|
+
"agents": [],
|
|
92
|
+
"readyQueue": [],
|
|
93
|
+
"criticalWorkItems": [],
|
|
94
|
+
"openDecisions": [],
|
|
95
|
+
"resolvedDecisions": [],
|
|
96
|
+
"deferredVerifications": [],
|
|
97
|
+
"openDeferredVerificationIds": [],
|
|
98
|
+
"integrationGates": [],
|
|
99
|
+
"dataCandidates": [],
|
|
100
|
+
"sourceDeliveries": [],
|
|
101
|
+
"warnings": [],
|
|
102
|
+
"externalGates": [],
|
|
103
|
+
"deliveryLifecycle": {
|
|
104
|
+
"schemaVersion": "OwlCodaRunKitDeliveryLifecycleV1",
|
|
105
|
+
"lifecycleStatus": "in_progress",
|
|
106
|
+
"currentStage": "work_ledger_complete",
|
|
107
|
+
"nextRequiredStage": "source",
|
|
108
|
+
"blockingStage": null,
|
|
109
|
+
"blockingExternalGateIds": [],
|
|
110
|
+
"stages": [
|
|
111
|
+
{ "stage": "source", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null },
|
|
112
|
+
{ "stage": "integration", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null },
|
|
113
|
+
{ "stage": "materialization", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null },
|
|
114
|
+
{ "stage": "deployment", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null },
|
|
115
|
+
{ "stage": "live_readback", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null },
|
|
116
|
+
{ "stage": "product_acceptance", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null }
|
|
117
|
+
],
|
|
118
|
+
"authorizationGranted": false
|
|
119
|
+
},
|
|
120
|
+
"projectTruthHash": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
121
|
+
"authorizationGranted": false,
|
|
122
|
+
"deliveryDisposition": "work_ledger_complete",
|
|
123
|
+
"headline": "Dominant gap: source_baseline; an explicit source baseline is missing.",
|
|
124
|
+
"dominantGap": {
|
|
125
|
+
"kind": "source_baseline",
|
|
126
|
+
"id": "last-modeled-source",
|
|
127
|
+
"title": "Source baseline missing",
|
|
128
|
+
"workItemId": null,
|
|
129
|
+
"agentId": null,
|
|
130
|
+
"reason": "The completed Project Driver ledger has no explicit source snapshot baseline.",
|
|
131
|
+
"truthRefs": ["project/definition.json"]
|
|
132
|
+
},
|
|
133
|
+
"nextAction": "Review the current workspace and bind an explicit source baseline before deciding whether the project is terminal.",
|
|
134
|
+
"nextActorId": null,
|
|
135
|
+
"completionContinuity": {
|
|
136
|
+
"schemaVersion": "OwlCodaRunKitProjectCompletionContinuityV1",
|
|
137
|
+
"status": "baseline_missing",
|
|
138
|
+
"projectId": "completed-project",
|
|
139
|
+
"projectTruthHash": "0000000000000000000000000000000000000000000000000000000000000000",
|
|
140
|
+
"disposition": "completed_project_source_baseline_missing",
|
|
141
|
+
"targetWorkspaceRef": null,
|
|
142
|
+
"baseline": null,
|
|
143
|
+
"current": null,
|
|
144
|
+
"delta": null,
|
|
145
|
+
"nextAction": "Review the current workspace and bind an explicit source baseline before deciding whether the project is terminal.",
|
|
146
|
+
"readOnly": true,
|
|
147
|
+
"writesPerformed": false,
|
|
148
|
+
"authorityBoundary": {
|
|
149
|
+
"agentDispatch": false,
|
|
150
|
+
"git": false,
|
|
151
|
+
"release": false,
|
|
152
|
+
"deployment": false,
|
|
153
|
+
"production": false,
|
|
154
|
+
"business": false,
|
|
155
|
+
"automation": false,
|
|
156
|
+
"money": false
|
|
157
|
+
},
|
|
158
|
+
"authorizationGranted": false
|
|
159
|
+
},
|
|
160
|
+
"exitCode": 0
|
|
161
|
+
}
|
|
162
|
+
],
|
|
163
|
+
"$defs": {
|
|
164
|
+
"text": { "type": "string", "minLength": 1 },
|
|
165
|
+
"nullableText": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
|
|
166
|
+
"strings": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
|
|
167
|
+
"hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
|
|
168
|
+
}
|
|
169
|
+
}
|