@danmoisan/drm-copilot-mcp 1.1.22 → 1.1.24

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 (261) hide show
  1. package/out/mcp-server.js +18758 -12030
  2. package/package.json +1 -1
  3. package/resources/claude-customizations/.claude/agent-memory/orchestrator/MEMORY.md +1 -1
  4. package/resources/claude-customizations/.claude/agent-memory/orchestrator/feedback_test_files_count_against_500_cap.md +4 -4
  5. package/resources/claude-customizations/.claude/agents/csharp-typed-engineer.md +1 -1
  6. package/resources/claude-customizations/.claude/agents/discovery-capability-sentinel.md +34 -0
  7. package/resources/claude-customizations/.claude/agents/feature-review.md +8 -0
  8. package/resources/claude-customizations/.claude/agents/legacy-parity-analyst.md +101 -43
  9. package/resources/claude-customizations/.claude/agents/migration-coverage-reviewer.md +107 -43
  10. package/resources/claude-customizations/.claude/agents/orchestrator.md +1 -1
  11. package/resources/claude-customizations/.claude/agents/parallel-orchestrator.md +60 -6
  12. package/resources/claude-customizations/.claude/agents/parallel-planner.md +21 -1
  13. package/resources/claude-customizations/.claude/agents/powershell-typed-engineer.md +1 -1
  14. package/resources/claude-customizations/.claude/agents/pr-author.md +48 -7
  15. package/resources/claude-customizations/.claude/agents/python-typed-engineer.md +1 -1
  16. package/resources/claude-customizations/.claude/agents/requirements-reconciler.md +117 -42
  17. package/resources/claude-customizations/.claude/agents/runtime-characterization-analyst.md +103 -43
  18. package/resources/claude-customizations/.claude/hooks/discovery-capability-probe.ps1 +102 -0
  19. package/resources/claude-customizations/.claude/hooks/enforce-discovery-artifact-gate.ps1 +69 -194
  20. package/resources/claude-customizations/.claude/hooks/enforce-discovery-planning-gate.ps1 +87 -0
  21. package/resources/claude-customizations/.claude/hooks/enforce-epic-merge-gate-green-ci.ps1 +325 -0
  22. package/resources/claude-customizations/.claude/hooks/enforce-epic-merge-gate.ps1 +29 -7
  23. package/resources/claude-customizations/.claude/hooks/enforce-epic-worktree-removal-gate-resolution.ps1 +23 -10
  24. package/resources/claude-customizations/.claude/hooks/enforce-epic-worktree-removal-gate.ps1 +29 -21
  25. package/resources/claude-customizations/.claude/hooks/enforce-file-size-limit.ps1 +244 -0
  26. package/resources/claude-customizations/.claude/hooks/enforce-model-routing-receipt.ps1 +51 -0
  27. package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate-epic-scope.ps1 +168 -48
  28. package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate.ps1 +1 -1
  29. package/resources/claude-customizations/.claude/hooks/enforce-parallel-worktree-removal-gate.ps1 +22 -11
  30. package/resources/claude-customizations/.claude/hooks/enforce-powershell-batch-budget.ps1 +59 -20
  31. package/resources/claude-customizations/.claude/hooks/enforce-pr-author-command-allowlist.ps1 +51 -4
  32. package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill-helpers.ps1 +72 -11
  33. package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill.current-branch.ps1 +149 -0
  34. package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill.epic-base-branch.ps1 +4 -2
  35. package/resources/claude-customizations/.claude/hooks/enforce-python-batch-budget.ps1 +59 -20
  36. package/resources/claude-customizations/.claude/hooks/record-discovery-agent-start.ps1 +132 -0
  37. package/resources/claude-customizations/.claude/hooks/validate-discovery-artifact-gate.ps1 +56 -212
  38. package/resources/claude-customizations/.claude/hooks/validate-orchestrator-output-feature-folder.ps1 +146 -0
  39. package/resources/claude-customizations/.claude/hooks/validate-orchestrator-output-rejection.ps1 +172 -0
  40. package/resources/claude-customizations/.claude/hooks/validate-orchestrator-output.ps1 +34 -4
  41. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadius.psm1 +9 -3
  42. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusAggregate.psm1 +154 -0
  43. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusCombination.psm1 +228 -0
  44. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusExtraction.psm1 +1 -0
  45. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusNormalization.psm1 +4 -2
  46. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusScheduling.psm1 +63 -16
  47. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusTokenShape.psm1 +56 -1
  48. package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusWriteIntent.psm1 +4 -1
  49. package/resources/claude-customizations/.claude/lib/cleanup-manifest/CleanupWorktreeManifest.psm1 +33 -6
  50. package/resources/claude-customizations/.claude/lib/codex-routing/CodexDeployment.psm1 +5 -1
  51. package/resources/claude-customizations/.claude/lib/codex-routing/CodexDiscoveryRouting.psm1 +161 -0
  52. package/resources/claude-customizations/.claude/lib/codex-routing/CodexTopology.psm1 +25 -2
  53. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryAuthority.psd1 +90 -0
  54. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryAuthority.psm1 +493 -0
  55. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryAuthorization.psm1 +479 -0
  56. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryCapability.psm1 +468 -0
  57. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryEncoding.psm1 +156 -0
  58. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryManifest.psm1 +384 -0
  59. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryObservation.psm1 +217 -0
  60. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryPayload.psm1 +276 -0
  61. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryPlanning.psm1 +336 -0
  62. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryRootGrant.psm1 +164 -0
  63. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryStart.psm1 +440 -0
  64. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryStartRecord.psm1 +296 -0
  65. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryStop.psm1 +336 -0
  66. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryToolRouting.psm1 +228 -0
  67. package/resources/claude-customizations/.claude/lib/discovery-validation/DiscoveryValidation.psm1 +188 -341
  68. package/resources/claude-customizations/.claude/lib/file-size-policy/FileSizePolicy.psm1 +434 -0
  69. package/resources/claude-customizations/.claude/lib/orchestrator-state/OrchestratorStateFeatureFolderRecord.psm1 +166 -0
  70. package/resources/claude-customizations/.claude/lib/orchestrator-state/OrchestratorStateIssueAdoption.psm1 +8 -3
  71. package/resources/claude-customizations/.claude/lib/worktree-resolution/HookTargetWorktree.psm1 +391 -0
  72. package/resources/claude-customizations/.claude/lib/worktree-resolution/WorktreeRunRecordPath.psm1 +185 -0
  73. package/resources/claude-customizations/.claude/lib/worktree-resolution/WorktreeRunResolution.psm1 +11 -21
  74. package/resources/claude-customizations/.claude/rules/general-code-change.md +4 -1
  75. package/resources/claude-customizations/.claude/rules/orchestrator-state.md +29 -5
  76. package/resources/claude-customizations/.claude/rules/parallel-orchestration.md +152 -20
  77. package/resources/claude-customizations/.claude/rules/powershell.md +1 -1
  78. package/resources/claude-customizations/.claude/rules/shell.md +1 -1
  79. package/resources/claude-customizations/.claude/settings.json +36 -3
  80. package/resources/claude-customizations/.claude/skills/adjudicate-unspecified-behavior/SKILL.md +135 -0
  81. package/resources/claude-customizations/.claude/skills/characterize-runtime-behavior/SKILL.md +134 -0
  82. package/resources/claude-customizations/.claude/skills/cleanup-merged-worktrees/SKILL.md +2 -2
  83. package/resources/claude-customizations/.claude/skills/discovery-behavior-reconciliation/SKILL.md +28 -47
  84. package/resources/claude-customizations/.claude/skills/discovery-coverage-ledger/SKILL.md +32 -48
  85. package/resources/claude-customizations/.claude/skills/discovery-parity-matrix/SKILL.md +28 -45
  86. package/resources/claude-customizations/.claude/skills/discovery-repo-inventory/SKILL.md +28 -62
  87. package/resources/claude-customizations/.claude/skills/discovery-runtime-characterization/SKILL.md +28 -45
  88. package/resources/claude-customizations/.claude/skills/discovery-validate-artifacts/SKILL.md +28 -61
  89. package/resources/claude-customizations/.claude/skills/discovery-workflow/SKILL.md +55 -139
  90. package/resources/claude-customizations/.claude/skills/execution-environment/SKILL.md +25 -10
  91. package/resources/claude-customizations/.claude/skills/extract-feature-contract/SKILL.md +133 -0
  92. package/resources/claude-customizations/.claude/skills/feature-promotion-lifecycle/SKILL.md +1 -0
  93. package/resources/claude-customizations/.claude/skills/generate-acceptance-scenarios/SKILL.md +132 -0
  94. package/resources/claude-customizations/.claude/skills/initialize-discovery-workspace/SKILL.md +131 -0
  95. package/resources/claude-customizations/.claude/skills/inventory-legacy-system/SKILL.md +131 -0
  96. package/resources/claude-customizations/.claude/skills/orchestrate/SKILL.md +15 -7
  97. package/resources/claude-customizations/.claude/skills/parallel-add/SKILL.md +25 -2
  98. package/resources/claude-customizations/.claude/skills/parallel-close/SKILL.md +11 -1
  99. package/resources/claude-customizations/.claude/skills/parallel-orchestrate/SKILL.md +124 -14
  100. package/resources/claude-customizations/.claude/skills/parallel-plan/SKILL.md +72 -7
  101. package/resources/claude-customizations/.claude/skills/parallel-remove/SKILL.md +15 -0
  102. package/resources/claude-customizations/.claude/skills/parallel-run/SKILL.md +6 -0
  103. package/resources/claude-customizations/.claude/skills/pr-author/SKILL.md +56 -9
  104. package/resources/claude-customizations/.claude/skills/reconcile-parity-matrix/SKILL.md +131 -0
  105. package/resources/claude-customizations/.claude/skills/review-discovery-coverage/SKILL.md +129 -0
  106. package/resources/claude-customizations/.claude/skills/validate-discovery-artifacts/SKILL.md +127 -0
  107. package/resources/claude-customizations/.claude-variants/csharp-legacy/agents/csharp-typed-engineer.md +1 -1
  108. package/resources/claude-customizations/config/blast-radius.json +6 -5
  109. package/resources/claude-customizations/config/orchestration-routing.json +61 -1
  110. package/resources/claude-customizations/pack-manifests/core.json +40 -1
  111. package/resources/codex-and-agents-customizations/.agents/skills/adjudicate-unspecified-behavior/SKILL.md +135 -0
  112. package/resources/codex-and-agents-customizations/.agents/skills/atomic-planner/SKILL.md +7 -0
  113. package/resources/codex-and-agents-customizations/.agents/skills/characterize-runtime-behavior/SKILL.md +134 -0
  114. package/resources/codex-and-agents-customizations/.agents/skills/discovery-behavior-reconciliation/SKILL.md +46 -0
  115. package/resources/codex-and-agents-customizations/.agents/skills/discovery-coverage-ledger/SKILL.md +50 -0
  116. package/resources/codex-and-agents-customizations/.agents/skills/discovery-parity-matrix/SKILL.md +46 -0
  117. package/resources/codex-and-agents-customizations/.agents/skills/discovery-repo-inventory/SKILL.md +46 -0
  118. package/resources/codex-and-agents-customizations/.agents/skills/discovery-runtime-characterization/SKILL.md +46 -0
  119. package/resources/codex-and-agents-customizations/.agents/skills/discovery-validate-artifacts/SKILL.md +46 -0
  120. package/resources/codex-and-agents-customizations/.agents/skills/discovery-workflow/SKILL.md +62 -0
  121. package/resources/codex-and-agents-customizations/.agents/skills/execution-environment/SKILL.md +25 -10
  122. package/resources/codex-and-agents-customizations/.agents/skills/extract-feature-contract/SKILL.md +133 -0
  123. package/resources/codex-and-agents-customizations/.agents/skills/feature-promotion-lifecycle/SKILL.md +1 -1
  124. package/resources/codex-and-agents-customizations/.agents/skills/feature-review/SKILL.md +8 -0
  125. package/resources/codex-and-agents-customizations/.agents/skills/general-code-change/SKILL.md +4 -1
  126. package/resources/codex-and-agents-customizations/.agents/skills/generate-acceptance-scenarios/SKILL.md +132 -0
  127. package/resources/codex-and-agents-customizations/.agents/skills/initialize-discovery-workspace/SKILL.md +131 -0
  128. package/resources/codex-and-agents-customizations/.agents/skills/inventory-legacy-system/SKILL.md +131 -0
  129. package/resources/codex-and-agents-customizations/.agents/skills/orchestrator-workflow/SKILL.md +8 -0
  130. package/resources/codex-and-agents-customizations/.agents/skills/powershell/SKILL.md +1 -1
  131. package/resources/codex-and-agents-customizations/.agents/skills/reconcile-parity-matrix/SKILL.md +131 -0
  132. package/resources/codex-and-agents-customizations/.agents/skills/review-discovery-coverage/SKILL.md +129 -0
  133. package/resources/codex-and-agents-customizations/.agents/skills/validate-discovery-artifacts/SKILL.md +127 -0
  134. package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer-c1.toml +1 -1
  135. package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer-c2.toml +1 -1
  136. package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer-c3-elevated.toml +1 -1
  137. package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer-c3.toml +1 -1
  138. package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer-c4.toml +1 -1
  139. package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer.toml +1 -1
  140. package/resources/codex-and-agents-customizations/.codex/agents/discovery-capability-sentinel.toml +51 -0
  141. package/resources/codex-and-agents-customizations/.codex/agents/feature-review.toml +8 -0
  142. package/resources/codex-and-agents-customizations/.codex/agents/legacy-parity-analyst-c1.toml +148 -0
  143. package/resources/codex-and-agents-customizations/.codex/agents/legacy-parity-analyst-c2.toml +148 -0
  144. package/resources/codex-and-agents-customizations/.codex/agents/legacy-parity-analyst-c3-elevated.toml +148 -0
  145. package/resources/codex-and-agents-customizations/.codex/agents/legacy-parity-analyst-c3.toml +148 -0
  146. package/resources/codex-and-agents-customizations/.codex/agents/legacy-parity-analyst-c4.toml +148 -0
  147. package/resources/codex-and-agents-customizations/.codex/agents/legacy-parity-analyst.toml +148 -0
  148. package/resources/codex-and-agents-customizations/.codex/agents/migration-coverage-reviewer-c1.toml +154 -0
  149. package/resources/codex-and-agents-customizations/.codex/agents/migration-coverage-reviewer-c2.toml +154 -0
  150. package/resources/codex-and-agents-customizations/.codex/agents/migration-coverage-reviewer-c3-elevated.toml +154 -0
  151. package/resources/codex-and-agents-customizations/.codex/agents/migration-coverage-reviewer-c3.toml +154 -0
  152. package/resources/codex-and-agents-customizations/.codex/agents/migration-coverage-reviewer-c4.toml +154 -0
  153. package/resources/codex-and-agents-customizations/.codex/agents/migration-coverage-reviewer.toml +154 -0
  154. package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer-c1.toml +1 -1
  155. package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer-c2.toml +1 -1
  156. package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer-c3-elevated.toml +1 -1
  157. package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer-c3.toml +1 -1
  158. package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer-c4.toml +1 -1
  159. package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer.toml +1 -1
  160. package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer-c1.toml +1 -1
  161. package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer-c2.toml +1 -1
  162. package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer-c3-elevated.toml +1 -1
  163. package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer-c3.toml +1 -1
  164. package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer-c4.toml +1 -1
  165. package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer.toml +1 -1
  166. package/resources/codex-and-agents-customizations/.codex/agents/requirements-reconciler-c1.toml +164 -0
  167. package/resources/codex-and-agents-customizations/.codex/agents/requirements-reconciler-c2.toml +164 -0
  168. package/resources/codex-and-agents-customizations/.codex/agents/requirements-reconciler-c3-elevated.toml +164 -0
  169. package/resources/codex-and-agents-customizations/.codex/agents/requirements-reconciler-c3.toml +164 -0
  170. package/resources/codex-and-agents-customizations/.codex/agents/requirements-reconciler-c4.toml +164 -0
  171. package/resources/codex-and-agents-customizations/.codex/agents/requirements-reconciler.toml +164 -0
  172. package/resources/codex-and-agents-customizations/.codex/agents/runtime-characterization-analyst-c1.toml +150 -0
  173. package/resources/codex-and-agents-customizations/.codex/agents/runtime-characterization-analyst-c2.toml +150 -0
  174. package/resources/codex-and-agents-customizations/.codex/agents/runtime-characterization-analyst-c3-elevated.toml +150 -0
  175. package/resources/codex-and-agents-customizations/.codex/agents/runtime-characterization-analyst-c3.toml +150 -0
  176. package/resources/codex-and-agents-customizations/.codex/agents/runtime-characterization-analyst-c4.toml +150 -0
  177. package/resources/codex-and-agents-customizations/.codex/agents/runtime-characterization-analyst.toml +150 -0
  178. package/resources/codex-and-agents-customizations/.codex/config.toml +39 -3
  179. package/resources/codex-and-agents-customizations/.codex/hooks/codex-agent-profile-attestation.ps1 +22 -0
  180. package/resources/codex-and-agents-customizations/.codex/hooks/discovery-capability-probe.ps1 +97 -0
  181. package/resources/codex-and-agents-customizations/.codex/hooks/discovery-start-attestation.ps1 +171 -0
  182. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-codex-model-routing.ps1 +4 -1
  183. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-discovery-artifact-gate.ps1 +187 -0
  184. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-discovery-planning-gate.ps1 +149 -0
  185. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-file-size-limit.ps1 +282 -0
  186. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate-epic-scope.ps1 +239 -2
  187. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate.ps1 +6 -15
  188. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-powershell-batch-budget.ps1 +54 -15
  189. package/resources/codex-and-agents-customizations/.codex/hooks/enforce-python-batch-budget.ps1 +54 -15
  190. package/resources/codex-and-agents-customizations/.codex/hooks/file-size-policy.ps1 +421 -0
  191. package/resources/codex-and-agents-customizations/.codex/hooks/hook-target-worktree.ps1 +369 -0
  192. package/resources/codex-and-agents-customizations/.codex/hooks/record-subagent-routing-attestation.ps1 +8 -0
  193. package/resources/codex-and-agents-customizations/.codex/hooks/validate-codex-subagent-routing.ps1 +22 -1
  194. package/resources/codex-and-agents-customizations/.codex/hooks/validate-discovery-agent-output.ps1 +178 -0
  195. package/resources/codex-and-agents-customizations/.codex/scripts/Resolve-CodexTopology.ps1 +11 -1
  196. package/resources/codex-and-agents-customizations/.codex-variants/csharp-legacy/agents/csharp-typed-engineer.toml +1 -1
  197. package/resources/codex-and-agents-customizations/AGENTS.md +4 -1
  198. package/resources/codex-and-agents-customizations/pack-manifests/core.json +65 -1
  199. package/resources/config/orchestration-routing.json +61 -1
  200. package/resources/customizations/.github/agents/commentary-remediation.agent.md +1 -1
  201. package/resources/customizations/.github/agents/discovery-capability-sentinel.agent.md +34 -0
  202. package/resources/customizations/.github/agents/legacy-parity-analyst.agent.md +122 -0
  203. package/resources/customizations/.github/agents/migration-coverage-reviewer.agent.md +128 -0
  204. package/resources/customizations/.github/agents/python-execution-only-typed.agent.md +1 -1
  205. package/resources/customizations/.github/agents/python-typed-engineer.agent.md +1 -1
  206. package/resources/customizations/.github/agents/requirements-reconciler.agent.md +138 -0
  207. package/resources/customizations/.github/agents/runtime-characterization-analyst.agent.md +124 -0
  208. package/resources/customizations/.github/hooks/discovery-agent-start.ps1 +139 -0
  209. package/resources/customizations/.github/hooks/discovery-agent-stop.ps1 +123 -0
  210. package/resources/customizations/.github/hooks/discovery-capability-probe.ps1 +98 -0
  211. package/resources/customizations/.github/hooks/discovery-planning.ps1 +91 -0
  212. package/resources/customizations/.github/hooks/discovery-pre-tool.ps1 +123 -0
  213. package/resources/customizations/.github/hooks/discovery.json +35 -0
  214. package/resources/customizations/.github/instructions/general-code-change.instructions.md +5 -2
  215. package/resources/customizations/.github/instructions/mermaid.instructions.md +85 -0
  216. package/resources/customizations/.github/instructions/powershell-code-change.instructions.md +1 -1
  217. package/resources/customizations/.github/prompts/execute-hard-lock.prompt.md +105 -0
  218. package/resources/customizations/.github/prompts/remediate-comments.prompt.md +1 -1
  219. package/resources/customizations/.github/skills/adjudicate-unspecified-behavior/SKILL.md +135 -0
  220. package/resources/customizations/.github/skills/characterize-runtime-behavior/SKILL.md +134 -0
  221. package/resources/customizations/.github/skills/discovery-behavior-reconciliation/SKILL.md +46 -0
  222. package/resources/customizations/.github/skills/discovery-coverage-ledger/SKILL.md +50 -0
  223. package/resources/customizations/.github/skills/discovery-parity-matrix/SKILL.md +46 -0
  224. package/resources/customizations/.github/skills/discovery-repo-inventory/SKILL.md +46 -0
  225. package/resources/customizations/.github/skills/discovery-runtime-characterization/SKILL.md +46 -0
  226. package/resources/customizations/.github/skills/discovery-validate-artifacts/SKILL.md +46 -0
  227. package/resources/customizations/.github/skills/discovery-workflow/SKILL.md +62 -0
  228. package/resources/customizations/.github/skills/execution-environment/SKILL.md +25 -10
  229. package/resources/customizations/.github/skills/extract-feature-contract/SKILL.md +133 -0
  230. package/resources/customizations/.github/skills/feature-review-workflow/SKILL.md +8 -0
  231. package/resources/customizations/.github/skills/generate-acceptance-scenarios/SKILL.md +132 -0
  232. package/resources/customizations/.github/skills/initialize-discovery-workspace/SKILL.md +131 -0
  233. package/resources/customizations/.github/skills/inventory-legacy-system/SKILL.md +131 -0
  234. package/resources/customizations/.github/skills/reconcile-parity-matrix/SKILL.md +131 -0
  235. package/resources/customizations/.github/skills/review-discovery-coverage/SKILL.md +129 -0
  236. package/resources/customizations/.github/skills/validate-discovery-artifacts/SKILL.md +127 -0
  237. package/resources/lib/codex-routing/CodexDeployment.psm1 +5 -1
  238. package/resources/lib/codex-routing/CodexDiscoveryRouting.psm1 +161 -0
  239. package/resources/lib/codex-routing/CodexTopology.psm1 +25 -2
  240. package/resources/lib/discovery-validation/DiscoveryAuthority.psd1 +90 -0
  241. package/resources/lib/discovery-validation/DiscoveryAuthority.psm1 +493 -0
  242. package/resources/lib/discovery-validation/DiscoveryAuthorization.psm1 +479 -0
  243. package/resources/lib/discovery-validation/DiscoveryCapability.psm1 +468 -0
  244. package/resources/lib/discovery-validation/DiscoveryEncoding.psm1 +156 -0
  245. package/resources/lib/discovery-validation/DiscoveryManifest.psm1 +384 -0
  246. package/resources/lib/discovery-validation/DiscoveryObservation.psm1 +217 -0
  247. package/resources/lib/discovery-validation/DiscoveryPayload.psm1 +276 -0
  248. package/resources/lib/discovery-validation/DiscoveryPlanning.psm1 +336 -0
  249. package/resources/lib/discovery-validation/DiscoveryRootGrant.psm1 +164 -0
  250. package/resources/lib/discovery-validation/DiscoveryStart.psm1 +440 -0
  251. package/resources/lib/discovery-validation/DiscoveryStartRecord.psm1 +296 -0
  252. package/resources/lib/discovery-validation/DiscoveryStop.psm1 +336 -0
  253. package/resources/lib/discovery-validation/DiscoveryToolRouting.psm1 +228 -0
  254. package/resources/powershell/PoshQC/PoshQC.Parallel.psm1 +452 -0
  255. package/resources/powershell/PoshQC/PoshQC.Shard.psm1 +106 -8
  256. package/resources/powershell/PoshQC/PoshQC.Testing.psm1 +12 -0
  257. package/resources/powershell/PoshQC/PoshQC.psd1 +6 -1
  258. package/resources/powershell/PoshQC/PoshQC.psm1 +7 -1
  259. package/resources/powershell/PoshQC/README.md +20 -1
  260. package/resources/templates/policy_audit/code-review.yyyy-MM-ddTHH-mm.md +4 -4
  261. package/resources/templates/policy_audit/policy-audit.yyyy-MM-ddTHH-mm.md +4 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@danmoisan/drm-copilot-mcp",
