@danmoisan/drm-copilot-mcp 1.0.21 → 1.0.23

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 (43) hide show
  1. package/out/mcp-server.js +1730 -139
  2. package/package.json +1 -1
  3. package/resources/claude-customizations/.claude/agent-memory/epic-orchestrator/MEMORY.md +5 -1
  4. package/resources/claude-customizations/.claude/agent-memory/epic-orchestrator/feedback_commit_push_memory_before_pr.md +48 -2
  5. package/resources/claude-customizations/.claude/agent-memory/epic-orchestrator/feedback_no_sendmessage_tool.md +35 -0
  6. package/resources/claude-customizations/.claude/agent-memory/epic-orchestrator/feedback_worktree_isolation_branches_from_main.md +45 -0
  7. package/resources/claude-customizations/.claude/agents/parallel-orchestrator.md +257 -0
  8. package/resources/claude-customizations/.claude/agents/parallel-planner.md +183 -0
  9. package/resources/claude-customizations/.claude/hooks/enforce-epic-invocation-origin.ps1 +23 -11
  10. package/resources/claude-customizations/.claude/hooks/enforce-parallel-abandon-gate.ps1 +259 -0
  11. package/resources/claude-customizations/.claude/hooks/enforce-parallel-cohort-barrier.ps1 +499 -0
  12. package/resources/claude-customizations/.claude/hooks/enforce-parallel-drift-gate-helpers.ps1 +302 -0
  13. package/resources/claude-customizations/.claude/hooks/enforce-parallel-drift-gate.ps1 +359 -0
  14. package/resources/claude-customizations/.claude/hooks/enforce-parallel-worktree-removal-gate.ps1 +244 -0
  15. package/resources/claude-customizations/.claude/lib/bash/compute-cohorts.sh +143 -0
  16. package/resources/claude-customizations/.claude/lib/bash/compute-concurrency-batches.sh +122 -0
  17. package/resources/claude-customizations/.claude/lib/bash/parallel-cohorts.sh +330 -0
  18. package/resources/claude-customizations/.claude/lib/bash/parallel-common.sh +238 -0
  19. package/resources/claude-customizations/.claude/lib/bash/parallel-items-validate.sh +244 -0
  20. package/resources/claude-customizations/.claude/lib/bash/parallel-manifest-validate.sh +187 -0
  21. package/resources/claude-customizations/.claude/lib/bash/parallel-yaml-emit.sh +340 -0
  22. package/resources/claude-customizations/.claude/lib/bash/parallel-yaml-scan.sh +335 -0
  23. package/resources/claude-customizations/.claude/lib/bash/validate-parallel-manifest.sh +134 -0
  24. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadius.psm1 +379 -0
  25. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusConfig.psm1 +491 -0
  26. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusExtraction.psm1 +490 -0
  27. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusGlob.psm1 +429 -0
  28. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusValidation.psm1 +366 -0
  29. package/resources/claude-customizations/.claude/rules/parallel-orchestration.md +184 -0
  30. package/resources/claude-customizations/.claude/rules/shell.md +7 -2
  31. package/resources/claude-customizations/.claude/settings.json +28 -0
  32. package/resources/claude-customizations/.claude/skills/parallel-add/SKILL.md +152 -0
  33. package/resources/claude-customizations/.claude/skills/parallel-close/SKILL.md +93 -0
  34. package/resources/claude-customizations/.claude/skills/parallel-orchestrate/SKILL.md +971 -0
  35. package/resources/claude-customizations/.claude/skills/parallel-plan/SKILL.md +461 -0
  36. package/resources/claude-customizations/.claude/skills/parallel-remove/SKILL.md +176 -0
  37. package/resources/claude-customizations/.claude/skills/parallel-run/SKILL.md +56 -0
  38. package/resources/claude-customizations/config/blast-radius.json +16 -0
  39. package/resources/claude-customizations/config/orchestration-routing.json +355 -0
  40. package/resources/claude-customizations/pack-manifests/core.json +32 -1
  41. package/resources/codex-and-agents-customizations/.codex/config.toml +1 -1
  42. package/resources/config/orchestration-routing.json +22 -0
  43. package/resources/powershell/PoshQC/settings/pester.runsettings.psd1 +29 -0
@@ -0,0 +1,56 @@
1
+ ---
2
+ name: parallel-run
3
+ description: Execute a previously planned parallel run by replaying the committed parallel-kickoff artifact through the parallel-orchestrator agent. Use after /parallel-plan has prepared the run (manifest, per-item folders, research, specs, atomic plans, preflight clearance, seeded cohorts) and the user is ready to execute end-to-end.
4
+ argument-hint: "[parallel-slug]"
5
+ context: fork
6
+ agent: parallel-orchestrator
7
+ ---
8
+
9
+ # Parallel Run Skill
10
+
11
+ A user invocation (`/parallel-run <parallel-slug>`) forks the `parallel-orchestrator` agent to
12
+ execute a parallel run that `parallel-planner` has already prepared. The parallel slug (or a path
13
+ under `docs/features/parallel/`) for this run is:
14
+
15
+ $ARGUMENTS
16
+
17
+ ## Procedure
18
+
19
+ 1. Resolve the parallel home. A bare slug resolves to `docs/features/parallel/<parallel-slug>/`; a
20
+ path argument resolves to its containing parallel run folder.
21
+ 2. Resolve the committed kickoff artifact
22
+ `docs/features/parallel/<parallel-slug>/parallel-kickoff.md`. Discovery is a single local path
23
+ lookup in the invoking worktree. This surface has no integration branch, so there is no
24
+ integration ref to fetch, no ref-existence probe to run, and no ref-reading fallback to attempt:
25
+ the durable copy of the kickoff artifact is committed by `/parallel-plan` on the planner branch
26
+ `parallel/<parallel-slug>-plan` and is reachable from the checkout that invokes this skill.
27
+ - STOP without delegating anything when that path does not exist. Report that the run has no
28
+ committed kickoff artifact: the user must run `/parallel-plan` first (or, for a run whose
29
+ manifest was authored manually, invoke `/parallel-orchestrate <manifest-path>` directly).
30
+ - Do not synthesize a kickoff prompt, do not fall back to the planner's working copy under
31
+ `artifacts/orchestration/`, and do not launch a partial run in place of the STOP.
32
+ 3. Execute the kickoff artifact's `## Invocation Prompt` section as the run objective, applying the
33
+ `parallel-orchestrate` skill procedure and the `## Prepared-Run Execution` section of
34
+ `.claude/agents/parallel-orchestrator.md`: each item's child `Agent(orchestrator)` delegation
35
+ resumes at atomic execution from that item's committed `plan-path` rather than re-running
36
+ promotion, research, or planning. Feature-document authoring and preflight clearance are
37
+ likewise not repeated: those outputs are already committed and preflight-clear on each item's
38
+ own pushed feature branch.
39
+ 4. Honor existing checkpoint state: if `artifacts/orchestration/parallel-orchestrator-state.json`
40
+ already tracks this `parallel_slug`, resume per the `parallel-orchestrate` skill's resume
41
+ procedure instead of restarting, re-deriving durable ground truth from
42
+ `git worktree list --porcelain`, `git branch`, and `gh pr view --json state,mergedAt,headRefOid`
43
+ before acting on any recorded value.
44
+
45
+ ## Scope
46
+
47
+ This skill adds no procedure of its own beyond kickoff-artifact resolution. Cohort consumption and
48
+ ordering, the cohort barrier, `max_concurrency` slot filling, the per-item branch and worktree
49
+ lifecycle, the child kickoff parameter, model selection, per-item merge to `main` on green,
50
+ per-item merge-conflict handling, worktree cleanup, `parallel-status.md` maintenance, checkpoint
51
+ persistence, and mode-dependent completion are governed entirely by the `parallel-orchestrate`
52
+ skill (`.claude/skills/parallel-orchestrate/SKILL.md`).
53
+
54
+ There is no final integration pull request on this surface, and no fan-in step follows the items:
55
+ each item's pull request targets `main` directly and is merged individually by
56
+ `parallel-orchestrator` after its checks are durably confirmed green.
@@ -0,0 +1,16 @@
1
+ {
2
+ "version": 1,
3
+ "shared_surfaces": [
4
+ ".claude/settings.json",
5
+ "config/orchestration-routing.json",
6
+ "config/blast-radius.json"
7
+ ],
8
+ "shared_surface_globs": [],
9
+ "modules": {
10
+ "claude-runtime": [".claude/**"],
11
+ "config": ["config/**"],
12
+ "docs": ["docs/**"],
13
+ "tests": ["tests/**"]
14
+ },
15
+ "over_breadth_fraction": 0.25
16
+ }
@@ -0,0 +1,355 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "version": 1,
4
+ "routes": {
5
+ "small": {
6
+ "description": "Minor-audit path for work inside the applicable language budget.",
7
+ "codex_topology_requirement": {
8
+ "receipt_key": "codex_topology_receipts",
9
+ "required_execution_context": "standalone",
10
+ "required_route": "small",
11
+ "delegation_agent_source": "resolved_language_typed_engineer"
12
+ },
13
+ "required_agents": [
14
+ "atomic-planner",
15
+ "atomic-executor",
16
+ "feature-review"
17
+ ],
18
+ "required_skills": [
19
+ "orchestrate",
20
+ "feature-promotion-lifecycle",
21
+ "atomic-plan-contract",
22
+ "acceptance-criteria-tracking",
23
+ "pr-context-artifacts",
24
+ "pr-base-branch-merge-base"
25
+ ],
26
+ "required_mcp_tools": [
27
+ "new_potential_entry",
28
+ "potential_to_issue",
29
+ "new_active_feature_folder",
30
+ "collect_pr_context",
31
+ "validate_orchestration_artifacts"
32
+ ]
33
+ },
34
+ "large": {
35
+ "description": "Full feature or bug path for work outside small-path budget.",
36
+ "requires_pr_gate": true,
37
+ "required_agents": [
38
+ "task-researcher",
39
+ "prd-feature",
40
+ "atomic-planner",
41
+ "atomic-executor",
42
+ "feature-review",
43
+ "pr-author"
44
+ ],
45
+ "required_skills": [
46
+ "orchestrate",
47
+ "feature-promotion-lifecycle",
48
+ "atomic-plan-contract",
49
+ "acceptance-criteria-tracking",
50
+ "pr-context-artifacts",
51
+ "pr-base-branch-merge-base"
52
+ ],
53
+ "required_mcp_tools": [
54
+ "new_potential_entry",
55
+ "potential_to_issue",
56
+ "new_active_feature_folder",
57
+ "collect_pr_context",
58
+ "validate_orchestration_artifacts"
59
+ ]
60
+ },
61
+ "remediation": {
62
+ "description": "Review-triggered remediation loop.",
63
+ "required_agents": [
64
+ "atomic-planner",
65
+ "atomic-executor",
66
+ "feature-review"
67
+ ],
68
+ "required_skills": [
69
+ "orchestrate",
70
+ "atomic-plan-contract",
71
+ "acceptance-criteria-tracking",
72
+ "pr-context-artifacts"
73
+ ],
74
+ "required_mcp_tools": [
75
+ "collect_pr_context",
76
+ "validate_orchestration_artifacts"
77
+ ]
78
+ },
79
+ "preparation": {
80
+ "description": "Epic preparation path driven by epic-planner: promotion, research, feature documents, atomic planning, and preflight clearance only. Atomic execution, PR authoring, and CI monitoring are out of scope and deferred to the epic execution phase, so this route requires no CI gate at completion.",
81
+ "requires_ci_gate": false,
82
+ "required_agents": [
83
+ "task-researcher",
84
+ "prd-feature",
85
+ "atomic-planner",
86
+ "atomic-executor"
87
+ ],
88
+ "required_skills": [
89
+ "orchestrate",
90
+ "feature-promotion-lifecycle",
91
+ "atomic-plan-contract"
92
+ ],
93
+ "required_mcp_tools": [
94
+ "new_potential_entry",
95
+ "potential_to_issue",
96
+ "new_active_feature_folder",
97
+ "validate_orchestration_artifacts"
98
+ ]
99
+ },
100
+ "parallel": {
101
+ "description": "Parallel path for scheduling independent items into blast-radius cohorts across parallel worktrees; each item PRs to main independently with no integration branch.",
102
+ "requires_pr_gate": false,
103
+ "required_agents": [
104
+ "orchestrator",
105
+ "pr-author"
106
+ ],
107
+ "required_skills": [
108
+ "parallel-orchestrate",
109
+ "orchestrate",
110
+ "feature-promotion-lifecycle",
111
+ "atomic-plan-contract",
112
+ "acceptance-criteria-tracking",
113
+ "evidence-and-timestamp-conventions",
114
+ "pr-context-artifacts",
115
+ "pr-base-branch-merge-base"
116
+ ],
117
+ "required_mcp_tools": [
118
+ "collect_pr_context",
119
+ "validate_orchestration_artifacts"
120
+ ]
121
+ },
122
+ "epic": {
123
+ "description": "Epic path for scheduling a dependency graph of child features across parallel worktrees with fan-in via a shared integration branch.",
124
+ "requires_pr_gate": true,
125
+ "required_agents": [
126
+ "orchestrator",
127
+ "pr-author"
128
+ ],
129
+ "required_skills": [
130
+ "epic-orchestrate",
131
+ "orchestrate",
132
+ "feature-promotion-lifecycle",
133
+ "atomic-plan-contract",
134
+ "acceptance-criteria-tracking",
135
+ "evidence-and-timestamp-conventions",
136
+ "pr-context-artifacts",
137
+ "pr-base-branch-merge-base"
138
+ ],
139
+ "required_mcp_tools": [
140
+ "collect_pr_context",
141
+ "validate_orchestration_artifacts"
142
+ ]
143
+ }
144
+ },
145
+ "model_policy": {
146
+ "description": "Judgment-based complexity-band model selection. This block governs only the delegation model tier. It is not a route input, and route is not an input to model selection.",
147
+ "tier_order": [
148
+ "haiku",
149
+ "sonnet",
150
+ "opus",
151
+ "fable"
152
+ ],
153
+ "complexity": {
154
+ "scale": "C1 trivial or mechanical change with no behavior effect. C2 localized feature or bug change confined to a small surface. C3 cross-cutting change that alters an invariant, contract, or behavior across module boundaries. C4 novel, ambiguous, or research-heavy change requiring the most capable tier; C4 is reached only by judgment and is never floor-forced.",
155
+ "signals": [
156
+ {
157
+ "name": "classifier_or_model_logic",
158
+ "floor": true,
159
+ "anchor": "Changes to classifier engines, scoring, or model-affecting logic (T1 modules)."
160
+ },
161
+ {
162
+ "name": "auth_or_token_handling",
163
+ "floor": true,
164
+ "anchor": "Changes to authentication, token handling, or other security-sensitive paths."
165
+ },
166
+ {
167
+ "name": "concurrency_or_ordering",
168
+ "floor": true,
169
+ "anchor": "Introduces or modifies concurrency, ordering, or state-transition invariants."
170
+ },
171
+ {
172
+ "name": "cross_module_contract_change",
173
+ "floor": true,
174
+ "anchor": "Alters a public contract or schema consumed across module boundaries."
175
+ },
176
+ {
177
+ "name": "single_file_localized_edit",
178
+ "floor": false,
179
+ "anchor": "A localized edit confined to one file with no cross-cutting effect."
180
+ },
181
+ {
182
+ "name": "mechanical_rename_or_move",
183
+ "floor": false,
184
+ "anchor": "A mechanical rename, move, or formatting change with no behavior change."
185
+ },
186
+ {
187
+ "name": "docs_or_comment_only",
188
+ "floor": false,
189
+ "anchor": "A documentation-only or comment-only change."
190
+ }
191
+ ]
192
+ },
193
+ "complexity_to_model": {
194
+ "C1": "haiku",
195
+ "C2": "sonnet",
196
+ "C3": "opus",
197
+ "C4": "fable"
198
+ },
199
+ "preferred_overlay": {
200
+ "description": "Applied only under fable_policy preferred. Changes only the C3 cell to fable, and only for the listed agents. No other agent and no other band is affected.",
201
+ "agents": [
202
+ "atomic-planner",
203
+ "prd-feature",
204
+ "feature-review",
205
+ "task-researcher"
206
+ ],
207
+ "band": "C3",
208
+ "model": "fable"
209
+ }
210
+ },
211
+ "model_budget": {
212
+ "description": "Session-level model budget. fable_policy is a three-way switch controlling whether the fable tier is disabled (removed and clamped to opus), available (used as-is), or preferred (applies the preferred_overlay).",
213
+ "fable_policy": "preferred"
214
+ },
215
+ "codex_topology_policy": {
216
+ "description": "Codex-native production-file-count routing. This axis selects the initial implementation topology independently from C1-C4 model selection.",
217
+ "execution_contexts": [
218
+ "standalone",
219
+ "epic_preparation_child",
220
+ "epic_execution_child"
221
+ ],
222
+ "language_budgets": {
223
+ "python": {
224
+ "direct_mode_enabled": true,
225
+ "max_production_files": 3,
226
+ "max_test_files": 3,
227
+ "logical_agent": "python-typed-engineer"
228
+ },
229
+ "powershell": {
230
+ "direct_mode_enabled": true,
231
+ "max_production_files": 2,
232
+ "max_test_files": 3,
233
+ "logical_agent": "powershell-typed-engineer"
234
+ },
235
+ "csharp": {
236
+ "direct_mode_enabled": true,
237
+ "max_production_files": 3,
238
+ "max_test_files": 3,
239
+ "logical_agent": "csharp-typed-engineer"
240
+ },
241
+ "typescript": {
242
+ "direct_mode_enabled": false,
243
+ "max_production_files": 0,
244
+ "max_test_files": 0,
245
+ "logical_agent": "typescript-engineer"
246
+ }
247
+ },
248
+ "orchestrator_logical_agent": "orchestrator",
249
+ "epic_child_contexts": [
250
+ "epic_preparation_child",
251
+ "epic_execution_child"
252
+ ],
253
+ "forced_root_personas": [
254
+ "epic-planner",
255
+ "epic-orchestrator"
256
+ ],
257
+ "parallelism": {
258
+ "default_max_parallel_features": 4,
259
+ "hard_max_parallel_features": 8
260
+ },
261
+ "escalation_precedence": [
262
+ "epic_child_context",
263
+ "invalid_estimate",
264
+ "cross_language",
265
+ "unsupported_language",
266
+ "cross_cutting",
267
+ "direct_mode_disabled",
268
+ "production_budget_exceeded"
269
+ ],
270
+ "receipt_key": "codex_topology_receipts"
271
+ },
272
+ "codex_model_policy": {
273
+ "description": "Codex-native deployment profiles. Complexity selects model and reasoning independently from the file-count route; exact model slugs are mandatory and unavailable profiles do not fall back silently.",
274
+ "profile_order": [
275
+ "c1",
276
+ "c2",
277
+ "c3",
278
+ "c3-elevated",
279
+ "c4"
280
+ ],
281
+ "execution_contexts": [
282
+ "standalone",
283
+ "epic_preparation_child",
284
+ "epic_execution_child"
285
+ ],
286
+ "logical_agent_aliases": {
287
+ "feature-review": "feature-reviewer"
288
+ },
289
+ "complexity_to_profile": {
290
+ "C1": {
291
+ "suffix": "c1",
292
+ "model": "gpt-5.6-luna",
293
+ "model_reasoning_effort": "low"
294
+ },
295
+ "C2": {
296
+ "suffix": "c2",
297
+ "model": "gpt-5.6-terra",
298
+ "model_reasoning_effort": "medium"
299
+ },
300
+ "C3": {
301
+ "suffix": "c3",
302
+ "model": "gpt-5.6-terra",
303
+ "model_reasoning_effort": "high"
304
+ },
305
+ "C4": {
306
+ "suffix": "c4",
307
+ "model": "gpt-5.6-sol",
308
+ "model_reasoning_effort": "max"
309
+ }
310
+ },
311
+ "c3_elevated_profile": {
312
+ "suffix": "c3-elevated",
313
+ "model": "gpt-5.6-sol",
314
+ "model_reasoning_effort": "high",
315
+ "activation": {
316
+ "operator": "any",
317
+ "execution_contexts": [
318
+ "epic_execution_child",
319
+ "epic_preparation_child"
320
+ ],
321
+ "orchestration_complexity_ceiling": "C4"
322
+ }
323
+ },
324
+ "ceiling_transition_policy": {
325
+ "monotonic": true,
326
+ "receipt_key": "ceiling_transition",
327
+ "affected_delegation_ids_required_on_increase": true
328
+ },
329
+ "forced_personas": {
330
+ "epic-planner": {
331
+ "suffix": "",
332
+ "model": "gpt-5.6-sol",
333
+ "model_reasoning_effort": "ultra"
334
+ },
335
+ "epic-orchestrator": {
336
+ "suffix": "",
337
+ "model": "gpt-5.6-sol",
338
+ "model_reasoning_effort": "ultra"
339
+ }
340
+ },
341
+ "generated_agent_families": [
342
+ "orchestrator",
343
+ "atomic-planner",
344
+ "atomic-executor",
345
+ "feature-reviewer",
346
+ "task-researcher",
347
+ "prd-feature",
348
+ "pr-author",
349
+ "python-typed-engineer",
350
+ "powershell-typed-engineer",
351
+ "csharp-typed-engineer",
352
+ "typescript-engineer"
353
+ ]
354
+ }
355
+ }
@@ -14,6 +14,8 @@
14
14
  ".claude/agents/legacy-parity-analyst.md",
