owlrunkit 0.13.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 (128) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE +674 -0
  3. package/NOTICE.md +137 -0
  4. package/README.md +44 -0
  5. package/SOURCE.md +10 -0
  6. package/docs/architecture/OWLCODA_RUN_KIT_CONTRACT_V0_1.md +160 -0
  7. package/docs/architecture/OWLCODA_RUN_KIT_CONTRACT_V0_2.md +459 -0
  8. package/integrations/codex/skills/owlcoda-runkit/SKILL.md +408 -0
  9. package/integrations/codex/skills/owlcoda-runkit/agents/openai.yaml +4 -0
  10. package/integrations/codex/skills/owlcoda-runkit/assets/templates/agents-snippet.md +7 -0
  11. package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +10 -0
  12. package/integrations/codex/skills/owlcoda-runkit/assets/templates/coverage-adopt-request.json +26 -0
  13. package/integrations/codex/skills/owlcoda-runkit/assets/templates/execution-delivery-packet.json +13 -0
  14. package/integrations/codex/skills/owlcoda-runkit/assets/templates/finalize-request.json +18 -0
  15. package/integrations/codex/skills/owlcoda-runkit/assets/templates/goal-contract.json +11 -0
  16. package/integrations/codex/skills/owlcoda-runkit/assets/templates/profiles.json +9 -0
  17. package/integrations/codex/skills/owlcoda-runkit/assets/templates/ready-for-commit-request.json +11 -0
  18. package/integrations/codex/skills/owlcoda-runkit/assets/templates/resource-preflight-request.json +56 -0
  19. package/integrations/codex/skills/owlcoda-runkit/assets/templates/resume-request.json +10 -0
  20. package/integrations/codex/skills/owlcoda-runkit/assets/templates/snapshot-request.json +23 -0
  21. package/integrations/codex/skills/owlcoda-runkit/assets/templates/verification-context.json +15 -0
  22. package/integrations/codex/skills/owlcoda-runkit/assets/templates/verification-receipt.json +11 -0
  23. package/integrations/codex/skills/owlcoda-runkit/assets/templates/verify-plan-request.json +31 -0
  24. package/integrations/codex/skills/owlcoda-runkit/assets/templates/visual-smoke-request.json +32 -0
  25. package/integrations/codex/skills/owlcoda-runkit/assets/templates/worker-lease.json +7 -0
  26. package/package.json +24 -0
  27. package/packages/attest/LICENSE +674 -0
  28. package/packages/attest/README.md +63 -0
  29. package/packages/attest/cli/owlcoda-attest.mjs +155 -0
  30. package/packages/attest/consumer-surface-v1.json +255 -0
  31. package/packages/attest/distribution-manifest-v1.json +104 -0
  32. package/packages/attest/fixtures/bad/accepted-authority-leak.json +7 -0
  33. package/packages/attest/fixtures/bad/accepted-failed-receipt.json +7 -0
  34. package/packages/attest/fixtures/bad/active-context-binding-mismatch.json +7 -0
  35. package/packages/attest/fixtures/bad/active-source-binding-mismatch.json +7 -0
  36. package/packages/attest/fixtures/bad/context-fingerprint-mismatch.json +7 -0
  37. package/packages/attest/fixtures/bad/duplicate-object-key.json +8 -0
  38. package/packages/attest/fixtures/bad/multiple-active-leaves.json +10 -0
  39. package/packages/attest/fixtures/bad/orphan-replacement.json +7 -0
  40. package/packages/attest/fixtures/bad/root-shape-extra-property.json +8 -0
  41. package/packages/attest/fixtures/bad/source-fingerprint-mismatch.json +7 -0
  42. package/packages/attest/fixtures/good/accepted-replacement-chain.json +59 -0
  43. package/packages/attest/fixtures/good/blocked-single-leaf.json +9 -0
  44. package/packages/attest/fixtures/index.json +90 -0
  45. package/packages/attest/sbom.spdx.json +33 -0
  46. package/packages/attest/schemas/attestation-ref-v1.schema.json +44 -0
  47. package/packages/attest/schemas/attestation-result-v1.schema.json +163 -0
  48. package/packages/attest/schemas/offline-attestation-bundle-v1.schema.json +30 -0
  49. package/packages/attest/schemas/public-verification-bundle-v1.schema.json +74 -0
  50. package/packages/attest/schemas/quick-verification-receipt-v1.schema.json +219 -0
  51. package/packages/attest/schemas/workspace-snapshot-v1.schema.json +135 -0
  52. package/packages/attest/src/canonical.mjs +12 -0
  53. package/packages/attest/src/formal.mjs +762 -0
  54. package/packages/attest/src/index.mjs +113 -0
  55. package/packages/attest/src/offline-bundle.mjs +108 -0
  56. package/packages/attest/src/quick-receipt-contract.mjs +156 -0
  57. package/packages/attest/src/quick.mjs +274 -0
  58. package/packages/attest/src/reference-contract.mjs +64 -0
  59. package/packages/attest/src/reference.mjs +131 -0
  60. package/packages/attest/src/workspace-snapshot.mjs +171 -0
  61. package/registry-release-policy-v1.json +34 -0
  62. package/sbom.spdx.json +39 -0
  63. package/scripts/runkit-contract/acceptance-evidence.mjs +103 -0
  64. package/scripts/runkit-contract/core-contract.mjs +392 -0
  65. package/scripts/runkit-contract/coverage-adoption.mjs +414 -0
  66. package/scripts/runkit-contract/delivery-create.mjs +252 -0
  67. package/scripts/runkit-contract/delivery-selection.mjs +31 -0
  68. package/scripts/runkit-contract/finalize.mjs +790 -0
  69. package/scripts/runkit-contract/inspect-presentation.mjs +183 -0
  70. package/scripts/runkit-contract/install-codex-skill.mjs +239 -0
  71. package/scripts/runkit-contract/lease-lifecycle.mjs +324 -0
  72. package/scripts/runkit-contract/lifecycle-orchestration.mjs +415 -0
  73. package/scripts/runkit-contract/offline-store.mjs +248 -0
  74. package/scripts/runkit-contract/profile-impact.mjs +223 -0
  75. package/scripts/runkit-contract/provenance-common.mjs +153 -0
  76. package/scripts/runkit-contract/quick-attest.mjs +4 -0
  77. package/scripts/runkit-contract/quick-canonical.mjs +41 -0
  78. package/scripts/runkit-contract/quick-metrics.mjs +86 -0
  79. package/scripts/runkit-contract/quick-receipt.mjs +139 -0
  80. package/scripts/runkit-contract/quick-verify.mjs +201 -0
  81. package/scripts/runkit-contract/quick-workspace-snapshot.mjs +3 -0
  82. package/scripts/runkit-contract/ready-for-commit.mjs +188 -0
  83. package/scripts/runkit-contract/receipt-lineage.mjs +332 -0
  84. package/scripts/runkit-contract/registry-adoption-gate.mjs +117 -0
  85. package/scripts/runkit-contract/repair-execution.mjs +997 -0
  86. package/scripts/runkit-contract/resource-preflight.mjs +829 -0
  87. package/scripts/runkit-contract/resume-execution.mjs +569 -0
  88. package/scripts/runkit-contract/runkit-cli.mjs +1214 -0
  89. package/scripts/runkit-contract/schemas/closeout-receipt-v2.schema.json +42 -0
  90. package/scripts/runkit-contract/schemas/core-artifact-v2.schema.json +23 -0
  91. package/scripts/runkit-contract/schemas/core-artifact.schema.json +23 -0
  92. package/scripts/runkit-contract/schemas/coverage-adopt-request-v1.schema.json +66 -0
  93. package/scripts/runkit-contract/schemas/engine-pin-v2.schema.json +14 -0
  94. package/scripts/runkit-contract/schemas/engine-pin.schema.json +14 -0
  95. package/scripts/runkit-contract/schemas/evidence-coverage-index-v1.schema.json +131 -0
  96. package/scripts/runkit-contract/schemas/finalize-request-v1.schema.json +131 -0
  97. package/scripts/runkit-contract/schemas/profiles.schema.json +47 -0
  98. package/scripts/runkit-contract/schemas/project-config-v2.schema.json +13 -0
  99. package/scripts/runkit-contract/schemas/project-config.schema.json +13 -0
  100. package/scripts/runkit-contract/schemas/ready-for-commit-v1.schema.json +26 -0
  101. package/scripts/runkit-contract/schemas/replayable-evidence-v1.schema.json +82 -0
  102. package/scripts/runkit-contract/schemas/resource-preflight-request-v1.schema.json +178 -0
  103. package/scripts/runkit-contract/schemas/resource-preflight-v1.schema.json +153 -0
  104. package/scripts/runkit-contract/schemas/resume-attempt-v1.schema.json +80 -0
  105. package/scripts/runkit-contract/schemas/resume-request-v1.schema.json +77 -0
  106. package/scripts/runkit-contract/schemas/snapshot-v1.schema.json +71 -0
  107. package/scripts/runkit-contract/schemas/verification-context-v1.schema.json +92 -0
  108. package/scripts/runkit-contract/schemas/verification-plan-v1.schema.json +150 -0
  109. package/scripts/runkit-contract/schemas/verification-receipt-v2.schema.json +118 -0
  110. package/scripts/runkit-contract/schemas/verify-plan-request-v1.schema.json +56 -0
  111. package/scripts/runkit-contract/schemas/visual-smoke-request-v1.schema.json +64 -0
  112. package/scripts/runkit-contract/schemas/visual-smoke-result-v1.schema.json +68 -0
  113. package/scripts/runkit-contract/snapshot.mjs +340 -0
  114. package/scripts/runkit-contract/source-fingerprint.mjs +404 -0
  115. package/scripts/runkit-contract/templates/coverage-adopt-request.json +26 -0
  116. package/scripts/runkit-contract/templates/finalize-request.json +18 -0
  117. package/scripts/runkit-contract/templates/goal-contract.json +11 -0
  118. package/scripts/runkit-contract/templates/ready-for-commit-request.json +11 -0
  119. package/scripts/runkit-contract/templates/resource-preflight-request.json +56 -0
  120. package/scripts/runkit-contract/templates/resume-request.json +10 -0
  121. package/scripts/runkit-contract/templates/snapshot-request.json +23 -0
  122. package/scripts/runkit-contract/templates/verify-plan-request.json +31 -0
  123. package/scripts/runkit-contract/templates/visual-smoke-request.json +32 -0
  124. package/scripts/runkit-contract/templates/worker-lease.json +7 -0
  125. package/scripts/runkit-contract/verification-context.mjs +141 -0
  126. package/scripts/runkit-contract/verification-plan.mjs +608 -0
  127. package/scripts/runkit-contract/verification-receipt-gate.mjs +566 -0
  128. package/scripts/runkit-contract/visual-smoke.mjs +410 -0
