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.
Files changed (31) hide show
  1. package/CHANGELOG.md +40 -3
  2. package/README.md +61 -12
  3. package/docs/architecture/OWLCODA_RUNKIT_017_AGENT_NATIVE_PRODUCT_DEFINITION.md +154 -0
  4. package/integrations/codex/skills/owlcoda-runkit/SKILL.md +74 -16
  5. package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
  6. package/package.json +1 -1
  7. package/packages/attest/distribution-manifest-v1.json +10 -0
  8. package/packages/attest/src/quick.mjs +10 -0
  9. package/registry-release-policy-v1.json +5 -5
  10. package/sbom.spdx.json +5 -5
  11. package/scripts/runkit-contract/core-contract.mjs +12 -2
  12. package/scripts/runkit-contract/fleet-discovery.mjs +768 -26
  13. package/scripts/runkit-contract/formal-workflow.mjs +201 -0
  14. package/scripts/runkit-contract/lifecycle-orchestration.mjs +7 -2
  15. package/scripts/runkit-contract/project-cli-resolver.mjs +3 -0
  16. package/scripts/runkit-contract/project-control-parser.mjs +62 -3
  17. package/scripts/runkit-contract/runkit-cli.mjs +162 -13
  18. package/scripts/runkit-contract/schemas/core-successor-plan-v1.schema.json +14 -2
  19. package/scripts/runkit-contract/schemas/fleet-discovery-v1.schema.json +33 -2
  20. package/scripts/runkit-contract/schemas/team-project-definition-v1.schema.json +108 -0
  21. package/scripts/runkit-contract/schemas/team-project-event-v1.schema.json +99 -0
  22. package/scripts/runkit-contract/schemas/team-project-status-v1.schema.json +50 -0
  23. package/scripts/runkit-contract/schemas/verification-envelope-v1.schema.json +102 -0
  24. package/scripts/runkit-contract/sync-core016-release-identity.mjs +9 -4
  25. package/scripts/runkit-contract/sync-release-identity.mjs +224 -0
  26. package/scripts/runkit-contract/team-project.mjs +1006 -0
  27. package/scripts/runkit-contract/templates/team-project-definition.json +30 -0
  28. package/scripts/runkit-contract/templates/team-project-event.json +9 -0
  29. package/scripts/runkit-contract/templates/verification-envelope.json +28 -0
  30. package/scripts/runkit-contract/verification-envelope-check.mjs +45 -0
  31. 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
- /(coreVersion:\s*"0\.16\.0",\s*coreManifestSha256:\s*")sha256:[a-f0-9]{64}("\s*,?)/gu;
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 !== "0.16.0"
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 !== "0.16.0"
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 === "0.16.0") ?? [];
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
  }