@danmoisan/drm-copilot-mcp 1.1.10 → 1.1.12

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 (82) hide show
  1. package/out/mcp-server.js +3517 -1104
  2. package/package.json +1 -1
  3. package/resources/claude-customizations/.claude/agents/epic-orchestrator.md +1 -1
  4. package/resources/claude-customizations/.claude/agents/epic-planner.md +4 -1
  5. package/resources/claude-customizations/.claude/agents/parallel-orchestrator.md +15 -2
  6. package/resources/claude-customizations/.claude/agents/parallel-planner.md +3 -0
  7. package/resources/claude-customizations/.claude/agents/pr-author.md +15 -0
  8. package/resources/claude-customizations/.claude/hooks/enforce-epic-merge-gate-authorization.ps1 +443 -0
  9. package/resources/claude-customizations/.claude/hooks/enforce-epic-merge-gate.ps1 +82 -51
  10. package/resources/claude-customizations/.claude/hooks/enforce-epic-worktree-removal-gate.ps1 +52 -3
  11. package/resources/claude-customizations/.claude/hooks/enforce-model-routing-receipt.ps1 +120 -5
  12. package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate-epic-scope.ps1 +127 -0
  13. package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate-helpers.ps1 +163 -15
  14. package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate.ps1 +21 -28
  15. package/resources/claude-customizations/.claude/hooks/enforce-parallel-abandon-gate.ps1 +103 -6
  16. package/resources/claude-customizations/.claude/hooks/enforce-parallel-worktree-removal-gate.ps1 +124 -8
  17. package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill-helpers.ps1 +171 -15
  18. package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill.epic-base-branch.ps1 +50 -10
  19. package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill.ps1 +3 -1
  20. package/resources/claude-customizations/.claude/hooks/enforce-prd-feature-before-planner-helpers.ps1 +332 -0
  21. package/resources/claude-customizations/.claude/hooks/enforce-prd-feature-before-planner.ps1 +211 -182
  22. package/resources/claude-customizations/.claude/hooks/enforce-promotion-mcp-only.ps1 +35 -7
  23. package/resources/claude-customizations/.claude/hooks/hook-command-invocation.ps1 +483 -0
  24. package/resources/claude-customizations/.claude/hooks/hook-command-scanner.ps1 +483 -0
  25. package/resources/claude-customizations/.claude/hooks/validate-bash.ps1 +218 -6
  26. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadius.psm1 +18 -75
  27. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusConflict.psm1 +290 -0
  28. package/resources/claude-customizations/.claude/lib/cleanup-manifest/CleanupWorktreeManifest.psm1 +415 -0
  29. package/resources/claude-customizations/.claude/lib/codex-routing/CodexDeployment.psm1 +1 -0
  30. package/resources/claude-customizations/.claude/lib/project-file-merge/ProjectFileMerge.psm1 +355 -0
  31. package/resources/claude-customizations/.claude/lib/project-file-merge/ProjectFileMergeGrammar.psm1 +318 -0
  32. package/resources/claude-customizations/.claude/lib/project-file-merge/Resolve-MergeableConflict.ps1 +229 -0
  33. package/resources/claude-customizations/.claude/lib/worktree-resolution/EpicScopeReadiness.psm1 +176 -0
  34. package/resources/claude-customizations/.claude/lib/worktree-resolution/EpicScopeResolution.psm1 +369 -0
  35. package/resources/claude-customizations/.claude/lib/worktree-resolution/WorktreeItemResolution.psm1 +392 -0
  36. package/resources/claude-customizations/.claude/lib/worktree-resolution/WorktreeResolution.psm1 +500 -0
  37. package/resources/claude-customizations/.claude/lib/worktree-resolution/WorktreeTargetResolution.psm1 +347 -0
  38. package/resources/claude-customizations/.claude/rules/orchestrator-state.md +27 -0
  39. package/resources/claude-customizations/.claude/rules/parallel-orchestration.md +66 -2
  40. package/resources/claude-customizations/.claude/skills/cleanup-merged-worktrees/SKILL.md +323 -16
  41. package/resources/claude-customizations/.claude/skills/epic-orchestrate/SKILL.md +14 -1
  42. package/resources/claude-customizations/.claude/skills/epic-plan/SKILL.md +4 -0
  43. package/resources/claude-customizations/.claude/skills/orchestrate/SKILL.md +46 -1
  44. package/resources/claude-customizations/.claude/skills/parallel-add/SKILL.md +3 -1
  45. package/resources/claude-customizations/.claude/skills/parallel-orchestrate/SKILL.md +75 -8
  46. package/resources/claude-customizations/.claude/skills/parallel-plan/SKILL.md +6 -0
  47. package/resources/claude-customizations/.claude/skills/powershell-orchestration-state-machine/SKILL.md +29 -1
  48. package/resources/claude-customizations/.claude/skills/pr-author/SKILL.md +15 -0
  49. package/resources/claude-customizations/.claude/skills/quota-throttling/SKILL.md +221 -0
  50. package/resources/claude-customizations/config/blast-radius.json +7 -0
  51. package/resources/claude-customizations/pack-manifests/core.json +16 -0
  52. package/resources/codex-and-agents-customizations/.agents/skills/codex-model-routing/SKILL.md +13 -14
  53. package/resources/codex-and-agents-customizations/.agents/skills/orchestrate/SKILL.md +41 -0
  54. package/resources/codex-and-agents-customizations/.agents/skills/orchestrator-state/SKILL.md +41 -0
  55. package/resources/codex-and-agents-customizations/.agents/skills/repo-automation-adapter/SKILL.md +26 -0
  56. package/resources/codex-and-agents-customizations/.codex/config.toml +1 -1
  57. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-merge-gate.ps1 +242 -3
  58. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-planning-only.ps1 +67 -12
  59. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-worktree-removal-gate.ps1 +34 -8
  60. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate-helpers.ps1 +163 -15
  61. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate.ps1 +6 -1
  62. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-promotion-mcp-only.ps1 +34 -7
  63. package/resources/codex-and-agents-customizations/.codex/hooks/hook-command-invocation.ps1 +483 -0
  64. package/resources/codex-and-agents-customizations/.codex/hooks/hook-command-scanner.ps1 +483 -0
  65. package/resources/codex-and-agents-customizations/.codex/hooks/validate-bash.ps1 +130 -2
  66. package/resources/codex-and-agents-customizations/.codex/scripts/Resolve-CodexDeployment.ps1 +87 -0
  67. package/resources/codex-and-agents-customizations/.codex/scripts/Resolve-CodexTopology.ps1 +96 -0
  68. package/resources/codex-and-agents-customizations/.codex/scripts/codex-routing-cli-common.ps1 +370 -0
  69. package/resources/codex-and-agents-customizations/.codex/scripts/epic-child-launch-contract.ps1 +475 -0
  70. package/resources/codex-and-agents-customizations/.codex/scripts/epic-child-launch-runtime.ps1 +445 -0
  71. package/resources/codex-and-agents-customizations/.codex/scripts/epic-child-persistence-runtime.ps1 +118 -0
  72. package/resources/codex-and-agents-customizations/.codex/scripts/epic-child-sandbox-preflight.ps1 +69 -0
  73. package/resources/codex-and-agents-customizations/.codex/scripts/launch-epic-child-wave.ps1 +471 -0
  74. package/resources/codex-and-agents-customizations/.codex/scripts/post-codex-worktree-session.ps1 +280 -0
  75. package/resources/codex-and-agents-customizations/.codex/scripts/resume-epic-child.ps1 +263 -0
  76. package/resources/codex-and-agents-customizations/.codex-variants/csharp-legacy/agents/csharp-typed-engineer.toml +2 -1
  77. package/resources/codex-and-agents-customizations/pack-manifests/core.json +23 -1
  78. package/resources/config/orchestration-handoff-registry.json +138 -0
  79. package/resources/config/orchestration-handoff.schema.json +472 -0
  80. package/resources/lib/codex-routing/CodexDeployment.psm1 +315 -0
  81. package/resources/lib/codex-routing/CodexTopology.psm1 +394 -0
  82. package/resources/powershell/PoshQC/settings/pester.runsettings.psd1 +64 -0