@@ -0,0 +1,150 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://owlcoda.dev/schemas/runkit/verification-plan-v1.json",
4
+ "title": "OwlCoda RunKit Verification Plan V1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion",
9
+ "runId",
10
+ "planId",
11
+ "status",
12
+ "drift",
13
+ "profileImpact",
14
+ "evidence",
15
+ "commands",
16
+ "acceptance",
17
+ "authorizationGranted",
18
+ "verificationContextFingerprint"
19
+ ],
20
+ "properties": {
21
+ "schemaVersion": { "const": "OwlCodaRunKitVerificationPlanV1" },
22
+ "runId": { "type": "string", "minLength": 1 },
23
+ "planId": { "type": "string", "minLength": 1 },
24
+ "status": {
25
+ "enum": [
26
+ "full_profile_required",
27
+ "blocked_by_global_gate",
28
+ "verification_mapping_required",
29
+ "verification_required",
30
+ "ready_to_finalize"
31
+ ]
32
+ },
33
+ "verificationContextFingerprint": { "$ref": "#/$defs/sha256" },
34
+ "drift": {
35
+ "type": "object",
36
+ "additionalProperties": false,
37
+ "required": [
38
+ "leasedSourceDrift",
39
+ "declaredDependencyDrift",
40
+ "unrelatedDirtyTreeDrift",
41
+ "globalGateFailures"
42
+ ],
43
+ "properties": {
44
+ "leasedSourceDrift": { "$ref": "#/$defs/stringArray" },
45
+ "declaredDependencyDrift": { "$ref": "#/$defs/stringArray" },
46
+ "unrelatedDirtyTreeDrift": { "$ref": "#/$defs/stringArray" },
47
+ "globalGateFailures": { "$ref": "#/$defs/stringArray" }
48
+ }
49
+ },
50
+ "profileImpact": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "required": [
54
+ "decision",
55
+ "primaryProfileId",
56
+ "directProfileIds",
57
+ "transitiveProfileIds",
58
+ "supportingProfileIds",
59
+ "selectedProfileIds",
60
+ "uncoveredPaths",
61
+ "warnings"
62
+ ],
63
+ "properties": {
64
+ "decision": { "enum": ["targeted_profiles", "full_profile_required"] },
65
+ "primaryProfileId": { "type": ["string", "null"] },
66
+ "directProfileIds": { "$ref": "#/$defs/stringArray" },
67
+ "transitiveProfileIds": { "$ref": "#/$defs/stringArray" },
68
+ "supportingProfileIds": { "$ref": "#/$defs/stringArray" },
69
+ "selectedProfileIds": { "$ref": "#/$defs/stringArray" },
70
+ "uncoveredPaths": { "$ref": "#/$defs/stringArray" },
71
+ "warnings": { "$ref": "#/$defs/stringArray" }
72
+ }
73
+ },
74
+ "evidence": {
75
+ "type": "object",
76
+ "additionalProperties": false,
77
+ "required": ["reusableReceiptIds", "invalidatedReceipts"],
78
+ "properties": {
79
+ "coverageIndexPath": { "type": "string", "minLength": 1 },
80
+ "coverageIndexSha256": { "$ref": "#/$defs/sha256" },
81
+ "reusableReceiptIds": { "$ref": "#/$defs/stringArray" },
82
+ "invalidatedReceipts": {
83
+ "type": "array",
84
+ "items": {
85
+ "type": "object",
86
+ "additionalProperties": false,
87
+ "required": ["receiptId", "reasons"],
88
+ "properties": {
89
+ "receiptId": { "type": "string", "minLength": 1 },
90
+ "reasons": { "$ref": "#/$defs/stringArray" }
91
+ }
92
+ }
93
+ }
94
+ }
95
+ },
96
+ "commands": {
97
+ "type": "object",
98
+ "additionalProperties": false,
99
+ "required": [
100
+ "requiredCommandIds",
101
+ "reusedCommandIds",
102
+ "pendingCommandIds",
103
+ "unmappedProfileIds",
104
+ "pendingCommands"
105
+ ],
106
+ "properties": {
107
+ "requiredCommandIds": { "$ref": "#/$defs/stringArray" },
108
+ "reusedCommandIds": { "$ref": "#/$defs/stringArray" },
109
+ "pendingCommandIds": { "$ref": "#/$defs/stringArray" },
110
+ "unmappedProfileIds": { "$ref": "#/$defs/stringArray" },
111
+ "pendingCommands": {
112
+ "type": "array",
113
+ "items": {
114
+ "type": "object",
115
+ "additionalProperties": false,
116
+ "required": ["id", "cwd", "executable", "argv", "profileIds"],
117
+ "properties": {
118
+ "id": { "type": "string", "minLength": 1 },
119
+ "cwd": { "type": "string", "minLength": 1 },
120
+ "executable": { "type": "string", "minLength": 1 },
121
+ "argv": {
122
+ "type": "array",
123
+ "items": { "type": "string", "minLength": 1 }
124
+ },
125
+ "profileIds": { "$ref": "#/$defs/stringArray" }
126
+ }
127
+ }
128
+ }
129
+ }
130
+ },
131
+ "acceptance": {
132
+ "type": "object",
133
+ "additionalProperties": false,
134
+ "required": ["blocked", "reasons"],
135
+ "properties": {
136
+ "blocked": { "type": "boolean" },
137
+ "reasons": { "$ref": "#/$defs/stringArray" }
138
+ }
139
+ },
140
+ "authorizationGranted": { "const": false }
141
+ },
142
+ "$defs": {
143
+ "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
144
+ "stringArray": {
145
+ "type": "array",
146
+ "items": { "type": "string", "minLength": 1 },
147
+ "uniqueItems": true
148
+ }
149
+ }
150
+ }
@@ -0,0 +1,118 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://owlcoda.dev/schemas/runkit/verification-receipt-v2.json",
4
+ "title": "OwlCoda RunKit Verification Receipt V2",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "runId", "receiptId", "status", "sourceFingerprint", "verificationContextFingerprint", "selectedProfileIds", "commandRuns", "commandReceipts"],
8
+ "properties": {
9
+ "schemaVersion": { "const": "OwlCodaRunKitVerificationReceiptV2" },
10
+ "runId": { "type": "string", "minLength": 1 },
11
+ "receiptId": { "type": "string", "minLength": 1 },
12
+ "status": { "enum": ["passed", "ready_for_verification", "shadow_validated", "invalidated_by_concurrent_write"] },
13
+ "sourceFingerprint": { "$ref": "#/$defs/sha256" },
14
+ "verificationContextFingerprint": { "$ref": "#/$defs/sha256" },
15
+ "goalContractSha256": { "$ref": "#/$defs/sha256" },
16
+ "risk": { "$ref": "#/$defs/risk" },
17
+ "selectedProfileIds": {
18
+ "type": "array",
19
+ "items": { "type": "string", "minLength": 1 },
20
+ "uniqueItems": true
21
+ },
22
+ "commandRuns": { "type": "integer", "minimum": 0 },
23
+ "supersedesReceiptSha256": { "$ref": "#/$defs/sha256" },
24
+ "commandReceipts": {
25
+ "type": "array",
26
+ "items": { "$ref": "#/$defs/commandReceipt" }
27
+ },
28
+ "repairControl": {
29
+ "$ref": "#/$defs/repairControl"
30
+ }
31
+ },
32
+ "allOf": [
33
+ {
34
+ "if": { "required": ["supersedesReceiptSha256"] },
35
+ "then": {
36
+ "required": ["repairControl", "goalContractSha256", "risk"]
37
+ }
38
+ },
39
+ {
40
+ "if": { "required": ["repairControl"] },
41
+ "then": {
42
+ "required": ["supersedesReceiptSha256", "goalContractSha256", "risk"]
43
+ }
44
+ }
45
+ ],
46
+ "$defs": {
47
+ "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
48
+ "commandReceipt": {
49
+ "type": "object",
50
+ "additionalProperties": false,
51
+ "required": ["id", "evidence", "exitCode", "stdoutSha256", "stderrSha256"],
52
+ "properties": {
53
+ "id": { "type": "string", "minLength": 1 },
54
+ "evidence": { "$ref": "replayable-evidence-v1.schema.json" },
55
+ "exitCode": { "type": "integer" },
56
+ "stdoutSha256": { "$ref": "#/$defs/sha256" },
57
+ "stderrSha256": { "$ref": "#/$defs/sha256" }
58
+ }
59
+ },
60
+ "repairControl": {
61
+ "type": "object",
62
+ "additionalProperties": false,
63
+ "required": [
64
+ "repairPlanPath",
65
+ "repairPlanSha256",
66
+ "parentBindingMode",
67
+ "goalContractSha256",
68
+ "risk",
69
+ "profilesSha256",
70
+ "executableBindings"
71
+ ],
72
+ "properties": {
73
+ "repairPlanPath": { "type": "string", "minLength": 1 },
74
+ "repairPlanSha256": { "$ref": "#/$defs/sha256" },
75
+ "parentBindingMode": { "const": "receipt" },
76
+ "goalContractSha256": { "$ref": "#/$defs/sha256" },
77
+ "risk": { "$ref": "#/$defs/risk" },
78
+ "profilesSha256": { "$ref": "#/$defs/sha256" },
79
+ "executableBindings": {
80
+ "type": "array",
81
+ "minItems": 1,
82
+ "items": { "$ref": "#/$defs/executableBinding" }
83
+ }
84
+ }
85
+ },
86
+ "risk": {
87
+ "type": "object",
88
+ "additionalProperties": false,
89
+ "required": ["riskMode", "riskCategories"],
90
+ "properties": {
91
+ "riskMode": { "enum": ["lightweight", "standard", "full"] },
92
+ "riskCategories": {
93
+ "type": "array",
94
+ "uniqueItems": true,
95
+ "items": {
96
+ "enum": [
97
+ "backtest",
98
+ "funds",
99
+ "migration",
100
+ "production",
101
+ "release"
102
+ ]
103
+ }
104
+ }
105
+ }
106
+ },
107
+ "executableBinding": {
108
+ "type": "object",
109
+ "additionalProperties": false,
110
+ "required": ["commandId", "executable", "sha256"],
111
+ "properties": {
112
+ "commandId": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
113
+ "executable": { "type": "string", "minLength": 1 },
114
+ "sha256": { "$ref": "#/$defs/sha256" }
115
+ }
116
+ }
117
+ }
118
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://owlcoda.dev/schemas/runkit/verify-plan-request-v1.json",
4
+ "title": "OwlCoda RunKit Verify Plan Request V1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion",
9
+ "planId",
10
+ "deliveryPacketPath",
11
+ "statusMode",
12
+ "dependencies",
13
+ "verificationContext",
14
+ "coverageIndexPath",
15
+ "coverageIndexSha256",
16
+ "globalGates"
17
+ ],
18
+ "properties": {
19
+ "schemaVersion": { "const": "OwlCodaRunKitVerifyPlanRequestV1" },
20
+ "planId": { "type": "string", "minLength": 1 },
21
+ "deliveryPacketPath": { "type": "string", "minLength": 1 },
22
+ "statusMode": { "const": "porcelain-v1-z-untracked-all-runkit-excluded" },
23
+ "dependencies": {
24
+ "type": "array",
25
+ "items": {
26
+ "type": "object",
27
+ "additionalProperties": false,
28
+ "required": ["id", "path", "baselineSha256"],
29
+ "properties": {
30
+ "id": { "type": "string", "minLength": 1 },
31
+ "path": { "type": "string", "minLength": 1 },
32
+ "baselineSha256": { "$ref": "#/$defs/sha256" }
33
+ }
34
+ }
35
+ },
36
+ "verificationContext": { "$ref": "verification-context-v1.schema.json" },
37
+ "coverageIndexPath": { "type": "string", "minLength": 1 },
38
+ "coverageIndexSha256": { "$ref": "#/$defs/sha256" },
39
+ "globalGates": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "object",
43
+ "additionalProperties": false,
44
+ "required": ["id", "status"],
45
+ "properties": {
46
+ "id": { "type": "string", "minLength": 1 },
47
+ "status": { "enum": ["passed", "failed"] },
48
+ "reason": { "type": "string", "minLength": 1 }
49
+ }
50
+ }
51
+ }
52
+ },
53
+ "$defs": {
54
+ "sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
55
+ }
56
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://owlcoda.dev/schemas/runkit/visual-smoke-request-v1.json",
4
+ "title": "OwlCoda RunKit Visual Smoke Request V1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "smokeId", "mode", "targetRoot", "cwd", "executable", "argv", "launcherVersion", "toolVersions", "selectedPaths", "statusMode", "verificationContext", "resultPath", "automationManifest"],
8
+ "properties": {
9
+ "schemaVersion": { "const": "OwlCodaRunKitVisualSmokeRequestV1" },
10
+ "smokeId": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
11
+ "mode": { "enum": ["project", "foreign_readonly"] },
12
+ "targetRoot": { "type": "string", "minLength": 1 },
13
+ "cwd": { "type": "string", "minLength": 1 },
14
+ "executable": { "type": "string", "minLength": 1 },
15
+ "argv": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } },
16
+ "launcherVersion": { "type": "string", "minLength": 1 },
17
+ "toolVersions": {
18
+ "type": "array",
19
+ "items": {
20
+ "type": "object",
21
+ "additionalProperties": false,
22
+ "required": ["name", "version"],
23
+ "properties": {
24
+ "name": { "type": "string", "minLength": 1 },
25
+ "version": { "type": "string", "minLength": 1 }
26
+ }
27
+ }
28
+ },
29
+ "selectedPaths": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } },
30
+ "statusMode": { "const": "porcelain-v1-z-untracked-all-runkit-excluded" },
31
+ "verificationContext": { "$ref": "verification-context-v1.schema.json" },
32
+ "resultPath": { "type": "string", "minLength": 1 },
33
+ "automationManifest": {
34
+ "type": "object",
35
+ "additionalProperties": false,
36
+ "required": ["schemaVersion", "surface", "viewport", "assertionIds", "consolePolicy", "externalNavigationPolicy"],
37
+ "properties": {
38
+ "schemaVersion": { "const": "OwlCodaRunKitVisualAutomationManifestV1" },
39
+ "surface": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
40
+ "viewport": {
41
+ "type": "object",
42
+ "additionalProperties": false,
43
+ "required": ["width", "height"],
44
+ "properties": {
45
+ "width": { "type": "integer", "minimum": 1 },
46
+ "height": { "type": "integer", "minimum": 1 }
47
+ }
48
+ },
49
+ "assertionIds": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" } },
50
+ "consolePolicy": {
51
+ "type": "object",
52
+ "additionalProperties": false,
53
+ "required": ["maxErrors", "maxWarnings", "maxExceptions"],
54
+ "properties": {
55
+ "maxErrors": { "type": "integer", "minimum": 0 },
56
+ "maxWarnings": { "type": "integer", "minimum": 0 },
57
+ "maxExceptions": { "type": "integer", "minimum": 0 }
58
+ }
59
+ },
60
+ "externalNavigationPolicy": { "const": "deny" }
61
+ }
62
+ }
63
+ }
64
+ }
@@ -0,0 +1,68 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://owlcoda.dev/schemas/runkit/visual-smoke-result-v1.json",
4
+ "title": "OwlCoda RunKit Visual Smoke Result V1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "status", "viewport", "assertions", "console", "navigations", "outputArtifacts"],
8
+ "properties": {
9
+ "schemaVersion": { "const": "OwlCodaRunKitVisualSmokeResultV1" },
10
+ "status": { "enum": ["passed", "failed"] },
11
+ "viewport": {
12
+ "type": "object",
13
+ "additionalProperties": false,
14
+ "required": ["width", "height"],
15
+ "properties": {
16
+ "width": { "type": "integer", "minimum": 1 },
17
+ "height": { "type": "integer", "minimum": 1 }
18
+ }
19
+ },
20
+ "assertions": {
21
+ "type": "array",
22
+ "items": {
23
+ "type": "object",
24
+ "additionalProperties": false,
25
+ "required": ["id", "passed"],
26
+ "properties": {
27
+ "id": { "type": "string", "minLength": 1 },
28
+ "passed": { "type": "boolean" }
29
+ }
30
+ }
31
+ },
32
+ "console": {
33
+ "type": "object",
34
+ "additionalProperties": false,
35
+ "required": ["errors", "warnings", "exceptions"],
36
+ "properties": {
37
+ "errors": { "type": "integer", "minimum": 0 },
38
+ "warnings": { "type": "integer", "minimum": 0 },
39
+ "exceptions": { "type": "integer", "minimum": 0 }
40
+ }
41
+ },
42
+ "navigations": {
43
+ "type": "array",
44
+ "items": {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "required": ["protocol", "external"],
48
+ "properties": {
49
+ "protocol": { "type": "string", "minLength": 1 },
50
+ "external": { "type": "boolean" }
51
+ }
52
+ }
53
+ },
54
+ "outputArtifacts": {
55
+ "type": "array",
56
+ "minItems": 1,
57
+ "items": {
58
+ "type": "object",
59
+ "additionalProperties": false,
60
+ "required": ["path", "mediaType"],
61
+ "properties": {
62
+ "path": { "type": "string", "minLength": 1 },
63
+ "mediaType": { "type": "string", "minLength": 1 }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ }