owlrunkit 0.19.1 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +52 -0
- package/README.md +107 -3
- package/docs/architecture/OWLCODA_RUNKIT_0191_PROFILE_RECONCILE_PATCH_PRODUCT_DECISION_20260813.md +11 -5
- package/docs/architecture/OWLCODA_RUNKIT_0192_FORMAL_USABILITY_PRODUCT_DECISION_20260813.md +141 -0
- package/docs/architecture/OWLCODA_RUNKIT_020_TEAM_DELIVERY_PHASE1_PRODUCT_DECISION_20260813.md +296 -0
- package/integrations/codex/skills/owlcoda-runkit/SKILL.md +74 -9
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
- package/package.json +1 -1
- package/packages/attest/distribution-manifest-v1.json +10 -0
- package/packages/attest/src/quick.mjs +42 -4
- package/registry-release-policy-v1.json +5 -5
- package/sbom.spdx.json +5 -5
- package/scripts/runkit-contract/core-contract.mjs +42 -2
- package/scripts/runkit-contract/efficiency-metrics.mjs +9 -7
- package/scripts/runkit-contract/formal-preflight.mjs +352 -0
- package/scripts/runkit-contract/formal-supplemental-evidence.mjs +713 -0
- package/scripts/runkit-contract/formal-workflow.mjs +529 -59
- package/scripts/runkit-contract/onboarding-doctor.mjs +32 -13
- package/scripts/runkit-contract/project-cli-resolver.mjs +33 -3
- package/scripts/runkit-contract/project-external-delivery.mjs +16 -9
- package/scripts/runkit-contract/quick-attest.mjs +24 -0
- package/scripts/runkit-contract/runkit-cli.mjs +445 -52
- package/scripts/runkit-contract/schemas/candidate-transfer-packet-v1.schema.json +98 -0
- package/scripts/runkit-contract/schemas/formal-check-v2.schema.json +231 -0
- package/scripts/runkit-contract/schemas/formal-envelope-preflight-v1.schema.json +212 -0
- package/scripts/runkit-contract/schemas/formal-evidence-summary-v1.schema.json +114 -0
- package/scripts/runkit-contract/schemas/formal-supplemental-evidence-v1.schema.json +103 -0
- package/scripts/runkit-contract/schemas/team-acceptance-packet-v2.schema.json +109 -0
- package/scripts/runkit-contract/schemas/team-delivery-status-v1.schema.json +72 -0
- package/scripts/runkit-contract/schemas/team-packet-validation-v1.schema.json +33 -0
- package/scripts/runkit-contract/schemas/team-project-event-v5.schema.json +89 -0
- package/scripts/runkit-contract/schemas/team-project-status-v3.schema.json +173 -0
- package/scripts/runkit-contract/schemas/team-recommendation-v1.schema.json +121 -0
- package/scripts/runkit-contract/schemas/team-task-packet-v2.schema.json +228 -0
- package/scripts/runkit-contract/snapshot.mjs +125 -5
- package/scripts/runkit-contract/source-candidate.mjs +271 -69
- package/scripts/runkit-contract/sync-release-identity.mjs +39 -4
- package/scripts/runkit-contract/team-delivery.mjs +906 -0
- package/scripts/runkit-contract/team-project-successor.mjs +7 -4
- package/scripts/runkit-contract/team-project.mjs +440 -28
- package/scripts/runkit-contract/usage-mode.mjs +9 -3
- package/scripts/runkit-contract/verification-envelope.mjs +425 -37
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.dev/schemas/runkit/formal-evidence-summary-v1.json",
|
|
4
|
+
"title": "OwlCoda RunKit Formal Evidence Summary V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "runId", "summaryId", "sourceBinding", "formalChecks", "supplementalEvidence", "staleFormalCheckCount", "staleSupplementalEvidenceCount", "formalAcceptanceDerivedOnlyFromFormalChecks", "limitations", "authorizationGranted", "evidenceSummarySha256"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": "OwlCodaRunKitFormalEvidenceSummaryV1" },
|
|
10
|
+
"runId": { "$ref": "#/$defs/id" },
|
|
11
|
+
"summaryId": { "$ref": "#/$defs/id" },
|
|
12
|
+
"sourceBinding": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"additionalProperties": false,
|
|
15
|
+
"required": ["candidatePath", "candidateSha256", "sourceFingerprint"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"candidatePath": { "type": "string", "minLength": 1 },
|
|
18
|
+
"candidateSha256": { "$ref": "#/$defs/prefixedHash" },
|
|
19
|
+
"sourceFingerprint": { "$ref": "#/$defs/hash" }
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"formalChecks": {
|
|
23
|
+
"type": "array",
|
|
24
|
+
"items": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"required": ["checkId", "status", "failureCategory", "formalEligible", "snapshotPath", "envelopeReceiptPath"],
|
|
28
|
+
"properties": {
|
|
29
|
+
"checkId": { "$ref": "#/$defs/id" },
|
|
30
|
+
"status": { "enum": ["formal_check_passed", "formal_check_failed"] },
|
|
31
|
+
"failureCategory": {
|
|
32
|
+
"type": ["string", "null"],
|
|
33
|
+
"enum": [null, "source_check_failed", "envelope_capability_missing", "toolchain_resolution_failed", "network_policy_blocked"]
|
|
34
|
+
},
|
|
35
|
+
"formalEligible": { "type": "boolean" },
|
|
36
|
+
"snapshotPath": { "type": "string", "minLength": 1 },
|
|
37
|
+
"envelopeReceiptPath": { "type": ["string", "null"] }
|
|
38
|
+
},
|
|
39
|
+
"allOf": [{
|
|
40
|
+
"if": {
|
|
41
|
+
"properties": { "status": { "const": "formal_check_passed" } },
|
|
42
|
+
"required": ["status"]
|
|
43
|
+
},
|
|
44
|
+
"then": {
|
|
45
|
+
"properties": {
|
|
46
|
+
"failureCategory": { "const": null },
|
|
47
|
+
"formalEligible": { "const": true }
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"else": {
|
|
51
|
+
"properties": {
|
|
52
|
+
"failureCategory": { "enum": ["source_check_failed", "envelope_capability_missing", "toolchain_resolution_failed", "network_policy_blocked"] },
|
|
53
|
+
"formalEligible": { "const": false }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}]
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
"supplementalEvidence": {
|
|
60
|
+
"type": "array",
|
|
61
|
+
"items": {
|
|
62
|
+
"type": "object",
|
|
63
|
+
"additionalProperties": false,
|
|
64
|
+
"required": ["evidenceId", "kind", "classificationBasis", "evidencePath", "supplementalEvidenceSha256", "gating"],
|
|
65
|
+
"properties": {
|
|
66
|
+
"evidenceId": { "$ref": "#/$defs/id" },
|
|
67
|
+
"kind": { "enum": ["supplemental-local", "networked"] },
|
|
68
|
+
"classificationBasis": { "const": "operator_declared_not_attested" },
|
|
69
|
+
"evidencePath": { "type": "string", "minLength": 1 },
|
|
70
|
+
"supplementalEvidenceSha256": { "$ref": "#/$defs/hash" },
|
|
71
|
+
"gating": { "const": false }
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"staleFormalCheckCount": { "type": "integer", "minimum": 0 },
|
|
76
|
+
"staleSupplementalEvidenceCount": { "type": "integer", "minimum": 0 },
|
|
77
|
+
"formalAcceptanceDerivedOnlyFromFormalChecks": { "const": true },
|
|
78
|
+
"limitations": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } },
|
|
79
|
+
"authorizationGranted": { "const": false },
|
|
80
|
+
"evidenceSummarySha256": { "$ref": "#/$defs/hash" }
|
|
81
|
+
},
|
|
82
|
+
"$defs": {
|
|
83
|
+
"id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
|
|
84
|
+
"hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
85
|
+
"prefixedHash": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
|
|
86
|
+
},
|
|
87
|
+
"examples": [
|
|
88
|
+
{
|
|
89
|
+
"schemaVersion": "OwlCodaRunKitFormalEvidenceSummaryV1",
|
|
90
|
+
"runId": "release-001",
|
|
91
|
+
"summaryId": "formal-final-evidence",
|
|
92
|
+
"sourceBinding": {
|
|
93
|
+
"candidatePath": ".owlcoda/runkit/executions/release-001/source-candidates/quality.json",
|
|
94
|
+
"candidateSha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
95
|
+
"sourceFingerprint": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
|
|
96
|
+
},
|
|
97
|
+
"formalChecks": [{
|
|
98
|
+
"checkId": "quality",
|
|
99
|
+
"status": "formal_check_passed",
|
|
100
|
+
"failureCategory": null,
|
|
101
|
+
"formalEligible": true,
|
|
102
|
+
"snapshotPath": ".owlcoda/runkit/executions/release-001/snapshots/quality.json",
|
|
103
|
+
"envelopeReceiptPath": null
|
|
104
|
+
}],
|
|
105
|
+
"supplementalEvidence": [],
|
|
106
|
+
"staleFormalCheckCount": 0,
|
|
107
|
+
"staleSupplementalEvidenceCount": 0,
|
|
108
|
+
"formalAcceptanceDerivedOnlyFromFormalChecks": true,
|
|
109
|
+
"limitations": ["supplemental_evidence_is_non_gating"],
|
|
110
|
+
"authorizationGranted": false,
|
|
111
|
+
"evidenceSummarySha256": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
|
112
|
+
}
|
|
113
|
+
]
|
|
114
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.dev/schemas/runkit/formal-supplemental-evidence-v1.json",
|
|
4
|
+
"title": "OwlCoda RunKit Formal Supplemental Evidence V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "runId", "evidenceId", "kind", "classificationBasis", "status", "gating", "sourceBinding", "quickEvidence", "limitations", "frozenMaterials", "authorizationGranted", "supplementalEvidenceSha256"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": "OwlCodaRunKitFormalSupplementalEvidenceV1" },
|
|
10
|
+
"runId": { "$ref": "#/$defs/id" },
|
|
11
|
+
"evidenceId": { "$ref": "#/$defs/id" },
|
|
12
|
+
"kind": { "enum": ["supplemental-local", "networked"] },
|
|
13
|
+
"classificationBasis": { "const": "operator_declared_not_attested" },
|
|
14
|
+
"status": { "const": "attached" },
|
|
15
|
+
"gating": { "const": false },
|
|
16
|
+
"sourceBinding": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"additionalProperties": false,
|
|
19
|
+
"required": ["candidatePath", "candidateSha256", "sourceFingerprint", "quickWorkspaceFingerprint"],
|
|
20
|
+
"properties": {
|
|
21
|
+
"candidatePath": { "type": "string", "minLength": 1 },
|
|
22
|
+
"candidateSha256": { "$ref": "#/$defs/prefixedHash" },
|
|
23
|
+
"sourceFingerprint": { "$ref": "#/$defs/hash" },
|
|
24
|
+
"quickWorkspaceFingerprint": { "$ref": "#/$defs/prefixedHash" }
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"quickEvidence": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"required": ["receiptId", "receiptPath", "receiptSha256", "receiptSchemaVersion", "exactCommand", "attestationDecision", "attestationIssueCodes"],
|
|
31
|
+
"properties": {
|
|
32
|
+
"receiptId": { "type": "string", "minLength": 1 },
|
|
33
|
+
"receiptPath": { "type": "string", "minLength": 1 },
|
|
34
|
+
"receiptSha256": { "$ref": "#/$defs/prefixedHash" },
|
|
35
|
+
"receiptSchemaVersion": { "type": "string", "minLength": 1 },
|
|
36
|
+
"exactCommand": { "type": "object" },
|
|
37
|
+
"attestationDecision": { "const": "GO" },
|
|
38
|
+
"attestationIssueCodes": { "type": "array", "items": { "type": "string" } }
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"limitations": { "type": "array", "minItems": 1, "items": { "type": "string", "minLength": 1 } },
|
|
42
|
+
"frozenMaterials": {
|
|
43
|
+
"type": "array",
|
|
44
|
+
"minItems": 1,
|
|
45
|
+
"items": {
|
|
46
|
+
"type": "object",
|
|
47
|
+
"additionalProperties": false,
|
|
48
|
+
"required": ["sourcePath", "evidenceObjectPath", "sha256", "sizeBytes"],
|
|
49
|
+
"properties": {
|
|
50
|
+
"sourcePath": { "type": "string", "minLength": 1 },
|
|
51
|
+
"evidenceObjectPath": { "type": "string", "pattern": "^\\.owlcoda/runkit/evidence/raw-sha256/[a-f0-9]{64}$" },
|
|
52
|
+
"sha256": { "$ref": "#/$defs/prefixedHash" },
|
|
53
|
+
"sizeBytes": { "type": "integer", "minimum": 0 }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"authorizationGranted": { "const": false },
|
|
58
|
+
"supplementalEvidenceSha256": { "$ref": "#/$defs/hash" }
|
|
59
|
+
},
|
|
60
|
+
"$defs": {
|
|
61
|
+
"id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
|
|
62
|
+
"hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
63
|
+
"prefixedHash": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
|
|
64
|
+
},
|
|
65
|
+
"examples": [
|
|
66
|
+
{
|
|
67
|
+
"schemaVersion": "OwlCodaRunKitFormalSupplementalEvidenceV1",
|
|
68
|
+
"runId": "release-001",
|
|
69
|
+
"evidenceId": "network-audit",
|
|
70
|
+
"kind": "networked",
|
|
71
|
+
"classificationBasis": "operator_declared_not_attested",
|
|
72
|
+
"status": "attached",
|
|
73
|
+
"gating": false,
|
|
74
|
+
"sourceBinding": {
|
|
75
|
+
"candidatePath": ".owlcoda/runkit/executions/release-001/source-candidates/quality.json",
|
|
76
|
+
"candidateSha256": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
77
|
+
"sourceFingerprint": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
|
|
78
|
+
"quickWorkspaceFingerprint": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
|
79
|
+
},
|
|
80
|
+
"quickEvidence": {
|
|
81
|
+
"receiptId": "quick-001",
|
|
82
|
+
"receiptPath": ".owlcoda/runkit/quick/receipts/quick-001/receipt.json",
|
|
83
|
+
"receiptSha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
84
|
+
"receiptSchemaVersion": "OwlCodaQuickVerificationReceiptV3",
|
|
85
|
+
"exactCommand": {},
|
|
86
|
+
"attestationDecision": "GO",
|
|
87
|
+
"attestationIssueCodes": []
|
|
88
|
+
},
|
|
89
|
+
"limitations": [
|
|
90
|
+
"supplemental_evidence_is_not_formal_sandbox_evidence",
|
|
91
|
+
"network_classification_is_operator_declared_not_attested"
|
|
92
|
+
],
|
|
93
|
+
"frozenMaterials": [{
|
|
94
|
+
"sourcePath": ".owlcoda/runkit/quick/receipts/quick-001/receipt.json",
|
|
95
|
+
"evidenceObjectPath": ".owlcoda/runkit/evidence/raw-sha256/dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
96
|
+
"sha256": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
|
|
97
|
+
"sizeBytes": 100
|
|
98
|
+
}],
|
|
99
|
+
"authorizationGranted": false,
|
|
100
|
+
"supplementalEvidenceSha256": "eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
|
101
|
+
}
|
|
102
|
+
]
|
|
103
|
+
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/team-acceptance-packet-v2.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Team Acceptance Packet V2",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion", "packetId", "projectBinding", "gateId", "workItemId",
|
|
9
|
+
"candidateId", "taskPacketSha256", "implementation", "verification",
|
|
10
|
+
"secondOrderRisk", "independenceStatus", "acceptanceLevel",
|
|
11
|
+
"candidateIdentityBefore", "candidateIdentityAfter", "freshAdversarialFamilies",
|
|
12
|
+
"coverageLedger", "protectedArtifactReadback", "productionWriteCount", "findings",
|
|
13
|
+
"verdict", "allowedNextGate", "remainingAcceptanceLevels",
|
|
14
|
+
"authorityBoundary", "authorizationGranted"
|
|
15
|
+
],
|
|
16
|
+
"properties": {
|
|
17
|
+
"schemaVersion": { "const": "OwlCodaRunKitTeamAcceptancePacketV2" },
|
|
18
|
+
"packetId": { "$ref": "#/$defs/id" },
|
|
19
|
+
"projectBinding": { "$ref": "#/$defs/projectBinding" },
|
|
20
|
+
"gateId": { "$ref": "#/$defs/id" },
|
|
21
|
+
"workItemId": { "$ref": "#/$defs/id" },
|
|
22
|
+
"candidateId": { "$ref": "#/$defs/id" },
|
|
23
|
+
"taskPacketSha256": { "$ref": "#/$defs/sha256Ref" },
|
|
24
|
+
"implementation": { "$ref": "#/$defs/modelIdentity" },
|
|
25
|
+
"verification": { "$ref": "#/$defs/modelIdentity" },
|
|
26
|
+
"secondOrderRisk": { "enum": ["low", "medium", "high"] },
|
|
27
|
+
"independenceStatus": { "enum": ["independent", "same_family_not_independent", "control_tower"] },
|
|
28
|
+
"acceptanceLevel": { "enum": ["L0", "L1", "L2", "L3"] },
|
|
29
|
+
"candidateIdentityBefore": { "$ref": "#/$defs/sha256Ref" },
|
|
30
|
+
"candidateIdentityAfter": { "$ref": "#/$defs/sha256Ref" },
|
|
31
|
+
"freshAdversarialFamilies": { "$ref": "#/$defs/strings" },
|
|
32
|
+
"coverageLedger": {
|
|
33
|
+
"type": "object",
|
|
34
|
+
"additionalProperties": false,
|
|
35
|
+
"required": ["evidenceReused", "checksRunFresh", "coveredChecksNotRepeated", "receiptInvalidations", "deferredTransitionGates"],
|
|
36
|
+
"properties": {
|
|
37
|
+
"evidenceReused": { "$ref": "#/$defs/strings" },
|
|
38
|
+
"checksRunFresh": { "$ref": "#/$defs/strings" },
|
|
39
|
+
"coveredChecksNotRepeated": { "$ref": "#/$defs/strings" },
|
|
40
|
+
"receiptInvalidations": { "$ref": "#/$defs/strings" },
|
|
41
|
+
"deferredTransitionGates": { "$ref": "#/$defs/strings" }
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"protectedArtifactReadback": { "$ref": "#/$defs/strings" },
|
|
45
|
+
"productionWriteCount": { "type": "integer", "minimum": 0 },
|
|
46
|
+
"findings": {
|
|
47
|
+
"type": "array",
|
|
48
|
+
"items": {
|
|
49
|
+
"type": "object",
|
|
50
|
+
"additionalProperties": false,
|
|
51
|
+
"required": ["severity", "code", "message", "evidenceRefs"],
|
|
52
|
+
"properties": {
|
|
53
|
+
"severity": { "enum": ["critical", "important", "minor", "note"] },
|
|
54
|
+
"code": { "$ref": "#/$defs/id" },
|
|
55
|
+
"message": { "$ref": "#/$defs/text" },
|
|
56
|
+
"evidenceRefs": { "$ref": "#/$defs/strings" }
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"verdict": { "enum": ["ACCEPT", "REWORK", "BLOCKED"] },
|
|
61
|
+
"allowedNextGate": { "$ref": "#/$defs/nullableText" },
|
|
62
|
+
"remainingAcceptanceLevels": { "type": "array", "uniqueItems": true, "items": { "enum": ["L0", "L1", "L2", "L3"] } },
|
|
63
|
+
"authorityBoundary": { "$ref": "#/$defs/authorityBoundary" },
|
|
64
|
+
"authorizationGranted": { "const": false }
|
|
65
|
+
},
|
|
66
|
+
"$defs": {
|
|
67
|
+
"id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$" },
|
|
68
|
+
"text": { "type": "string", "minLength": 1 },
|
|
69
|
+
"nullableText": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
|
|
70
|
+
"strings": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
|
|
71
|
+
"sha256Ref": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
|
|
72
|
+
"projectBinding": { "type": "object", "additionalProperties": false, "required": ["projectId", "projectTruthHash"], "properties": { "projectId": { "$ref": "#/$defs/id" }, "projectTruthHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" } } },
|
|
73
|
+
"modelIdentity": { "type": "object", "additionalProperties": false, "required": ["agent", "modelFamily", "modelVersion"], "properties": { "agent": { "$ref": "#/$defs/id" }, "modelFamily": { "$ref": "#/$defs/text" }, "modelVersion": { "$ref": "#/$defs/text" } } },
|
|
74
|
+
"authorityBoundary": { "type": "object", "additionalProperties": false, "required": ["agentDispatch", "git", "release", "deployment", "production", "business", "automation", "money"], "properties": { "agentDispatch": { "const": false }, "git": { "const": false }, "release": { "const": false }, "deployment": { "const": false }, "production": { "const": false }, "business": { "const": false }, "automation": { "const": false }, "money": { "const": false } } }
|
|
75
|
+
},
|
|
76
|
+
"allOf": [{
|
|
77
|
+
"if": {
|
|
78
|
+
"properties": {
|
|
79
|
+
"verdict": { "const": "ACCEPT" },
|
|
80
|
+
"acceptanceLevel": { "enum": ["L1", "L2", "L3"] }
|
|
81
|
+
},
|
|
82
|
+
"required": ["verdict", "acceptanceLevel"]
|
|
83
|
+
},
|
|
84
|
+
"then": {
|
|
85
|
+
"properties": {
|
|
86
|
+
"freshAdversarialFamilies": { "minItems": 1 },
|
|
87
|
+
"coverageLedger": { "properties": { "checksRunFresh": { "minItems": 1 } } }
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}],
|
|
91
|
+
"examples": [{
|
|
92
|
+
"schemaVersion": "OwlCodaRunKitTeamAcceptancePacketV2",
|
|
93
|
+
"packetId": "acceptance-packet-001",
|
|
94
|
+
"projectBinding": { "projectId": "team-phase1", "projectTruthHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
|
|
95
|
+
"gateId": "ready", "workItemId": "work-1", "candidateId": "candidate-001",
|
|
96
|
+
"taskPacketSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
|
97
|
+
"implementation": { "agent": "agent-a", "modelFamily": "provider:family-a", "modelVersion": "model-a-1" },
|
|
98
|
+
"verification": { "agent": "agent-b", "modelFamily": "provider:family-b", "modelVersion": "model-b-1" },
|
|
99
|
+
"secondOrderRisk": "medium", "independenceStatus": "independent", "acceptanceLevel": "L1",
|
|
100
|
+
"candidateIdentityBefore": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
101
|
+
"candidateIdentityAfter": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
|
|
102
|
+
"freshAdversarialFamilies": ["authority boundary"],
|
|
103
|
+
"coverageLedger": { "evidenceReused": ["receipt:quick-001"], "checksRunFresh": ["authority boundary"], "coveredChecksNotRepeated": [], "receiptInvalidations": [], "deferredTransitionGates": ["L2 package consumer"] },
|
|
104
|
+
"protectedArtifactReadback": ["docs/contract.md: unchanged"], "productionWriteCount": 0,
|
|
105
|
+
"findings": [], "verdict": "ACCEPT", "allowedNextGate": "L2 package consumer", "remainingAcceptanceLevels": ["L2", "L3"],
|
|
106
|
+
"authorityBoundary": { "agentDispatch": false, "git": false, "release": false, "deployment": false, "production": false, "business": false, "automation": false, "money": false },
|
|
107
|
+
"authorizationGranted": false
|
|
108
|
+
}]
|
|
109
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/team-delivery-status-v1.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Team Delivery Status V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion", "status", "graphSource", "persistedTeamGraph", "projectId",
|
|
9
|
+
"projectTruthHash", "projectOverall", "recommendation", "lanes", "pathConflicts",
|
|
10
|
+
"acceptanceGaps", "ownerTransitions", "nextAction", "dispatch",
|
|
11
|
+
"authorityBoundary", "authorizationGranted", "exitCode"
|
|
12
|
+
],
|
|
13
|
+
"properties": {
|
|
14
|
+
"schemaVersion": { "const": "OwlCodaRunKitTeamDeliveryStatusV1" },
|
|
15
|
+
"status": { "const": "team_delivery_status" },
|
|
16
|
+
"graphSource": { "const": "project_driver" },
|
|
17
|
+
"persistedTeamGraph": { "const": false },
|
|
18
|
+
"projectId": { "$ref": "#/$defs/nullableText" },
|
|
19
|
+
"projectTruthHash": { "oneOf": [{ "type": "null" }, { "type": "string", "pattern": "^[a-f0-9]{64}$" }] },
|
|
20
|
+
"projectOverall": { "type": "string", "minLength": 1 },
|
|
21
|
+
"recommendation": {
|
|
22
|
+
"type": "object", "additionalProperties": false,
|
|
23
|
+
"required": ["recommendedMode", "coordination", "reasonCodes"],
|
|
24
|
+
"properties": {
|
|
25
|
+
"recommendedMode": { "enum": ["off", "team"] },
|
|
26
|
+
"coordination": { "enum": ["none", "project_driver_team"] },
|
|
27
|
+
"reasonCodes": { "$ref": "#/$defs/strings" }
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"lanes": { "type": "array", "items": { "$ref": "#/$defs/lane" } },
|
|
31
|
+
"pathConflicts": { "type": "array", "items": { "$ref": "#/$defs/pathConflict" } },
|
|
32
|
+
"acceptanceGaps": { "type": "array", "items": { "$ref": "#/$defs/acceptanceGap" } },
|
|
33
|
+
"ownerTransitions": { "type": "array", "items": { "$ref": "#/$defs/ownerTransition" } },
|
|
34
|
+
"nextAction": { "$ref": "#/$defs/nullableText" },
|
|
35
|
+
"dispatch": { "$ref": "#/$defs/dispatch" },
|
|
36
|
+
"authorityBoundary": { "$ref": "#/$defs/authorityBoundary" },
|
|
37
|
+
"authorizationGranted": { "const": false },
|
|
38
|
+
"exitCode": { "const": 0 }
|
|
39
|
+
},
|
|
40
|
+
"$defs": {
|
|
41
|
+
"text": { "type": "string", "minLength": 1 },
|
|
42
|
+
"nullableText": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
|
|
43
|
+
"strings": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
|
|
44
|
+
"nonemptyStrings": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
|
|
45
|
+
"lane": {
|
|
46
|
+
"type": "object", "additionalProperties": false,
|
|
47
|
+
"required": ["workItemId", "title", "status", "agentId", "dependencies", "unresolvedDependencies", "ownedPaths", "actionable", "parallelEligible", "coordinationFacts"],
|
|
48
|
+
"properties": {
|
|
49
|
+
"workItemId": { "$ref": "#/$defs/text" }, "title": { "$ref": "#/$defs/text" },
|
|
50
|
+
"status": { "$ref": "#/$defs/text" }, "agentId": { "$ref": "#/$defs/nullableText" },
|
|
51
|
+
"dependencies": { "$ref": "#/$defs/strings" }, "unresolvedDependencies": { "$ref": "#/$defs/strings" },
|
|
52
|
+
"ownedPaths": { "$ref": "#/$defs/nonemptyStrings" }, "actionable": { "type": "boolean" },
|
|
53
|
+
"parallelEligible": { "type": "boolean" }, "coordinationFacts": { "$ref": "#/$defs/strings" }
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
"pathConflict": { "type": "object", "additionalProperties": false, "required": ["leftWorkItemId", "leftPath", "rightWorkItemId", "rightPath"], "properties": { "leftWorkItemId": { "$ref": "#/$defs/text" }, "leftPath": { "$ref": "#/$defs/text" }, "rightWorkItemId": { "$ref": "#/$defs/text" }, "rightPath": { "$ref": "#/$defs/text" } } },
|
|
57
|
+
"acceptanceGap": { "type": "object", "additionalProperties": false, "required": ["workItemId", "code", "message"], "properties": { "workItemId": { "$ref": "#/$defs/text" }, "code": { "const": "verification_model_family_unbound" }, "message": { "$ref": "#/$defs/text" } } },
|
|
58
|
+
"ownerTransition": { "type": "object", "additionalProperties": false, "required": ["workItemId", "facts"], "properties": { "workItemId": { "$ref": "#/$defs/text" }, "facts": { "$ref": "#/$defs/nonemptyStrings" } } },
|
|
59
|
+
"dispatch": { "type": "object", "additionalProperties": false, "required": ["mode", "permitted", "nextCommand"], "properties": { "mode": { "const": "none" }, "permitted": { "const": false }, "nextCommand": { "type": "null" } } },
|
|
60
|
+
"authorityBoundary": { "type": "object", "additionalProperties": false, "required": ["agentDispatch", "git", "release", "deployment", "production", "business", "automation", "money"], "properties": { "agentDispatch": { "const": false }, "git": { "const": false }, "release": { "const": false }, "deployment": { "const": false }, "production": { "const": false }, "business": { "const": false }, "automation": { "const": false }, "money": { "const": false } } }
|
|
61
|
+
},
|
|
62
|
+
"examples": [{
|
|
63
|
+
"schemaVersion": "OwlCodaRunKitTeamDeliveryStatusV1", "status": "team_delivery_status",
|
|
64
|
+
"graphSource": "project_driver", "persistedTeamGraph": false, "projectId": null,
|
|
65
|
+
"projectTruthHash": null, "projectOverall": "not_initialized",
|
|
66
|
+
"recommendation": { "recommendedMode": "off", "coordination": "none", "reasonCodes": ["project_driver_not_initialized"] },
|
|
67
|
+
"lanes": [], "pathConflicts": [], "acceptanceGaps": [], "ownerTransitions": [], "nextAction": null,
|
|
68
|
+
"dispatch": { "mode": "none", "permitted": false, "nextCommand": null },
|
|
69
|
+
"authorityBoundary": { "agentDispatch": false, "git": false, "release": false, "deployment": false, "production": false, "business": false, "automation": false, "money": false },
|
|
70
|
+
"authorizationGranted": false, "exitCode": 0
|
|
71
|
+
}]
|
|
72
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/team-packet-validation-v1.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Team Packet Validation V1",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": ["schemaVersion", "status", "packetKind", "packetSchemaVersion", "issueCodes", "authorityBoundary", "authorizationGranted", "exitCode"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schemaVersion": { "const": "OwlCodaRunKitTeamPacketValidationV1" },
|
|
10
|
+
"status": { "enum": ["team_packet_valid", "team_packet_invalid"] },
|
|
11
|
+
"packetKind": { "enum": ["task", "acceptance", "transfer", "unknown"] },
|
|
12
|
+
"packetSchemaVersion": { "oneOf": [{ "type": "null" }, { "type": "string", "minLength": 1 }] },
|
|
13
|
+
"issueCodes": { "type": "array", "uniqueItems": true, "items": { "type": "string", "minLength": 1 } },
|
|
14
|
+
"authorityBoundary": {
|
|
15
|
+
"type": "object", "additionalProperties": false,
|
|
16
|
+
"required": ["agentDispatch", "git", "release", "deployment", "production", "business", "automation", "money"],
|
|
17
|
+
"properties": { "agentDispatch": { "const": false }, "git": { "const": false }, "release": { "const": false }, "deployment": { "const": false }, "production": { "const": false }, "business": { "const": false }, "automation": { "const": false }, "money": { "const": false } }
|
|
18
|
+
},
|
|
19
|
+
"authorizationGranted": { "const": false },
|
|
20
|
+
"exitCode": { "enum": [0, 2] }
|
|
21
|
+
},
|
|
22
|
+
"allOf": [{
|
|
23
|
+
"if": { "properties": { "status": { "const": "team_packet_valid" } }, "required": ["status"] },
|
|
24
|
+
"then": { "properties": { "issueCodes": { "maxItems": 0 }, "exitCode": { "const": 0 } } },
|
|
25
|
+
"else": { "properties": { "issueCodes": { "minItems": 1 }, "exitCode": { "const": 2 } } }
|
|
26
|
+
}],
|
|
27
|
+
"examples": [{
|
|
28
|
+
"schemaVersion": "OwlCodaRunKitTeamPacketValidationV1", "status": "team_packet_valid",
|
|
29
|
+
"packetKind": "task", "packetSchemaVersion": "OwlCodaRunKitTeamTaskPacketV2", "issueCodes": [],
|
|
30
|
+
"authorityBoundary": { "agentDispatch": false, "git": false, "release": false, "deployment": false, "production": false, "business": false, "automation": false, "money": false },
|
|
31
|
+
"authorizationGranted": false, "exitCode": 0
|
|
32
|
+
}]
|
|
33
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://owlcoda.com/schemas/runkit/team-project-event-v5.schema.json",
|
|
4
|
+
"title": "OwlCoda RunKit Team Project Event V5",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"additionalProperties": false,
|
|
7
|
+
"required": [
|
|
8
|
+
"schemaVersion",
|
|
9
|
+
"eventId",
|
|
10
|
+
"type",
|
|
11
|
+
"occurredAt",
|
|
12
|
+
"revisionId",
|
|
13
|
+
"assignmentId",
|
|
14
|
+
"workItemId",
|
|
15
|
+
"ownerAgentId",
|
|
16
|
+
"previousOwnedPaths",
|
|
17
|
+
"ownedPaths",
|
|
18
|
+
"previousMeasurable",
|
|
19
|
+
"measurable",
|
|
20
|
+
"reason",
|
|
21
|
+
"evidenceRefs"
|
|
22
|
+
],
|
|
23
|
+
"properties": {
|
|
24
|
+
"schemaVersion": { "const": "OwlCodaRunKitTeamProjectEventV5" },
|
|
25
|
+
"eventId": { "$ref": "#/$defs/id" },
|
|
26
|
+
"type": { "const": "work_item_scope_revised" },
|
|
27
|
+
"occurredAt": {
|
|
28
|
+
"type": "string",
|
|
29
|
+
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
|
|
30
|
+
},
|
|
31
|
+
"revisionId": { "$ref": "#/$defs/id" },
|
|
32
|
+
"supersedesRevisionId": { "$ref": "#/$defs/id" },
|
|
33
|
+
"assignmentId": { "$ref": "#/$defs/id" },
|
|
34
|
+
"workItemId": { "$ref": "#/$defs/id" },
|
|
35
|
+
"ownerAgentId": { "$ref": "#/$defs/id" },
|
|
36
|
+
"previousOwnedPaths": { "$ref": "#/$defs/paths" },
|
|
37
|
+
"ownedPaths": { "$ref": "#/$defs/paths" },
|
|
38
|
+
"previousMeasurable": { "$ref": "#/$defs/nullableMeasurable" },
|
|
39
|
+
"measurable": { "$ref": "#/$defs/nullableMeasurable" },
|
|
40
|
+
"reason": { "type": "string", "minLength": 1 },
|
|
41
|
+
"evidenceRefs": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"uniqueItems": true,
|
|
44
|
+
"items": { "type": "string", "minLength": 1 }
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"examples": [
|
|
48
|
+
{
|
|
49
|
+
"schemaVersion": "OwlCodaRunKitTeamProjectEventV5",
|
|
50
|
+
"eventId": "scope-revision-001",
|
|
51
|
+
"type": "work_item_scope_revised",
|
|
52
|
+
"occurredAt": "2026-08-13T05:57:10.000Z",
|
|
53
|
+
"revisionId": "revision-001",
|
|
54
|
+
"assignmentId": "assignment-001",
|
|
55
|
+
"workItemId": "canonical-adapter",
|
|
56
|
+
"ownerAgentId": "luna-max",
|
|
57
|
+
"previousOwnedPaths": ["src/adapter/**"],
|
|
58
|
+
"ownedPaths": ["src/adapter/**", "src/canonical-store/**"],
|
|
59
|
+
"previousMeasurable": { "unit": "interface", "total": 1 },
|
|
60
|
+
"measurable": { "unit": "interface", "total": 2 },
|
|
61
|
+
"reason": "Diagnosis proved the canonical store is part of the same bounded fix.",
|
|
62
|
+
"evidenceRefs": ["docs/decisions/scope-revision.md"]
|
|
63
|
+
}
|
|
64
|
+
],
|
|
65
|
+
"$defs": {
|
|
66
|
+
"id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$" },
|
|
67
|
+
"paths": {
|
|
68
|
+
"type": "array",
|
|
69
|
+
"minItems": 1,
|
|
70
|
+
"uniqueItems": true,
|
|
71
|
+
"items": { "type": "string", "minLength": 1 }
|
|
72
|
+
},
|
|
73
|
+
"measurable": {
|
|
74
|
+
"type": "object",
|
|
75
|
+
"additionalProperties": false,
|
|
76
|
+
"required": ["unit", "total"],
|
|
77
|
+
"properties": {
|
|
78
|
+
"unit": { "type": "string", "minLength": 1 },
|
|
79
|
+
"total": { "type": "integer", "minimum": 1 }
|
|
80
|
+
}
|
|
81
|
+
},
|
|
82
|
+
"nullableMeasurable": {
|
|
83
|
+
"oneOf": [
|
|
84
|
+
{ "$ref": "#/$defs/measurable" },
|
|
85
|
+
{ "type": "null" }
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|