@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
@@ -1,63 +1,46 @@
1
1
  ---
2
2
  name: discovery-runtime-characterization
3
- description: 'Produce runtime characterization scenarios and evidence references in the discovery workflow. Use when characterizing observed runtime behavior of the legacy application into scenarios with supporting evidence and routing analysis to the runtime role. Fourth stage, after coverage and before parity.'
3
+ description: 'Dispatch runtime characterization to its canonical supplied-evidence workflow. Use when invoking the existing runtime-characterization alias.'
4
4
  ---
5
5
 
6
- # Discovery Runtime Characterization
7
-
8
- Runs the runtime characterization stage of the discovery and parity-definition
9
- workflow. It captures observed runtime behavior of the legacy application as
10
- characterization scenarios, each backed by evidence references, so that parity
11
- analysis can compare intended contracts against observed behavior. All domain
12
- specificity is read from the domain profile at runtime.
6
+ # Discovery Runtime Characterization Alias
13
7
 
14
8
  ## When to Use This Skill
15
9
 
16
- - Feature contracts and the coverage ledger exist from the coverage stage.
17
- - You need documented runtime behavior scenarios before building the parity
18
- matrix.
19
-
20
- ## Prerequisites
21
-
22
- - `discovery-coverage-ledger` has completed.
23
- - The domain profile is loaded and valid.
24
-
25
- ## Workflow
26
-
27
- 1. **Produce characterization scenarios.** For each behavior requiring runtime
28
- observation, produce a scenario conforming to the schema
29
- `schemas/discovery/v1/runtime-characterization-scenario.schema.json`. Each
30
- scenario records the observed runtime behavior in a domain-neutral form.
10
+ Use this compatibility name only to dispatch to its canonical workflow.
31
11
 
32
- 2. **Record evidence references.** Attach evidence to each scenario as
33
- evidence-reference instances conforming to the schema
34
- `schemas/discovery/v1/evidence-reference.schema.json`, so the provenance of
35
- each observation is traceable.
12
+ ## Inputs
36
13
 
37
- 3. **Route analysis.** Hand the scenarios to the runtime role for analysis (see
38
- `## Worker Routing`).
14
+ | Input | Required contract |
15
+ | --- | --- |
16
+ | inputs | Required inputs of the linked canonical workflow, forwarded unchanged. |
39
17
 
40
- ## Worker Routing
18
+ Forward all other supplied canonical inputs to the selected target. These
19
+ alias selectors are not service-request fields. A fixed mapping requires no
20
+ additional selector; it does not add fields to `prepare-agent`.
41
21
 
42
- - Worker: `runtime-characterization-analyst`
22
+ ## Dispatch
43
23
 
44
- The runtime role analyzes and confirms each characterization scenario and its
45
- evidence before the workflow proceeds to parity.
24
+ | Selector | Canonical skill |
25
+ | --- | --- |
26
+ | fixed | characterize-runtime-behavior |
46
27
 
47
- ## Validation
28
+ Dispatch directly to `characterize-runtime-behavior`. The canonical workflow preserves supplied evidence and honest manual, not-run or blocked states; the alias does not execute applications.
48
29
 
49
- - Validate scenarios with `dev.discovery.validate-runtime-scenario`.
50
- - Validate evidence references with `dev.discovery.validate-evidence-reference`.
51
- - An empty error list is a pass. On any error, follow the direction in
52
- `discovery-validate-artifacts`.
30
+ This alias has no independent output or write authority. Do not duplicate
31
+ business validation, call tools independently, create a receipt, change a model
32
+ or auto-launch a role. Use only the linked canonical workflow's lifecycle and
33
+ exact grants; no alias chain or filesystem fallback is permitted.
53
34
 
54
- ## Referenced Skills
35
+ ## Stop and result
55
36
 
56
- - `discovery-workflow` — stage order and the canonical Referenced Contracts
57
- registry.
58
- - `discovery-validate-artifacts` — pass/fail semantics and error routing.
37
+ Return the selected canonical workflow's explicit result and references without
38
+ changing failed, blocked, pending or incremental outcomes into completion.
39
+ An unknown selector fails with no fallback. Missing configuration or native
40
+ capability is handled by the canonical workflow, including initialization's
41
+ explicit root bootstrap exception. The alias cannot bypass prepare/finalize or
42
+ native start/stop requirements.
59
43
 
60
- ## Notes
44
+ ## References
61
45
 
62
- - Scenarios and evidence references from this stage are consumed by
63
- `discovery-parity-matrix`.
46
+ - [characterize-runtime-behavior](../characterize-runtime-behavior/SKILL.md)
@@ -1,79 +1,46 @@
1
1
  ---
2
2
  name: discovery-validate-artifacts
3
- description: 'Canonical validation-gate mechanics for the discovery workflow. Use when running the per-artifact discovery validators after each stage and the completion gate at the end, interpreting the empty-error-list pass semantics, and routing any validator error back to the owning stage skill. Seventh and final stage.'
4
- allowed-tools: Bash Read
3
+ description: 'Dispatch artifact validation to the canonical explicit-kind and mode workflow. Use when invoking the existing validate-artifacts alias.'
5
4
  ---
6
5
 
