owlrunkit 0.19.2 → 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.
@@ -197,6 +197,14 @@ import {
197
197
  captureTargetWorkspaceSnapshotV1,
198
198
  importExternalDeliveryV1,
199
199
  } from "./project-external-delivery.mjs";
200
+ import {
201
+ formatTeamDeliveryRecommendationHumanV1,
202
+ formatTeamDeliveryStatusHumanV1,
203
+ formatTeamPacketValidationHumanV1,
204
+ readTeamDeliveryStatusV1,
205
+ recommendTeamDeliveryV1,
206
+ validateTeamPacketFileV1,
207
+ } from "./team-delivery.mjs";
200
208
 
201
209
  const TOP_LEVEL_HELP = `OwlRunKit ${CORE_VERSION}
202
210
 
@@ -234,10 +242,10 @@ Fleet and status
234
242
 
235
243
  Agent team projects
236
244
  npx --no-install owlrunkit project <init|assign|checkpoint|handoff|reject-and-return|reopen-upstream|transfer|work-item revise-scope|decision|verification|capture|target-snapshot|import-delivery|status|takeover|successor> [options]
237
- Durable Agent work, dependencies, decisions, gates, progress, and handoffs.
245
+ npx --no-install owlrunkit team <recommend|status|packet validate> [options]
246
+ Durable project truth plus read-only Team recommendation and packet validation. No Agent dispatch.
238
247
  Core successor
239
248
  npx --no-install owlrunkit core-successor <plan|apply|resume> --workspace . [...]
240
-
241
249
  Other onboarding commands:
242
250
  npx --no-install owlrunkit profiles validate --workspace .; npx --no-install owlrunkit profiles impact --workspace . --changed <path>
243
251
  npx --no-install owlrunkit inspect --workspace . --json
@@ -308,6 +316,34 @@ Persisted mode preferences are not part of this release.
308
316
  npx --no-install owlrunkit mode status --workspace <directory> [--json]
309
317
 
310
318
  Reads the current mode preference source without creating project state.
319
+ `,
320
+ team: `Usage:
321
+ npx --no-install owlrunkit team recommend --workspace <directory> [--json]
322
+ npx --no-install owlrunkit team status --workspace <directory> [--json]
323
+ npx --no-install owlrunkit team packet validate --workspace <directory>
324
+ --packet <packet.json> [--json]
325
+
326
+ Projects existing Project Driver truth into a read-only Team Delivery view and
327
+ validates portable Team packets. It never dispatches an Agent or grants Git,
328
+ release, deployment, production, business, automation, or money authority.
329
+ `,
330
+ "team recommend": `Usage:
331
+ npx --no-install owlrunkit team recommend --workspace <directory> [--json]
332
+
333
+ Recommends Team coordination only when current Project Driver facts require it.
334
+ Single ordinary lanes and uninitialized projects remain off. This is read-only.
335
+ `,
336
+ "team status": `Usage:
337
+ npx --no-install owlrunkit team status --workspace <directory> [--json]
338
+
339
+ Reads a Team Delivery projection from Project Driver. No second graph is stored.
340
+ `,
341
+ "team packet validate": `Usage:
342
+ npx --no-install owlrunkit team packet validate --workspace <directory>
343
+ --packet <packet.json> [--json]
344
+
345
+ Validates a TeamTaskPacketV2, TeamAcceptancePacketV2, or
346
+ CandidateTransferPacketV1 against current project truth without writing state.
311
347
  `,
