owlrunkit 0.20.0 → 0.22.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 (50) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/README.md +102 -10
  3. package/docs/architecture/OWLCODA_RUNKIT_0201_RELEASE_TRUTH_AND_PROFILE_NORMALIZATION_PATCH_DECISION_20260813.md +95 -0
  4. package/docs/architecture/OWLCODA_RUNKIT_021_TEAM_DELIVERY_PHASE2_PRODUCT_DECISION_20260813.md +249 -0
  5. package/integrations/codex/skills/owlcoda-runkit/SKILL.md +117 -12
  6. package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
  7. package/package.json +1 -1
  8. package/packages/attest/README.md +7 -1
  9. package/packages/attest/consumer-surface-v3.json +275 -0
  10. package/packages/attest/distribution-manifest-v1.json +24 -0
  11. package/packages/attest/schemas/canonical-candidate-identity-v1.schema.json +112 -0
  12. package/packages/attest/schemas/foreign-workspace-filesystem-identity-v1.schema.json +32 -0
  13. package/packages/attest/schemas/quick-verification-receipt-v4.schema.json +226 -0
  14. package/packages/attest/src/candidate-identity.mjs +454 -0
  15. package/packages/attest/src/index.mjs +11 -0
  16. package/packages/attest/src/quick-receipt-contract.mjs +126 -5
  17. package/packages/attest/src/quick.mjs +53 -8
  18. package/{registry-release-policy-v1.json → registry-release-policy-v2.json} +8 -9
  19. package/sbom.spdx.json +4 -4
  20. package/scripts/runkit-contract/core-contract.mjs +19 -1
  21. package/scripts/runkit-contract/fleet-skill-plan.mjs +223 -0
  22. package/scripts/runkit-contract/formal-workflow.mjs +3 -1
  23. package/scripts/runkit-contract/hook-recovery.mjs +496 -0
  24. package/scripts/runkit-contract/inspect-presentation.mjs +187 -0
  25. package/scripts/runkit-contract/install-codex-skill.mjs +1 -0
  26. package/scripts/runkit-contract/onboarding-bootstrap.mjs +15 -0
  27. package/scripts/runkit-contract/onboarding-doctor.mjs +378 -9
  28. package/scripts/runkit-contract/profile-onboarding.mjs +6 -0
  29. package/scripts/runkit-contract/project-cli-resolver.mjs +17 -1
  30. package/scripts/runkit-contract/quick-metrics.mjs +9 -5
  31. package/scripts/runkit-contract/quick-verify.mjs +108 -24
  32. package/scripts/runkit-contract/registry-adoption-gate.mjs +12 -3
  33. package/scripts/runkit-contract/registry-adoption.mjs +10 -5
  34. package/scripts/runkit-contract/runkit-bootstrap.mjs +1 -0
  35. package/scripts/runkit-contract/runkit-cli.mjs +332 -30
  36. package/scripts/runkit-contract/schemas/delivery-lifecycle-v1.schema.json +91 -0
  37. package/scripts/runkit-contract/schemas/external-gate-v1.schema.json +68 -0
  38. package/scripts/runkit-contract/schemas/fleet-skill-upgrade-plan-v1.schema.json +140 -0
  39. package/scripts/runkit-contract/schemas/hook-recovery-v1.schema.json +592 -0
  40. package/scripts/runkit-contract/schemas/inspect-compact-v1.schema.json +93 -0
  41. package/scripts/runkit-contract/schemas/inspect-compact-v2.schema.json +122 -0
  42. package/scripts/runkit-contract/schemas/team-delivery-status-v2.schema.json +219 -0
  43. package/scripts/runkit-contract/schemas/team-delivery-status-v3.schema.json +113 -0
  44. package/scripts/runkit-contract/schemas/team-project-event-v6.schema.json +82 -0
  45. package/scripts/runkit-contract/schemas/team-project-event-v7.schema.json +80 -0
  46. package/scripts/runkit-contract/schemas/team-project-status-v4.schema.json +208 -0
  47. package/scripts/runkit-contract/schemas/team-recommendation-v2.schema.json +120 -0
  48. package/scripts/runkit-contract/sync-release-identity.mjs +87 -0
  49. package/scripts/runkit-contract/team-delivery.mjs +203 -3
  50. package/scripts/runkit-contract/team-project.mjs +1032 -11