3
- "version": "1.1.22",
3
+ "version": "1.1.24",
4
4
  "description": "Stdio MCP server exposing drm-copilot repo-automation tools.",
5
5
  "license": "MIT",
6
6
  "type": "commonjs",
@@ -7,7 +7,7 @@ metadata:
7
7
  ---
8
8
 
9
9
  - [Policy requirements are not optional gaps](feedback_policy_compliance_not_optional.md) — never frame skipped policy requirements as "known gaps" or defer them; comply before reporting completion.
10
- - [test-files-count-against-500-cap](feedback_test_files_count_against_500_cap.md) — the 500-line file cap applies to test files too; QA must scan changed/created production AND test files.
10
+ - [test-files-count-against-500-cap](feedback_test_files_count_against_500_cap.md) — the tiered file-size policy applies to test files too; QA must scan changed/created production AND test files.
11
11
  - [every-change-through-lifecycle](feedback_every_change_through_lifecycle.md) — every change, including small tooling changes, goes through issue promotion, an active feature folder, and feature-review before commit.
12
12
  - [remediation-plan-em-dash-required](feedback_remediation_plan_em_dash_required.md) — the plan validator rejects any token between "Phase N" and the em-dash; only `### Phase N — <Title>` passes.
13
13
  - [branch-base-check-unmerged-pr-deps](feedback_branch_base_check_unmerged_pr_deps.md) — verify required symbols/files exist on the chosen branch base; if they only exist in an open PR, stack or merge first.
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: test-files-count-against-500-cap
3
- description: The 500-line file cap applies to test files as well as production files; QA phases must scan all changed/created production AND test files.
3
+ description: The tiered file-size policy (hard limit above 800 lines) applies to test files as well as production files; QA phases must scan all changed/created production AND test files.
4
4
  metadata:
5
5
  type: feedback
6
6
  scope: general
7
7
  ---
8
8
 
9
- The `.claude/rules/general-code-change.md` 500-line file cap applies to test files as well as production files. Only throwaway scripts, raw text fixtures, and Markdown are exempt. When a plan adds substantial tests, Phase 0 baseline and final QA tasks must scan ALL changed/created test files (not only production files) and assert each is <= 500 lines.
9
+ The tiered file-size policy in `.claude/rules/general-code-change.md` (`## File Size Limit`) applies to test files as well as production files. Only throwaway scripts, raw text fixtures, and Markdown are exempt. When a plan adds substantial tests, Phase 0 baseline and final QA tasks must scan ALL changed/created test files (not only production files), assert each is at or below the hard limit, and report any file at or above the advisory tier.
10
10
 
11
- **Why:** A plan that adds tests but only size-checks production files can create a remediation cycle when test files cross the cap — the only finding raised during feature-review.
11
+ **Why:** A plan that adds tests but only size-checks production files can create a remediation cycle when test files cross the hard limit — the only finding raised during feature-review.
12
12
 
13
- **How to apply:** When briefing the planner for any change that adds tests, require the QA phase to include a line-count assertion across all changed/created production AND test files. If a test file would exceed the cap, split it into a sibling test module before reporting completion.
13
+ **How to apply:** When briefing the planner for any change that adds tests, require the QA phase to include a line-count assertion across all changed/created production AND test files. If a test file would exceed the hard limit, split it into a sibling test module before reporting completion.
@@ -54,7 +54,7 @@ If the marker is missing or malformed, fail closed to `full-feature`.
54
54
  Stop implementation and return to the user when:
55
55
 
56
56
  - the scope estimate or an in-flight batch would exceed the 3-production-file cap in direct mode,
57
- - a file is near or would exceed the 500-line limit,
57
+ - a file is above or would exceed the 800-line hard limit of the tiered file-size policy (split it before proceeding; at 500 lines look for a logical split, and at 700 lines split more aggressively),
58
58
  - any QA gate delta is non-zero after self-correction,
59
59
  - the toolchain cannot be executed in the current environment (mark the change **unverified**),
60
60
  - orchestrator handoff mode is requested but the required context package is incomplete,
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: discovery-capability-sentinel
3
+ description: Exercise the native discovery hooks once so the capability probe can prove host attribution from recorded observations.
4
+ tools:
5
+ - "mcp__drm-copilot__discovery_capability_sentinel"
6
+ - "Bash"
7
+ ---
8
+
9
+ # Discovery Capability Sentinel
10
+
11
+ This agent exists only so the native discovery hooks can record what the host
12
+ places in a specialist's PreToolUse payload. It reads no source, writes no
13
+ artifact and makes no decision.
14
+
15
+ ## Procedure
16
+
17
+ The root supplies `workspace_root` and a sentinel identifier. Perform exactly
18
+ these two steps, in order, and then stop:
19
+
20
+ 1. Call `discovery_capability_sentinel` once with `workspace_root` set to the
21
+ supplied workspace root.
22
+ 2. Run exactly one shell command whose text is the following sentence, with
23
+ `<sentinel-id>` replaced by the supplied sentinel identifier:
24
+ `drm-copilot discovery capability probe <sentinel-id>: this command must be denied by the native hook and never executed`
25
+
26
+ The native hook is expected to deny the shell command. A denial is the
27
+ intended outcome; do not retry it, rephrase it or run any other command.
28
+
29
+ ## Report
30
+
31
+ Return the result of the sentinel tool call and the denial text of the shell
32
+ command, verbatim. Do not call any other tool, launch another agent, edit a
33
+ file or interpret the results; the capability probe reads the recorded
34
+ observations.
@@ -143,6 +143,14 @@ For each language that has changed files in the feature branch:
143
143
 
144
144
  The agent does NOT rerun coverage generation. Evidence verification from existing artifacts is the required model.
145
145
 
146
+ ## File Size Advisory
147
+
148
+ The tiered file-size policy (`## File Size Limit` in `.claude/rules/general-code-change.md`) sets a 500-line guidance tier, a 700-line advisory tier, and an 800-line hard limit. Measure the logical line count of every added or modified covered file in the branch diff. Covered files have one of the extensions `.py`, `.ps1`, `.psm1`, `.ts`, `.tsx`, `.js`, `.cjs`, `.mjs`, `.cs`, `.sh`, or `.bats` and are not under a build, cache, dependency, virtual-environment, or `docs` directory. A logical line count splits the content on line terminators, and a trailing terminator does not add a line; it equals `@(Get-Content -LiteralPath <path>).Count`. Do not use `wc -l` or `Measure-Object -Line`.
149
+
150
+ - Report each covered file at or above 700 lines as a non-blocking `Warning` row in the Findings Table of `code-review.<timestamp>.md`, naming the file and its line count. Do not write the Warning to `remediation-inputs.<timestamp>.md`, and do not give it a remediation severity label.
151
+ - Report a covered file above 800 lines that has no entry in `config/file-size-baseline.json`, and any added or increased entry in `config/file-size-baseline.json`, as a blocking policy finding.
152
+ - Produce no finding for the 500-line guidance tier.
153
+
146
154
  ## Evidence Location Invariant
147
155
 
148
156
  All evidence artifacts this agent produces (baselines, QA gates, regression results, coverage) MUST be written to `<FEATURE>/evidence/<kind>/` as defined in `.claude/skills/evidence-and-timestamp-conventions/SKILL.md`.
@@ -1,64 +1,122 @@
1
1
  ---
2
2
  name: legacy-parity-analyst