7
- # Discovery Validate Artifacts
8
-
9
- Owns the canonical validation-gate mechanics for the discovery and
10
- parity-definition workflow. Each discovery artifact is validated against its
11
- schema by a `dev.discovery.validate-*` console script after its owning stage,
12
- and `dev.discovery.validate-all` runs as the workflow completion gate. This skill
13
- is the single canonical location for the pass/fail semantics; stage skills defer
14
- to it by name.
6
+ # Discovery Artifact Validation Alias
15
7
 
16
8
  ## When to Use This Skill
17
9
 
18
- - A stage has produced an artifact and you need to validate it before the next
19
- stage proceeds.
20
- - You have completed all stages and need to run the workflow completion gate.
21
- - A validator reported errors and you need the routing rule back to the owning
22
- stage skill.
23
-
24
- ## Prerequisites
25
-
26
- - The relevant discovery artifacts exist under the profile's artifact root.
27
- - The validator console scripts are available (registry in `discovery-workflow`).
28
-
29
- ## Pass/Fail Semantics
30
-
31
- Every `dev.discovery.validate-*` invocation yields a `list[str]` of error
32
- messages. An empty list is a pass; a non-empty list is a failure whose entries
33
- name the exact problems. The validators never mutate the artifacts they check.
10
+ Use this compatibility name only to dispatch to its canonical workflow.
34
11
 
35
- ## Per-Stage Validators
12
+ ## Inputs
36
13
 
37
- Run each validator after its owning stage produces its artifact. On a non-empty
38
- error list, return to the named owning stage skill, correct the artifact, and
39
- re-run the validator until the list is empty.
14
+ | Input | Required contract |
15
+ | --- | --- |
16
+ | inputs | Required inputs of the linked canonical workflow, forwarded unchanged. |
40
17
 
41
- | Validator | Validates schema | Owning stage skill |
42
- |---|---|---|
43
- | `dev.discovery.validate-profile` | (domain profile) | `discovery-repo-inventory` |
44
- | `dev.discovery.validate-evidence-reference` | `schemas/discovery/v1/evidence-reference.schema.json` | `discovery-repo-inventory`, `discovery-runtime-characterization` |
45
- | `dev.discovery.validate-feature-contract` | `schemas/discovery/v1/feature-contract.schema.json` | `discovery-coverage-ledger` |
46
- | `dev.discovery.validate-coverage-ledger` | `schemas/discovery/v1/coverage-ledger.schema.json` | `discovery-coverage-ledger` |
47
- | `dev.discovery.validate-runtime-scenario` | `schemas/discovery/v1/runtime-characterization-scenario.schema.json` | `discovery-runtime-characterization` |
48
- | `dev.discovery.validate-parity-matrix` | `schemas/discovery/v1/parity-matrix.schema.json` | `discovery-parity-matrix` |
49
- | `dev.discovery.validate-unspecified-behavior` | `schemas/discovery/v1/unspecified-behavior-record.schema.json` | `discovery-behavior-reconciliation` |
50
- | `dev.discovery.validate-product-decision` | `schemas/discovery/v1/product-decision-record.schema.json` | `discovery-behavior-reconciliation` |
18
+ Forward all other supplied canonical inputs to the selected target. These
19
+ alias selectors are not service-request fields. A fixed mapping requires no
20
+ additional selector; it does not add fields to `prepare-agent`.
51
21
 
52
- ## Completion Gate
22
+ ## Dispatch
53
23
 
54
- After all stages pass their per-stage validators, run
55
- `dev.discovery.validate-all` as the workflow completion gate. It validates the
56
- full artifact set across all seven schemas under `schemas/discovery/v1/`:
24
+ | Selector | Canonical skill |
25
+ | --- | --- |
26
+ | fixed | validate-discovery-artifacts |
57
27
 
58
- - `schemas/discovery/v1/feature-contract.schema.json`
59
- - `schemas/discovery/v1/coverage-ledger.schema.json`
60
- - `schemas/discovery/v1/runtime-characterization-scenario.schema.json`
61
- - `schemas/discovery/v1/parity-matrix.schema.json`
62
- - `schemas/discovery/v1/unspecified-behavior-record.schema.json`
63
- - `schemas/discovery/v1/product-decision-record.schema.json`
64
- - `schemas/discovery/v1/evidence-reference.schema.json`
28
+ Dispatch directly to `validate-discovery-artifacts`. Forward its exact artifact kind/selection and explicit mode without type probing or substituting a different gate.
65
29
 
66
- An empty error list from `dev.discovery.validate-all` means the workflow is
67
- complete. A non-empty list names the exact artifact and problem; route each entry
68
- back to its owning stage skill using the per-stage table above, correct the
69
- artifact, and re-run the gate.
30
+ This alias has no independent output or write authority. Do not duplicate
31
+ business validation, call tools independently, create a receipt, change a model
32
+ or auto-launch a role. Use only the linked canonical workflow's lifecycle and
33
+ exact grants; no alias chain or filesystem fallback is permitted.
70
34
 
71
- ## Referenced Skills
35
+ ## Stop and result
72
36
 
73
- - `discovery-workflow` — stage order and the canonical Referenced Contracts
74
- registry (analyzer command, agent slugs, schema paths, validators).
37
+ Return the selected canonical workflow's explicit result and references without
38
+ changing failed, blocked, pending or incremental outcomes into completion.
39
+ An unknown selector fails with no fallback. Missing configuration or native
40
+ capability is handled by the canonical workflow, including initialization's
41
+ explicit root bootstrap exception. The alias cannot bypass prepare/finalize or
42
+ native start/stop requirements.
75
43
 