@@ -0,0 +1,208 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://owlcoda.com/schemas/runkit/team-project-status-v4.schema.json",
4
+ "title": "OwlCoda RunKit Team Project Status V4",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion", "status", "projectId", "objective", "overall", "counts",
9
+ "milestones", "workstreams", "workItems", "agents", "readyQueue",
10
+ "criticalWorkItems", "openDecisions", "resolvedDecisions",
11
+ "deferredVerifications", "openDeferredVerificationIds", "integrationGates",
12
+ "dataCandidates", "sourceDeliveries", "warnings", "externalGates",
13
+ "deliveryLifecycle", "projectTruthHash", "authorizationGranted",
14
+ "deliveryDisposition", "headline", "dominantGap", "nextAction",
15
+ "nextActorId", "exitCode"
16
+ ],
17
+ "properties": {
18
+ "schemaVersion": { "const": "OwlCodaRunKitTeamProjectStatusV4" },
19
+ "status": { "const": "team_project_status" },
20
+ "projectId": { "$ref": "#/$defs/text" },
21
+ "objective": { "$ref": "#/$defs/text" },
22
+ "overall": { "enum": ["planned", "active", "active_with_blockers", "completed"] },
23
+ "counts": { "type": "object" },
24
+ "milestones": { "type": "array", "items": { "type": "object" } },
25
+ "workstreams": { "type": "array", "items": { "type": "object" } },
26
+ "workItems": { "type": "array", "items": { "type": "object" } },
27
+ "agents": { "type": "array", "items": { "type": "object" } },
28
+ "readyQueue": { "$ref": "#/$defs/strings" },
29
+ "criticalWorkItems": { "$ref": "#/$defs/strings" },
30
+ "openDecisions": { "type": "array", "items": { "type": "object" } },
31
+ "resolvedDecisions": { "type": "array", "items": { "type": "object" } },
32
+ "deferredVerifications": { "type": "array", "items": { "type": "object" } },
33
+ "openDeferredVerificationIds": { "$ref": "#/$defs/strings" },
34
+ "integrationGates": { "type": "array", "items": { "type": "object" } },
35
+ "dataCandidates": { "type": "array", "items": { "type": "object" } },
36
+ "sourceDeliveries": { "type": "array", "items": { "type": "object" } },
37
+ "warnings": { "type": "array", "items": { "type": "object" } },
38
+ "externalGates": { "type": "array", "items": { "$ref": "#/$defs/externalGate" } },
39
+ "deliveryLifecycle": { "$ref": "#/$defs/deliveryLifecycle" },
40
+ "projectTruthHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
41
+ "authorizationGranted": { "const": false },
42
+ "deliveryDisposition": {
43
+ "enum": [
44
+ "work_ledger_incomplete", "work_ledger_complete", "source_accepted",
45
+ "integrated", "materialized", "deployed", "live_readback_passed", "product_accepted"
46
+ ]
47
+ },
48
+ "headline": { "$ref": "#/$defs/text" },
49
+ "dominantGap": { "$ref": "#/$defs/dominantGap" },
50
+ "nextAction": { "$ref": "#/$defs/nullableText" },
51
+ "nextActorId": { "$ref": "#/$defs/nullableText" },
52
+ "exitCode": { "const": 0 }
53
+ },
54
+ "allOf": [
55
+ {
56
+ "if": { "properties": { "deliveryDisposition": { "const": "product_accepted" } }, "required": ["deliveryDisposition"] },
57
+ "then": {
58
+ "properties": {
59
+ "dominantGap": { "properties": { "kind": { "const": "none" } } },
60
+ "nextAction": { "type": "null" },
61
+ "nextActorId": { "type": "null" }
62
+ }
63
+ }
64
+ }
65
+ ],
66
+ "examples": [
67
+ {
68
+ "schemaVersion": "OwlCodaRunKitTeamProjectStatusV4",
69
+ "status": "team_project_status",
70
+ "projectId": "delivery-wave",
71
+ "objective": "Preserve delivery truth after source completion",
72
+ "overall": "completed",
73
+ "counts": {},
74
+ "milestones": [],
75
+ "workstreams": [],
76
+ "workItems": [],
77
+ "agents": [],
78
+ "readyQueue": [],
79
+ "criticalWorkItems": [],
80
+ "openDecisions": [],
81
+ "resolvedDecisions": [],
82
+ "deferredVerifications": [],
83
+ "openDeferredVerificationIds": [],
84
+ "integrationGates": [],
85
+ "dataCandidates": [],
86
+ "sourceDeliveries": [],
87
+ "warnings": [],
88
+ "externalGates": [],
89
+ "deliveryLifecycle": {
90
+ "schemaVersion": "OwlCodaRunKitDeliveryLifecycleV1",
91
+ "lifecycleStatus": "in_progress",
92
+ "currentStage": "work_ledger_complete",
93
+ "nextRequiredStage": "source",
94
+ "blockingStage": null,
95
+ "blockingExternalGateIds": [],
96
+ "stages": [
97
+ { "stage": "source", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null },
98
+ { "stage": "integration", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null },
99
+ { "stage": "materialization", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null },
100
+ { "stage": "deployment", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null },
101
+ { "stage": "live_readback", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null },
102
+ { "stage": "product_acceptance", "status": "pending", "recordId": null, "ownerAgentId": null, "summary": null, "evidenceRefs": [], "externalGateIds": [], "occurredAt": null, "truthRef": null }
103
+ ],
104
+ "authorizationGranted": false
105
+ },
106
+ "projectTruthHash": "0000000000000000000000000000000000000000000000000000000000000000",
107
+ "authorizationGranted": false,
108
+ "deliveryDisposition": "work_ledger_complete",
109
+ "headline": "Dominant gap: delivery stage source; next: Record delivery stage source.",
110
+ "dominantGap": {
111
+ "kind": "delivery_stage",
112
+ "id": "source",
113
+ "title": "Delivery stage source",
114
+ "workItemId": null,
115
+ "agentId": null,
116
+ "reason": "Delivery stage source has no evidence-bound record.",
117
+ "truthRefs": ["project/definition.json"]
118
+ },
119
+ "nextAction": "Record delivery stage source.",
120
+ "nextActorId": null,
121
+ "exitCode": 0
122
+ }
123
+ ],
124
+ "$defs": {
125
+ "text": { "type": "string", "minLength": 1 },
126
+ "nullableText": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
127
+ "strings": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
128
+ "nonemptyStrings": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
129
+ "stageName": { "enum": ["source", "integration", "materialization", "deployment", "live_readback", "product_acceptance"] },
130
+ "nullableStage": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/stageName" }] },
131
+ "timestamp": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$" },
132
+ "nullableTimestamp": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/timestamp" }] },
133
+ "externalGate": {
134
+ "type": "object",
135
+ "additionalProperties": false,
136
+ "required": ["schemaVersion", "gateId", "title", "requiredFor", "gateStatus", "blocking", "ownerAgentId", "source", "summary", "evidenceRefs", "occurredAt", "truthRefs", "authorizationGranted"],
137
+ "properties": {
138
+ "schemaVersion": { "const": "OwlCodaRunKitExternalGateV1" },
139
+ "gateId": { "$ref": "#/$defs/text" },
140
+ "title": { "$ref": "#/$defs/text" },
141
+ "requiredFor": { "$ref": "#/$defs/stageName" },
142
+ "gateStatus": { "enum": ["pending", "passed", "blocked", "deferred"] },
143
+ "blocking": { "type": "boolean" },
144
+ "ownerAgentId": { "$ref": "#/$defs/text" },
145
+ "source": {
146
+ "type": "object",
147
+ "additionalProperties": false,
148
+ "required": ["adapterId", "ref", "sha256"],
149
+ "properties": {
150
+ "adapterId": { "$ref": "#/$defs/text" },
151
+ "ref": { "$ref": "#/$defs/text" },
152
+ "sha256": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" }
153
+ }
154
+ },
155
+ "summary": { "$ref": "#/$defs/text" },
156
+ "evidenceRefs": { "$ref": "#/$defs/nonemptyStrings" },
157
+ "occurredAt": { "$ref": "#/$defs/timestamp" },
158
+ "truthRefs": { "$ref": "#/$defs/nonemptyStrings" },
159
+ "authorizationGranted": { "const": false }
160
+ }
161
+ },
162
+ "deliveryStage": {
163
+ "type": "object",
164
+ "additionalProperties": false,
165
+ "required": ["stage", "status", "recordId", "ownerAgentId", "summary", "evidenceRefs", "externalGateIds", "occurredAt", "truthRef"],
166
+ "properties": {
167
+ "stage": { "$ref": "#/$defs/stageName" },
168
+ "status": { "enum": ["pending", "accepted", "rejected", "integrated", "materialized", "deployed", "failed", "rolled_back", "passed", "deferred"] },
169
+ "recordId": { "$ref": "#/$defs/nullableText" },
170
+ "ownerAgentId": { "$ref": "#/$defs/nullableText" },
171
+ "summary": { "$ref": "#/$defs/nullableText" },
172
+ "evidenceRefs": { "$ref": "#/$defs/strings" },
173
+ "externalGateIds": { "$ref": "#/$defs/strings" },
174
+ "occurredAt": { "$ref": "#/$defs/nullableTimestamp" },
175
+ "truthRef": { "$ref": "#/$defs/nullableText" }
176
+ }
177
+ },
178
+ "deliveryLifecycle": {
179
+ "type": "object",
180
+ "additionalProperties": false,
181
+ "required": ["schemaVersion", "lifecycleStatus", "currentStage", "nextRequiredStage", "blockingStage", "blockingExternalGateIds", "stages", "authorizationGranted"],
182
+ "properties": {
183
+ "schemaVersion": { "const": "OwlCodaRunKitDeliveryLifecycleV1" },
184
+ "lifecycleStatus": { "enum": ["in_progress", "blocked", "completed"] },
185
+ "currentStage": { "enum": ["work_ledger_incomplete", "work_ledger_complete", "source_accepted", "integrated", "materialized", "deployed", "live_readback_passed", "product_accepted"] },
186
+ "nextRequiredStage": { "$ref": "#/$defs/nullableStage" },
187
+ "blockingStage": { "$ref": "#/$defs/nullableStage" },
188
+ "blockingExternalGateIds": { "$ref": "#/$defs/strings" },
189
+ "stages": { "type": "array", "minItems": 6, "maxItems": 6, "items": { "$ref": "#/$defs/deliveryStage" } },
190
+ "authorizationGranted": { "const": false }
191
+ }
192
+ },
193
+ "dominantGap": {
194
+ "type": "object",
195
+ "additionalProperties": false,
196
+ "required": ["kind", "id", "title", "workItemId", "agentId", "reason", "truthRefs"],
197
+ "properties": {
198
+ "kind": { "enum": ["decision", "failed_work", "work_item", "deferred_verification", "integration_gate", "release_authority", "external_gate", "delivery_stage", "none"] },
199
+ "id": { "$ref": "#/$defs/nullableText" },
200
+ "title": { "$ref": "#/$defs/nullableText" },
201
+ "workItemId": { "$ref": "#/$defs/nullableText" },
202
+ "agentId": { "$ref": "#/$defs/nullableText" },
203
+ "reason": { "$ref": "#/$defs/nullableText" },
204
+ "truthRefs": { "$ref": "#/$defs/strings" }
205
+ }
206
+ }
207
+ }
208
+ }
@@ -0,0 +1,120 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://owlcoda.com/schemas/runkit/team-recommendation-v2.schema.json",
4
+ "title": "OwlCoda RunKit Team Recommendation V2",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion", "status", "project", "continuity", "coordination",
9
+ "assurance", "reasonCodes", "rejectedLighterModes", "lanes",
10
+ "pathConflicts", "acceptanceGaps", "ownerTransitions", "estimatedOverhead",
11
+ "nextCommand", "dispatch", "authorityBoundary", "authorizationGranted",
12
+ "exitCode", "teamCoordinationMode"
13
+ ],
14
+ "properties": {
15
+ "schemaVersion": { "const": "OwlCodaRunKitTeamRecommendationV2" },
16
+ "status": { "const": "team_delivery_recommended" },
17
+ "project": {
18
+ "type": "object", "additionalProperties": false,
19
+ "required": ["present", "projectId", "projectTruthHash", "overall"],
20
+ "properties": {
21
+ "present": { "type": "boolean" },
22
+ "projectId": { "$ref": "#/$defs/nullableText" },
23
+ "projectTruthHash": { "oneOf": [{ "type": "null" }, { "type": "string", "pattern": "^[a-f0-9]{64}$" }] },
24
+ "overall": { "$ref": "#/$defs/nullableText" }
25
+ }
26
+ },
27
+ "teamCoordinationMode": { "enum": ["off", "team"] },
28
+ "continuity": { "enum": ["none", "project_driver"] },
29
+ "coordination": { "enum": ["none", "project_driver_team"] },
30
+ "assurance": {
31
+ "type": "object", "additionalProperties": false,
32
+ "required": ["changed", "selection", "reason"],
33
+ "properties": {
34
+ "changed": { "const": false },
35
+ "selection": { "const": "unchanged" },
36
+ "reason": { "const": "team_delivery_does_not_select_assurance" }
37
+ }
38
+ },
39
+ "reasonCodes": { "$ref": "#/$defs/strings" },
40
+ "rejectedLighterModes": {
41
+ "type": "array",
42
+ "items": {
43
+ "type": "object", "additionalProperties": false,
44
+ "required": ["mode", "reasonCodes"],
45
+ "properties": { "mode": { "const": "off" }, "reasonCodes": { "$ref": "#/$defs/nonemptyStrings" } }
46
+ }
47
+ },
48
+ "lanes": { "type": "array", "items": { "$ref": "#/$defs/lane" } },
49
+ "pathConflicts": { "type": "array", "items": { "$ref": "#/$defs/pathConflict" } },
50
+ "acceptanceGaps": { "type": "array", "items": { "$ref": "#/$defs/acceptanceGap" } },
51
+ "ownerTransitions": { "type": "array", "items": { "$ref": "#/$defs/ownerTransition" } },
52
+ "estimatedOverhead": {
53
+ "type": "object", "additionalProperties": false,
54
+ "required": ["additionalOperatorSteps", "potentialPortablePackets"],
55
+ "properties": {
56
+ "additionalOperatorSteps": { "type": "integer", "minimum": 0 },
57
+ "potentialPortablePackets": { "type": "integer", "minimum": 0 }
58
+ }
59
+ },
60
+ "nextCommand": { "$ref": "#/$defs/nullableText" },
61
+ "dispatch": { "$ref": "#/$defs/dispatch" },
62
+ "authorityBoundary": { "$ref": "#/$defs/authorityBoundary" },
63
+ "authorizationGranted": { "const": false },
64
+ "exitCode": { "const": 0 }
65
+ },
66
+ "$defs": {
67
+ "text": { "type": "string", "minLength": 1 },
68
+ "nullableText": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
69
+ "strings": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
70
+ "nonemptyStrings": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
71
+ "lane": {
72
+ "type": "object", "additionalProperties": false,
73
+ "required": ["workItemId", "title", "status", "agentId", "dependencies", "unresolvedDependencies", "ownedPaths", "actionable", "parallelEligible", "coordinationFacts"],
74
+ "properties": {
75
+ "workItemId": { "$ref": "#/$defs/text" }, "title": { "$ref": "#/$defs/text" },
76
+ "status": { "$ref": "#/$defs/text" }, "agentId": { "$ref": "#/$defs/nullableText" },
77
+ "dependencies": { "$ref": "#/$defs/strings" }, "unresolvedDependencies": { "$ref": "#/$defs/strings" },
78
+ "ownedPaths": { "$ref": "#/$defs/nonemptyStrings" }, "actionable": { "type": "boolean" },
79
+ "parallelEligible": { "type": "boolean" }, "coordinationFacts": { "$ref": "#/$defs/strings" }
80
+ }
81
+ },
82
+ "pathConflict": {
83
+ "type": "object", "additionalProperties": false,
84
+ "required": ["leftWorkItemId", "leftPath", "rightWorkItemId", "rightPath"],
85
+ "properties": { "leftWorkItemId": { "$ref": "#/$defs/text" }, "leftPath": { "$ref": "#/$defs/text" }, "rightWorkItemId": { "$ref": "#/$defs/text" }, "rightPath": { "$ref": "#/$defs/text" } }
86
+ },
87
+ "acceptanceGap": {
88
+ "type": "object", "additionalProperties": false,
89
+ "required": ["workItemId", "code", "message"],
90
+ "properties": { "workItemId": { "$ref": "#/$defs/text" }, "code": { "const": "verification_model_family_unbound" }, "message": { "$ref": "#/$defs/text" } }
91
+ },
92
+ "ownerTransition": {
93
+ "type": "object", "additionalProperties": false,
94
+ "required": ["workItemId", "facts"],
95
+ "properties": { "workItemId": { "$ref": "#/$defs/text" }, "facts": { "$ref": "#/$defs/nonemptyStrings" } }
96
+ },
97
+ "dispatch": {
98
+ "type": "object", "additionalProperties": false,
99
+ "required": ["mode", "permitted", "nextCommand"],
100
+ "properties": { "mode": { "const": "none" }, "permitted": { "const": false }, "nextCommand": { "type": "null" } }
101
+ },
102
+ "authorityBoundary": {
103
+ "type": "object", "additionalProperties": false,
104
+ "required": ["agentDispatch", "git", "release", "deployment", "production", "business", "automation", "money"],
105
+ "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 } }
106
+ }
107
+ },
108
+ "examples": [{
109
+ "schemaVersion": "OwlCodaRunKitTeamRecommendationV2", "status": "team_delivery_recommended",
110
+ "project": { "present": false, "projectId": null, "projectTruthHash": null, "overall": null },
111
+ "teamCoordinationMode": "off", "continuity": "none", "coordination": "none",
112
+ "assurance": { "changed": false, "selection": "unchanged", "reason": "team_delivery_does_not_select_assurance" },
113
+ "reasonCodes": ["project_driver_not_initialized"], "rejectedLighterModes": [], "lanes": [],
114
+ "pathConflicts": [], "acceptanceGaps": [], "ownerTransitions": [],
115
+ "estimatedOverhead": { "additionalOperatorSteps": 0, "potentialPortablePackets": 0 },
116
+ "nextCommand": null, "dispatch": { "mode": "none", "permitted": false, "nextCommand": null },
117
+ "authorityBoundary": { "agentDispatch": false, "git": false, "release": false, "deployment": false, "production": false, "business": false, "automation": false, "money": false },
118
+ "authorizationGranted": false, "exitCode": 0
119
+ }]
120
+ }
@@ -126,6 +126,77 @@ function requireSurface(condition, surface) {
126
126
  }
127
127
  }
128
128
 
129
+ const REGISTRY_GATED_POLICY_V2_FIELDS = Object.freeze([
130
+ "artifactVersion",
131
+ "authorizationGranted",
132
+ "embeddedAttestComponentVersion",
133
+ "exactVersionRequired",
134
+ "forbiddenAdoptionSources",
135
+ "foreignProjectWriteAuthorized",
136
+ "githubActionRequired",
137
+ "packageName",
138
+ "registry",
139
+ "registryEvidenceMustBeExternal",
140
+ "registryEvidenceSchemaVersion",
141
+ "registryRequiredBeforeAdoption",
142
+ "requiredRegistryBindings",
143
+ "rollbackRelease",
144
+ "schemaVersion",
145
+ "signatureRequired",
146
+ "standaloneAttestPublicationRequired",
147
+ "status",
148
+ ]);
149
+
150
+ function exactStringArray(actual, expected) {
151
+ return Array.isArray(actual)
152
+ && actual.length === expected.length
153
+ && actual.every((value, index) => value === expected[index]);
154
+ }
155
+
156
+ function registryGatedPolicyV2Exact(policy, core) {
157
+ const rollback = policy?.rollbackRelease;
158
+ return policy?.schemaVersion === "OwlCodaRunKitRegistryReleasePolicyV2"
159
+ && Object.keys(policy).sort().join("\n") === REGISTRY_GATED_POLICY_V2_FIELDS.join("\n")
160
+ && policy.status === "release_artifact_registry_gated"
161
+ && policy.packageName === "owlrunkit"
162
+ && policy.artifactVersion === core.coreVersion
163
+ && policy.registry === "https://registry.npmjs.org"
164
+ && policy.registryRequiredBeforeAdoption === true
165
+ && policy.exactVersionRequired === true
166
+ && exactStringArray(policy.requiredRegistryBindings, [
167
+ "packageName",
168
+ "version",
169
+ "shasum",
170
+ "integrity",
171
+ "tarballUrl",
172
+ ])
173
+ && exactStringArray(policy.forbiddenAdoptionSources, [
174
+ "directory",
175
+ "file",
176
+ "git",
177
+ "local_tarball",
178
+ "symlink",
179
+ "workspace",
180
+ ])
181
+ && rollback?.packageName === "owlrunkit"
182
+ && /^\d+\.\d+\.\d+$/u.test(rollback?.version ?? "")
183
+ && rollback.version !== core.coreVersion
184
+ && /^[a-f0-9]{40}$/u.test(rollback?.shasum ?? "")
185
+ && /^sha512-[A-Za-z0-9+/]+={0,2}$/u.test(rollback?.integrity ?? "")
186
+ && rollback.tarballUrl
187
+ === `https://registry.npmjs.org/owlrunkit/-/owlrunkit-${rollback.version}.tgz`
188
+ && Object.keys(rollback).sort().join("\n")
189
+ === ["integrity", "packageName", "shasum", "tarballUrl", "version"].join("\n")
190
+ && policy.registryEvidenceMustBeExternal === true
191
+ && policy.registryEvidenceSchemaVersion === "OwlCodaRunKitRegistryReleaseEvidenceV1"
192
+ && policy.embeddedAttestComponentVersion === "0.2.0"
193
+ && policy.standaloneAttestPublicationRequired === false
194
+ && policy.signatureRequired === false
195
+ && policy.githubActionRequired === false
196
+ && policy.foreignProjectWriteAuthorized === false
197
+ && policy.authorizationGranted === false;
198
+ }
199
+
129
200
  export function verifyReleaseIdentitySurfacesV1(input) {
130
201
  const core = input?.core;
131
202
  requireSurface(
@@ -155,6 +226,7 @@ export function verifyReleaseIdentitySurfacesV1(input) {
155
226
  };
156
227
  const releasePolicy = input.releasePolicy ?? null;
157
228
  const candidateUnpublished = releasePolicy?.status === "release_candidate_unpublished";
229
+ const registryGatedArtifact = releasePolicy?.status === "release_artifact_registry_gated";
158
230
  if (candidateUnpublished) {
159
231
  requireSurface(
160
232
  releasePolicy?.packageName === "owlrunkit"
@@ -167,6 +239,8 @@ export function verifyReleaseIdentitySurfacesV1(input) {
167
239
  && releasePolicy.currentPublishedRelease.version !== core.coreVersion,
168
240
  "release_policy",
169
241
  );
242
+ } else if (registryGatedArtifact) {
243
+ requireSurface(registryGatedPolicyV2Exact(releasePolicy, core), "release_policy");
170
244
  }
171
245
  const skillExact = (markdown) => {
172
246
  if (typeof markdown !== "string") return false;
@@ -175,6 +249,19 @@ export function verifyReleaseIdentitySurfacesV1(input) {
175
249
  && hashes[0] === core.coreManifestSha256
176
250
  && markdown.includes(`Core \`${core.coreVersion}\``);
177
251
  if (!identityExact) return false;
252
+ if (registryGatedArtifact) {
253
+ const rollback = releasePolicy.rollbackRelease.version;
254
+ return markdown.includes(
255
+ `Bundled registry-gated artifact: standalone \`owlrunkit@${core.coreVersion}\``,
256
+ )
257
+ && markdown.includes(
258
+ `provenance for \`owlrunkit@${core.coreVersion}\` is independently verified`,
259
+ )
260
+ && markdown.includes(
261
+ `published rollback baseline for this artifact is \`owlrunkit@${rollback}\``,
262
+ )
263
+ && !/(?:candidate is not published|current published release remains|already published|is published|registry publication pending|unpublished release candidate)/iu.test(markdown);
264
+ }
178
265
  if (!candidateUnpublished) {
179
266
  return markdown.includes(
180
267
  `Bundled release: standalone \`owlrunkit@${core.coreVersion}\``,