@@ -0,0 +1,138 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "version": "1.0.0",
4
+ "lifecycle_ids": [
5
+ "intake",
6
+ "promotion",
7
+ "research",
8
+ "feature_documents",
9
+ "atomic_planning",
10
+ "preflight",
11
+ "atomic_execution",
12
+ "qa",
13
+ "feature_review",
14
+ "pr_creation",
15
+ "ci_verification",
16
+ "completion"
17
+ ],
18
+ "semantic_tools": {
19
+ "drm-copilot.validate_orchestration_artifacts": {
20
+ "operation": "validate_orchestration_artifacts",
21
+ "transport_aliases": [
22
+ "mcp__drm-copilot__validate_orchestration_artifacts",
23
+ "mcp__drm_copilot__validate_orchestration_artifacts"
24
+ ],
25
+ "mutating": false
26
+ },
27
+ "drm-copilot.resolve_orchestration_topology": {
28
+ "operation": "resolve_orchestration_topology",
29
+ "transport_aliases": [
30
+ "mcp__drm-copilot__resolve_orchestration_topology",
31
+ "mcp__drm_copilot__resolve_orchestration_topology"
32
+ ],
33
+ "mutating": false
34
+ },
35
+ "drm-copilot.resolve_provider_routing": {
36
+ "operation": "resolve_provider_routing",
37
+ "transport_aliases": [
38
+ "mcp__drm-copilot__resolve_provider_routing",
39
+ "mcp__drm_copilot__resolve_provider_routing"
40
+ ],
41
+ "mutating": false
42
+ },
43
+ "drm-copilot.transition_prepared_orchestration": {
44
+ "operation": "transition_prepared_orchestration",
45
+ "transport_aliases": [
46
+ "mcp__drm-copilot__transition_prepared_orchestration",
47
+ "mcp__drm_copilot__transition_prepared_orchestration"
48
+ ],
49
+ "mutating": true
50
+ }
51
+ },
52
+ "provider_adapters": {
53
+ "claude": {
54
+ "checkpoint_expression": "claude.orchestrator-state",
55
+ "source_validator": "claude-source-v1",
56
+ "destination_projector": "portable-to-claude-v1",
57
+ "routing_policy": "model_policy"
58
+ },
59
+ "codex": {
60
+ "checkpoint_expression": "codex.orchestrator-state",
61
+ "source_validator": "codex-source-v1",
62
+ "destination_projector": "portable-to-codex-v1",
63
+ "routing_policy": "codex_model_policy",
64
+ "topology_policy": "codex_topology_policy"
65
+ }
66
+ },
67
+ "transitions": {
68
+ "migrate_legacy": {
69
+ "from": ["legacy_v1"],
70
+ "to": "preparation_complete",
71
+ "required_capabilities": ["handoff-schema:2", "plan-contract:atomic-plan-v1"]
72
+ },
73
+ "prepared_to_atomic_execution": {
74
+ "from": ["preparation_complete"],
75
+ "to": "validated",
76
+ "required_capabilities": [
77
+ "handoff-schema:2",
78
+ "transition:prepared_to_atomic_execution",
79
+ "workspace-explicit-validation"
80
+ ]
81
+ },
82
+ "materialize_destination": {
83
+ "from": ["validated"],
84
+ "to": "materialized",
85
+ "required_capabilities": [
86
+ "atomic-checkpoint-materialization",
87
+ "semantic-tool:drm-copilot.transition_prepared_orchestration"
88
+ ]
89
+ },
90
+ "atomic_execution": {
91
+ "from": ["materialized"],
92
+ "to": "atomic_execution",
93
+ "required_capabilities": ["workspace-explicit-routing"]
94
+ },
95
+ "return_to_scheduler": {
96
+ "from": ["atomic_execution", "qa", "feature_review", "completion"],
97
+ "to": "scheduler_result",
98
+ "required_capabilities": ["scheduler-return:portable_child_result-v1"]
99
+ }
100
+ },
101
+ "capabilities": {
102
+ "supported_vocabularies": ["portable-orchestration-handoff-core-v1"],
103
+ "supported": [
104
+ "handoff-schema:2",
105
+ "transition:prepared_to_atomic_execution",
106
+ "plan-contract:atomic-plan-v1",
107
+ "semantic-tool:drm-copilot.validate_orchestration_artifacts",
108
+ "semantic-tool:drm-copilot.resolve_orchestration_topology",
109
+ "semantic-tool:drm-copilot.resolve_provider_routing",
110
+ "semantic-tool:drm-copilot.transition_prepared_orchestration",
111
+ "workspace-explicit-validation",
112
+ "workspace-explicit-routing",
113
+ "atomic-checkpoint-materialization",
114
+ "scheduler-context:ordinary",
115
+ "scheduler-context:parallel-child",
116
+ "scheduler-context:epic-child",
117
+ "scheduler-return:portable_child_result-v1"
118
+ ]
119
+ },
120
+ "failure_precedence": [
121
+ "HANDOFF_UNSUPPORTED_VERSION",
122
+ "HANDOFF_SOURCE_HASH_MISMATCH",
123
+ "HANDOFF_HISTORY_INVALID",
124
+ "HANDOFF_REPOSITORY_MISMATCH",
125
+ "HANDOFF_WORKSPACE_MISMATCH",
126
+ "HANDOFF_ISSUE_FEATURE_MISMATCH",
127
+ "HANDOFF_BRANCH_LINEAGE_MISMATCH",
128
+ "HANDOFF_PLAN_PATH_INVALID",
129
+ "HANDOFF_PLAN_HASH_MISMATCH",
130
+ "HANDOFF_SCHEDULER_BINDING_MISMATCH",
131
+ "HANDOFF_TRANSITION_NOT_ALLOWED",
132
+ "HANDOFF_CAPABILITY_UNAVAILABLE",
133
+ "HANDOFF_VALIDATOR_UNAVAILABLE",
134
+ "HANDOFF_TOPOLOGY_RESOLVER_UNAVAILABLE",
135
+ "HANDOFF_PROVIDER_ROUTING_UNAVAILABLE",
136
+ "HANDOFF_DIRTY_WORKTREE"
137
+ ]
138
+ }
@@ -0,0 +1,472 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://drm-copilot.dev/schemas/orchestration-handoff/2.0.0/schema.json",
4
+ "title": "Portable prepared orchestration handoff",
5
+ "description": "Provider-neutral identity, provenance, lifecycle, plan, capability, scheduler, and history contract for a prepared orchestration handoff.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": ["$schema", "schema_version", "kind", "handoff_id", "identity", "binding", "source", "destination", "plan", "lifecycle", "capabilities", "scheduler_context", "handoff_history"],
9
+ "properties": {
10
+ "$schema": {
11
+ "const": "https://drm-copilot.dev/schemas/orchestration-handoff/2.0.0/schema.json"
12
+ },
13
+ "schema_version": {
14
+ "$ref": "#/$defs/schemaVersion"
15
+ },
16
+ "kind": {
17
+ "const": "portable_orchestration_handoff"
18
+ },
19
+ "handoff_id": {
20
+ "type": "string",
21
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]{2,127}$"
22
+ },
23
+ "identity": {
24
+ "$ref": "#/$defs/identity"
25
+ },
26
+ "binding": {
27
+ "$ref": "#/$defs/binding"
28
+ },
29
+ "source": {
30
+ "$ref": "#/$defs/source"
31
+ },
32
+ "destination": {
33
+ "$ref": "#/$defs/destination"
34
+ },
35
+ "plan": {
36
+ "$ref": "#/$defs/plan"
37
+ },
38
+ "lifecycle": {
39
+ "$ref": "#/$defs/lifecycle"
40
+ },
41
+ "capabilities": {
42
+ "$ref": "#/$defs/capabilities"
43
+ },
44
+ "scheduler_context": {
45
+ "$ref": "#/$defs/schedulerContext"
46
+ },
47
+ "handoff_history": {
48
+ "type": "array",
49
+ "minItems": 1,
50
+ "items": {
51
+ "$ref": "#/$defs/historyEntry"
52
+ }
53
+ }
54
+ },
55
+ "$defs": {
56
+ "schemaVersion": {
57
+ "type": "string",
58
+ "pattern": "^2\\.[0-9]+\\.[0-9]+$"
59
+ },
60
+ "sha256": {
61
+ "type": "string",
62
+ "pattern": "^[a-f0-9]{64}$"
63
+ },
64
+ "gitSha": {
65
+ "type": "string",
66
+ "pattern": "^[a-f0-9]{40}$"
67
+ },
68
+ "provider": {
69
+ "type": "string",
70
+ "enum": ["claude", "codex"]
71
+ },
72
+ "repositoryRelativePath": {
73
+ "type": "string",
74
+ "minLength": 1,
75
+ "pattern": "^(?!/)(?![A-Za-z]:)(?!.*(?:^|/)\\.\\.(?:/|$))(?!.*\\\\).+$"
76
+ },
77
+ "identity": {
78
+ "type": "object",
79
+ "additionalProperties": false,
80
+ "required": ["objective_id", "issue_number", "feature_folder", "work_mode"],
81
+ "properties": {
82
+ "objective_id": {
83
+ "type": "string",
84
+ "minLength": 1
85
+ },
86
+ "issue_number": {
87
+ "type": "integer",
88
+ "minimum": 1
89
+ },
90
+ "feature_folder": {
91
+ "$ref": "#/$defs/repositoryRelativePath"
92
+ },
93
+ "work_mode": {
94
+ "type": "string",
95
+ "enum": ["minor-audit", "full-feature", "full-bug"]
96
+ }
97
+ }
98
+ },
99
+ "binding": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "required": ["repository_id", "workspace_root", "branch", "source_head_sha", "allowed_head_relationship"],
103
+ "properties": {
104
+ "repository_id": {
105
+ "type": "string",
106
+ "minLength": 1
107
+ },
108
+ "workspace_root": {
109
+ "type": "string",
110
+ "minLength": 1
111
+ },
112
+ "branch": {
113
+ "type": "string",
114
+ "minLength": 1
115
+ },
116
+ "source_head_sha": {
117
+ "$ref": "#/$defs/gitSha"
118
+ },
119
+ "allowed_head_relationship": {
120
+ "type": "string",
121
+ "enum": ["equal", "equal_or_descendant"]
122
+ }
123
+ }
124
+ },
125
+ "source": {
126
+ "type": "object",
127
+ "additionalProperties": false,
128
+ "required": ["provider", "checkpoint", "expression"],
129
+ "properties": {
130
+ "provider": {
131
+ "$ref": "#/$defs/provider"
132
+ },
133
+ "checkpoint": {
134
+ "type": "object",
135
+ "additionalProperties": false,
136
+ "required": ["path", "sha256", "archive_path"],
137
+ "properties": {
138
+ "path": {
139
+ "$ref": "#/$defs/repositoryRelativePath"
140
+ },
141
+ "sha256": {
142
+ "$ref": "#/$defs/sha256"
143
+ },
144
+ "archive_path": {
145
+ "type": "string",
146
+ "pattern": "^artifacts/orchestration/handoffs/sources/sha256/[a-f0-9]{64}\\.json$"
147
+ }
148
+ }
149
+ },
150
+ "expression": {
151
+ "type": "object",
152
+ "additionalProperties": false,
153
+ "required": ["schema_id", "schema_version", "historical_receipts"],
154
+ "properties": {
155
+ "schema_id": {
156
+ "type": "string",
157
+ "minLength": 1
158
+ },
159
+ "schema_version": {
160
+ "type": "string",
161
+ "minLength": 1
162
+ },
163
+ "historical_receipts": {
164
+ "type": "object",
165
+ "additionalProperties": false,
166
+ "required": ["mode", "references"],
167
+ "properties": {
168
+ "mode": {
169
+ "const": "opaque"
170
+ },
171
+ "references": {
172
+ "type": "array",
173
+ "items": {
174
+ "type": "object",
175
+ "additionalProperties": false,
176
+ "required": ["path", "sha256"],
177
+ "properties": {
178
+ "path": {
179
+ "$ref": "#/$defs/repositoryRelativePath"
180
+ },
181
+ "sha256": {
182
+ "$ref": "#/$defs/sha256"
183
+ }
184
+ }
185
+ }
186
+ }
187
+ }
188
+ }
189
+ }
190
+ }
191
+ }
192
+ },
193
+ "destination": {
194
+ "type": "object",
195
+ "additionalProperties": false,
196
+ "required": ["provider", "checkpoint_path"],
197
+ "properties": {
198
+ "provider": {
199
+ "$ref": "#/$defs/provider"
200
+ },
201
+ "checkpoint_path": {
202
+ "const": "artifacts/orchestration/orchestrator-state.json"
203
+ }
204
+ }
205
+ },
206
+ "plan": {
207
+ "type": "object",
208
+ "additionalProperties": false,
209
+ "required": ["path", "sha256", "contract_version"],
210
+ "properties": {
211
+ "path": {
212
+ "$ref": "#/$defs/repositoryRelativePath"
213
+ },
214
+ "sha256": {
215
+ "$ref": "#/$defs/sha256"
216
+ },
217
+ "contract_version": {
218
+ "type": "string",
219
+ "pattern": "^atomic-plan-v[0-9]+$"
220
+ }
221
+ }
222
+ },
223
+ "phase": {
224
+ "type": "string",
225
+ "enum": [
226
+ "intake",
227
+ "promotion",
228
+ "research",
229
+ "feature_documents",
230
+ "atomic_planning",
231
+ "preflight",
232
+ "atomic_execution",
233
+ "qa",
234
+ "feature_review",
235
+ "pr_creation",
236
+ "ci_verification",
237
+ "completion"
238
+ ]
239
+ },
240
+ "lifecycle": {
241
+ "type": "object",
242
+ "additionalProperties": false,
243
+ "required": [
244
+ "logical_complexity",
245
+ "route_intent",
246
+ "completed_phases",
247
+ "next_transition",
248
+ "replay_policy"
249
+ ],
250
+ "properties": {
251
+ "logical_complexity": {
252
+ "type": "string",
253
+ "enum": [
254
+ "C1",
255
+ "C2",
256
+ "C3",
257
+ "C4"
258
+ ]
259
+ },
260
+ "route_intent": {
261
+ "type": "string",
262
+ "enum": [
263
+ "prepared_to_ordinary_execution",
264
+ "prepared_child_to_ordinary_execution"
265
+ ]
266
+ },
267
+ "completed_phases": {
268
+ "type": "array",
269
+ "uniqueItems": true,
270
+ "items": {
271
+ "$ref": "#/$defs/phase"
272
+ }
273
+ },
274
+ "next_transition": {
275
+ "$ref": "#/$defs/phase"
276
+ },
277
+ "replay_policy": {
278
+ "const": "forbid_completed_phases"
279
+ }
280
+ }
281
+ },
282
+ "capabilities": {
283
+ "type": "object",
284
+ "additionalProperties": false,
285
+ "required": [
286
+ "vocabularies",
287
+ "required"
288
+ ],
289
+ "properties": {
290
+ "vocabularies": {
291
+ "type": "array",
292
+ "minItems": 1,
293
+ "uniqueItems": true,
294
+ "items": {
295
+ "type": "string",
296
+ "minLength": 1
297
+ }
298
+ },
299
+ "required": {
300
+ "type": "array",
301
+ "minItems": 1,
302
+ "uniqueItems": true,
303
+ "items": {
304
+ "type": "string",
305
+ "minLength": 1
306
+ }
307
+ }
308
+ }
309
+ },
310
+ "schedulerContext": {
311
+ "oneOf": [
312
+ {
313
+ "type": "object",
314
+ "additionalProperties": false,
315
+ "required": [
316
+ "kind"
317
+ ],
318
+ "properties": {
319
+ "kind": {
320
+ "const": "ordinary"
321
+ }
322
+ }
323
+ },
324
+ {
325
+ "$ref": "#/$defs/scheduledChildContext"
326
+ }
327
+ ]
328
+ },
329
+ "scheduledChildContext": {
330
+ "type": "object",
331
+ "additionalProperties": false,
332
+ "required": [
333
+ "kind",
334
+ "run_id",
335
+ "item_id",
336
+ "kickoff_or_manifest_path",
337
+ "kickoff_or_manifest_sha256",
338
+ "parent_checkpoint_path",
339
+ "parent_checkpoint_sha256",
340
+ "cohort_or_wave",
341
+ "scheduler_owner",
342
+ "child_execution_owner",
343
+ "return_contract"
344
+ ],
345
+ "properties": {
346
+ "kind": {
347
+ "type": "string",
348
+ "enum": [
349
+ "parallel",
350
+ "epic"
351
+ ]
352
+ },
353
+ "run_id": {
354
+ "type": "string",
355
+ "minLength": 1
356
+ },
357
+ "item_id": {
358
+ "type": "string",
359
+ "minLength": 1
360
+ },
361
+ "kickoff_or_manifest_path": {
362
+ "$ref": "#/$defs/repositoryRelativePath"
363
+ },
364
+ "kickoff_or_manifest_sha256": {
365
+ "$ref": "#/$defs/sha256"
366
+ },
367
+ "parent_checkpoint_path": {
368
+ "$ref": "#/$defs/repositoryRelativePath"
369
+ },
370
+ "parent_checkpoint_sha256": {
371
+ "$ref": "#/$defs/sha256"
372
+ },
373
+ "cohort_or_wave": {
374
+ "type": [
375
+ "string",
376
+ "integer"
377
+ ]
378
+ },
379
+ "scheduler_owner": {
380
+ "type": "string",
381
+ "enum": [
382
+ "parallel_orchestrator",
383
+ "epic_orchestrator"
384
+ ]
385
+ },
386
+ "child_execution_owner": {
387
+ "const": "ordinary_orchestrator"
388
+ },
389
+ "return_contract": {
390
+ "const": "portable_child_result-v1"
391
+ }
392
+ }
393
+ },
394
+ "historyEntry": {
395
+ "type": "object",
396
+ "additionalProperties": false,
397
+ "required": [
398
+ "sequence",
399
+ "from_provider",
400
+ "to_provider",
401
+ "source_checkpoint_sha256",
402
+ "envelope_sha256",
403
+ "requested_at",
404
+ "previous_entry_sha256",
405
+ "entry_sha256",
406
+ "status",
407
+ "adapter_id",
408
+ "adapter_version"
409
+ ],
410
+ "properties": {
411
+ "sequence": {
412
+ "type": "integer",
413
+ "minimum": 1
414
+ },
415
+ "from_provider": {
416
+ "$ref": "#/$defs/provider"
417
+ },
418
+ "to_provider": {
419
+ "$ref": "#/$defs/provider"
420
+ },
421
+ "source_checkpoint_sha256": {
422
+ "$ref": "#/$defs/sha256"
423
+ },
424
+ "envelope_sha256": {
425
+ "$ref": "#/$defs/sha256"
426
+ },
427
+ "target_checkpoint_sha256": {
428
+ "$ref": "#/$defs/sha256"
429
+ },
430
+ "requested_at": {
431
+ "type": "string",
432
+ "format": "date-time"
433
+ },
434
+ "previous_entry_sha256": {
435
+ "oneOf": [
436
+ {
437
+ "$ref": "#/$defs/sha256"
438
+ },
439
+ {
440
+ "type": "null"
441
+ }
442
+ ]
443
+ },
444
+ "entry_sha256": {
445
+ "$ref": "#/$defs/sha256"
446
+ },
447
+ "status": {
448
+ "type": "string",
449
+ "enum": [
450
+ "requested",
451
+ "validated",
452
+ "materialized",
453
+ "blocked",
454
+ "returned"
455
+ ]
456
+ },
457
+ "adapter_id": {
458
+ "type": "string",
459
+ "minLength": 1
460
+ },
461
+ "adapter_version": {
462
+ "type": "string",
463
+ "minLength": 1
464
+ },
465
+ "failure_code": {
466
+ "type": "string",
467
+ "pattern": "^HANDOFF_[A-Z0-9_]+$"
468
+ }
469
+ }
470
+ }
471
+ }
472
+ }