15
15
  ".claude/agents/migration-coverage-reviewer.md",
16
16
  ".claude/agents/orchestrator.md",
17
+ ".claude/agents/parallel-orchestrator.md",
18
+ ".claude/agents/parallel-planner.md",
17
19
  ".claude/agents/prd-feature.md",
18
20
  ".claude/agents/requirements-reconciler.md",
19
21
  ".claude/agents/runtime-characterization-analyst.md",
@@ -31,6 +33,11 @@
31
33
  ".claude/hooks/enforce-feature-folder-order.ps1",
32
34
  ".claude/hooks/enforce-model-routing-receipt.ps1",
33
35
  ".claude/hooks/enforce-orchestration-preimplementation-gate.ps1",
36
+ ".claude/hooks/enforce-parallel-abandon-gate.ps1",
37
+ ".claude/hooks/enforce-parallel-cohort-barrier.ps1",
38
+ ".claude/hooks/enforce-parallel-drift-gate.ps1",
39
+ ".claude/hooks/enforce-parallel-drift-gate-helpers.ps1",
40
+ ".claude/hooks/enforce-parallel-worktree-removal-gate.ps1",
34
41
  ".claude/hooks/enforce-pr-author-skill.epic-base-branch.ps1",
35
42
  ".claude/hooks/enforce-pr-author-skill.ps1",