312
348
  "quick-attest": `Usage:
313
349
  npx --no-install owlrunkit quick-attest --workspace <directory> --receipt <receipt.json> [--json]
@@ -2307,6 +2343,7 @@ export async function runCli(argv = process.argv.slice(2), runtimeHooks = {}) {
2307
2343
  "mode",
2308
2344
  "profiles",
2309
2345
  "project",
2346
+ "team",
2310
2347
  ]).has(command);
2311
2348
  let [action, ...nestedOptions] = nested ? optionValues : [null, ...optionValues];
2312
2349
  if (command === "project" && action === "work-item"
@@ -2314,6 +2351,11 @@ export async function runCli(argv = process.argv.slice(2), runtimeHooks = {}) {
2314
2351
  action = "work-item revise-scope";
2315
2352
  nestedOptions = nestedOptions.slice(1);
2316
2353
  }
2354
+ if (command === "team" && action === "packet"
2355
+ && nestedOptions[0] === "validate") {
2356
+ action = "packet validate";
2357
+ nestedOptions = nestedOptions.slice(1);
2358
+ }
2317
2359
  const helpRequested = optionValues.includes("--help")
2318
2360
  || optionValues.includes("-h");
2319
2361
  if (helpRequested) {
@@ -2390,6 +2432,8 @@ export async function runCli(argv = process.argv.slice(2), runtimeHooks = {}) {
2390
2432
  ]
2391
2433
  : command === "mode" && action === "status"
2392
2434
  ? ["json"]
2435
+ : command === "team"
2436
+ ? ["json"]
2393
2437
  : command === "inspect"
2394
2438
  ? ["json", "verbose", "history"]
2395
2439
  : command === "init"
@@ -2591,6 +2635,39 @@ export async function runCli(argv = process.argv.slice(2), runtimeHooks = {}) {
2591
2635
  }
2592
2636
  throw new Error("Usage: npx --no-install owlrunkit mode <recommend|status> --workspace <directory>");
2593
2637
  }
2638
+ if (command === "team") {
2639
+ const root = workspace(options);
2640
+ if (action === "recommend") {
2641
+ assertOnlyOptions(options, ["workspace", "json"]);
2642
+ const recommendation = recommendTeamDeliveryV1({ workspaceRoot: root });
2643
+ return options.json === true
2644
+ ? recommendation
2645
+ : withHumanOutput(
2646
+ recommendation,
2647
+ formatTeamDeliveryRecommendationHumanV1(recommendation),
2648
+ );
2649
+ }
2650
+ if (action === "status") {
2651
+ assertOnlyOptions(options, ["workspace", "json"]);
2652
+ const status = readTeamDeliveryStatusV1({ workspaceRoot: root });
2653
+ return options.json === true
2654
+ ? status
2655
+ : withHumanOutput(status, formatTeamDeliveryStatusHumanV1(status));
2656
+ }
2657
+ if (action === "packet validate") {
2658
+ assertOnlyOptions(options, ["workspace", "packet", "json"]);
2659
+ const validation = validateTeamPacketFileV1({
2660
+ workspaceRoot: root,
2661
+ packetPath: requireOption(options, "packet"),
2662
+ });
2663
+ return options.json === true
2664
+ ? validation
2665
+ : withHumanOutput(validation, formatTeamPacketValidationHumanV1(validation));
2666
+ }
2667
+ throw new Error(
2668
+ "Usage: npx --no-install owlrunkit team <recommend|status|packet validate> --workspace <directory>",
2669
+ );
2670
+ }
2594
2671
  if (command === "fleet") {
2595
2672
  if (action === "register-root") {
2596
2673
  const registered = await registerFleetCoverageRoot({
@@ -4253,7 +4330,7 @@ export async function runCli(argv = process.argv.slice(2), runtimeHooks = {}) {
4253
4330
  return withControlTransaction(root, () => closeout(options));
4254
4331
  }
4255
4332
  if (command === "finish") return finishExecution(options);
4256
- throw new Error("Usage: npx --no-install owlrunkit <bootstrap|init|doctor|adopt|mode|assurance|fleet|profiles|project|status|formal|candidate|deployment|core-successor|start|verify|repair|offline-export|offline-import|quick-verify|quick-reuse|quick-runtime-verify|quick-attest|quick-metrics|efficiency|finish|plan|inspect|lease|delivery|coverage-adopt|resume|verify-plan|resource-preflight|snapshot|visual-smoke|finalize|ready-for-commit|closeout> [options]");
4333
+ throw new Error("Usage: npx --no-install owlrunkit <bootstrap|init|doctor|adopt|mode|team|assurance|fleet|profiles|project|status|formal|candidate|deployment|core-successor|start|verify|repair|offline-export|offline-import|quick-verify|quick-reuse|quick-runtime-verify|quick-attest|quick-metrics|efficiency|finish|plan|inspect|lease|delivery|coverage-adopt|resume|verify-plan|resource-preflight|snapshot|visual-smoke|finalize|ready-for-commit|closeout> [options]");
4257
4334
  } catch (error) {
4258
4335
  return {
4259
4336
  status: "invalid_input",
@@ -0,0 +1,98 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://owlcoda.com/schemas/runkit/candidate-transfer-packet-v1.schema.json",
4
+ "title": "OwlCoda RunKit Candidate Transfer Packet V1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion", "packetId", "projectBinding", "gateId", "workItemId",
9
+ "candidateId", "candidateSha256", "baseSha", "head", "branch", "worktree",
10
+ "dirtyManifestSha256", "patchBundleRef", "snapshotRef", "reconstructionRefs",
11
+ "protectedArtifacts", "previousOwner", "nextOwner", "lifecycle", "handoffAck",
12
+ "verificationStatus", "authorityBoundary", "authorizationGranted"
13
+ ],
14
+ "properties": {
15
+ "schemaVersion": { "const": "OwlCodaRunKitCandidateTransferPacketV1" },
16
+ "packetId": { "$ref": "#/$defs/id" },
17
+ "projectBinding": { "$ref": "#/$defs/projectBinding" },
18
+ "gateId": { "$ref": "#/$defs/id" },
19
+ "workItemId": { "$ref": "#/$defs/id" },
20
+ "candidateId": { "$ref": "#/$defs/id" },
21
+ "candidateSha256": { "$ref": "#/$defs/sha256Ref" },
22
+ "baseSha": { "$ref": "#/$defs/gitRef" },
23
+ "head": { "$ref": "#/$defs/gitRef" },
24
+ "branch": { "$ref": "#/$defs/text" },
25
+ "worktree": { "$ref": "#/$defs/absolutePath" },
26
+ "dirtyManifestSha256": { "$ref": "#/$defs/sha256Ref" },
27
+ "patchBundleRef": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/artifactSha256Ref" }] },
28
+ "snapshotRef": { "$ref": "#/$defs/artifactSha256Ref" },
29
+ "reconstructionRefs": { "$ref": "#/$defs/nonemptyStrings" },
30
+ "protectedArtifacts": { "$ref": "#/$defs/strings" },
31
+ "previousOwner": { "$ref": "#/$defs/id" },
32
+ "nextOwner": { "$ref": "#/$defs/id" },
33
+ "lifecycle": { "enum": ["candidate_active", "transfer_requested", "packet_generated", "new_owner_validation", "handoff_ack", "old_writer_release"] },
34
+ "handoffAck": {
35
+ "type": "object",
36
+ "additionalProperties": false,
37
+ "required": ["status", "agent", "occurredAt", "evidenceRefs"],
38
+ "properties": {
39
+ "status": { "enum": ["pending", "accepted", "rejected"] },
40
+ "agent": { "$ref": "#/$defs/nullableText" },
41
+ "occurredAt": { "$ref": "#/$defs/nullableIsoUtc" },
42
+ "evidenceRefs": { "$ref": "#/$defs/strings" }
43
+ }
44
+ },
45
+ "verificationStatus": { "enum": ["source_candidate_unverified", "source_candidate_verified", "accepted", "rework_required"] },
46
+ "authorityBoundary": { "$ref": "#/$defs/authorityBoundary" },
47
+ "authorizationGranted": { "const": false }
48
+ },
49
+ "$defs": {
50
+ "id": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$" },
51
+ "text": { "type": "string", "minLength": 1 },
52
+ "nullableText": { "oneOf": [{ "type": "null" }, { "$ref": "#/$defs/text" }] },
53
+ "nullableIsoUtc": { "oneOf": [{ "type": "null" }, { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$" }] },
54
+ "strings": { "type": "array", "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
55
+ "nonemptyStrings": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
56
+ "sha256Ref": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
57
+ "artifactSha256Ref": { "type": "string", "pattern": "^artifact:sha256:[a-f0-9]{64}$" },
58
+ "gitRef": { "type": "string", "pattern": "^git:[a-f0-9]{40}([a-f0-9]{24})?$" },
59
+ "absolutePath": { "type": "string", "pattern": "^(?:/|[A-Za-z]:[\\\\/]|\\\\\\\\)" },
60
+ "projectBinding": { "type": "object", "additionalProperties": false, "required": ["projectId", "projectTruthHash"], "properties": { "projectId": { "$ref": "#/$defs/id" }, "projectTruthHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" } } },
61
+ "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 } } }
62
+ },
63
+ "allOf": [{
64
+ "if": {
65
+ "properties": { "lifecycle": { "enum": ["handoff_ack", "old_writer_release"] } },
66
+ "required": ["lifecycle"]
67
+ },
68
+ "then": {
69
+ "properties": {
70
+ "handoffAck": {
71
+ "properties": {
72
+ "status": { "const": "accepted" },
73
+ "agent": { "$ref": "#/$defs/text" },
74
+ "occurredAt": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d{3})?Z$" },
75
+ "evidenceRefs": { "minItems": 1 }
76
+ }
77
+ }
78
+ }
79
+ }
80
+ }],
81
+ "examples": [{
82
+ "schemaVersion": "OwlCodaRunKitCandidateTransferPacketV1", "packetId": "transfer-packet-001",
83
+ "projectBinding": { "projectId": "team-phase1", "projectTruthHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },
84
+ "gateId": "ready", "workItemId": "work-1", "candidateId": "candidate-001",
85
+ "candidateSha256": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
86
+ "baseSha": "git:2222222222222222222222222222222222222222", "head": "git:3333333333333333333333333333333333333333",
87
+ "branch": "codex/team-a", "worktree": "/workspace/team-a",
88
+ "dirtyManifestSha256": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
89
+ "patchBundleRef": "artifact:sha256:5555555555555555555555555555555555555555555555555555555555555555",
90
+ "snapshotRef": "artifact:sha256:6666666666666666666666666666666666666666666666666666666666666666",
91
+ "reconstructionRefs": ["git:2222222222222222222222222222222222222222"], "protectedArtifacts": ["docs/contract.md"],
92
+ "previousOwner": "agent-a", "nextOwner": "agent-b", "lifecycle": "handoff_ack",
93
+ "handoffAck": { "status": "accepted", "agent": "agent-b", "occurredAt": "2026-08-13T08:00:00.000Z", "evidenceRefs": ["receipt:transfer-001"] },
94
+ "verificationStatus": "source_candidate_unverified",
95
+ "authorityBoundary": { "agentDispatch": false, "git": false, "release": false, "deployment": false, "production": false, "business": false, "automation": false, "money": false },
96
+ "authorizationGranted": false
97
+ }]
98
+ }
@@ -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,121 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://owlcoda.com/schemas/runkit/team-recommendation-v1.schema.json",
4
+ "title": "OwlCoda RunKit Team Recommendation V1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": [
8
+ "schemaVersion", "status", "project", "recommendedMode", "continuity",
9
+ "coordination", "assurance", "reasonCodes", "rejectedLighterModes", "lanes",
10
+ "pathConflicts", "acceptanceGaps", "ownerTransitions", "estimatedOverhead",
11
+ "nextCommand", "dispatch", "authorityBoundary", "authorizationGranted", "exitCode"
12
+ ],
13
+ "properties": {
14
+ "schemaVersion": { "const": "OwlCodaRunKitTeamRecommendationV1" },
15
+ "status": { "const": "team_delivery_recommended" },
16
+ "project": {
17
+ "type": "object",
18
+ "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
+ "recommendedMode": { "enum": ["off", "team"] },
28
+ "continuity": { "enum": ["none", "project_driver"] },
29
+ "coordination": { "enum": ["none", "project_driver_team"] },
30
+ "assurance": {
31
+ "type": "object",
32
+ "additionalProperties": false,
33
+ "required": ["changed", "selection", "reason"],
34
+ "properties": {
35
+ "changed": { "const": false },
36
+ "selection": { "const": "unchanged" },
37
+ "reason": { "const": "team_delivery_does_not_select_assurance" }
38
+ }
39
+ },
40
+ "reasonCodes": { "$ref": "#/$defs/strings" },
41
+ "rejectedLighterModes": {
42
+ "type": "array",
43
+ "items": {
44
+ "type": "object", "additionalProperties": false,
45
+ "required": ["mode", "reasonCodes"],
46
+ "properties": { "mode": { "const": "off" }, "reasonCodes": { "$ref": "#/$defs/nonemptyStrings" } }
47
+ }
48
+ },
49
+ "lanes": { "type": "array", "items": { "$ref": "#/$defs/lane" } },
50
+ "pathConflicts": { "type": "array", "items": { "$ref": "#/$defs/pathConflict" } },
51
+ "acceptanceGaps": { "type": "array", "items": { "$ref": "#/$defs/acceptanceGap" } },
52
+ "ownerTransitions": { "type": "array", "items": { "$ref": "#/$defs/ownerTransition" } },
53
+ "estimatedOverhead": {
54
+ "type": "object", "additionalProperties": false,
55
+ "required": ["additionalOperatorSteps", "potentialPortablePackets"],
56
+ "properties": {
57
+ "additionalOperatorSteps": { "type": "integer", "minimum": 0 },
58
+ "potentialPortablePackets": { "type": "integer", "minimum": 0 }
59
+ }
60
+ },
61
+ "nextCommand": { "$ref": "#/$defs/nullableText" },
62
+ "dispatch": { "$ref": "#/$defs/dispatch" },
63
+ "authorityBoundary": { "$ref": "#/$defs/authorityBoundary" },
64
+ "authorizationGranted": { "const": false },
65
+ "exitCode": { "const": 0 }
66
+ },
67
+ "$defs": {
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
+ "nonemptyStrings": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "#/$defs/text" } },
72
+ "lane": {
73
+ "type": "object", "additionalProperties": false,
74
+ "required": ["workItemId", "title", "status", "agentId", "dependencies", "unresolvedDependencies", "ownedPaths", "actionable", "parallelEligible", "coordinationFacts"],
75
+ "properties": {
76
+ "workItemId": { "$ref": "#/$defs/text" }, "title": { "$ref": "#/$defs/text" },
77
+ "status": { "$ref": "#/$defs/text" }, "agentId": { "$ref": "#/$defs/nullableText" },
78
+ "dependencies": { "$ref": "#/$defs/strings" }, "unresolvedDependencies": { "$ref": "#/$defs/strings" },
79
+ "ownedPaths": { "$ref": "#/$defs/nonemptyStrings" }, "actionable": { "type": "boolean" },
80
+ "parallelEligible": { "type": "boolean" }, "coordinationFacts": { "$ref": "#/$defs/strings" }
81
+ }
82
+ },
83
+ "pathConflict": {
84
+ "type": "object", "additionalProperties": false,
85
+ "required": ["leftWorkItemId", "leftPath", "rightWorkItemId", "rightPath"],
86
+ "properties": { "leftWorkItemId": { "$ref": "#/$defs/text" }, "leftPath": { "$ref": "#/$defs/text" }, "rightWorkItemId": { "$ref": "#/$defs/text" }, "rightPath": { "$ref": "#/$defs/text" } }
87
+ },
88
+ "acceptanceGap": {
89
+ "type": "object", "additionalProperties": false,
90
+ "required": ["workItemId", "code", "message"],
91
+ "properties": { "workItemId": { "$ref": "#/$defs/text" }, "code": { "const": "verification_model_family_unbound" }, "message": { "$ref": "#/$defs/text" } }
92
+ },
93
+ "ownerTransition": {
94
+ "type": "object", "additionalProperties": false,
95
+ "required": ["workItemId", "facts"],
96
+ "properties": { "workItemId": { "$ref": "#/$defs/text" }, "facts": { "$ref": "#/$defs/nonemptyStrings" } }
97
+ },
98
+ "dispatch": {
99
+ "type": "object", "additionalProperties": false,
100
+ "required": ["mode", "permitted", "nextCommand"],
101
+ "properties": { "mode": { "const": "none" }, "permitted": { "const": false }, "nextCommand": { "type": "null" } }
102
+ },
103
+ "authorityBoundary": {
104
+ "type": "object", "additionalProperties": false,
105
+ "required": ["agentDispatch", "git", "release", "deployment", "production", "business", "automation", "money"],
106
+ "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 } }
107
+ }
108
+ },
109
+ "examples": [{
110
+ "schemaVersion": "OwlCodaRunKitTeamRecommendationV1", "status": "team_delivery_recommended",
111
+ "project": { "present": false, "projectId": null, "projectTruthHash": null, "overall": null },
112
+ "recommendedMode": "off", "continuity": "none", "coordination": "none",
113
+ "assurance": { "changed": false, "selection": "unchanged", "reason": "team_delivery_does_not_select_assurance" },
114
+ "reasonCodes": ["project_driver_not_initialized"], "rejectedLighterModes": [], "lanes": [],
115
+ "pathConflicts": [], "acceptanceGaps": [], "ownerTransitions": [],
116
+ "estimatedOverhead": { "additionalOperatorSteps": 0, "potentialPortablePackets": 0 },
117
+ "nextCommand": null, "dispatch": { "mode": "none", "permitted": false, "nextCommand": null },
118
+ "authorityBoundary": { "agentDispatch": false, "git": false, "release": false, "deployment": false, "production": false, "business": false, "automation": false, "money": false },
119
+ "authorizationGranted": false, "exitCode": 0
120
+ }]
121
+ }