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.
- package/CHANGELOG.md +15 -0
- package/README.md +38 -5
- package/docs/architecture/OWLCODA_RUNKIT_020_TEAM_DELIVERY_PHASE1_PRODUCT_DECISION_20260813.md +296 -0
- package/integrations/codex/skills/owlcoda-runkit/SKILL.md +28 -6
- package/integrations/codex/skills/owlcoda-runkit/assets/templates/config.json +3 -3
- package/package.json +1 -1
- package/packages/attest/distribution-manifest-v1.json +5 -0
- package/packages/attest/src/quick.mjs +5 -0
- package/registry-release-policy-v1.json +5 -5
- package/sbom.spdx.json +4 -4
- package/scripts/runkit-contract/core-contract.mjs +8 -1
- package/scripts/runkit-contract/formal-workflow.mjs +1 -1
- package/scripts/runkit-contract/project-cli-resolver.mjs +4 -1
- package/scripts/runkit-contract/runkit-cli.mjs +80 -3
- package/scripts/runkit-contract/schemas/candidate-transfer-packet-v1.schema.json +98 -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-recommendation-v1.schema.json +121 -0
- package/scripts/runkit-contract/schemas/team-task-packet-v2.schema.json +228 -0
- package/scripts/runkit-contract/team-delivery.mjs +906 -0
|
@@ -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
|
-
|
|
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
|
+
}
|