36
43
  ".claude/hooks/enforce-prd-feature-before-planner.ps1",
@@ -77,6 +84,12 @@
77
84
  ".claude/skills/identify-session-id/SKILL.md",
78
85
  ".claude/skills/make-skill-template/SKILL.md",
79
86
  ".claude/skills/orchestrate/SKILL.md",
87
+ ".claude/skills/parallel-add/SKILL.md",
88
+ ".claude/skills/parallel-close/SKILL.md",
89
+ ".claude/skills/parallel-orchestrate/SKILL.md",
90
+ ".claude/skills/parallel-plan/SKILL.md",
91
+ ".claude/skills/parallel-remove/SKILL.md",
92
+ ".claude/skills/parallel-run/SKILL.md",
80
93
  ".claude/skills/policy-audit-template-usage/SKILL.md",
81
94
  ".claude/skills/policy-compliance-order/SKILL.md",
82
95
  ".claude/skills/pr-author/SKILL.md",
@@ -93,6 +106,24 @@
93
106
  ".claude/skills/update-status/SKILL.md",
94
107
  ".claude/lib/model-routing/ModelRouting.psm1",
95
108
  ".claude/lib/orchestrator-state/OrchestratorState.psm1",
96
- ".claude/lib/orchestrator-state/OrchestratorStateCompletion.psm1"
109
+ ".claude/lib/orchestrator-state/OrchestratorStateCompletion.psm1",
110
+ ".claude/lib/blast-radius/BlastRadiusExtraction.psm1",
111
+ ".claude/lib/blast-radius/BlastRadiusGlob.psm1",
112
+ ".claude/lib/blast-radius/BlastRadiusConfig.psm1",
113
+ ".claude/lib/blast-radius/BlastRadiusValidation.psm1",
114
+ ".claude/lib/blast-radius/BlastRadius.psm1",
115
+ ".claude/rules/parallel-orchestration.md",
116
+ ".claude/rules/shell.md",
117
+ ".claude/lib/bash/compute-cohorts.sh",
118
+ ".claude/lib/bash/compute-concurrency-batches.sh",
119
+ ".claude/lib/bash/parallel-cohorts.sh",
120
+ ".claude/lib/bash/parallel-common.sh",
121
+ ".claude/lib/bash/parallel-items-validate.sh",
122
+ ".claude/lib/bash/parallel-manifest-validate.sh",
123
+ ".claude/lib/bash/parallel-yaml-emit.sh",
124
+ ".claude/lib/bash/parallel-yaml-scan.sh",
125
+ ".claude/lib/bash/validate-parallel-manifest.sh",
126
+ "config/orchestration-routing.json",
127
+ "config/blast-radius.json"
97
128
  ]
