owlrunkit 0.17.2 → 0.18.1
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 +64 -0
- package/README.md +117 -14
- package/docs/architecture/OWLCODA_RUNKIT_017_AGENT_NATIVE_PRODUCT_DEFINITION.md +2 -3
- package/docs/architecture/OWLCODA_RUNKIT_018_PROJECT_DRIVER_PRODUCT_DEFINITION.md +165 -0
- package/docs/architecture/OWLCODA_RUNKIT_USAGE_MODE_SELECTION_PRODUCT_DECISION_20260811.md +142 -0
- package/integrations/codex/skills/owlcoda-runkit/SKILL.md +127 -23
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
- package/package.json +2 -2
- 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/assurance-router.mjs +28 -20
- package/scripts/runkit-contract/core-contract.mjs +7 -1
- package/scripts/runkit-contract/inspect-presentation.mjs +38 -5
- package/scripts/runkit-contract/install-codex-skill.mjs +60 -1
- package/scripts/runkit-contract/onboarding-doctor.mjs +19 -1
- package/scripts/runkit-contract/profile-onboarding.mjs +597 -22
- package/scripts/runkit-contract/project-cli-resolver.mjs +6 -0
- package/scripts/runkit-contract/quick-attest.mjs +1 -0
- package/scripts/runkit-contract/quick-metrics.mjs +43 -5
- package/scripts/runkit-contract/quick-verify.mjs +15 -4
- package/scripts/runkit-contract/runkit-cli.mjs +747 -20
- package/scripts/runkit-contract/schemas/profile-reconcile-plan-v1.schema.json +105 -0
- package/scripts/runkit-contract/schemas/profile-reconcile-receipt-v1.schema.json +60 -0
- package/scripts/runkit-contract/schemas/team-project-event-v1.schema.json +16 -1
- package/scripts/runkit-contract/schemas/team-project-status-v1.schema.json +34 -1
- package/scripts/runkit-contract/schemas/team-project-successor-receipt-v1.schema.json +204 -0
- package/scripts/runkit-contract/schemas/usage-mode-recommendation-v1.schema.json +136 -0
- package/scripts/runkit-contract/team-project-successor.mjs +1176 -0
- package/scripts/runkit-contract/team-project.mjs +1082 -43
- package/scripts/runkit-contract/templates/assurance-request.json +6 -0
- package/scripts/runkit-contract/usage-mode.mjs +229 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.dev/schemas/runkit/profile-reconcile-plan-v1.json",
|
|
4
|
+
"title": "OwlCoda RunKit Profiles Reconcile Plan V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "status", "valid", "exitCode", "dryRun", "writesPerformed", "detectionSha256", "currentProfilesSha256", "issueCodes", "authorizationGranted"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": "OwlCodaRunKitProfilesReconcilePlanV1" },
|
|
10
|
+
"status": { "enum": ["profiles_reconcile_ready", "profiles_already_current", "profiles_reconcile_blocked"] },
|
|
11
|
+
"valid": { "type": "boolean" },
|
|
12
|
+
"exitCode": { "enum": [0, 2] },
|
|
13
|
+
"dryRun": { "type": "boolean" },
|
|
14
|
+
"writesPerformed": { "const": 0 },
|
|
15
|
+
"reconcileSha256": { "$ref": "#/$defs/hash" },
|
|
16
|
+
"detectionSha256": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/hash" }] },
|
|
17
|
+
"currentProfilesSha256": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/hash" }] },
|
|
18
|
+
"proposedProfilesSha256": { "$ref": "#/$defs/hash" },
|
|
19
|
+
"addedProfileIds": { "$ref": "#/$defs/strings" },
|
|
20
|
+
"updatedProfiles": { "type": "array", "items": { "$ref": "#/$defs/update" } },
|
|
21
|
+
"proposedProfiles": { "$ref": "#/$defs/profiles" },
|
|
22
|
+
"issueCodes": { "$ref": "#/$defs/strings" },
|
|
23
|
+
"authorizationGranted": { "const": false }
|
|
24
|
+
},
|
|
25
|
+
"$defs": {
|
|
26
|
+
"hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
27
|
+
"strings": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
28
|
+
"update": {
|
|
29
|
+
"type": "object",
|
|
30
|
+
"additionalProperties": false,
|
|
31
|
+
"required": ["profileId", "addedPaths", "addedCommandIds", "updatedCommandIds"],
|
|
32
|
+
"properties": {
|
|
33
|
+
"profileId": { "type": "string", "minLength": 1 },
|
|
34
|
+
"addedPaths": { "$ref": "#/$defs/strings" },
|
|
35
|
+
"addedCommandIds": { "$ref": "#/$defs/strings" },
|
|
36
|
+
"updatedCommandIds": { "$ref": "#/$defs/strings" }
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"command": {
|
|
40
|
+
"type": "object",
|
|
41
|
+
"additionalProperties": false,
|
|
42
|
+
"required": ["id", "cwd", "executable", "argv"],
|
|
43
|
+
"properties": {
|
|
44
|
+
"id": { "type": "string", "minLength": 1 },
|
|
45
|
+
"cwd": { "type": "string", "minLength": 1 },
|
|
46
|
+
"executable": { "oneOf": [{ "type": "null" }, { "type": "string", "minLength": 1 }] },
|
|
47
|
+
"argv": { "type": "array", "minItems": 1, "items": { "type": "string" } }
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"profile": {
|
|
51
|
+
"type": "object",
|
|
52
|
+
"additionalProperties": false,
|
|
53
|
+
"required": ["id", "paths", "role", "primary", "requiresProfileIds", "commands"],
|
|
54
|
+
"properties": {
|
|
55
|
+
"id": { "type": "string", "minLength": 1 },
|
|
56
|
+
"paths": { "$ref": "#/$defs/strings" },
|
|
57
|
+
"role": { "enum": ["primary", "supporting"] },
|
|
58
|
+
"primary": { "type": "boolean" },
|
|
59
|
+
"requiresProfileIds": { "$ref": "#/$defs/strings" },
|
|
60
|
+
"commands": { "type": "array", "items": { "$ref": "#/$defs/command" } }
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"profiles": {
|
|
64
|
+
"type": "object",
|
|
65
|
+
"additionalProperties": false,
|
|
66
|
+
"required": ["schemaVersion", "profiles"],
|
|
67
|
+
"properties": {
|
|
68
|
+
"schemaVersion": { "const": "OwlCodaRunKitProfilesV1" },
|
|
69
|
+
"profiles": { "type": "array", "minItems": 1, "items": { "$ref": "#/$defs/profile" } }
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"examples": [{
|
|
74
|
+
"schemaVersion": "OwlCodaRunKitProfilesReconcilePlanV1",
|
|
75
|
+
"status": "profiles_reconcile_ready",
|
|
76
|
+
"valid": true,
|
|
77
|
+
"exitCode": 0,
|
|
78
|
+
"dryRun": true,
|
|
79
|
+
"writesPerformed": 0,
|
|
80
|
+
"reconcileSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
81
|
+
"detectionSha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
82
|
+
"currentProfilesSha256": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
|
83
|
+
"proposedProfilesSha256": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
84
|
+
"addedProfileIds": [],
|
|
85
|
+
"updatedProfiles": [{
|
|
86
|
+
"profileId": "node-quality",
|
|
87
|
+
"addedPaths": ["package.json"],
|
|
88
|
+
"addedCommandIds": ["npm-test"],
|
|
89
|
+
"updatedCommandIds": []
|
|
90
|
+
}],
|
|
91
|
+
"proposedProfiles": {
|
|
92
|
+
"schemaVersion": "OwlCodaRunKitProfilesV1",
|
|
93
|
+
"profiles": [{
|
|
94
|
+
"id": "node-quality",
|
|
95
|
+
"paths": ["package.json"],
|
|
96
|
+
"role": "primary",
|
|
97
|
+
"primary": true,
|
|
98
|
+
"requiresProfileIds": [],
|
|
99
|
+
"commands": [{ "id": "npm-test", "cwd": ".", "executable": "/usr/bin/node", "argv": ["/usr/lib/npm-cli.js", "run", "test"] }]
|
|
100
|
+
}]
|
|
101
|
+
},
|
|
102
|
+
"issueCodes": [],
|
|
103
|
+
"authorizationGranted": false
|
|
104
|
+
}]
|
|
105
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.dev/schemas/runkit/profile-reconcile-receipt-v1.json",
|
|
4
|
+
"title": "OwlCoda RunKit Profiles Reconcile Receipt V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "status", "exitCode", "writesPerformed", "dryRun", "reconcileSha256", "detectionSha256", "beforeProfilesSha256", "appliedProfilesSha256", "addedProfileIds", "updatedProfiles", "receiptPath", "issueCodes", "authorizationGranted"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": "OwlCodaRunKitProfilesReconcileReceiptV1" },
|
|
10
|
+
"status": { "const": "profiles_reconciled" },
|
|
11
|
+
"exitCode": { "const": 0 },
|
|
12
|
+
"writesPerformed": { "const": 2 },
|
|
13
|
+
"dryRun": { "const": false },
|
|
14
|
+
"reconcileSha256": { "$ref": "#/$defs/hash" },
|
|
15
|
+
"detectionSha256": { "$ref": "#/$defs/hash" },
|
|
16
|
+
"beforeProfilesSha256": { "$ref": "#/$defs/hash" },
|
|
17
|
+
"appliedProfilesSha256": { "$ref": "#/$defs/hash" },
|
|
18
|
+
"addedProfileIds": { "$ref": "#/$defs/strings" },
|
|
19
|
+
"updatedProfiles": { "type": "array", "items": { "$ref": "#/$defs/update" } },
|
|
20
|
+
"receiptPath": { "type": "string", "pattern": "^\\.owlcoda/runkit/profile-reconcile-receipts/[a-f0-9]{64}\\.json$" },
|
|
21
|
+
"issueCodes": { "$ref": "#/$defs/strings" },
|
|
22
|
+
"authorizationGranted": { "const": false }
|
|
23
|
+
},
|
|
24
|
+
"$defs": {
|
|
25
|
+
"hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
26
|
+
"strings": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
27
|
+
"update": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"required": ["profileId", "addedPaths", "addedCommandIds", "updatedCommandIds"],
|
|
31
|
+
"properties": {
|
|
32
|
+
"profileId": { "type": "string", "minLength": 1 },
|
|
33
|
+
"addedPaths": { "$ref": "#/$defs/strings" },
|
|
34
|
+
"addedCommandIds": { "$ref": "#/$defs/strings" },
|
|
35
|
+
"updatedCommandIds": { "$ref": "#/$defs/strings" }
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"examples": [{
|
|
40
|
+
"schemaVersion": "OwlCodaRunKitProfilesReconcileReceiptV1",
|
|
41
|
+
"status": "profiles_reconciled",
|
|
42
|
+
"exitCode": 0,
|
|
43
|
+
"writesPerformed": 2,
|
|
44
|
+
"dryRun": false,
|
|
45
|
+
"reconcileSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
46
|
+
"detectionSha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
47
|
+
"beforeProfilesSha256": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
|
48
|
+
"appliedProfilesSha256": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
49
|
+
"addedProfileIds": [],
|
|
50
|
+
"updatedProfiles": [{
|
|
51
|
+
"profileId": "node-quality",
|
|
52
|
+
"addedPaths": ["package.json"],
|
|
53
|
+
"addedCommandIds": ["npm-test"],
|
|
54
|
+
"updatedCommandIds": []
|
|
55
|
+
}],
|
|
56
|
+
"receiptPath": ".owlcoda/runkit/profile-reconcile-receipts/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.json",
|
|
57
|
+
"issueCodes": [],
|
|
58
|
+
"authorizationGranted": false
|
|
59
|
+
}]
|
|
60
|
+
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"properties": {
|
|
9
9
|
"schemaVersion": { "const": "OwlCodaRunKitTeamProjectEventV1" },
|
|
10
10
|
"eventId": { "$ref": "#/$defs/id" },
|
|
11
|
-
"type": { "enum": ["agent_assigned", "checkpoint_recorded", "handoff_recorded", "decision_opened", "decision_resolved", "integration_gate_passed", "data_candidate_recorded"] },
|
|
11
|
+
"type": { "enum": ["agent_assigned", "checkpoint_recorded", "handoff_recorded", "decision_opened", "decision_resolved", "integration_gate_passed", "verification_deferred", "verification_closed", "data_candidate_recorded"] },
|
|
12
12
|
"occurredAt": { "type": "string", "minLength": 24 },
|
|
13
13
|
"assignmentId": { "$ref": "#/$defs/id" },
|
|
14
14
|
"supersedesAssignmentId": { "$ref": "#/$defs/id" },
|
|
@@ -35,6 +35,12 @@
|
|
|
35
35
|
"resolution": { "type": "string", "minLength": 1 },
|
|
36
36
|
"rationale": { "type": "string", "minLength": 1 },
|
|
37
37
|
"gateId": { "$ref": "#/$defs/id" },
|
|
38
|
+
"verificationId": { "$ref": "#/$defs/id" },
|
|
39
|
+
"checkIds": { "$ref": "#/$defs/ids" },
|
|
40
|
+
"reason": { "type": "string", "minLength": 1 },
|
|
41
|
+
"dueGateId": { "$ref": "#/$defs/id" },
|
|
42
|
+
"disposition": { "enum": ["verified", "no_longer_required"] },
|
|
43
|
+
"decisionIds": { "$ref": "#/$defs/ids" },
|
|
38
44
|
"candidateId": { "$ref": "#/$defs/id" },
|
|
39
45
|
"sourceRef": { "type": "string", "minLength": 1 },
|
|
40
46
|
"rights": { "type": "string", "minLength": 1 },
|
|
@@ -76,6 +82,14 @@
|
|
|
76
82
|
"if": { "properties": { "type": { "const": "integration_gate_passed" } }, "required": ["type"] },
|
|
77
83
|
"then": { "required": ["gateId", "summary", "evidenceRefs"] }
|
|
78
84
|
},
|
|
85
|
+
{
|
|
86
|
+
"if": { "properties": { "type": { "const": "verification_deferred" } }, "required": ["type"] },
|
|
87
|
+
"then": { "required": ["verificationId", "workItemId", "ownerAgentId", "checkIds", "reason", "dueGateId"] }
|
|
88
|
+
},
|
|
89
|
+
{
|
|
90
|
+
"if": { "properties": { "type": { "const": "verification_closed" } }, "required": ["type"] },
|
|
91
|
+
"then": { "required": ["verificationId", "disposition", "summary", "evidenceRefs", "decisionIds"] }
|
|
92
|
+
},
|
|
79
93
|
{
|
|
80
94
|
"if": { "properties": { "type": { "const": "data_candidate_recorded" } }, "required": ["type"] },
|
|
81
95
|
"then": { "required": ["candidateId", "sourceRef", "rights", "inputRef", "outputRef", "decisionRef", "verificationRefs", "outcomeRef", "version"] }
|
|
@@ -83,6 +97,7 @@
|
|
|
83
97
|
],
|
|
84
98
|
"$defs": {
|
|
85
99
|
"id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
|
|
100
|
+
"ids": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/id" } },
|
|
86
101
|
"strings": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }
|
|
87
102
|
},
|
|
88
103
|
"examples": [{
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"title": "OwlCoda RunKit Team Project Status V1",
|
|
5
5
|
"type": "object",
|
|
6
6
|
"additionalProperties": false,
|
|
7
|
-
"required": ["schemaVersion", "status", "projectId", "objective", "overall", "counts", "milestones", "workstreams", "workItems", "agents", "readyQueue", "criticalWorkItems", "openDecisions", "resolvedDecisions", "integrationGates", "dataCandidates", "projectTruthHash", "authorizationGranted", "exitCode"],
|
|
7
|
+
"required": ["schemaVersion", "status", "projectId", "objective", "overall", "counts", "milestones", "workstreams", "workItems", "agents", "readyQueue", "criticalWorkItems", "openDecisions", "resolvedDecisions", "deferredVerifications", "openDeferredVerificationIds", "integrationGates", "dataCandidates", "projectTruthHash", "authorizationGranted", "headline", "dominantGap", "nextAction", "nextActorId", "exitCode"],
|
|
8
8
|
"properties": {
|
|
9
9
|
"schemaVersion": { "const": "OwlCodaRunKitTeamProjectStatusV1" },
|
|
10
10
|
"status": { "const": "team_project_status" },
|
|
@@ -20,10 +20,29 @@
|
|
|
20
20
|
"criticalWorkItems": { "type": "array", "items": { "type": "string" } },
|
|
21
21
|
"openDecisions": { "type": "array", "items": { "type": "object" } },
|
|
22
22
|
"resolvedDecisions": { "type": "array", "items": { "type": "object" } },
|
|
23
|
+
"deferredVerifications": { "type": "array", "items": { "type": "object" } },
|
|
24
|
+
"openDeferredVerificationIds": { "type": "array", "items": { "type": "string" } },
|
|
23
25
|
"integrationGates": { "type": "array", "items": { "type": "object" } },
|
|
24
26
|
"dataCandidates": { "type": "array", "items": { "type": "object" } },
|
|
25
27
|
"projectTruthHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
26
28
|
"authorizationGranted": { "const": false },
|
|
29
|
+
"headline": { "type": "string", "minLength": 1 },
|
|
30
|
+
"dominantGap": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"additionalProperties": false,
|
|
33
|
+
"required": ["kind", "id", "title", "workItemId", "agentId", "reason", "truthRefs"],
|
|
34
|
+
"properties": {
|
|
35
|
+
"kind": { "enum": ["decision", "failed_work", "work_item", "deferred_verification", "integration_gate", "none"] },
|
|
36
|
+
"id": { "type": ["string", "null"] },
|
|
37
|
+
"title": { "type": ["string", "null"] },
|
|
38
|
+
"workItemId": { "type": ["string", "null"] },
|
|
39
|
+
"agentId": { "type": ["string", "null"] },
|
|
40
|
+
"reason": { "type": ["string", "null"] },
|
|
41
|
+
"truthRefs": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } }
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"nextAction": { "type": ["string", "null"] },
|
|
45
|
+
"nextActorId": { "type": ["string", "null"] },
|
|
27
46
|
"exitCode": { "const": 0 }
|
|
28
47
|
},
|
|
29
48
|
"examples": [{
|
|
@@ -41,10 +60,24 @@
|
|
|
41
60
|
"criticalWorkItems": [],
|
|
42
61
|
"openDecisions": [],
|
|
43
62
|
"resolvedDecisions": [],
|
|
63
|
+
"deferredVerifications": [],
|
|
64
|
+
"openDeferredVerificationIds": [],
|
|
44
65
|
"integrationGates": [],
|
|
45
66
|
"dataCandidates": [],
|
|
46
67
|
"projectTruthHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
47
68
|
"authorizationGranted": false,
|
|
69
|
+
"headline": "Dominant gap: none; owner: unassigned; blocker: none; next: none.",
|
|
70
|
+
"dominantGap": {
|
|
71
|
+
"kind": "none",
|
|
72
|
+
"id": null,
|
|
73
|
+
"title": null,
|
|
74
|
+
"workItemId": null,
|
|
75
|
+
"agentId": null,
|
|
76
|
+
"reason": null,
|
|
77
|
+
"truthRefs": ["project/definition.json"]
|
|
78
|
+
},
|
|
79
|
+
"nextAction": null,
|
|
80
|
+
"nextActorId": null,
|
|
48
81
|
"exitCode": 0
|
|
49
82
|
}]
|
|
50
83
|
}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/team-project-successor-receipt-v1.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Team Project Successor Receipt V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion",
|
|
9
|
+
"status",
|
|
10
|
+
"transitionId",
|
|
11
|
+
"phase",
|
|
12
|
+
"occurredAt",
|
|
13
|
+
"reason",
|
|
14
|
+
"requestSha256",
|
|
15
|
+
"receiptPath",
|
|
16
|
+
"from",
|
|
17
|
+
"to",
|
|
18
|
+
"archive",
|
|
19
|
+
"repositoryActions",
|
|
20
|
+
"authorizationGranted",
|
|
21
|
+
"receiptSha256"
|
|
22
|
+
],
|
|
23
|
+
"properties": {
|
|
24
|
+
"schemaVersion": { "const": "OwlCodaRunKitTeamProjectSuccessorReceiptV1" },
|
|
25
|
+
"status": { "const": "team_project_successor" },
|
|
26
|
+
"transitionId": { "$ref": "#/$defs/id" },
|
|
27
|
+
"phase": { "enum": ["prepared", "archived", "active_installed", "completed"] },
|
|
28
|
+
"occurredAt": { "type": "string", "format": "date-time" },
|
|
29
|
+
"reason": { "type": "string", "minLength": 1 },
|
|
30
|
+
"requestSha256": { "$ref": "#/$defs/hash" },
|
|
31
|
+
"receiptPath": { "type": "string", "minLength": 1 },
|
|
32
|
+
"from": { "$ref": "#/$defs/projectFrom" },
|
|
33
|
+
"to": { "$ref": "#/$defs/projectTo" },
|
|
34
|
+
"archive": { "$ref": "#/$defs/archive" },
|
|
35
|
+
"repositoryActions": { "$ref": "#/$defs/actions" },
|
|
36
|
+
"authorizationGranted": { "const": false },
|
|
37
|
+
"receiptSha256": { "$ref": "#/$defs/hash" }
|
|
38
|
+
},
|
|
39
|
+
"$defs": {
|
|
40
|
+
"id": {
|
|
41
|
+
"type": "string",
|
|
42
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
|
|
43
|
+
},
|
|
44
|
+
"hash": {
|
|
45
|
+
"type": "string",
|
|
46
|
+
"pattern": "^[a-f0-9]{64}$"
|
|
47
|
+
},
|
|
48
|
+
"definition": {
|
|
49
|
+
"type": "object"
|
|
50
|
+
},
|
|
51
|
+
"projectFrom": {
|
|
52
|
+
"type": "object",
|
|
53
|
+
"additionalProperties": false,
|
|
54
|
+
"required": [
|
|
55
|
+
"projectId",
|
|
56
|
+
"definition",
|
|
57
|
+
"definitionRawSha256",
|
|
58
|
+
"definitionCanonicalSha256",
|
|
59
|
+
"projectTruthHash",
|
|
60
|
+
"eventCount"
|
|
61
|
+
],
|
|
62
|
+
"properties": {
|
|
63
|
+
"projectId": { "$ref": "#/$defs/id" },
|
|
64
|
+
"definition": { "$ref": "#/$defs/definition" },
|
|
65
|
+
"definitionRawSha256": { "$ref": "#/$defs/hash" },
|
|
66
|
+
"definitionCanonicalSha256": { "$ref": "#/$defs/hash" },
|
|
67
|
+
"projectTruthHash": { "$ref": "#/$defs/hash" },
|
|
68
|
+
"eventCount": { "type": "integer", "minimum": 0 }
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"projectTo": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"additionalProperties": false,
|
|
74
|
+
"required": [
|
|
75
|
+
"projectId",
|
|
76
|
+
"definitionSourcePath",
|
|
77
|
+
"definitionSourceSha256",
|
|
78
|
+
"definition",
|
|
79
|
+
"definitionRawSha256",
|
|
80
|
+
"definitionCanonicalSha256",
|
|
81
|
+
"projectTruthHash",
|
|
82
|
+
"eventCount"
|
|
83
|
+
],
|
|
84
|
+
"properties": {
|
|
85
|
+
"projectId": { "$ref": "#/$defs/id" },
|
|
86
|
+
"definitionSourcePath": { "type": "string", "minLength": 1 },
|
|
87
|
+
"definitionSourceSha256": { "$ref": "#/$defs/hash" },
|
|
88
|
+
"definition": { "$ref": "#/$defs/definition" },
|
|
89
|
+
"definitionRawSha256": { "$ref": "#/$defs/hash" },
|
|
90
|
+
"definitionCanonicalSha256": { "$ref": "#/$defs/hash" },
|
|
91
|
+
"projectTruthHash": { "$ref": "#/$defs/hash" },
|
|
92
|
+
"eventCount": { "const": 0 }
|
|
93
|
+
}
|
|
94
|
+
},
|
|
95
|
+
"archiveFile": {
|
|
96
|
+
"type": "object",
|
|
97
|
+
"additionalProperties": false,
|
|
98
|
+
"required": ["path", "byteLength", "sha256"],
|
|
99
|
+
"properties": {
|
|
100
|
+
"path": { "type": "string", "minLength": 1 },
|
|
101
|
+
"byteLength": { "type": "integer", "minimum": 0 },
|
|
102
|
+
"sha256": { "$ref": "#/$defs/hash" }
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
"archive": {
|
|
106
|
+
"type": "object",
|
|
107
|
+
"additionalProperties": false,
|
|
108
|
+
"required": ["path", "manifestAlgorithm", "manifestSha256", "directories", "files", "sealPolicy"],
|
|
109
|
+
"properties": {
|
|
110
|
+
"path": { "type": "string", "minLength": 1 },
|
|
111
|
+
"manifestAlgorithm": { "const": "sha256-canonical-json-v1" },
|
|
112
|
+
"manifestSha256": { "$ref": "#/$defs/hash" },
|
|
113
|
+
"directories": {
|
|
114
|
+
"type": "array",
|
|
115
|
+
"uniqueItems": true,
|
|
116
|
+
"items": { "type": "string", "minLength": 1 }
|
|
117
|
+
},
|
|
118
|
+
"files": {
|
|
119
|
+
"type": "array",
|
|
120
|
+
"minItems": 1,
|
|
121
|
+
"items": { "$ref": "#/$defs/archiveFile" }
|
|
122
|
+
},
|
|
123
|
+
"sealPolicy": { "$ref": "#/$defs/sealPolicy" }
|
|
124
|
+
}
|
|
125
|
+
},
|
|
126
|
+
"sealPolicy": {
|
|
127
|
+
"type": "object",
|
|
128
|
+
"additionalProperties": false,
|
|
129
|
+
"required": ["policy", "regularFileMode", "directoryMode"],
|
|
130
|
+
"properties": {
|
|
131
|
+
"policy": { "const": "posix-owner-write-denied-v1" },
|
|
132
|
+
"regularFileMode": { "const": "0444" },
|
|
133
|
+
"directoryMode": { "const": "0555" }
|
|
134
|
+
}
|
|
135
|
+
},
|
|
136
|
+
"actions": {
|
|
137
|
+
"type": "object",
|
|
138
|
+
"additionalProperties": false,
|
|
139
|
+
"required": ["staged", "committed", "pushed", "tagged", "published", "deployed"],
|
|
140
|
+
"properties": {
|
|
141
|
+
"staged": { "const": false },
|
|
142
|
+
"committed": { "const": false },
|
|
143
|
+
"pushed": { "const": false },
|
|
144
|
+
"tagged": { "const": false },
|
|
145
|
+
"published": { "const": false },
|
|
146
|
+
"deployed": { "const": false }
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
"examples": [{
|
|
151
|
+
"schemaVersion": "OwlCodaRunKitTeamProjectSuccessorReceiptV1",
|
|
152
|
+
"status": "team_project_successor",
|
|
153
|
+
"transitionId": "transition-001",
|
|
154
|
+
"phase": "completed",
|
|
155
|
+
"occurredAt": "2026-08-09T08:00:00.000Z",
|
|
156
|
+
"reason": "Begin the next bounded project.",
|
|
157
|
+
"requestSha256": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
158
|
+
"receiptPath": ".owlcoda/runkit/project-successor-transitions/transition-001.json",
|
|
159
|
+
"from": {
|
|
160
|
+
"projectId": "project-old",
|
|
161
|
+
"definition": {},
|
|
162
|
+
"definitionRawSha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
163
|
+
"definitionCanonicalSha256": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
|
164
|
+
"projectTruthHash": "dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
165
|
+
"eventCount": 3
|
|
166
|
+
},
|
|
167
|
+
"to": {
|
|
168
|
+
"projectId": "project-new",
|
|
169
|
+
"definitionSourcePath": "/workspace/next-project.json",
|
|
170
|
+
"definitionSourceSha256": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
|
|
171
|
+
"definition": {},
|
|
172
|
+
"definitionRawSha256": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
173
|
+
"definitionCanonicalSha256": "1111111111111111111111111111111111111111111111111111111111111111",
|
|
174
|
+
"projectTruthHash": "2222222222222222222222222222222222222222222222222222222222222222",
|
|
175
|
+
"eventCount": 0
|
|
176
|
+
},
|
|
177
|
+
"archive": {
|
|
178
|
+
"path": ".owlcoda/runkit/project-archives/project-old-dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd-4444444444444444444444444444444444444444444444444444444444444444",
|
|
179
|
+
"manifestAlgorithm": "sha256-canonical-json-v1",
|
|
180
|
+
"manifestSha256": "4444444444444444444444444444444444444444444444444444444444444444",
|
|
181
|
+
"directories": ["events"],
|
|
182
|
+
"files": [{
|
|
183
|
+
"path": "definition.json",
|
|
184
|
+
"byteLength": 512,
|
|
185
|
+
"sha256": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
|
186
|
+
}],
|
|
187
|
+
"sealPolicy": {
|
|
188
|
+
"policy": "posix-owner-write-denied-v1",
|
|
189
|
+
"regularFileMode": "0444",
|
|
190
|
+
"directoryMode": "0555"
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
"repositoryActions": {
|
|
194
|
+
"staged": false,
|
|
195
|
+
"committed": false,
|
|
196
|
+
"pushed": false,
|
|
197
|
+
"tagged": false,
|
|
198
|
+
"published": false,
|
|
199
|
+
"deployed": false
|
|
200
|
+
},
|
|
201
|
+
"authorizationGranted": false,
|
|
202
|
+
"receiptSha256": "5555555555555555555555555555555555555555555555555555555555555555"
|
|
203
|
+
}]
|
|
204
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.dev/schemas/runkit/usage-mode-recommendation-v1.json",
|
|
4
|
+
"title": "OwlCoda RunKit Usage Mode Recommendation V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion",
|
|
9
|
+
"status",
|
|
10
|
+
"requestedMode",
|
|
11
|
+
"recommendedMode",
|
|
12
|
+
"continuity",
|
|
13
|
+
"assurance",
|
|
14
|
+
"triggerReasons",
|
|
15
|
+
"rejectedLighterModes",
|
|
16
|
+
"estimatedOverhead",
|
|
17
|
+
"nextCommand",
|
|
18
|
+
"downgrade",
|
|
19
|
+
"authorityBoundary",
|
|
20
|
+
"authorizationGranted"
|
|
21
|
+
],
|
|
22
|
+
"properties": {
|
|
23
|
+
"schemaVersion": { "const": "OwlCodaRunKitUsageModeRecommendationV1" },
|
|
24
|
+
"status": { "enum": ["mode_recommended", "mode_status"] },
|
|
25
|
+
"requestedMode": { "enum": ["auto", "off", "light", "managed", "formal"] },
|
|
26
|
+
"recommendedMode": { "enum": ["off", "light", "managed", "formal"] },
|
|
27
|
+
"continuity": { "enum": ["none", "project_driver"] },
|
|
28
|
+
"assurance": { "enum": ["none", "quick", "formal"] },
|
|
29
|
+
"triggerReasons": {
|
|
30
|
+
"type": "array",
|
|
31
|
+
"minItems": 1,
|
|
32
|
+
"uniqueItems": true,
|
|
33
|
+
"items": { "type": "string", "minLength": 1 }
|
|
34
|
+
},
|
|
35
|
+
"rejectedLighterModes": {
|
|
36
|
+
"type": "array",
|
|
37
|
+
"items": {
|
|
38
|
+
"type": "object",
|
|
39
|
+
"additionalProperties": false,
|
|
40
|
+
"required": ["mode", "reasonCodes"],
|
|
41
|
+
"properties": {
|
|
42
|
+
"mode": { "enum": ["off", "light", "managed"] },
|
|
43
|
+
"reasonCodes": {
|
|
44
|
+
"type": "array",
|
|
45
|
+
"minItems": 1,
|
|
46
|
+
"uniqueItems": true,
|
|
47
|
+
"items": { "type": "string", "minLength": 1 }
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
"estimatedOverhead": {
|
|
53
|
+
"type": "object",
|
|
54
|
+
"additionalProperties": false,
|
|
55
|
+
"required": ["additionalSteps", "evidenceArtifacts"],
|
|
56
|
+
"properties": {
|
|
57
|
+
"additionalSteps": { "type": "integer", "minimum": 0 },
|
|
58
|
+
"evidenceArtifacts": { "type": "integer", "minimum": 0 }
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"nextCommand": {
|
|
62
|
+
"oneOf": [
|
|
63
|
+
{ "type": "null" },
|
|
64
|
+
{ "type": "string", "minLength": 1 }
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
"downgrade": {
|
|
68
|
+
"type": "object",
|
|
69
|
+
"additionalProperties": false,
|
|
70
|
+
"required": ["allowed", "reasonCodes"],
|
|
71
|
+
"properties": {
|
|
72
|
+
"allowed": { "type": "boolean" },
|
|
73
|
+
"reasonCodes": {
|
|
74
|
+
"type": "array",
|
|
75
|
+
"uniqueItems": true,
|
|
76
|
+
"items": { "type": "string", "minLength": 1 }
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"authorityBoundary": {
|
|
81
|
+
"type": "object",
|
|
82
|
+
"additionalProperties": false,
|
|
83
|
+
"required": ["authorizationGranted", "git", "release", "deployment", "production", "business"],
|
|
84
|
+
"properties": {
|
|
85
|
+
"authorizationGranted": { "const": false },
|
|
86
|
+
"git": { "const": false },
|
|
87
|
+
"release": { "const": false },
|
|
88
|
+
"deployment": { "const": false },
|
|
89
|
+
"production": { "const": false },
|
|
90
|
+
"business": { "const": false }
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"authorizationGranted": { "const": false },
|
|
94
|
+
"preferenceSource": { "const": "default_auto" },
|
|
95
|
+
"persistedPreference": { "type": "null" }
|
|
96
|
+
},
|
|
97
|
+
"examples": [
|
|
98
|
+
{
|
|
99
|
+
"schemaVersion": "OwlCodaRunKitUsageModeRecommendationV1",
|
|
100
|
+
"status": "mode_recommended",
|
|
101
|
+
"requestedMode": "auto",
|
|
102
|
+
"recommendedMode": "managed",
|
|
103
|
+
"continuity": "project_driver",
|
|
104
|
+
"assurance": "quick",
|
|
105
|
+
"triggerReasons": ["cross_session_continuity", "single_bounded_verification"],
|
|
106
|
+
"rejectedLighterModes": [
|
|
107
|
+
{
|
|
108
|
+
"mode": "off",
|
|
109
|
+
"reasonCodes": ["cross_session_continuity", "single_bounded_verification"]
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"mode": "light",
|
|
113
|
+
"reasonCodes": ["cross_session_continuity", "single_bounded_verification"]
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
"estimatedOverhead": {
|
|
117
|
+
"additionalSteps": 3,
|
|
118
|
+
"evidenceArtifacts": 2
|
|
119
|
+
},
|
|
120
|
+
"nextCommand": "owlrunkit project status --workspace '.'",
|
|
121
|
+
"downgrade": {
|
|
122
|
+
"allowed": true,
|
|
123
|
+
"reasonCodes": []
|
|
124
|
+
},
|
|
125
|
+
"authorityBoundary": {
|
|
126
|
+
"authorizationGranted": false,
|
|
127
|
+
"git": false,
|
|
128
|
+
"release": false,
|
|
129
|
+
"deployment": false,
|
|
130
|
+
"production": false,
|
|
131
|
+
"business": false
|
|
132
|
+
},
|
|
133
|
+
"authorizationGranted": false
|
|
134
|
+
}
|
|
135
|
+
]
|
|
136
|
+
}
|