76
- ## Notes
44
+ ## References
77
45
 
78
- - This skill names no domain-specific identifier; artifact locations are read
79
- from the domain profile at runtime.
46
+ - [validate-discovery-artifacts](../validate-discovery-artifacts/SKILL.md)
@@ -1,146 +1,62 @@
1
1
  ---
2
2
  name: discovery-workflow
3
- description: 'Umbrella sequencing skill for the domain-neutral legacy discovery and parity-definition workflow. Use when onboarding or running the end-to-end discovery workflow across inventory, coverage, runtime characterization, parity, behavior reconciliation, and the validation gate, and when reconciling upstream analyzer and agent contract names. Holds the canonical Referenced Contracts registry.'
3
+ description: 'Dispatch an explicit canonical discovery workflow without adding authority. Use when invoking the legacy discovery umbrella with a selected skill_id.'
4
4
  ---
5
5
 
6
- # Discovery Workflow
7
-
8
- Sequences the reusable, domain-neutral discovery and parity-definition workflow
9
- end to end. This skill is the entry point: it establishes the stage order,
10
- directs each stage to its owning skill, and holds the single canonical registry
11
- of upstream contract names (analyzer CLI commands, agent slugs, schema paths,
12
- and validators).
13
-
14
- All domain specificity is read at runtime from the consumer repository's domain
15
- profile (`discovery-profile.yaml`) via `dev.discovery.profile`. This skill names
16
- no concrete repository, path, or technology stack.
6
+ # Discovery Workflow Alias
17
7
 
18
8
  ## When to Use This Skill
19
9
 
