owlrunkit 0.16.0 → 0.17.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 +40 -3
- package/README.md +61 -12
- package/docs/architecture/OWLCODA_RUNKIT_017_AGENT_NATIVE_PRODUCT_DEFINITION.md +154 -0
- package/integrations/codex/skills/owlcoda-runkit/SKILL.md +74 -16
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
- package/package.json +1 -1
- package/packages/attest/distribution-manifest-v1.json +10 -0
- package/packages/attest/src/quick.mjs +10 -0
- package/registry-release-policy-v1.json +5 -5
- package/sbom.spdx.json +5 -5
- package/scripts/runkit-contract/core-contract.mjs +12 -2
- package/scripts/runkit-contract/fleet-discovery.mjs +768 -26
- package/scripts/runkit-contract/formal-workflow.mjs +201 -0
- package/scripts/runkit-contract/lifecycle-orchestration.mjs +7 -2
- package/scripts/runkit-contract/project-cli-resolver.mjs +3 -0
- package/scripts/runkit-contract/project-control-parser.mjs +62 -3
- package/scripts/runkit-contract/runkit-cli.mjs +162 -13
- package/scripts/runkit-contract/schemas/core-successor-plan-v1.schema.json +14 -2
- package/scripts/runkit-contract/schemas/fleet-discovery-v1.schema.json +33 -2
- package/scripts/runkit-contract/schemas/team-project-definition-v1.schema.json +108 -0
- package/scripts/runkit-contract/schemas/team-project-event-v1.schema.json +99 -0
- package/scripts/runkit-contract/schemas/team-project-status-v1.schema.json +50 -0
- package/scripts/runkit-contract/schemas/verification-envelope-v1.schema.json +102 -0
- package/scripts/runkit-contract/sync-core016-release-identity.mjs +9 -4
- package/scripts/runkit-contract/sync-release-identity.mjs +224 -0
- package/scripts/runkit-contract/team-project.mjs +1006 -0
- package/scripts/runkit-contract/templates/team-project-definition.json +30 -0
- package/scripts/runkit-contract/templates/team-project-event.json +9 -0
- package/scripts/runkit-contract/templates/verification-envelope.json +28 -0
- package/scripts/runkit-contract/verification-envelope-check.mjs +45 -0
- package/scripts/runkit-contract/verification-envelope.mjs +846 -0
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"discovery": {
|
|
98
98
|
"type": "object",
|
|
99
99
|
"additionalProperties": false,
|
|
100
|
-
"required": ["schemaVersion", "source", "coverageRoots", "unreachableRoots", "workspaceRoots", "complete", "frozenManifestSha256", "authorizationGranted"],
|
|
100
|
+
"required": ["schemaVersion", "source", "coverageRoots", "unreachableRoots", "workspaceRoots", "classifications", "issues", "complete", "frozenManifestSha256", "authorizationGranted"],
|
|
101
101
|
"properties": {
|
|
102
102
|
"schemaVersion": { "const": "OwlCodaRunKitFleetDiscoveryV1" },
|
|
103
103
|
"source": { "type": "string", "minLength": 1 },
|
|
@@ -105,6 +105,18 @@
|
|
|
105
105
|
"coverageRoots": { "type": "array", "items": { "type": "string" } },
|
|
106
106
|
"unreachableRoots": { "type": "array", "items": { "type": "string" } },
|
|
107
107
|
"workspaceRoots": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } },
|
|
108
|
+
"classifications": {
|
|
109
|
+
"type": "object",
|
|
110
|
+
"additionalProperties": false,
|
|
111
|
+
"required": ["active", "retired", "excluded", "invalid"],
|
|
112
|
+
"properties": {
|
|
113
|
+
"active": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
114
|
+
"retired": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
115
|
+
"excluded": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
116
|
+
"invalid": { "type": "array", "items": { "type": "string", "minLength": 1 } }
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
"issues": { "type": "array", "maxItems": 0 },
|
|
108
120
|
"complete": { "const": true },
|
|
109
121
|
"frozenManifestSha256": { "$ref": "#/$defs/hash" },
|
|
110
122
|
"authorizationGranted": { "const": false }
|
|
@@ -146,7 +158,7 @@
|
|
|
146
158
|
"materializationProof": { "candidateSha256": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc", "payloadSha256": "sha256:3333333333333333333333333333333333333333333333333333333333333333", "materializedCore": { "contractVersion": "0.2", "coreVersion": "0.16.0", "coreManifestSha256": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", "coreSourceRef": "artifact:sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" }, "matchesToCore": true }
|
|
147
159
|
},
|
|
148
160
|
"fleetDiscoveryRequest": { "fleetRoots": ["/fleet"] },
|
|
149
|
-
"fleetDiscovery": { "schemaVersion": "OwlCodaRunKitFleetDiscoveryV1", "source": "fleet_roots", "coverageRoots": ["/fleet"], "unreachableRoots": [], "workspaceRoots": ["/fleet/project"], "complete": true, "frozenManifestSha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "authorizationGranted": false },
|
|
161
|
+
"fleetDiscovery": { "schemaVersion": "OwlCodaRunKitFleetDiscoveryV1", "source": "fleet_roots", "coverageRoots": ["/fleet"], "unreachableRoots": [], "workspaceRoots": ["/fleet/project"], "classifications": { "active": ["/fleet/project"], "retired": [], "excluded": [], "invalid": [] }, "issues": [], "complete": true, "frozenManifestSha256": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee", "authorizationGranted": false },
|
|
150
162
|
"migrationContract": { "completeFleetRequired": true, "globalPreflightBeforeWrites": true, "ownerMigrationAuthorityRequired": true, "migrationScope": "project_runkit_config_and_local_migration_receipt_only", "projectOrder": "canonical_workspace_root" },
|
|
151
163
|
"repositoryActions": { "stage": false, "commit": false, "push": false, "publish": false, "deploy": false },
|
|
152
164
|
"authorizationGranted": false,
|
|
@@ -4,16 +4,40 @@
|
|
|
4
4
|
"title": "OwlCoda RunKit Fleet Discovery V1",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"additionalProperties": false,
|
|
7
|
-
"required": ["schemaVersion", "source", "coverageRoots", "unreachableRoots", "workspaceRoots", "complete", "frozenManifestSha256", "authorizationGranted"],
|
|
7
|
+
"required": ["schemaVersion", "source", "coverageRoots", "unreachableRoots", "workspaceRoots", "classifications", "issues", "complete", "frozenManifestSha256", "authorizationGranted"],
|
|
8
8
|
"properties": {
|
|
9
9
|
"schemaVersion": { "const": "OwlCodaRunKitFleetDiscoveryV1" },
|
|
10
|
-
"source": { "enum": ["fleet_registry", "fleet_roots", "fleet_manifest", "explicit_workspaces"] },
|
|
10
|
+
"source": { "enum": ["fleet_registry", "fleet_registry_membership", "fleet_roots", "fleet_manifest", "explicit_workspaces"] },
|
|
11
11
|
"manifestPath": { "type": "string", "minLength": 1 },
|
|
12
12
|
"registryPath": { "type": "string", "minLength": 1 },
|
|
13
13
|
"registrySha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
14
14
|
"coverageRoots": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
15
15
|
"unreachableRoots": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
16
16
|
"workspaceRoots": { "type": "array", "maxItems": 256, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
17
|
+
"classifications": {
|
|
18
|
+
"type": "object",
|
|
19
|
+
"additionalProperties": false,
|
|
20
|
+
"required": ["active", "retired", "excluded", "invalid"],
|
|
21
|
+
"properties": {
|
|
22
|
+
"active": { "type": "array", "maxItems": 256, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
23
|
+
"retired": { "type": "array", "maxItems": 256, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
24
|
+
"excluded": { "type": "array", "maxItems": 256, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
25
|
+
"invalid": { "type": "array", "maxItems": 256, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"issues": {
|
|
29
|
+
"type": "array",
|
|
30
|
+
"items": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"additionalProperties": false,
|
|
33
|
+
"required": ["code", "path", "coverageRoot"],
|
|
34
|
+
"properties": {
|
|
35
|
+
"code": { "type": "string", "minLength": 1 },
|
|
36
|
+
"path": { "type": "string", "minLength": 1 },
|
|
37
|
+
"coverageRoot": { "type": "string", "minLength": 1 }
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
},
|
|
17
41
|
"complete": { "type": "boolean" },
|
|
18
42
|
"frozenManifestSha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
19
43
|
"authorizationGranted": { "const": false }
|
|
@@ -24,6 +48,13 @@
|
|
|
24
48
|
"coverageRoots": ["/absolute/path/to/fleet"],
|
|
25
49
|
"unreachableRoots": [],
|
|
26
50
|
"workspaceRoots": ["/absolute/path/to/fleet/project"],
|
|
51
|
+
"classifications": {
|
|
52
|
+
"active": ["/absolute/path/to/fleet/project"],
|
|
53
|
+
"retired": [],
|
|
54
|
+
"excluded": [],
|
|
55
|
+
"invalid": []
|
|
56
|
+
},
|
|
57
|
+
"issues": [],
|
|
27
58
|
"complete": true,
|
|
28
59
|
"frozenManifestSha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
29
60
|
"authorizationGranted": false
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/team-project-definition-v1.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Team Project Definition V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "projectId", "objective", "milestones", "workstreams", "workItems", "integrationGates"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": "OwlCodaRunKitTeamProjectDefinitionV1" },
|
|
10
|
+
"projectId": { "$ref": "#/$defs/id" },
|
|
11
|
+
"objective": { "type": "string", "minLength": 1 },
|
|
12
|
+
"milestones": {
|
|
13
|
+
"type": "array",
|
|
14
|
+
"items": { "$ref": "#/$defs/milestone" }
|
|
15
|
+
},
|
|
16
|
+
"workstreams": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": { "$ref": "#/$defs/workstream" }
|
|
19
|
+
},
|
|
20
|
+
"workItems": {
|
|
21
|
+
"type": "array",
|
|
22
|
+
"minItems": 1,
|
|
23
|
+
"items": { "$ref": "#/$defs/workItem" }
|
|
24
|
+
},
|
|
25
|
+
"integrationGates": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"items": { "$ref": "#/$defs/integrationGate" }
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"$defs": {
|
|
31
|
+
"id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
|
|
32
|
+
"strings": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
33
|
+
"milestone": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"additionalProperties": false,
|
|
36
|
+
"required": ["id", "title"],
|
|
37
|
+
"properties": {
|
|
38
|
+
"id": { "$ref": "#/$defs/id" },
|
|
39
|
+
"title": { "type": "string", "minLength": 1 }
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"workstream": {
|
|
43
|
+
"type": "object",
|
|
44
|
+
"additionalProperties": false,
|
|
45
|
+
"required": ["id", "title", "milestoneId"],
|
|
46
|
+
"properties": {
|
|
47
|
+
"id": { "$ref": "#/$defs/id" },
|
|
48
|
+
"title": { "type": "string", "minLength": 1 },
|
|
49
|
+
"milestoneId": { "$ref": "#/$defs/id" }
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"workItem": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"additionalProperties": false,
|
|
55
|
+
"required": ["id", "title", "milestoneId", "workstreamId", "dependencies", "ownedPaths"],
|
|
56
|
+
"properties": {
|
|
57
|
+
"id": { "$ref": "#/$defs/id" },
|
|
58
|
+
"title": { "type": "string", "minLength": 1 },
|
|
59
|
+
"milestoneId": { "$ref": "#/$defs/id" },
|
|
60
|
+
"workstreamId": { "$ref": "#/$defs/id" },
|
|
61
|
+
"dependencies": { "$ref": "#/$defs/strings" },
|
|
62
|
+
"ownedPaths": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
63
|
+
"measurable": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"additionalProperties": false,
|
|
66
|
+
"required": ["unit", "total"],
|
|
67
|
+
"properties": {
|
|
68
|
+
"unit": { "type": "string", "minLength": 1 },
|
|
69
|
+
"total": { "type": "integer", "minimum": 1 }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"integrationGate": {
|
|
75
|
+
"type": "object",
|
|
76
|
+
"additionalProperties": false,
|
|
77
|
+
"required": ["id", "title", "requiredWorkItemIds", "requiredDecisionIds"],
|
|
78
|
+
"properties": {
|
|
79
|
+
"id": { "$ref": "#/$defs/id" },
|
|
80
|
+
"title": { "type": "string", "minLength": 1 },
|
|
81
|
+
"requiredWorkItemIds": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/id" } },
|
|
82
|
+
"requiredDecisionIds": { "$ref": "#/$defs/strings" }
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"examples": [{
|
|
87
|
+
"schemaVersion": "OwlCodaRunKitTeamProjectDefinitionV1",
|
|
88
|
+
"projectId": "release-017",
|
|
89
|
+
"objective": "Ship OwlRunKit 0.17",
|
|
90
|
+
"milestones": [{ "id": "m1", "title": "Product" }],
|
|
91
|
+
"workstreams": [{ "id": "runtime", "title": "Runtime", "milestoneId": "m1" }],
|
|
92
|
+
"workItems": [{
|
|
93
|
+
"id": "engine",
|
|
94
|
+
"title": "Implement the engine",
|
|
95
|
+
"milestoneId": "m1",
|
|
96
|
+
"workstreamId": "runtime",
|
|
97
|
+
"dependencies": [],
|
|
98
|
+
"ownedPaths": ["scripts/runkit-contract/**"],
|
|
99
|
+
"measurable": { "unit": "acceptance_tests", "total": 4 }
|
|
100
|
+
}],
|
|
101
|
+
"integrationGates": [{
|
|
102
|
+
"id": "ready",
|
|
103
|
+
"title": "Ready",
|
|
104
|
+
"requiredWorkItemIds": ["engine"],
|
|
105
|
+
"requiredDecisionIds": []
|
|
106
|
+
}]
|
|
107
|
+
}]
|
|
108
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/team-project-event-v1.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Team Project Event V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "eventId", "type", "occurredAt"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": "OwlCodaRunKitTeamProjectEventV1" },
|
|
10
|
+
"eventId": { "$ref": "#/$defs/id" },
|
|
11
|
+
"type": { "enum": ["agent_assigned", "checkpoint_recorded", "handoff_recorded", "decision_opened", "decision_resolved", "integration_gate_passed", "data_candidate_recorded"] },
|
|
12
|
+
"occurredAt": { "type": "string", "minLength": 24 },
|
|
13
|
+
"assignmentId": { "$ref": "#/$defs/id" },
|
|
14
|
+
"supersedesAssignmentId": { "$ref": "#/$defs/id" },
|
|
15
|
+
"workItemId": { "$ref": "#/$defs/id" },
|
|
16
|
+
"agentId": { "$ref": "#/$defs/id" },
|
|
17
|
+
"executionRunId": { "$ref": "#/$defs/id" },
|
|
18
|
+
"executionWorkItemId": { "$ref": "#/$defs/id" },
|
|
19
|
+
"state": { "enum": ["active", "waiting_dependency", "waiting_decision", "verifying", "ready_to_integrate", "completed", "failed"] },
|
|
20
|
+
"summary": { "type": "string", "minLength": 1 },
|
|
21
|
+
"completedUnits": { "type": "integer", "minimum": 0 },
|
|
22
|
+
"evidenceRefs": { "$ref": "#/$defs/strings" },
|
|
23
|
+
"blockerRefs": { "$ref": "#/$defs/strings" },
|
|
24
|
+
"decisionRefs": { "$ref": "#/$defs/strings" },
|
|
25
|
+
"nextAction": { "oneOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] },
|
|
26
|
+
"sourceFingerprint": { "type": "string", "pattern": "^(sha256:)?[a-f0-9]{64}$" },
|
|
27
|
+
"fromAgentId": { "$ref": "#/$defs/id" },
|
|
28
|
+
"toAgentId": { "$ref": "#/$defs/id" },
|
|
29
|
+
"decisionId": { "$ref": "#/$defs/id" },
|
|
30
|
+
"title": { "type": "string", "minLength": 1 },
|
|
31
|
+
"question": { "type": "string", "minLength": 1 },
|
|
32
|
+
"ownerAgentId": { "$ref": "#/$defs/id" },
|
|
33
|
+
"blockingWorkItemIds": { "$ref": "#/$defs/strings" },
|
|
34
|
+
"options": { "$ref": "#/$defs/strings" },
|
|
35
|
+
"resolution": { "type": "string", "minLength": 1 },
|
|
36
|
+
"rationale": { "type": "string", "minLength": 1 },
|
|
37
|
+
"gateId": { "$ref": "#/$defs/id" },
|
|
38
|
+
"candidateId": { "$ref": "#/$defs/id" },
|
|
39
|
+
"sourceRef": { "type": "string", "minLength": 1 },
|
|
40
|
+
"rights": { "type": "string", "minLength": 1 },
|
|
41
|
+
"inputRef": { "type": "string", "minLength": 1 },
|
|
42
|
+
"outputRef": { "type": "string", "minLength": 1 },
|
|
43
|
+
"decisionRef": { "oneOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] },
|
|
44
|
+
"verificationRefs": { "$ref": "#/$defs/strings" },
|
|
45
|
+
"outcomeRef": { "oneOf": [{ "type": "string", "minLength": 1 }, { "type": "null" }] },
|
|
46
|
+
"version": { "type": "string", "minLength": 1 }
|
|
47
|
+
},
|
|
48
|
+
"allOf": [
|
|
49
|
+
{
|
|
50
|
+
"if": { "properties": { "type": { "const": "agent_assigned" } }, "required": ["type"] },
|
|
51
|
+
"then": {
|
|
52
|
+
"required": ["assignmentId", "workItemId", "agentId"],
|
|
53
|
+
"dependentRequired": {
|
|
54
|
+
"executionRunId": ["executionWorkItemId"],
|
|
55
|
+
"executionWorkItemId": ["executionRunId"]
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"if": { "properties": { "type": { "const": "checkpoint_recorded" } }, "required": ["type"] },
|
|
61
|
+
"then": { "required": ["assignmentId", "workItemId", "state", "summary", "evidenceRefs", "blockerRefs", "decisionRefs", "nextAction"] }
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"if": { "properties": { "type": { "const": "handoff_recorded" } }, "required": ["type"] },
|
|
65
|
+
"then": { "required": ["assignmentId", "workItemId", "fromAgentId", "toAgentId", "summary", "evidenceRefs", "nextAction"] }
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"if": { "properties": { "type": { "const": "decision_opened" } }, "required": ["type"] },
|
|
69
|
+
"then": { "required": ["decisionId", "title", "question", "ownerAgentId", "blockingWorkItemIds", "options"] }
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"if": { "properties": { "type": { "const": "decision_resolved" } }, "required": ["type"] },
|
|
73
|
+
"then": { "required": ["decisionId", "resolution", "rationale", "evidenceRefs"] }
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"if": { "properties": { "type": { "const": "integration_gate_passed" } }, "required": ["type"] },
|
|
77
|
+
"then": { "required": ["gateId", "summary", "evidenceRefs"] }
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"if": { "properties": { "type": { "const": "data_candidate_recorded" } }, "required": ["type"] },
|
|
81
|
+
"then": { "required": ["candidateId", "sourceRef", "rights", "inputRef", "outputRef", "decisionRef", "verificationRefs", "outcomeRef", "version"] }
|
|
82
|
+
}
|
|
83
|
+
],
|
|
84
|
+
"$defs": {
|
|
85
|
+
"id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
|
|
86
|
+
"strings": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }
|
|
87
|
+
},
|
|
88
|
+
"examples": [{
|
|
89
|
+
"schemaVersion": "OwlCodaRunKitTeamProjectEventV1",
|
|
90
|
+
"eventId": "event-001",
|
|
91
|
+
"type": "agent_assigned",
|
|
92
|
+
"occurredAt": "2026-08-08T00:00:00.000Z",
|
|
93
|
+
"assignmentId": "assignment-001",
|
|
94
|
+
"workItemId": "engine",
|
|
95
|
+
"agentId": "agent-runtime",
|
|
96
|
+
"executionRunId": "formal-engine-001",
|
|
97
|
+
"executionWorkItemId": "delivery"
|
|
98
|
+
}]
|
|
99
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/team-project-status-v1.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Team Project Status V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "status", "projectId", "objective", "overall", "counts", "milestones", "workstreams", "workItems", "agents", "readyQueue", "criticalWorkItems", "openDecisions", "resolvedDecisions", "integrationGates", "dataCandidates", "projectTruthHash", "authorizationGranted", "exitCode"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": "OwlCodaRunKitTeamProjectStatusV1" },
|
|
10
|
+
"status": { "const": "team_project_status" },
|
|
11
|
+
"projectId": { "type": "string", "minLength": 1 },
|
|
12
|
+
"objective": { "type": "string", "minLength": 1 },
|
|
13
|
+
"overall": { "enum": ["planned", "active", "active_with_blockers", "completed"] },
|
|
14
|
+
"counts": { "type": "object" },
|
|
15
|
+
"milestones": { "type": "array", "items": { "type": "object" } },
|
|
16
|
+
"workstreams": { "type": "array", "items": { "type": "object" } },
|
|
17
|
+
"workItems": { "type": "array", "items": { "type": "object" } },
|
|
18
|
+
"agents": { "type": "array", "items": { "type": "object" } },
|
|
19
|
+
"readyQueue": { "type": "array", "items": { "type": "string" } },
|
|
20
|
+
"criticalWorkItems": { "type": "array", "items": { "type": "string" } },
|
|
21
|
+
"openDecisions": { "type": "array", "items": { "type": "object" } },
|
|
22
|
+
"resolvedDecisions": { "type": "array", "items": { "type": "object" } },
|
|
23
|
+
"integrationGates": { "type": "array", "items": { "type": "object" } },
|
|
24
|
+
"dataCandidates": { "type": "array", "items": { "type": "object" } },
|
|
25
|
+
"projectTruthHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
26
|
+
"authorizationGranted": { "const": false },
|
|
27
|
+
"exitCode": { "const": 0 }
|
|
28
|
+
},
|
|
29
|
+
"examples": [{
|
|
30
|
+
"schemaVersion": "OwlCodaRunKitTeamProjectStatusV1",
|
|
31
|
+
"status": "team_project_status",
|
|
32
|
+
"projectId": "release-017",
|
|
33
|
+
"objective": "Ship OwlRunKit 0.17",
|
|
34
|
+
"overall": "active",
|
|
35
|
+
"counts": {},
|
|
36
|
+
"milestones": [],
|
|
37
|
+
"workstreams": [],
|
|
38
|
+
"workItems": [],
|
|
39
|
+
"agents": [],
|
|
40
|
+
"readyQueue": [],
|
|
41
|
+
"criticalWorkItems": [],
|
|
42
|
+
"openDecisions": [],
|
|
43
|
+
"resolvedDecisions": [],
|
|
44
|
+
"integrationGates": [],
|
|
45
|
+
"dataCandidates": [],
|
|
46
|
+
"projectTruthHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
47
|
+
"authorizationGranted": false,
|
|
48
|
+
"exitCode": 0
|
|
49
|
+
}]
|
|
50
|
+
}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/verification-envelope-v1.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Verification Envelope V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "envelopeId", "cwd", "lockfiles", "paths", "environment", "network", "process", "phases"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": "OwlCodaRunKitVerificationEnvelopeV1" },
|
|
10
|
+
"envelopeId": { "$ref": "#/$defs/id" },
|
|
11
|
+
"cwd": { "type": "string", "minLength": 1 },
|
|
12
|
+
"lockfiles": { "$ref": "#/$defs/strings" },
|
|
13
|
+
"paths": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
"required": ["immutableSource", "declaredOutput", "disposableScratch", "forbidden"],
|
|
17
|
+
"properties": {
|
|
18
|
+
"immutableSource": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
19
|
+
"declaredOutput": { "$ref": "#/$defs/strings" },
|
|
20
|
+
"disposableScratch": { "$ref": "#/$defs/strings" },
|
|
21
|
+
"forbidden": { "$ref": "#/$defs/strings" }
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"environment": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"required": ["allowNames", "values"],
|
|
28
|
+
"properties": {
|
|
29
|
+
"allowNames": { "$ref": "#/$defs/strings" },
|
|
30
|
+
"values": { "type": "object" }
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
"network": {
|
|
34
|
+
"type": "object",
|
|
35
|
+
"additionalProperties": false,
|
|
36
|
+
"required": ["mode"],
|
|
37
|
+
"properties": { "mode": { "enum": ["deny", "loopback"] } }
|
|
38
|
+
},
|
|
39
|
+
"process": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"required": ["allowSubprocesses", "allowedExecutables", "allowBackgroundAfterFinish"],
|
|
43
|
+
"properties": {
|
|
44
|
+
"allowSubprocesses": { "type": "boolean" },
|
|
45
|
+
"allowedExecutables": { "$ref": "#/$defs/strings" },
|
|
46
|
+
"allowBackgroundAfterFinish": { "const": false }
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"phases": {
|
|
50
|
+
"type": "object",
|
|
51
|
+
"additionalProperties": false,
|
|
52
|
+
"required": ["setup", "check", "teardown"],
|
|
53
|
+
"properties": {
|
|
54
|
+
"setup": { "oneOf": [{ "$ref": "#/$defs/command" }, { "type": "null" }] },
|
|
55
|
+
"check": { "$ref": "#/$defs/command" },
|
|
56
|
+
"teardown": { "oneOf": [{ "$ref": "#/$defs/command" }, { "type": "null" }] }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"$defs": {
|
|
61
|
+
"id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
|
|
62
|
+
"strings": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
63
|
+
"command": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"additionalProperties": false,
|
|
66
|
+
"required": ["executable", "argv", "timeoutMs"],
|
|
67
|
+
"properties": {
|
|
68
|
+
"executable": { "type": "string", "minLength": 1 },
|
|
69
|
+
"argv": { "type": "array", "items": { "type": "string" } },
|
|
70
|
+
"timeoutMs": { "type": "integer", "minimum": 100, "maximum": 3600000 }
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
"examples": [{
|
|
75
|
+
"schemaVersion": "OwlCodaRunKitVerificationEnvelopeV1",
|
|
76
|
+
"envelopeId": "quality-v1",
|
|
77
|
+
"cwd": ".",
|
|
78
|
+
"lockfiles": ["package-lock.json"],
|
|
79
|
+
"paths": {
|
|
80
|
+
"immutableSource": ["src/**", "tests/**", "package-lock.json"],
|
|
81
|
+
"declaredOutput": ["dist/**", "coverage/**"],
|
|
82
|
+
"disposableScratch": [".tmp/**"],
|
|
83
|
+
"forbidden": [".env", ".ssh/**", ".owlcoda/**"]
|
|
84
|
+
},
|
|
85
|
+
"environment": { "allowNames": ["PATH"], "values": {} },
|
|
86
|
+
"network": { "mode": "deny" },
|
|
87
|
+
"process": {
|
|
88
|
+
"allowSubprocesses": false,
|
|
89
|
+
"allowedExecutables": [],
|
|
90
|
+
"allowBackgroundAfterFinish": false
|
|
91
|
+
},
|
|
92
|
+
"phases": {
|
|
93
|
+
"setup": null,
|
|
94
|
+
"check": {
|
|
95
|
+
"executable": "/absolute/path/to/node",
|
|
96
|
+
"argv": ["tests/run.mjs"],
|
|
97
|
+
"timeoutMs": 120000
|
|
98
|
+
},
|
|
99
|
+
"teardown": null
|
|
100
|
+
}
|
|
101
|
+
}]
|
|
102
|
+
}
|
|
@@ -19,8 +19,13 @@ const RELEASE_FILES = Object.freeze({
|
|
|
19
19
|
"integrations/codex/skills/owlcoda-runkit/assets/templates/config.json",
|
|
20
20
|
});
|
|
21
21
|
|
|
22
|
+
const RELEASE_VERSION = "0.16.1";
|
|
22
23
|
const ATTEST_RUNTIME_CORE016 =
|
|
23
|
-
|
|
24
|
+
new RegExp(
|
|
25
|
+
`(coreVersion:\\s*"${RELEASE_VERSION.replaceAll(".", "\\.")}",`
|
|
26
|
+
+ `\\s*coreManifestSha256:\\s*")sha256:[a-f0-9]{64}("\\s*,?)`,
|
|
27
|
+
"gu",
|
|
28
|
+
);
|
|
24
29
|
|
|
25
30
|
function readJson(ref) {
|
|
26
31
|
return JSON.parse(readFileSync(ref, "utf8"));
|
|
@@ -54,7 +59,7 @@ export function synchronizeCore016ReleaseIdentityV1({
|
|
|
54
59
|
const root = path.resolve(repositoryRoot);
|
|
55
60
|
if (
|
|
56
61
|
core?.contractVersion !== "0.2"
|
|
57
|
-
|| core?.coreVersion !==
|
|
62
|
+
|| core?.coreVersion !== RELEASE_VERSION
|
|
58
63
|
|| !/^sha256:[a-f0-9]{64}$/u.test(
|
|
59
64
|
core?.coreManifestSha256 ?? "",
|
|
60
65
|
)
|
|
@@ -66,12 +71,12 @@ export function synchronizeCore016ReleaseIdentityV1({
|
|
|
66
71
|
const packageManifest = readJson(refs.packageManifest);
|
|
67
72
|
if (
|
|
68
73
|
packageManifest.name !== "owlrunkit"
|
|
69
|
-
|| packageManifest.version !==
|
|
74
|
+
|| packageManifest.version !== RELEASE_VERSION
|
|
70
75
|
) throw new Error("core016_release_package_invalid");
|
|
71
76
|
const attestManifest = readJson(refs.attestManifest);
|
|
72
77
|
const candidateIndexes = attestManifest.supportedProducerCoreIdentities
|
|
73
78
|
?.map((identity, index) => ({ identity, index }))
|
|
74
|
-
.filter(({ identity }) => identity?.coreVersion ===
|
|
79
|
+
.filter(({ identity }) => identity?.coreVersion === RELEASE_VERSION) ?? [];
|
|
75
80
|
if (candidateIndexes.length !== 1) {
|
|
76
81
|
throw new Error("core016_release_attest_candidate_ambiguous");
|
|
77
82
|
}
|