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.
Files changed (33) hide show
  1. package/CHANGELOG.md +64 -0
  2. package/README.md +117 -14
  3. package/docs/architecture/OWLCODA_RUNKIT_017_AGENT_NATIVE_PRODUCT_DEFINITION.md +2 -3
  4. package/docs/architecture/OWLCODA_RUNKIT_018_PROJECT_DRIVER_PRODUCT_DEFINITION.md +165 -0
  5. package/docs/architecture/OWLCODA_RUNKIT_USAGE_MODE_SELECTION_PRODUCT_DECISION_20260811.md +142 -0
  6. package/integrations/codex/skills/owlcoda-runkit/SKILL.md +127 -23
  7. package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
  8. package/package.json +2 -2
  9. package/packages/attest/distribution-manifest-v1.json +10 -0
  10. package/packages/attest/src/quick.mjs +10 -0
  11. package/registry-release-policy-v1.json +5 -5
  12. package/sbom.spdx.json +5 -5
  13. package/scripts/runkit-contract/assurance-router.mjs +28 -20
  14. package/scripts/runkit-contract/core-contract.mjs +7 -1
  15. package/scripts/runkit-contract/inspect-presentation.mjs +38 -5
  16. package/scripts/runkit-contract/install-codex-skill.mjs +60 -1
  17. package/scripts/runkit-contract/onboarding-doctor.mjs +19 -1
  18. package/scripts/runkit-contract/profile-onboarding.mjs +597 -22
  19. package/scripts/runkit-contract/project-cli-resolver.mjs +6 -0
  20. package/scripts/runkit-contract/quick-attest.mjs +1 -0
  21. package/scripts/runkit-contract/quick-metrics.mjs +43 -5
  22. package/scripts/runkit-contract/quick-verify.mjs +15 -4
  23. package/scripts/runkit-contract/runkit-cli.mjs +747 -20
  24. package/scripts/runkit-contract/schemas/profile-reconcile-plan-v1.schema.json +105 -0
  25. package/scripts/runkit-contract/schemas/profile-reconcile-receipt-v1.schema.json +60 -0
  26. package/scripts/runkit-contract/schemas/team-project-event-v1.schema.json +16 -1
  27. package/scripts/runkit-contract/schemas/team-project-status-v1.schema.json +34 -1
  28. package/scripts/runkit-contract/schemas/team-project-successor-receipt-v1.schema.json +204 -0
  29. package/scripts/runkit-contract/schemas/usage-mode-recommendation-v1.schema.json +136 -0
  30. package/scripts/runkit-contract/team-project-successor.mjs +1176 -0
  31. package/scripts/runkit-contract/team-project.mjs +1082 -43
  32. package/scripts/runkit-contract/templates/assurance-request.json +6 -0
  33. 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
+ }