20
- - You are onboarding the discovery and parity-definition workflow in a consumer
21
- repository and need the documented stage order.
22
- - You need the canonical list of upstream contract names to reconcile a renamed
23
- analyzer command or agent slug at epic fan-in.
24
- - You need to know which stage skill owns which artifact and validator.
25
-
26
- ## Prerequisites
27
-
28
- - A `discovery-profile.yaml` domain profile exists in the consumer repository and
29
- loads cleanly via `dev.discovery.profile`.
30
- - The analyzer framework CLI and the four generic agent roles are available in
31
- the consumer environment (referenced here by name only).
32
-
33
- ## Stage Order
34
-
35
- Run the workflow in this fixed order. Each stage validates its artifacts before
36
- the next stage proceeds:
37
-
38
- 1. **profile** — load and echo the domain profile via `dev.discovery.profile`.
39
- 2. **inventory** — drive the language-neutral repository/project inventory
40
- analyzer (`discovery-repo-inventory`).
41
- 3. **coverage** — produce feature contracts and the coverage ledger
42
- (`discovery-coverage-ledger`).
43
- 4. **runtime** — produce runtime characterization scenarios and evidence
44
- references (`discovery-runtime-characterization`).
45
- 5. **parity** — produce or refresh the parity matrix (`discovery-parity-matrix`).
46
- 6. **reconciliation** — capture unspecified or contradictory behavior and
47
- reconcile it into product decisions (`discovery-behavior-reconciliation`).
48
- 7. **validation gate** — run the per-stage validators and the completion gate
49
- (`discovery-validate-artifacts`).
50
-
51
- Compact form: profile -> inventory -> coverage -> runtime -> parity ->
52
- reconciliation -> validation gate.
53
-
54
- ## Worker Routing
55
-
56
- The four generic agent roles are routed by slug from their owning stage skills.
57
- The routing table below is the canonical mapping; each stage skill repeats only
58
- the single slug it routes to.
59
-
60
- | Stage skill | Agent slug |
61
- |---|---|
62
- | `discovery-coverage-ledger` | `migration-coverage-reviewer` |
63
- | `discovery-runtime-characterization` | `runtime-characterization-analyst` |
64
- | `discovery-parity-matrix` | `legacy-parity-analyst` |
65
- | `discovery-behavior-reconciliation` | `requirements-reconciler` |
66
-
67
- ## Referenced Contracts
68
-
69
- This registry is the single canonical location for upstream contract names.
70
- Stage skills name only the specific contract(s) they use and defer to this
71
- registry for the full set. Indirect reference by skill name is not duplication.
72
-
73
- ### Domain profile (config contract, issue #360 / epic #9001)
74
-
75
- - Config artifact: `discovery-profile.yaml`.
76
- - CLI: `dev.discovery.profile`.
77
-
78
- ### Schemas (issue #359 / epic #9002)
79
-
80
- Seven schemas under `schemas/discovery/v1/`:
81
-
82
- - `schemas/discovery/v1/feature-contract.schema.json`
83
- - `schemas/discovery/v1/coverage-ledger.schema.json`
84
- - `schemas/discovery/v1/runtime-characterization-scenario.schema.json`
85
- - `schemas/discovery/v1/parity-matrix.schema.json`
86
- - `schemas/discovery/v1/unspecified-behavior-record.schema.json`
87
- - `schemas/discovery/v1/product-decision-record.schema.json`
88
- - `schemas/discovery/v1/evidence-reference.schema.json`
89
-
90
- ### Validators (issue #361 / epic #9003)
91
-
92
- Nine `dev.discovery.validate-*` console scripts. Each yields a `list[str]` of
93
- errors; an empty list is a pass.
94
-
95
- - `dev.discovery.validate-profile`
96
- - `dev.discovery.validate-feature-contract`
97
- - `dev.discovery.validate-coverage-ledger`
98
- - `dev.discovery.validate-runtime-scenario`
99
- - `dev.discovery.validate-parity-matrix`
100
- - `dev.discovery.validate-unspecified-behavior`
101
- - `dev.discovery.validate-product-decision`
102
- - `dev.discovery.validate-evidence-reference`
103
- - `dev.discovery.validate-all`
104
-
105
- ### Analyzer framework (epic #9006, in preparation)
106
-
107
- - Language-neutral repository/project inventory command: `dev.discovery.inventory`.
108
-
109
- **Fan-in reconciliation assumption:** the inventory command name
110
- `dev.discovery.inventory` is assumed. It is not fixed by the prepared upstream
111
- summaries and is the epic #9006 owner's decision. This assumption is isolated
112
- to this single registry line plus one fragment in `discovery-repo-inventory`.
113
- If #9006 lands a different command name, update those two locations only.
114
-
115
- ### Agent roles (epic #9007, in preparation)
116
-
117
- Four generic agent personas, referenced by slug in the Worker Routing table
118
- above:
119
-
120
- - `legacy-parity-analyst`
121
- - `runtime-characterization-analyst`
122
- - `requirements-reconciler`
123
- - `migration-coverage-reviewer`
124
-
125
- **Fan-in reconciliation assumption:** the four agent slugs are assumed to be
126
- the kebab-case of the persona titles. Final slugs are the epic #9007 owner's
127
- decision. The assumption is isolated to this registry and the per-stage
128
- `## Worker Routing` fragments; reconciling a renamed slug at fan-in is a
129
- bounded edit.
130
-
131
- ## Referenced Skills
132
-
133
- - `discovery-repo-inventory` — inventory stage mechanics.
134
- - `discovery-coverage-ledger` — coverage stage mechanics.
135
- - `discovery-runtime-characterization` — runtime stage mechanics.
136
- - `discovery-parity-matrix` — parity stage mechanics.
137
- - `discovery-behavior-reconciliation` — reconciliation stage mechanics.
138
- - `discovery-validate-artifacts` — canonical validation-gate mechanics.
139
-
140
- ## Notes
141
-
142
- - No skill in this workflow asserts the existence of upstream analyzer or agent
143
- files; upstream contracts are referenced by name only, so this workflow stays
144
- correct regardless of upstream merge order.
145
- - Domain specificity (source and target roots, technology stack, artifact
146
- conventions) is read from the domain profile at runtime, never hard-coded.
10
+ Use this compatibility name only to dispatch to its canonical workflow.
11
+
12
+ ## Inputs
13
+
14
+ | Input | Required contract |
15
+ | --- | --- |
16
+ | skill_id | Required exact one of the nine canonical skill IDs listed below; unknown or missing values fail with no fallback. |
17
+
18
+ Forward all other supplied canonical inputs to the selected target. These
19
+ alias selectors are not service-request fields. A fixed mapping requires no
20
+ additional selector; it does not add fields to `prepare-agent`.
21
+
22
+ ## Dispatch
23
+
24
+ | Selector | Canonical skill |
25
+ | --- | --- |
26
+ | inventory-legacy-system | inventory-legacy-system |
27
+ | extract-feature-contract | extract-feature-contract |
28
+ | characterize-runtime-behavior | characterize-runtime-behavior |
29
+ | reconcile-parity-matrix | reconcile-parity-matrix |
30
+ | review-discovery-coverage | review-discovery-coverage |
31
+ | adjudicate-unspecified-behavior | adjudicate-unspecified-behavior |
32
+ | generate-acceptance-scenarios | generate-acceptance-scenarios |
33
+ | initialize-discovery-workspace | initialize-discovery-workspace |
34
+ | validate-discovery-artifacts | validate-discovery-artifacts |
35
+
36
+ Select exactly one canonical workflow using `skill_id`. Forward its supplied inputs without inventing defaults or reinterpreting source identity. Each target owns its root prepare, exact launch, granted operations, finalize, native stop and root result; this umbrella adds no scheduler.
37
+
38
+ This alias has no independent output or write authority. Do not duplicate
39
+ business validation, call tools independently, create a receipt, change a model
40
+ or auto-launch a role. Use only the linked canonical workflow's lifecycle and
41
+ exact grants; no alias chain or filesystem fallback is permitted.
42
+
43
+ ## Stop and result
44
+
45
+ Return the selected canonical workflow's explicit result and references without
46
+ changing failed, blocked, pending or incremental outcomes into completion.
47
+ An unknown selector fails with no fallback. Missing configuration or native
48
+ capability is handled by the canonical workflow, including initialization's
49
+ explicit root bootstrap exception. The alias cannot bypass prepare/finalize or
50
+ native start/stop requirements.
51
+
52
+ ## References
53
+
54
+ - [inventory-legacy-system](../inventory-legacy-system/SKILL.md)
55
+ - [extract-feature-contract](../extract-feature-contract/SKILL.md)
56
+ - [characterize-runtime-behavior](../characterize-runtime-behavior/SKILL.md)
57
+ - [reconcile-parity-matrix](../reconcile-parity-matrix/SKILL.md)
58
+ - [review-discovery-coverage](../review-discovery-coverage/SKILL.md)
59
+ - [adjudicate-unspecified-behavior](../adjudicate-unspecified-behavior/SKILL.md)
60
+ - [generate-acceptance-scenarios](../generate-acceptance-scenarios/SKILL.md)
61
+ - [initialize-discovery-workspace](../initialize-discovery-workspace/SKILL.md)
62
+ - [validate-discovery-artifacts](../validate-discovery-artifacts/SKILL.md)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: execution-environment
3
- description: 'Execution-environment brief for research, planning, preflight, execution, and orchestration. Use before planning or delegating work so tool routes, command-text restrictions, the batch budget, hook context, CI shape, contract tests, evidence rules, coverage and file-size gates, and test-isolation checks are known and are not restated in plans.'
3
+ description: 'Execution-environment brief for research, planning, preflight, execution, and orchestration. Use before planning or delegating work so tool routes, command-text restrictions, the batch budget, hook context, CI shape, contract tests, evidence rules, coverage and file-size gates, test runtime, and test-isolation checks are known and are not restated in plans.'
4
4
  ---