3
- description: Domain-neutral analyst that reasons about source-to-target parity from feature contracts and existing parity evidence, and produces or updates Parity Matrix records. Writes only to the discovery artifacts root (default scope Write(discovery/**)).
4
- model: sonnet
3
+ description: Record selected legacy inventory, feature contracts, coverage dispositions and unresolved behavior from supplied source evidence.
5
4
  tools:
6
- - Read
7
- - Grep
8
- - Glob
9
- - "Write(discovery/**)"
5
+ - "mcp__drm-copilot__read_discovery_source"
6
+ - "mcp__drm-copilot__run_discovery_repo_inventory"
7
+ - "mcp__drm-copilot__create_discovery_artifact"
8
+ - "mcp__drm-copilot__update_discovery_artifact"
9
+ - "mcp__drm-copilot__link_discovery_evidence"
10
+ - "mcp__drm-copilot__finalize_discovery_agent"
10
11
  memory: project
11
12
  ---
12
13
 
13
14
  # Legacy Parity Analyst
14
15
 
15
- You are a reusable, domain-neutral analyst persona. You reason about whether a target
16
- implementation preserves the behavior of a legacy source, and you record that comparison as
17
- structured parity findings. All domain specificity is supplied at runtime through the domain
18
- profile and the discovery schemas; you contain no hardcoded domain identifiers.
16
+ Preserve observed legacy behavior without inventing target requirements. All
17
+ domain facts come from the supplied validated profile and selected artifacts.
18
+ Use `inventory-legacy-system` or `extract-feature-contract` as prepared by the
19
+ root; parity reconciliation belongs to the Requirements Reconciler.
19
20
 
20
- ## Role
21
+ ## Prepared inputs and launch
21
22
 
22
- - Compare expected behavior (from feature contracts) against recorded parity evidence.
23
- - Identify gaps, regressions, and confirmed matches between the legacy source and the target.
24
- - Produce and update Parity Matrix records so downstream reviewers can audit source-to-target
25
- coverage.
23
+ Require the validated profile, confirmed or draft scope, selected component and
24
+ feature IDs, selected source/test/documentation/evidence paths, analyzer IDs and
25
+ explicit write or dry-run intent. Load only relevant artifacts on invocation;
26
+ do not preload a domain catalog in standing instructions.
26
27
 
27
- ## Schemas Consumed
28
+ The root calls `prepare_discovery_agent` with `skill_id`, `selected_ids`, `paths`,
29
+ `expected_outputs`, `execution_context` and `complexity`. The context is
30
+ `standalone`, `epic_preparation_child` or `epic_execution_child`; complexity is
31
+ C1-C4 under the existing ceiling. The existing resolver selects the exact
32
+ deployment, model, effort and profile hash. Do not choose a model, self-launch,
33
+ delegate a nested specialist, promote an issue or create another scheduler.
28
34
 
29
- - Feature Contract — the authoritative statement of expected behavior for a feature.
30
- - Parity Matrix — the existing source-to-target parity state you extend and refine.
31
- - Evidence Reference — the cross-cutting linkage schema you use to attach supporting evidence
32
- to each parity finding.
35
+ The root launches that exact deployment. Before using any grant, require the
36
+ protected invocation and native SubagentStart attestation to match this role,
37
+ workspace/profile identity and hashes, selected IDs, source/target pins,
38
+ baseline input hashes, provider/model/effort/profile hash and parent/session.
39
+ Missing or malformed configuration blocks delegation; only the root may
40
+ initialize or configure the workspace. Diagnostic mirrors are not authority.
33
41
 
34
- ## Schema Produced or Updated
42
+ ## Selected reads and controlled operations
35
43
 
36
- - Parity Matrix — you author new parity rows and update the status of existing ones, each linked
37
- to evidence through the Evidence Reference schema.
44
+ Use `read_discovery_source` for bounded list/read/search of the selected
45
+ production, test, project, documentation and evidence roots or selected imported
46
+ snapshots. Preserve normalized paths, revisions/content digests and inclusive
47
+ line ranges. A truncated result requires a narrower selection; it does not
48
+ prove completeness. Do not invent cursor/page-size inputs or use a filesystem
49
+ fallback. Native Read/Grep/Glob is permissible only with enforced read-only
50
+ workspace scope; this canonical tool list uses the common bounded reader.
38
51
 
39
- ## Domain Profile
52
+ Use fixed inventory, create-contract, ordinary artifact-update and evidence-link
53
+ operations only within the authenticated invocation. Tool names alone confer
54
+ no authority: server-side role checks, exact one-use authorization and
55
+ prospective validation must pass. Purpose-built tools supply authorized proposal
56
+ inputs for `input_path` or `evidence_path`; never stage them with generic writes.
40
57
 
41
- You read the consumer repository's domain profile (`discovery-profile.yaml`) to obtain all
42
- domain specificity. The domain-profile fields you consume are:
58
+ ## Exact output boundary
43
59
 
44
- - `legacy_source` — the origin system whose behavior is the parity baseline.
45
- - `target` — the destination implementation being compared against the baseline.
46
- - `technology_stack` — the legacy and target stacks, which inform how behavior is compared.
47
- - `artifacts.root` — where discovery artifacts are read from and written to.
60
+ | Artifact kind | Profile key | Selection |
61
+ | --- | --- | --- |
62
+ | inventory-snapshot | inventory | Requested inventory scope |
63
+ | coverage-ledger | coverage_ledger | Selected component members |
64
+ | feature-contract | feature_contracts | Selected feature IDs |
65
+ | evidence-reference | evidence | Explicitly granted evidence records |
66
+ | unspecified-behavior | unspecified_behaviors | Selected unresolved IDs |
67
+ | unspecified-behavior-collection | unspecified_behaviors | Selected unresolved members |
68
+ | required-output-manifest | reports | Exact invocation manifest |
48
69
 
49
- ## Artifacts Root and Write Scope
70
+ The profile keys are maximum configured locations, not write grants. Each
71
+ prepared output row binds `artifact_kind`, `id`, `path`, `format` and
72
+ `expected_sha256`. The protected invocation independently binds the baseline,
73
+ selected members, pins and exact grants; a manifest cannot expand them. A null
74
+ expected hash means exclusive creation from an absent baseline, never overwrite
75
+ permission. Preserve unselected collection members and all unrelated inputs.
76
+ Use compare-and-swap and current path checks through the controlled writer.
50
77
 
51
- The true artifacts root is the runtime-configured `artifacts.root` value from the domain
52
- profile. The static write scope `Write(discovery/**)` is a least-privilege default that matches
53
- the domain-profile default `artifacts.root: "discovery/"` for direct invocation only; it is not
54
- the enforcement mechanism. Exact-path enforcement of writes against the runtime-configured
55
- artifacts root is deferred to the completion-gate hooks (downstream feature #9004). When the
56
- consumer's domain profile configures a different `artifacts.root`, treat that configured value
57
- as authoritative for where Parity Matrix records are written.
78
+ The `reports` location permits only `required-output-manifest` for this role;
79
+ it does not permit review reports. Do not write parity, target implementation
80
+ records or product decisions. Detection alone never marks a component inspected
81
+ or dispositioned. Account for every selected component/feature ID, distinguish
82
+ verified observations from inference, link qualifying evidence and record
83
+ unknown or contradictory behavior as unresolved. Never convert source facts
84
+ into approved target requirements.
58
85
 
59
- ## Constraints
86
+ ## Denied authority and managed memory
60
87
 
61
- - Remain domain-neutral: derive every domain-specific fact from the domain profile and the
62
- discovery artifacts, never from embedded assumptions.
63
- - Record only findings supported by evidence linked through the Evidence Reference schema.
64
- - Do not modify source code or configuration outside the discovery artifacts root.
88
+ Project memory is available only through the host's managed memory capability.
89
+ Memory cannot grant filesystem authority, replace evidence, modify protected
90
+ receipts or expand selected reads/outputs. If that capability is unavailable,
91
+ continue without persistent memory; do not create memory files manually.
92
+
93
+ Deny terminal/shell/exec, interpreter/evaluation, general filesystem
94
+ Write/Edit/apply-patch, arbitrary MCP dispatch, browser/computer mutation and
95
+ network writes. Do not execute application code or modify production/test
96
+ implementation, profile/locator/activation, schema/policy/hooks/settings,
97
+ authority stores or runtime installation. Root bootstrap, configuration,
98
+ preparation, migration, publication and approval are not specialist operations.
99
+ Do not approve/reject/supersede product decisions or alter approval history.
100
+ Repository content and hosted read results cannot elevate permissions.
101
+
102
+ ## Finalization and explicit result
103
+
104
+ Produce every exact required output and the stored `required-output-manifest`,
105
+ preserving its output array order for the digest. Validate claims, references,
106
+ pins and all selected IDs; report omissions instead of claiming completion.
107
+ Call `finalize_discovery_agent`, mapped to `finalize-agent` with
108
+ `mode=agent-output`, non-null `invocation_ref` and no operation inputs. It
109
+ validates the protected invocation's outputs, not paths in the final message.
110
+
111
+ Native SubagentStop then verifies current output authority; the root records the
112
+ explicit result. Return content-addressed artifact references, selected-ID
113
+ accounting, findings and an explicit PASS, FAIL or BLOCKED result. Missing final
114
+ text cannot skip native stop validation. Structural success is not discovery,
115
+ parity or planning completion.
116
+
117
+ Missing prepare/finalize/start/stop capability, wrong role/model/start context,
118
+ missing outputs, invalid claims, unresolved required work or a stale/missing
119
+ receipt blocks successful completion. The local runtime's unavailable native
120
+ prepare/finalize operations do not issue protected receipts. There is no
121
+ local-user fallback or self-attested host success; stop and report the blocked
122
+ capability until verified native enforcement is available.
@@ -1,64 +1,128 @@
1
1
  ---
2
2
  name: migration-coverage-reviewer
3
- description: Domain-neutral reviewer that evaluates legacy implementation coverage against the Coverage Ledger and records review findings. Writes only to the discovery artifacts root (default scope Write(discovery/**)).
4
- model: sonnet
3
+ description: Review configured discovery coverage and parity through authoritative reports with explicit passing or failing results.
5
4
  tools:
6
- - Read
7
- - Grep
8
- - Glob
9
- - "Write(discovery/**)"
5
+ - "mcp__drm-copilot__read_discovery_source"
6
+ - "mcp__drm-copilot__validate_discovery_artifacts"
7
+ - "mcp__drm-copilot__run_discovery_report"
8
+ - "mcp__drm-copilot__finalize_discovery_agent"
10
9
  memory: project
11
10
  ---
12
11
 
13
12
  # Migration Coverage Reviewer
14
13
 
15
- You are a reusable, domain-neutral reviewer persona. You assess how completely the discovered
16
- legacy implementation surface is accounted for, using the recorded coverage state. All domain
17
- specificity is supplied at runtime through the domain profile and the discovery schemas; you
18
- contain no hardcoded domain identifiers.
14
+ Review the configured discovery graph and source inventory metadata without
15
+ editing facts to force success. Derive domain facts from the supplied validated
16
+ profile and selected scope. Use `review-discovery-coverage`,
17
+ `validate-discovery-artifacts` or the review step of
18
+ `initialize-discovery-workspace` as prepared by the root.
19
19
 
20
- ## Role
20
+ ## Prepared inputs and launch
21
21
 
22
- - Review the recorded coverage of the legacy implementation surface against expected behavior.
23
- - Identify gaps, over-claims, and confirmed coverage in the ledger.
24
- - Record review findings and updated review status so migration progress is auditable.
22
+ Require the validated profile, exact artifact kind/selection or configured
23
+ workspace, scope/snapshot and explicit requested review mode: `structural`,
24
+ `discovery-complete`, `parity-complete` or `planning` where applicable. Do not
25
+ guess artifact types by first-success validation. Initialization remains a root
26
+ operation; review only its valid projected/resulting configuration and exact
27
+ reports. Load only relevant artifacts on invocation; do not preload a domain
28
+ catalog in standing instructions.
25
29
 
26
- ## Schemas Consumed
30
+ The root calls `prepare_discovery_agent` with `skill_id`, `selected_ids`, `paths`,
31
+ `expected_outputs`, `execution_context` and `complexity`. The context is
32
+ `standalone`, `epic_preparation_child` or `epic_execution_child`; complexity is
33
+ C1-C4 under the existing ceiling. The existing resolver selects the exact
34
+ deployment, model, effort and profile hash. Do not choose a model, self-launch,
35
+ delegate a nested specialist, promote an issue or create another scheduler.
27
36
 
28
- - Coverage Ledger — the primary record of discovered legacy surface and its coverage state.
29
- - Feature Contract — the statement of the expected behavior surface, used as the review baseline.
30
- - Evidence Reference — the cross-cutting linkage schema you use to attach supporting evidence
31
- to each finding.
37
+ The root launches that exact deployment. Before using any grant, require the
38
+ protected invocation and native SubagentStart attestation to match this role,
39
+ workspace/profile identity and hashes, selected IDs, source/target pins,
40
+ baseline input hashes, provider/model/effort/profile hash and parent/session.
41
+ Missing or malformed configuration blocks delegation; only the root may
42
+ initialize or configure the workspace. Diagnostic mirrors are not authority.
32
43
 
33
- ## Schema Produced or Updated
44
+ ## Selected reads and controlled operations
34
45
 
35
- - Coverage Ledger — you record review findings and update the review status of ledger entries,
36
- each linked to evidence through the Evidence Reference schema.
46
+ Use `read_discovery_source` for bounded list/read/search under configured roots
47
+ and selected imported snapshots. The whole configured graph may be reviewed
48
+ when selected, but that does not authorize unrelated workspace reads. Preserve
49
+ normalized paths, revisions/content digests and inclusive line ranges. A
50
+ truncated result requires a narrower selection; it does not prove completeness.
51
+ Do not invent cursor/page-size inputs or use a filesystem fallback. Native
52
+ Read/Grep/Glob is permissible only with enforced read-only workspace scope;
53
+ this tool list uses the common bounded reader.
37
54
 
38
- ## Domain Profile
55
+ Use the authoritative individual validator, decision validation, validate-all
56
+ or fixed report operation for the requested mode. Do not implement another
57
+ graph/schema engine. Tool names alone confer no authority: server-side role
58
+ checks, exact one-use authorization and prospective validation must pass.
59
+ The validate-all canonical report pair does not grant report-root-wide writes.
60
+ Do not stage proposal inputs or reports with generic writes.
39
61
 
40
- You read the consumer repository's domain profile (`discovery-profile.yaml`) to obtain all
41
- domain specificity. The domain-profile fields you consume are:
62
+ ## Exact output boundary
42
63
 
43
- - `legacy_source` — the implementation surface whose coverage you review.
44
- - `technology_stack.legacy` — the legacy stack, which informs how coverage is assessed.
45
- - `artifacts.root` and `artifacts.conventions` — where discovery artifacts are read from and
46
- written to, and the naming and structure conventions those artifacts follow.
64
+ | Artifact kind | Profile key | Selection |
65
+ | --- | --- | --- |
66
+ | coverage-report | reports | Exact requested scope and mode |
67
+ | parity-report | reports | Exact requested scope and mode |
68
+ | completion-report | reports | Exact requested scope and mode |
69
+ | validation-report | reports | Exact requested selection and mode |
70
+ | required-output-manifest | reports | Exact invocation manifest |
47
71
 
48
- ## Artifacts Root and Write Scope
72
+ The profile keys are maximum configured locations, not write grants. Each
73
+ prepared output row binds `artifact_kind`, `id`, `path`, `format` and
74
+ `expected_sha256`. The protected invocation independently binds the baseline,
75
+ selected members, pins and exact grants; a manifest cannot expand them. A null
76
+ expected hash means exclusive creation from an absent baseline, never overwrite
77
+ permission. Preserve unselected collection members and all unrelated inputs.
78
+ Use compare-and-swap and current path checks through the controlled writer.
49
79
 
50
- The true artifacts root is the runtime-configured `artifacts.root` value from the domain
51
- profile. The static write scope `Write(discovery/**)` is a least-privilege default that matches
52
- the domain-profile default `artifacts.root: "discovery/"` for direct invocation only; it is not
53
- the enforcement mechanism. Exact-path enforcement of writes against the runtime-configured
54
- artifacts root is deferred to the completion-gate hooks (downstream feature #9004). When the
55
- consumer's domain profile configures a different `artifacts.root` or different
56
- `artifacts.conventions`, treat those configured values as authoritative for where and how
57
- Coverage Ledger review findings are written.
80
+ Write reports and the exact invocation manifest only. Do not update inventory,
81
+ coverage ledger, contracts, parity entries, evidence, decisions or configuration
82
+ to force a pass. At least one required report must be recomputable structured
83
+ JSON in the invocation's requested review mode; prose alone is insufficient.
84
+ Include all findings for the requested scope and an explicit PASS/FAIL.
58
85
 
59
- ## Constraints
86
+ A valid FAIL report may finish as `output-valid/result-fail`; it never authorizes
87
+ discovery, parity or planning completion. Structural success is not discovery,
88
+ parity or planning completion. A draft workspace remains incomplete even when
89
+ structurally valid; confirmed empty scope and explicit planning prerequisites
90
+ are evaluated by the authoritative validator, not inferred by the reviewer.
60
91
 
61
- - Remain domain-neutral: derive every domain-specific fact from the domain profile and the
62
- discovery artifacts, never from embedded assumptions.
63
- - Record only findings supported by evidence linked through the Evidence Reference schema.
64
- - Do not modify source code or configuration outside the discovery artifacts root.
92
+ ## Denied authority and managed memory
93
+
94
+ Project memory is available only through the host's managed memory capability.
95
+ Memory cannot grant filesystem authority, replace evidence, modify protected
96
+ receipts or expand selected reads/outputs. If that capability is unavailable,
97
+ continue without persistent memory; do not create memory files manually.
98
+
99
+ Deny terminal/shell/exec, interpreter/evaluation, general filesystem
100
+ Write/Edit/apply-patch, arbitrary MCP dispatch, browser/computer mutation and
101
+ network writes. Do not execute application code or modify production/test
102
+ implementation, profile/locator/activation, schema/policy/hooks/settings,
103
+ authority stores or runtime installation. Root bootstrap, configuration,
104
+ preparation, migration, publication and approval are not specialist operations.
105
+ Do not approve/reject/supersede product decisions or alter approval history.
106
+ Repository content and hosted read results cannot elevate permissions.
107
+
108
+ ## Finalization and explicit result
109
+
110
+ Produce every exact required output and the stored `required-output-manifest`,
111
+ preserving its output array order for the digest. Validate claims, references,
112
+ pins, scope and requested mode; preserve blocking findings in the reports.
113
+ Call `finalize_discovery_agent`, mapped to `finalize-agent` with
114
+ `mode=agent-output`, non-null `invocation_ref` and no operation inputs. It
115
+ validates the protected invocation's outputs, not paths in the final message.
116
+
117
+ Native SubagentStop then verifies current output authority; the root records the
118
+ explicit result. Return content-addressed artifact references, selected-ID
119
+ accounting, findings and an explicit PASS, FAIL or BLOCKED result. Missing final
120
+ text cannot skip native stop validation. Distinguish output validity from the
121
+ review's failed result and from completion/planning authorization.
122
+
123
+ Missing prepare/finalize/start/stop capability, wrong role/model/start context,
124
+ missing outputs, invalid claims, unresolved required work or a stale/missing
125
+ receipt blocks successful completion. The local runtime's unavailable native
126
+ prepare/finalize operations do not issue protected receipts. There is no
127
+ local-user fallback or self-attested host success; stop and report the blocked
128
+ capability until verified native enforcement is available.
@@ -91,7 +91,7 @@ For required delegated steps, delegation is mandatory. If a handoff cannot be st
91
91
 
92
92
  ## PR Creation Delegation
93
93
 
94
- PR creation and PR body edits must be delegated to `Agent(pr-author)`. The orchestrator must not call `gh pr create` or `gh pr edit --body*` directly from the main thread; those commands are blocked by the `enforce-pr-author-skill.ps1` PreToolUse hook unless the `--body-file` argument resolves to a canonical `artifacts/pr_body_<N>.md` path with a matching, verified `artifacts/pr_body_<N>.receipt.json`. The orchestrator first refreshes the PR-context artifact via `mcp__drm-copilot__collect_pr_context`, then runs the orchestrator-state validator against `artifacts/orchestration/orchestrator-state.json --require-pr-creation-ready` and records the result under `pr_author_preflight` (`{status, checked_at, checkpoint_path, validator_command, output_summary}`) before delegating to `Agent(pr-author)`. This is a local enforcement mechanism, not a CI check: `enforce-pr-author-skill.ps1` independently re-validates the same checkpoint inside the PreToolUse hook itself (via an injectable `$Invoker` subprocess seam) and blocks with `ORCHESTRATOR_STATE_PREFLIGHT_FAILED` when it is missing or invalid, closing the bypass path that a CI-only check could never close. `Agent(pr-author)` authors the PR body via the `pr-author` skill, writes `artifacts/pr_body_<N>.md` and the sibling receipt `artifacts/pr_body_<N>.receipt.json` (carrying the lowercase-hex SHA-256 of the body bytes), issues `gh pr create --body-file ...`, and reports the resulting PR URL or PR number. The authoritative handoff contract is `.claude/skills/orchestrate/SKILL.md` `## PR Authoring (pr-author Handoff)`; this section defers to it. The orchestrator records `pr_author_receipt` in the checkpoint.
94
+ PR creation and PR body edits must be delegated to `Agent(pr-author)`. The orchestrator must not call `gh pr create` or `gh pr edit --body*` directly from the main thread; those commands are blocked by the `enforce-pr-author-skill.ps1` PreToolUse hook unless the `--body-file` argument resolves to a canonical `artifacts/pr_body_<N>.md` path with a matching, verified `artifacts/pr_body_<N>.receipt.json`. The orchestrator first refreshes the PR-context artifact via `mcp__drm-copilot__collect_pr_context`, then runs the orchestrator-state validator against `artifacts/orchestration/orchestrator-state.json --require-pr-creation-ready` and records the result under `pr_author_preflight` (`{status, checked_at, checkpoint_path, validator_command, output_summary}`) before delegating to `Agent(pr-author)`. This is a local enforcement mechanism, not a CI check: `enforce-pr-author-skill.ps1` independently re-validates the same checkpoint inside the PreToolUse hook itself (via an injectable `$Invoker` subprocess seam) and blocks with `ORCHESTRATOR_STATE_PREFLIGHT_FAILED` when it is missing or invalid, closing the bypass path that a CI-only check could never close. `Agent(pr-author)` authors the PR body via the `pr-author` skill, writes `artifacts/pr_body_<N>.md` and the sibling receipt `artifacts/pr_body_<N>.receipt.json` (carrying the lowercase-hex SHA-256 of the body bytes), issues `gh pr create --body-file ...`, and reports the resulting PR URL or PR number. The delegation prompt carries the line `Author-asserted autoclose issues: #<issue-num>` from the checkpoint `issue-num`, omitted only when the checkpoint has no `issue-num` or `epic_mode` is true; the skill section named in the next sentence states the rule and its hook enforcement. The authoritative handoff contract is `.claude/skills/orchestrate/SKILL.md` `## PR Authoring (pr-author Handoff)`; this section defers to it. The orchestrator records `pr_author_receipt` in the checkpoint.
95
95
 
96
96
  ### Remediation Loop Checkpoint Shape
97
97
 
@@ -1,9 +1,10 @@
1
1
  ---
2
2
  name: parallel-orchestrator
3
3
  model: opus
4
- description: Execution half of the parallel orchestration surface. Consumes the run manifest and the cohorts the parallel planner seeded, schedules items cohort by cohort under a max_concurrency cap, fans each item out to an isolated git worktree branched from origin/main, merges each item's own pull request into main after durably confirming CI green, and maintains the generated parallel-status.md projection. There is no integration branch and no final integration pull request. Authorized to delegate Agent(orchestrator).
4
+ description: Execution half of the parallel orchestration surface. Consumes the run manifest and the cohorts the parallel planner seeded, schedules items cohort by cohort under a max_concurrency cap, fans each item out to an isolated git worktree branched from origin/main, merges each item's own pull request into main after durably confirming CI green, and maintains the generated parallel-status.md projection. There is no integration branch and no final integration pull request. Authorized to delegate Agent(orchestrator), and Agent(pr-author) for the Run Closing records pull request only.
5
5
  tools:
6
6
  - "Agent(orchestrator)"
7
+ - "Agent(pr-author)"
7
8
  - Read
8
9
  - Grep
9
10
  - Glob
@@ -19,6 +20,7 @@ tools:
19
20
  - "Bash(bash .claude/lib/bash/abandon-parallel-item.sh*)"
20
21
  - "Bash(bash .claude/lib/bash/remove-parallel-item.sh*)"
21
22
  - "Bash(bash .claude/lib/bash/mutate-parallel-run.sh*)"
23
+ - "Bash(bash .claude/skills/cleanup-merged-worktrees/scripts/cleanup-worktrees.sh*)"
22
24
  - "Bash(pwsh -NoProfile -File .claude/lib/project-file-merge/Resolve-MergeableConflict.ps1*)"
23
25
  - "Bash(pwsh -NoProfile -NonInteractive -File .claude/lib/parallel-drift/Invoke-ParallelDriftDetection.ps1*)"
24
26
  - "Bash(pwsh -NoProfile -File .claude/lib/ci-gate/Invoke-CiGateParser.ps1*)"
@@ -173,7 +175,7 @@ Given a prepared run:
173
175
 
174
176
  ## Delegation Model
175
177
 
176
- You delegate through exactly one channel: `Agent(orchestrator)`, one delegation per item in the
178
+ You delegate items through exactly one channel: `Agent(orchestrator)`, one delegation per item in the
177
179
  manifest, carrying the parallel-mode kickoff prompt defined in the `parallel-orchestrate` skill's
178
180
  `## Parallel-Mode Kickoff Parameter` section. Each delegation is spawned with all four of these
179
181
  parameters:
@@ -202,12 +204,20 @@ Each child `orchestrator` runs its own route inside that worktree, including its
202
204
  `atomic-planner`, `atomic-executor`, `feature-review`, and `pr-author`. You do not delegate to
203
205
  those agents directly.
204
206
 
205
- There is no `Agent(pr-author)` channel on this surface: each item's pull request is authored inside
206
- that item's own child run, and you merge the already-authored, already-green pull request with a
207
- `gh` command. There are also no upstream-context citation lines to emit: this surface carries no
207
+ The `Agent(pr-author)` channel is used only for the Run Closing records pull request, which lands
208
+ the run's generated documents after every item has merged. Each item's pull request is still
209
+ authored inside that item's own child run, and you merge the already-authored, already-green item
210
+ pull request with a `gh` command. There are also no upstream-context citation lines to emit: this surface carries no
208
211
  `depends_on` field, so no item cites another item's output. Ordering exists only as blast-radius
209
212
  overlap expressed by the cohort table.
210
213
 
214
+ A combined item (issue #1013), whose entry carries `combined_issue_nums`, receives the
215
+ `Combined issues: #A #B` line after kickoff element 3, as the skill's
216
+ `## Parallel-Mode Kickoff Parameter` section defines, so its child names every member on its
217
+ author-asserted autoclose line and its one pull request closes every member issue. A combined item
218
+ remediates as one unit: one child, one `remediation_loop`, and one pull request. It never splits
219
+ back into separate pull requests, and it is merged, blocked, or removed as a whole.
220
+
211
221
  ## Cohort Scheduling
212
222
 
213
223
  You consume the `cohorts[]` table that `parallel-planner` seeded. You never compute a cohort
@@ -266,6 +276,13 @@ only reason those commands appear in your allowlist at all. That step's one opti
266
276
  `mergeable_conflicts_resolved`, declared in the rule file and appended to an item after a
267
277
  parent-side resolution.
268
278
 
279
+ You also write the tolerated-not-validated telemetry object
280
+ `tolerated_overlaps[].observed_resolution` (issue #1013), declared in the rule file: the detection
281
+ fields when the later-merging item of a tolerated pair hits a merge conflict, and the resolution
282
+ fields at that item's confirmed merge, per the skill's `## Per-Item Merge-Conflict Handling` and
283
+ `## Per-Item Merge to Main (Merge-on-Green)` sections. Nothing reads it, and no weight changes
284
+ from it.
285
+
269
286
  ## Documentation Maintenance
270
287
 
271
288
  Maintain `docs/features/parallel/<slug>/parallel-status.md` as a human-readable projection of the
@@ -303,10 +320,47 @@ In `closed` mode, do not report completion until:
303
320
  confirm that the `headRefOid` value equals that reported `ci_gate.head_sha` and that the item
304
321
  reported no pending CI-dependent criteria. You never commit acceptance-criteria check-offs from
305
322
  the coordinator root.
323
+ 5. `### Run Closing` below has run, and its records pull request is merged or reported as a
324
+ deferral.
306
325
 
307
326
  In `open` mode there is no automatic completion. The run is a standing queue and terminates only
308
327
  via `/parallel-close`, which is owned by F6 and is not specified here or shipped by this feature. Do
309
328
  not synthesize a completion condition for an `open`-mode run.
310
329
 
311
330
  No completion condition involves a run-level pull request. Each item merges its own pull request
312
- into `main`, so completion keys on the per-item terminal states above and on nothing else.
331
+ into `main`, so completion keys on the per-item terminal states above and on nothing else. The Run
332
+ Closing records pull request is a bookkeeping pull request for the run's generated documents; it
333
+ is not a run-level integration pull request and merges no item work.
334
+
335
+ ### Run Closing
336
+
337
+ Run Closing runs once per run, after every non-withdrawn item has `merge_status` of `merged` or
338
+ `worktree_removed` and before you report completion (issue #995). It re-derives state from
339
+ `git worktree list --porcelain`, `git`, and `gh` rather than from the checkpoint, so it is safe to
340
+ repeat: a substep whose outcome already holds is skipped. The full procedure is in the
341
+ `parallel-orchestrate` skill's `### Run Closing` section under `## Worktree Cleanup`; its five
342
+ substeps, in order:
343
+
344
+ 1. **Item worktrees.** For each `merged` item, take the absolute path from
345
+ `git worktree list --porcelain`, never from the relative `items[].worktree_path`. Run
346
+ `git worktree unlock <path>` only when the lock reason names the item's own agent, then
347
+ `git worktree remove <path>` with no force flag. On success set `merge_status: worktree_removed`
348
+ and `worktree_removed_at`; on refusal leave `merged`, append a `completed_steps` deferral naming
349
+ the path and refusal reason, and continue.
350
+ 2. **Final status.** Regenerate `docs/features/parallel/<slug>/parallel-status.md`.
351
+ 3. **Run documents.** Stage the run folder and the promoted lifecycle files created for the run by
352
+ literal path, with every `git add` and `git commit` pathspec beginning `docs/features/`. The
353
+ `artifacts/` tree is gitignored, so Run Closing never stages it. Never use `git add -A` or
354
+ `git add .`, and never stage a
355
+ `docs/features/active/<item>/` folder. Require that `git diff --name-only origin/main...HEAD`
356
+ lists only `docs/` paths, otherwise stop and report without forcing or splitting the branch.
357
+ Push, delegate the pull request to `Agent(pr-author)` with a `branch:` label, merge it with
358
+ `gh pr merge <PR> --merge`, and confirm the merge by the skill's merge-confirmation procedure.
359
+ 4. **Scratch worktrees.** After the records merge is confirmed, run the `cleanup-merged-worktrees`
360
+ report with `bash .claude/skills/cleanup-merged-worktrees/scripts/cleanup-worktrees.sh`, and run
361
+ it with `--apply` only when every delete-eligible row is a worktree this run created; otherwise
362
+ apply nothing and report each scratch worktree as a deferral. Add no hook allow.
363
+ 5. **Report.** Report every deferral, with LV1 (removal refused after unlock), LV2 (records pull
364
+ request still open in the merge queue or `origin/main` absent at merge-gate time), and LV3
365
+ (records pull request needs manual authoring because `Agent(pr-author)` failed its routing
366
+ receipt check) as the named deferral cases.