98
129
  }
@@ -2,7 +2,7 @@ default_permissions = ":danger-full-access"
2
2
 
3
3
  [mcp_servers.drm-copilot]
4
4
  command = "npx"
5
- args = ["-y", "@danmoisan/drm-copilot-mcp@1.0.21"]
5
+ args = ["-y", "@danmoisan/drm-copilot-mcp@1.0.23"]
6
6
  required = true
7
7
  enabled_tools = [
8
8
  "collect_commit_context",
@@ -97,6 +97,28 @@
97
97
  "validate_orchestration_artifacts"
98
98
  ]
99
99
  },
100
+ "parallel": {
101
+ "description": "Parallel path for scheduling independent items into blast-radius cohorts across parallel worktrees; each item PRs to main independently with no integration branch.",
102
+ "requires_pr_gate": false,
103
+ "required_agents": [
104
+ "orchestrator",
105
+ "pr-author"
106
+ ],
107
+ "required_skills": [
108
+ "parallel-orchestrate",
109
+ "orchestrate",
110
+ "feature-promotion-lifecycle",
111
+ "atomic-plan-contract",
112
+ "acceptance-criteria-tracking",
113
+ "evidence-and-timestamp-conventions",
114
+ "pr-context-artifacts",
115
+ "pr-base-branch-merge-base"
116
+ ],
117
+ "required_mcp_tools": [
118
+ "collect_pr_context",
119
+ "validate_orchestration_artifacts"
120
+ ]
121
+ },
100
122
  "epic": {
101
123
  "description": "Epic path for scheduling a dependency graph of child features across parallel worktrees with fan-in via a shared integration branch.",
102
124
  "requires_pr_gate": true,
@@ -114,6 +114,35 @@
114
114
  # changed production surface is not excluded from coverage.
115
115
  '.codex/hooks/enforce-epic-child-worktree-binding.ps1'
116
116
  '.codex/hooks/enforce-epic-planning-only.ps1'
117
+ # Issue #447 added the .claude-resident PowerShell blast-radius library, the
118
+ # two-language mirror of scripts/dev_tools/compute_blast_radius.py and its
119
+ # helper modules. The set is split across five files only to satisfy the
120
+ # 500-line limit; measured here so no new production module is excluded from
121
+ # coverage.
122
+ '.claude/lib/blast-radius/BlastRadiusExtraction.psm1'
123
+ '.claude/lib/blast-radius/BlastRadiusGlob.psm1'
124
+ '.claude/lib/blast-radius/BlastRadiusConfig.psm1'
125
+ '.claude/lib/blast-radius/BlastRadiusValidation.psm1'
126
+ '.claude/lib/blast-radius/BlastRadius.psm1'
127
+ # Issue #440 added the two parallel enforcement hooks (the Layer 1 cohort
128
+ # barrier and the worktree removal gate) and extended the invocation-origin
129
+ # hook with the parallel-agent family; measured here so no new or changed
130
+ # production hook is excluded from coverage.
131
+ '.claude/hooks/enforce-parallel-cohort-barrier.ps1'
132
+ '.claude/hooks/enforce-parallel-worktree-removal-gate.ps1'
133
+ '.claude/hooks/enforce-epic-invocation-origin.ps1'
134
+ # Issue #446 added this Layer-1 parallel drift-gate PreToolUse hook; measured here so
135
+ # the new production hook is not excluded from coverage.
136
+ '.claude/hooks/enforce-parallel-drift-gate.ps1'
137
+ # Issue #446 remediation cycle 1 split the seven shape-and-derivation helpers out of
138
+ # that hook into this dot-sourced sibling module; measured here so the Coverage
139
+ # Exclusion Policy's no-production-file-excluded rule still holds after the split.
140
+ '.claude/hooks/enforce-parallel-drift-gate-helpers.ps1'
141
+ # Issue #442 added this PreToolUse abandon-gate hook, which guards the destructive
142
+ # parallel abandon disposition; measured here so the new production hook is not
143
+ # excluded from coverage. The test suite dot-sources the file (guarded body) so
144
+ # line attribution is valid.
145
+ '.claude/hooks/enforce-parallel-abandon-gate.ps1'
117
146
  )
118
147
  # Optional: don't fail the run on coverage percentage
119
148
  CoveragePercentTarget = 0