5
5
 
6
6
  # Execution-Environment Brief
@@ -36,17 +36,20 @@ Two separate mechanisms restrict Bash command text. They are kept apart here bec
36
36
 
37
37
  ## Batch Budget
38
38
 
39
- - In direct mode the batch-budget hooks allow at most three distinct production files per kind in one session: the fourth distinct non-test PowerShell file is denied with `POWERSHELL_LARGE_PATH_REQUIRED` and the fourth distinct non-test Python file with `PYTHON_LARGE_PATH_REQUIRED` (`.claude/hooks/enforce-powershell-batch-budget.ps1` and `.claude/hooks/enforce-python-batch-budget.ps1`; Codex copies under `.codex/hooks/`). Test files never count.
40
- - Exemption: the cap does not apply when `artifacts/orchestration/orchestrator-state.json` in the worktree that holds the hook script selects the `large`, `remediation`, or `preparation` route and is not terminal (`Test-BatchBudgetLargePathRoute` in `.claude/hooks/enforce-batch-budget-route.ps1`). An isolated subagent worktree has no checkpoint, because `artifacts/` is gitignored, so direct mode applies there.
39
+ - In direct mode the batch-budget hooks allow at most three distinct production files per kind in one session and one resolved worktree: the fourth distinct non-test PowerShell file is denied with `POWERSHELL_LARGE_PATH_REQUIRED` and the fourth distinct non-test Python file with `PYTHON_LARGE_PATH_REQUIRED` (`.claude/hooks/enforce-powershell-batch-budget.ps1` and `.claude/hooks/enforce-python-batch-budget.ps1`; Codex copies under `.codex/hooks/`). Test files never count.
40
+ - Exemption: the cap does not apply when `artifacts/orchestration/orchestrator-state.json` in the worktree containing the edited file selects the `large`, `remediation`, or `preparation` route and is not terminal (`Test-BatchBudgetLargePathRoute` in `.claude/hooks/enforce-batch-budget-route.ps1`). That worktree is resolved by `Resolve-HookTargetWorktree` in `.claude/lib/worktree-resolution/HookTargetWorktree.psm1` (Codex twin `.codex/hooks/hook-target-worktree.ps1`): an absolute path resolves to its nearest enclosing registered git worktree, and a relative path, a path in no registered worktree, or an ambiguous result uses the session root. An isolated subagent worktree has no checkpoint, because `artifacts/` is gitignored, so direct mode applies there.
41
41
  - Bundle mirror copies under `extensions/drm-copilot/resources/` are production files and count against the cap.
42
- - A scratch `.ps1` file counts when it resolves inside the worktree root. Files under `SCRATCH`, which is outside the worktree root, are discarded without consuming a slot.
42
+ - A scratch `.ps1` file counts when it resolves inside the worktree root and outside that root's `artifacts/` directory. Files under `SCRATCH`, which is outside the worktree root, are discarded without consuming a slot.
43
+ - Paths under the root-level `artifacts/` directory of the resolved worktree never count: they are allowed without consuming a slot and write no state. A nested directory named `artifacts` elsewhere in the tree still counts.
44
+ - Claude edits to a sibling registered worktree count against that worktree's own budget, because containment uses the resolved root; a path outside every registered worktree keeps the session root and is discarded by containment. Codex has no containment filter, so a Codex edit outside every registered worktree counts against the session root.
43
45
  - Only `Write` and `Edit` calls are seen (the hook matcher is `Write|Edit`). Files written by Bash, by a copy script, or by a generator are not seen.
44
- - Budget state is kept per session under `.claude/state/`; there is no automatic reset.
46
+ - Budget state is kept per session and per resolved worktree root under the session root's `.claude/state/` (Codex `.codex/state/`): the session root keeps `<kind>-batch-budget.<session id>.json`, and another worktree uses `<kind>-batch-budget.<session id>.<worktree key>.json` with the key from `Get-HookTargetWorktreeKey`. No state is written into another worktree, and there is no automatic reset.
45
47
 
46
48
  ## Hook Execution Context
47
49
 
48
50
  - Hooks for an isolated subagent run inside the subagent's worktree with that worktree's hook scripts, which are `main`'s copies. A hook change on a branch is not exercised by isolated subagents until it merges.
49
51
  - Hook behavior on a branch is therefore proven by Pester suites, not by a live subagent run. A live check of a branch hook needs a non-isolated delegation from the item worktree.
52
+ - The batch-budget hooks evaluate the checkpoint of the target worktree that `Resolve-HookTargetWorktree` resolves for the edited file, so an edit made from a coordinating session into an item worktree is evaluated against the item worktree's checkpoint. The preimplementation gate (#1010) resolves the file path of a Write or Edit call and the `-C` values and absolute operands of `git add` and `git commit` through the same resolver, and denies when the worktree listing fails or names no worktree; its delegation checks still resolve by portable identity. The PR authoring gate (#1011) resolves the branch that a `gh pr create` or `gh pr edit` command names (`--head`, `--branch`, or a `branch:` label) through the same resolver when the command carries no canonical issue number line, and otherwise keeps its portable-identity and current-branch resolution. The other gates that read `artifacts/orchestration/orchestrator-state.json` are unchanged and still use the root that holds the hook script.
50
53
  - Enforcement hooks do not invoke Python; bash is preferred and PowerShell is acceptable (`tests/scripts/claude-runtime/enforcement-hooks-no-python-invocation.Tests.ps1`).
51
54
 
52
55
  ## MCP Surfaces Run the Installed Extension
@@ -58,12 +61,12 @@ Two separate mechanisms restrict Bash command text. They are kept apart here bec
58
61
  ## CI Shape and Required Checks
59
62
 
60
63
  - `.github/workflows/ci.yml` triggers on `push` to `main` and `development`, on `pull_request` to `main`, `development`, and `epic/**`, on `workflow_dispatch`, and on `merge_group` (`types: [checks_requested]`, added by issue #952), with no path filters. When the merge queue on `main` is enabled, every required check is produced by a `merge_group` run of `ci.yml` as well as by the pull-request run; `.github/workflows/README.md` (`## Triggers`) records the trigger set.
61
- - Jobs in `ci.yml` and their check names: `Change scope` (job `changes`, the change-scope decision below); `CI full run` (job `full-run-marker`, which runs only on a full run, marks that run as a valid base for later decisions, and is not a required check); `quality-checks7 / Code Quality & Tests (<python-version>)` on Python 3.10, 3.11, 3.12, and 3.13 (`_quality-checks.yml`: Black check, Ruff, Pyright, the Codex generator `--check`, the tier classification, Pytest with line and branch coverage, and the coverage-threshold check on the JSON report totals); `security-scan / Security Scanning` (its `safety check` step carries `continue-on-error: true` and does not fail the check); `docs-validation / Documentation Validation`; `build-check / Build Package`; `shell-coverage / Shell Coverage (Bats + kcov)`; `drm-copilot-extension-tests / drm-copilot Extension Tests (<os>)` on `ubuntu-latest` and `windows-latest`; `root-typescript-tests / Root TypeScript Tests (<os>)` on `ubuntu-latest` and `windows-latest`; `NPM Audit Gate / npm audit (<manifest>)` (the calling job carries the name `NPM Audit Gate`); and the `poshqc` group below.
64
+ - Jobs in `ci.yml` and their check names: `Change scope` (job `changes`, the change-scope decision below); `CI full run` (job `full-run-marker`, which runs only on a full run, marks that run as a valid base for later decisions, and is not a required check); `quality-checks7 / Code Quality & Tests (<python-version>)` on Python 3.11, 3.12, and 3.13 (`_quality-checks.yml`: Black check, Ruff, Pyright, the Codex generator `--check`, the tier classification, and Pytest on every version; Pytest with line and branch coverage and the coverage-threshold check on the JSON report totals run on 3.13 only); `security-scan / Security Scanning` (its `safety check` step carries `continue-on-error: true` and does not fail the check); `docs-validation / Documentation Validation`; `build-check / Build Package`; `shell-coverage / Shell Coverage (Bats + kcov)`; `drm-copilot-extension-tests / drm-copilot Extension Tests (<os>)` on `ubuntu-latest` and `windows-latest`; `root-typescript-tests / Root TypeScript Tests (<os>)` on `ubuntu-latest` and `windows-latest`; `NPM Audit Gate / npm audit (<manifest>)` (the calling job carries the name `NPM Audit Gate`); and the `poshqc` group below.
62
65
  - PowerShell CI (`_poshqc.yml`): `poshqc / PowerShell QC static` (format and analyze on `windows-latest`); the shard matrix `poshqc / PowerShell QC shard 1`, `shard 2`, and `shard 3` (`Invoke-PoshQCTest -ShardIndex -ShardCount` over the scan folders of `config/poshqc-scan.json`, with coverage, on `windows-latest`); the aggregator `poshqc / PowerShell QC`, which requires the static and shard jobs to succeed, verifies shard completeness against a Pester discovery count, and merges shard coverage; and `poshqc / PowerShell hook suites (Linux)`, which runs only `tests/scripts/claude-hooks` and `tests/scripts/codex-hooks` on `ubuntu-latest` with coverage disabled. A new test file under a scanned folder is assigned to a shard automatically and is counted by the completeness check.
63
66
  - Change-scope decision (issue #962): the `Change scope` job runs `scripts/ci/Invoke-CiChangeScope.ps1` and publishes the job output `code`. The decision is `code=false` (docs-only) only on a `pull_request` event from this repository, through one of two comparisons. Green-run base: every file changed since the newest successful `ci.yml` run on the pull-request branch whose `CI full run` job succeeded, and whose head commit is present and an ancestor of the current head, is on the allowlist `config/ci-docs-only-paths.json`; the reason is `DOCS_ONLY_SINCE_<green head sha>`. Merge-base fallback (issue #973): when the green-run step ends with no earlier full green run (`NO_FULL_GREEN_RUN`), a missing base (`BASE_NOT_PRESENT`), or a non-ancestor base (`BASE_NOT_ANCESTOR`), and the pull request's base ref is exactly `main`, the script computes `git merge-base` of the payload base SHA (`BASE_SHA`, from `github.event.pull_request.base.sha`; the base ref arrives as `BASE_REF`) and the head, lists the files changed since that merge base with the same diff arguments, and decides `DOCS_ONLY_SINCE_MERGE_BASE_<merge base sha>` when every changed file is allowlisted. Both comparisons run the diff with rename detection off, so both the old and the new path of a rename are classified. A path is allowlisted when it starts with `docs/features/active/`, `docs/features/archive/`, `docs/features/completed/`, `docs/features/epics/`, `docs/features/parallel/`, `docs/features/potential/`, or `docs/research/`, does not start with `docs/features/templates/` or `docs/features/potential/template.md`, and ends in `.md`, `.txt`, `.log`, `.json`, or `.xml`; the allowlist file itself is not allowlisted. Every other case is a full run (`code=true`): `push`, `merge_group`, and `workflow_dispatch` events, a fork pull request, unreadable run or job data, no earlier full green run or a missing or non-ancestor base when the base ref is not `main`, a merge base that cannot be resolved (`MERGE_BASE_UNRESOLVED`, for example a blank base SHA or a base commit missing from the checkout), a failed ancestry check, an empty diff, any path outside the allowlist, and any error. The decision step carries `continue-on-error: true` and the callers compare the output with `!= 'false'`, so a failed or missing decision also gives a full run.
64
67
  - Docs-only behavior (`code=false`): `ci.yml` passes `run-heavy: false` to `_quality-checks.yml`, `_security-scan.yml`, `_build-check.yml`, `_poshqc.yml`, `_shell-coverage.yml`, and `_drm-copilot-extension-tests.yml`. Each required job still starts under its full-run check name with every step skipped, so every required context reports `success` without running its suite. In `_poshqc.yml` the aggregator `poshqc / PowerShell QC` runs with every step gated, and `poshqc / PowerShell QC static`, the shard jobs, and `poshqc / PowerShell hook suites (Linux)` are skipped at job level. `docs-validation / Documentation Validation` runs in full. `root-typescript-tests`, `NPM Audit Gate`, and `CI full run` are skipped at job level. A `success` on a docs-only commit is therefore not evidence that the heavy suites pass for that commit; that evidence is the newest run whose `CI full run` job succeeded.
65
68
  - A commit that changes any path outside the allowlist (any code, workflow, configuration, script, test, or customization file) runs the full set of jobs, and its `CI full run` job marks it as a base for later docs-only decisions. A standalone `workflow_dispatch` of a reusable workflow, or a caller that omits `run-heavy`, also runs in full. `.github/workflows/README.md` (`## Change-Scope Decision (Issue #962)`) records the reason codes and the per-context behavior table.
66
- - Required contexts of ruleset 15241672, confirmed by the orchestrator through `gh api` on 2026-10-16: `drm-copilot-extension-tests / drm-copilot Extension Tests (ubuntu-latest)`, `drm-copilot-extension-tests / drm-copilot Extension Tests (windows-latest)`, `docs-validation / Documentation Validation`, `poshqc / PowerShell QC`, `shell-coverage / Shell Coverage (Bats + kcov)`, `security-scan / Security Scanning`, `quality-checks7 / Code Quality & Tests (3.10)`, `quality-checks7 / Code Quality & Tests (3.11)`, `quality-checks7 / Code Quality & Tests (3.12)`, `quality-checks7 / Code Quality & Tests (3.13)`, `build-check / Build Package`.
69
+ - Required contexts of ruleset 15241672, confirmed by the orchestrator through `gh api` on 2026-10-16: `drm-copilot-extension-tests / drm-copilot Extension Tests (ubuntu-latest)`, `drm-copilot-extension-tests / drm-copilot Extension Tests (windows-latest)`, `docs-validation / Documentation Validation`, `poshqc / PowerShell QC`, `shell-coverage / Shell Coverage (Bats + kcov)`, `security-scan / Security Scanning`, `quality-checks7 / Code Quality & Tests (3.11)`, `quality-checks7 / Code Quality & Tests (3.12)`, `quality-checks7 / Code Quality & Tests (3.13)`, `build-check / Build Package`.
67
70
  - Refresh rule: a change that renames a job, adds or removes a matrix entry, or changes the ruleset refreshes this list in the same change, and the orchestrator re-confirms the contexts with a read-only `gh api repos/drmoisan/drm-copilot/rulesets/15241672` call before relying on them.
68
71
  - Skipped-check semantics: a job skipped by an `if:` condition reports success to a required check; a workflow that does not run at all reports nothing, which leaves the required check pending.
69
72
  - A pull request into a branch other than `main`, `development`, or `epic/**` gets no CI run; dispatch `ci.yml` manually for it.
@@ -101,7 +104,7 @@ These pass every validator rule and are found only by reading the plan against t
101
104
  - A checkbox diff-pair assertion against a file the plan adds, and a CRLF fixture under the `eol=lf` attribute rule.
102
105
  - A new TypeScript production file without its own `coverageThreshold` entry in `extensions/drm-copilot/jest.config.cjs`, whose threshold map has per-file entries only and no `global` key.
103
106
  - A per-file coverage floor asserted for code that the tests replace with blanket mocks.
104
- - Batch-budget exhaustion across a session, and an acceptance condition that depends on a branch hook being exercised by an isolated subagent.
107
+ - Batch-budget exhaustion within one worktree over a session, and an acceptance condition that depends on a branch hook being exercised by an isolated subagent.
105
108
  - `origin/main` advancing during planning: scope diffs anchor on the merge base of `origin/main` and `HEAD`, never on `origin/main` itself.
106
109
  - `Measure-Object -Line` counts non-empty lines only; physical line counts use `wc -l` or `@(Get-Content -LiteralPath <path>).Count`.
107
110
  - A coverage argument written as a filesystem path measures nothing; the dotted module form is required, and branch figures come from the JSON report, not the combined terminal column.
@@ -122,7 +125,18 @@ These pass every validator rule and are found only by reading the plan against t
122
125
  - Python: measure a module with `--cov=<dotted.module>`, `--cov-branch`, `--cov-report=term-missing`, and `--cov-report=json:<path>`; read branch figures from the JSON report.
123
126
  - TypeScript: a new production file needs its own entry in the `coverageThreshold` map of `extensions/drm-copilot/jest.config.cjs`; Jest runs through `node run-jest.cjs` in `extensions/drm-copilot/`.
124
127
  - PowerShell: per-file line coverage is read from `artifacts/pester/powershell-coverage.xml` written by the self-hosted PoshQC module.
125
- - No production, test, or reusable script file exceeds 500 physical lines; Markdown is exempt. Files at or near the limit are not extended; new logic goes into a new module and a new test file.
128
+ - File size follows three tiers for production, test, and reusable script files, counted in logical lines (a trailing terminator adds no line): at 500 lines look for a logical split (guidance); at 700 lines split more aggressively, and reviewers report a non-blocking Warning (advisory); above 800 lines a split is enforced regardless of logical separability (hard limit; exactly 800 passes). The hard limit is enforced by `tests/scripts/ci/FileSizePolicy.RepoGate.Tests.ps1` in the existing PowerShell shards against `config/file-size-baseline.json`, where legacy files above 800 may shrink (with the entry tightened) or stay equal but may not grow, and by the PreToolUse hook `.claude/hooks/enforce-file-size-limit.ps1` (`.codex/hooks/enforce-file-size-limit.ps1`). New logic in a file near a tier goes into a new module and a new test file. Markdown is exempt.
129
+
130
+ ## Test Runtime
131
+
132
+ - A unit test runs in milliseconds. A full suite above about 15 minutes, or a single unit test above about 10 seconds, indicates repeated work in the code under test or its fixtures, not missing parallelism.
133
+ - Diagnose before proposing sharding or parallel workers. First aggregate per-test and per-module time from the JUnit report that the full run already writes (`--junitxml`); a small fraction of tests usually holds most of the time. Then run the slowest test under a profiler (`python -m cProfile -o <file> -m pytest <node id>`) and read the profile with `pstats`.
134
+ - Fix repeated production work first. An immutable structure, such as a schema registry that is rebuilt and re-verified on every call, is built once per owning instance. This speeds up the runtime as well as the tests.
135
+ - Second, build an expensive immutable fixture once per session and hand each test its own copy wherever a test could mutate it, so test independence is unchanged.
136
+ - Parallel workers reduce wall-clock time only: they are capped by the slowest test and leave the cost in the product.
137
+ - pytest: pass `-n auto` (pytest-xdist) on the command line of the CI step `Run tests with Pytest` and of the parallel VS Code tasks, never in `addopts`, because the VS Code Test Explorer keys results to the wrong file when `addopts` carries it. `-n auto` counts physical cores, so a runner can start fewer workers than it has vCPUs; measure it against an explicit count such as `-n 4` before keeping it. pytest-cov combines the worker coverage into one report, and the serial `poetry run pytest` command remains the isolation reference.
138
+ - Pester: Pester 5 has no in-process parallel mode, so parallel Pester runs are process-per-shard: `Invoke-PoshQCTest -ShardIndex -ShardCount` on the CI runners and `Invoke-PoshQCParallelTest` locally. Read the per-file `time` of the JUnit `testsuite` elements before changing the shard count or the weights in `config/poshqc-shard-weights.json`.
139
+ - A candidate fix can be measured before the tree is edited by loading a pytest plugin module from `SCRATCH` with `-p <module>` and `PYTHONPATH`.
126
140
 
127
141
  ## Test Isolation Checks
128
142
 
@@ -131,5 +145,6 @@ These pass every validator rule and are found only by reading the plan against t
131
145
  - a seeded shuffled Jest run (`node run-jest.cjs --randomize --seed=<n>` in `extensions/drm-copilot/`) with the seed recorded;
132
146
  - a reversed-order run of the new or changed Python test modules in one process;
133
147
  - a seeded shuffled file-order run of the touched Pester suites in one process, with at least three seeds and each seed and its file order recorded;
134
- - a fresh single-process Pester run over `tests/scripts`, which is the CI shape.
148
+ - a fresh single-process Pester run over `tests/scripts`, which is the CI shape;
149
+ - in addition to the serial runs, a concurrent-shard Pester run through `Invoke-PoshQCParallelTest` and a `pytest -n auto` run, both with zero failures.
135
150
  - An order dependence found by any run is fixed on both sides: the suite that leaves state behind (globals, functions, environment variables, mocks, imported modules, script-scope state) and the suite that assumes prior state. Every seed is then re-run.