@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
@@ -0,0 +1,131 @@
1
+ ---
2
+ name: reconcile-parity-matrix
3
+ description: 'Reconcile selected feature and client parity against pinned source facts and target evidence. Use when asked to update a parity matrix or identify migration gaps without changing approved decisions.'
4
+ ---
5
+
6
+ # Reconcile Parity Matrix
7
+
8
+ ## When to Use This Skill
9
+
10
+ Use for selected feature/client comparisons against immutable source snapshot references and explicit target evidence.
11
+
12
+ ## Inputs
13
+
14
+ These are human-facing workflow selections, not additional service-request fields.
15
+ Supply explicit selections; neither omitted inputs nor profile roots create authority.
16
+
17
+ | Input | Required contract |
18
+ | --- | --- |
19
+ | profile | Required validated profile and trusted workspace binding. |
20
+ | source_snapshot_refs | Required immutable source snapshot references and content pins. |
21
+ | feature_ids | Required explicit selected feature mappings. |
22
+ | client_ids | Required explicit selected target clients. |
23
+ | target_implementation_refs | Required selected implementation records or explicit missing-state references. |
24
+ | evidence_refs | Required selected verification evidence or explicit unavailable state. |
25
+ | approved_decision_refs | Required applicable approved decisions or an explicit empty selection. |
26
+
27
+ ## Routing
28
+
29
+ Logical role: `requirements-reconciler`.
30
+ The root owns preparation and launch; this skill never auto-launches a logical
31
+ role through frontmatter. The existing resolver selects the exact deployment,
32
+ model, effort and profile hash under the existing C1-C4 ceiling and execution
33
+ context. Do not choose a model, self-launch, create another scheduler or promote
34
+ an ordinary discovery action into an issue. The production-write count is zero.
35
+
36
+ ## Exact output boundary
37
+
38
+ These rows are maximum workflow caps, not instructions to create every kind.
39
+ Only the prepared required outputs may be created or replaced.
40
+
41
+ | Artifact kind | Profile key | Constraint |
42
+ | --- | --- | --- |
43
+ | parity-matrix | parity_matrix | Selected feature/client entries only |
44
+ | unspecified-behavior | unspecified_behaviors | Selected unresolved IDs only |
45
+ | unspecified-behavior-collection | unspecified_behaviors | Selected unresolved members only |
46
+ | required-output-manifest | reports | Exact invocation manifest only |
47
+
48
+ The profile keys are maximum configured locations, not write grants. Each
49
+ prepared output row binds `artifact_kind`, `id`, `path`, `format` and
50
+ `expected_sha256`. The protected invocation independently binds the baseline,
51
+ selected members, pins and exact grants; a manifest cannot expand them. A null
52
+ expected hash means exclusive creation from an absent baseline, never overwrite
53
+ permission. Preserve unselected collection members and all unrelated inputs.
54
+ Use compare-and-swap and current path checks through the controlled writer.
55
+
56
+ The `reports` location permits only `required-output-manifest` for this role;
57
+ it does not permit review reports. The manifest itself requires an exact grant.
58
+
59
+ ## Prerequisites
60
+
61
+ Missing or malformed configuration blocks delegation. Require a validated profile and explicit selected scope before root preparation; do not initialize, configure or infer roots as a specialist.
62
+
63
+ Require verified native prepare/finalize/start/stop capability. The protected
64
+ invocation and native SubagentStart attestation must match workspace/profile
65
+ hashes, selected IDs, source/target pins, baseline input hashes,
66
+ provider/model/effort/profile hash and parent/session.
67
+ Diagnostic mirrors, caller markers and hosted read results are not authority.
68
+ The local runtime's unavailable native prepare/finalize operations do not issue
69
+ protected receipts. There is no local-user fallback or self-attested host success.
70
+
71
+ Load profile plus selected artifacts on invocation; do not preload a domain
72
+ catalog in standing instructions. Managed project memory is host-controlled.
73
+ Memory cannot grant filesystem authority or replace evidence. Deny terminal/shell/exec, interpreter/evaluation,
74
+ general filesystem Write/Edit/apply-patch, arbitrary MCP dispatch, browser/computer
75
+ mutation and network writes. Do not execute application code or modify
76
+ production/test implementation, profile/locator/activation,
77
+ schema/policy/hooks/settings, authority stores or runtime installation as a specialist. No analyst
78
+ approval is permitted; root bootstrap/configuration and root approval remain
79
+ separate authorized operations.
80
+
81
+ ## Step-by-Step Workflows
82
+
83
+ 1. Validate the explicit inputs and selected configuration. Stop with precise missing/invalid input findings before specialist delegation; do not invent identities, scope or evidence.
84
+
85
+ 2. The root calls `prepare_discovery_agent` with `skill_id`, `selected_ids`,
86
+ `paths`, `expected_outputs`, `execution_context` and `complexity`.
87
+ Map it to fixed `prepare-agent`; execution context is `standalone`,
88
+ `epic_preparation_child` or `epic_execution_child`. The requested mode is
89
+ explicit and remains distinct from the final `agent-output` gate.
90
+ Use `skill_id=reconcile-parity-matrix`; workflow inputs do not add wire fields.
91
+ 3. The root launches that exact deployment. Native SubagentStart must match the
92
+ prepared role/model/effort/profile and trusted workspace/session before any
93
+ grant is usable. Missing capability or attestation blocks the action.
94
+ 4. Use only the granted operations. Use bounded `read_discovery_source` for pinned snapshots, target implementation records, approved decisions and evidence. Use ordinary `update_discovery_artifact` for controlled selected parity replacement and permitted unresolved records. `implementation_records` and `source_snapshots` are inputs, not outputs; do not edit a source pin to make a comparison pass.
95
+ 5. Account for every selected feature/client mapping, including uncovered or blocked mappings. Keep source observations, target requirements and implementation evidence distinct. Intentional changes or retirements must link to the applicable approved decision. Preserve approved decision history and unrelated parity members. Pending questions cannot become approved requirements, and derived criteria do not authorize `feature_contracts` writes.
96
+ 6. Produce every exact required output and the stored `required-output-manifest`,
97
+ preserving its output array order for the digest. Validate claims, references,
98
+ pins and selected-ID accounting. Purpose-built tools supply authorized proposal
99
+ inputs for `input_path`/`evidence_path`; never invent a generic Write staging
100
+ step. Server-side role checks, exact one-use authorization and prospective
101
+ validation remain mandatory. Bounded source reads preserve content identity
102
+ and line ranges; truncation requires a narrower selection, not a completeness
103
+ claim or filesystem fallback.
104
+ 7. Call `finalize_discovery_agent` as the specialist, mapped to `finalize-agent`
105
+ with `mode=agent-output`, non-null `invocation_ref` and no operation inputs.
106
+ It validates the protected invocation's outputs, not final-message paths.
107
+ Native SubagentStop then verifies current output authority.
108
+ Missing final text cannot skip native stop validation.
109
+ 8. After native stop, the root records the explicit result, content-addressed artifact references,
110
+ selected-ID accounting and all findings. A successful tool call or generated
111
+ path alone is not evidence of completed discovery.
112
+
113
+ ## Stop and result
114
+
115
+ Return explicit parity findings and unresolved mappings. A valid incremental parity update does not authorize parity-complete or planning without the requested authoritative gate.
116
+
117
+ Structural success is not discovery, parity or planning completion.
118
+ Missing prepare/finalize/start/stop capability, missing outputs, invalid claims,
119
+ unresolved required work, wrong role/model/start context or a stale/missing
120
+ receipt blocks successful completion. Return explicit
121
+ PASS, FAIL or BLOCKED, distinguishing valid incremental outputs from a passing
122
+ completion gate. Missing native enforcement remains BLOCKED even when ordinary
123
+ local-user operations can run; do not substitute CLI success for native authority.
124
+
125
+ ## References
126
+
127
+ - [Canonical requirements-reconciler contract](../../agents/requirements-reconciler.agent.md)
128
+ - Installed v2 `service-request` and `required-output-manifest` schema contracts;
129
+ consume them through the authoritative runtime, with no checkout-schema fallback.
130
+ - The selected profile and pinned local artifacts supplied for this invocation;
131
+ references do not preload catalogs or grant access to unselected paths.
@@ -0,0 +1,129 @@
1
+ ---
2
+ name: review-discovery-coverage
3
+ description: 'Review selected discovery coverage and parity with authoritative reports and explicit findings. Use when asked for a structural, discovery-complete or parity-complete review.'
4
+ ---
5
+
6
+ # Review Discovery Coverage
7
+
8
+ ## When to Use This Skill
9
+
10
+ Use for a requested review of configured scope or a pinned snapshot. The reviewer reports readiness without editing underlying facts.
11
+
12
+ ## Inputs
13
+
14
+ These are human-facing workflow selections, not additional service-request fields.
15
+ Supply explicit selections; neither omitted inputs nor profile roots create authority.
16
+
17
+ | Input | Required contract |
18
+ | --- | --- |
19
+ | profile | Required validated profile and trusted workspace binding. |
20
+ | scope | Required exact requested scope or explicit whole configured graph. |
21
+ | snapshot | Required selected current/pinned snapshot identity for the review. |
22
+ | mode | Required explicit structural, discovery-complete or parity-complete review mode. |
23
+
24
+ ## Routing
25
+
26
+ Logical role: `migration-coverage-reviewer`.
27
+ The root owns preparation and launch; this skill never auto-launches a logical
28
+ role through frontmatter. The existing resolver selects the exact deployment,
29
+ model, effort and profile hash under the existing C1-C4 ceiling and execution
30
+ context. Do not choose a model, self-launch, create another scheduler or promote
31
+ an ordinary discovery action into an issue. The production-write count is zero.
32
+
33
+ ## Exact output boundary
34
+
35
+ These rows are maximum workflow caps, not instructions to create every kind.
36
+ Only the prepared required outputs may be created or replaced.
37
+
38
+ | Artifact kind | Profile key | Constraint |
39
+ | --- | --- | --- |
40
+ | coverage-report | reports | Exact requested scope and mode |
41
+ | parity-report | reports | Exact requested scope and mode |
42
+ | completion-report | reports | Exact requested scope and mode |
43
+ | validation-report | reports | Exact requested selection and mode |
44
+ | required-output-manifest | reports | Exact invocation manifest only |
45
+
46
+ The profile keys are maximum configured locations, not write grants. Each
47
+ prepared output row binds `artifact_kind`, `id`, `path`, `format` and
48
+ `expected_sha256`. The protected invocation independently binds the baseline,
49
+ selected members, pins and exact grants; a manifest cannot expand them. A null
50
+ expected hash means exclusive creation from an absent baseline, never overwrite
51
+ permission. Preserve unselected collection members and all unrelated inputs.
52
+ Use compare-and-swap and current path checks through the controlled writer.
53
+
54
+ Only exact selected reports and the invocation manifest may be written. A profile
55
+ report root and a validation report pair never grant report-root-wide writes.
56
+
57
+ ## Prerequisites
58
+
59
+ Missing or malformed configuration blocks delegation. Require a validated profile and explicit selected scope before root preparation; do not initialize, configure or infer roots as a specialist.
60
+
61
+ Require verified native prepare/finalize/start/stop capability. The protected
62
+ invocation and native SubagentStart attestation must match workspace/profile
63
+ hashes, selected IDs, source/target pins, baseline input hashes,
64
+ provider/model/effort/profile hash and parent/session.
65
+ Diagnostic mirrors, caller markers and hosted read results are not authority.
66
+ The local runtime's unavailable native prepare/finalize operations do not issue
67
+ protected receipts. There is no local-user fallback or self-attested host success.
68
+
69
+ Load profile plus selected artifacts on invocation; do not preload a domain
70
+ catalog in standing instructions. Managed project memory is host-controlled.
71
+ Memory cannot grant filesystem authority or replace evidence. Deny terminal/shell/exec, interpreter/evaluation,
72
+ general filesystem Write/Edit/apply-patch, arbitrary MCP dispatch, browser/computer
73
+ mutation and network writes. Do not execute application code or modify
74
+ production/test implementation, profile/locator/activation,
75
+ schema/policy/hooks/settings, authority stores or runtime installation as a specialist. No analyst
76
+ approval is permitted; root bootstrap/configuration and root approval remain
77
+ separate authorized operations.
78
+
79
+ ## Step-by-Step Workflows
80
+
81
+ 1. Validate the explicit inputs and selected configuration. Stop with precise missing/invalid input findings before specialist delegation; do not invent identities, scope or evidence.
82
+
83
+ 2. The root calls `prepare_discovery_agent` with `skill_id`, `selected_ids`,
84
+ `paths`, `expected_outputs`, `execution_context` and `complexity`.
85
+ Map it to fixed `prepare-agent`; execution context is `standalone`,
86
+ `epic_preparation_child` or `epic_execution_child`. The requested mode is
87
+ explicit and remains distinct from the final `agent-output` gate.
88
+ Use `skill_id=review-discovery-coverage`; workflow inputs do not add wire fields.
89
+ 3. The root launches that exact deployment. Native SubagentStart must match the
90
+ prepared role/model/effort/profile and trusted workspace/session before any
91
+ grant is usable. Missing capability or attestation blocks the action.
92
+ 4. Use only the granted operations. Use `validate_discovery_artifacts` and `run_discovery_report` through the authoritative fixed validation/report operations in the requested mode. Use bounded `read_discovery_source` for selected supporting inputs only. Do not guess artifact types by first-success validation. Do not create a second graph/schema engine or infer readiness from report existence.
93
+ 5. At least one required report must be recomputable structured JSON in the invocation's requested review mode. Preserve all findings for the requested scope and explicit PASS/FAIL. Do not update inventory, coverage ledger, contracts, parity entries, evidence, decisions or configuration to force a pass. The validate-all canonical report pair does not grant report-root-wide writes.
94
+ 6. Produce every exact required output and the stored `required-output-manifest`,
95
+ preserving its output array order for the digest. Validate claims, references,
96
+ pins and selected-ID accounting. Purpose-built tools supply authorized proposal
97
+ inputs for `input_path`/`evidence_path`; never invent a generic Write staging
98
+ step. Server-side role checks, exact one-use authorization and prospective
99
+ validation remain mandatory. Bounded source reads preserve content identity
100
+ and line ranges; truncation requires a narrower selection, not a completeness
101
+ claim or filesystem fallback.
102
+ 7. Call `finalize_discovery_agent` as the specialist, mapped to `finalize-agent`
103
+ with `mode=agent-output`, non-null `invocation_ref` and no operation inputs.
104
+ It validates the protected invocation's outputs, not final-message paths.
105
+ Native SubagentStop then verifies current output authority.
106
+ Missing final text cannot skip native stop validation.
107
+ 8. After native stop, the root records the explicit result, content-addressed artifact references,
108
+ selected-ID accounting and all findings. A successful tool call or generated
109
+ path alone is not evidence of completed discovery.
110
+
111
+ ## Stop and result
112
+
113
+ A valid FAIL report may finish as `output-valid/result-fail`; it never authorizes discovery, parity or planning completion. Missing required reports still block output validity. Review status and completion authority remain separate.
114
+
115
+ Structural success is not discovery, parity or planning completion.
116
+ Missing prepare/finalize/start/stop capability, missing outputs, invalid claims,
117
+ unresolved required work, wrong role/model/start context or a stale/missing
118
+ receipt blocks successful completion. Return explicit
119
+ PASS, FAIL or BLOCKED, distinguishing valid incremental outputs from a passing
120
+ completion gate. Missing native enforcement remains BLOCKED even when ordinary
121
+ local-user operations can run; do not substitute CLI success for native authority.
122
+
123
+ ## References
124
+
125
+ - [Canonical migration-coverage-reviewer contract](../../agents/migration-coverage-reviewer.agent.md)
126
+ - Installed v2 `service-request` and `required-output-manifest` schema contracts;
127
+ consume them through the authoritative runtime, with no checkout-schema fallback.
128
+ - The selected profile and pinned local artifacts supplied for this invocation;
129
+ references do not preload catalogs or grant access to unselected paths.
@@ -0,0 +1,127 @@
1
+ ---
2
+ name: validate-discovery-artifacts
3
+ description: 'Validate an exact discovery artifact selection or configured graph through authoritative modes. Use when asked to validate discovery artifacts or evaluate an explicit completion or planning prerequisite.'
4
+ ---
5
+
6
+ # Validate Discovery Artifacts
7
+
8
+ ## When to Use This Skill
9
+
10
+ Use for individual artifact validation or a whole configured workspace gate with an explicit mode. Do not infer type or readiness from filenames.
11
+
12
+ ## Inputs
13
+
14
+ These are human-facing workflow selections, not additional service-request fields.
15
+ Supply explicit selections; neither omitted inputs nor profile roots create authority.
16
+
17
+ | Input | Required contract |
18
+ | --- | --- |
19
+ | profile | Required validated profile and trusted workspace binding. |
20
+ | artifact_kind | Required exact supported kind for individual validation; explicit workspace selection uses the workspace validator. |
21
+ | selection | Required exact artifact paths/IDs or explicit whole configured workspace. |
22
+ | mode | Required explicit structural, discovery-complete, parity-complete or planning mode, as applicable. |
23
+
24
+ ## Routing
25
+
26
+ Logical role: `migration-coverage-reviewer`.
27
+ The root owns preparation and launch; this skill never auto-launches a logical
28
+ role through frontmatter. The existing resolver selects the exact deployment,
29
+ model, effort and profile hash under the existing C1-C4 ceiling and execution
30
+ context. Do not choose a model, self-launch, create another scheduler or promote
31
+ an ordinary discovery action into an issue. The production-write count is zero.
32
+
33
+ ## Exact output boundary
34
+
35
+ These rows are maximum workflow caps, not instructions to create every kind.
36
+ Only the prepared required outputs may be created or replaced.
37
+
38
+ | Artifact kind | Profile key | Constraint |
39
+ | --- | --- | --- |
40
+ | validation-report | reports | Exact requested selection and mode |
41
+ | coverage-report | reports | Exact workspace validation pair when requested |
42
+ | required-output-manifest | reports | Exact invocation manifest only |
43
+
44
+ The profile keys are maximum configured locations, not write grants. Each
45
+ prepared output row binds `artifact_kind`, `id`, `path`, `format` and
46
+ `expected_sha256`. The protected invocation independently binds the baseline,
47
+ selected members, pins and exact grants; a manifest cannot expand them. A null
48
+ expected hash means exclusive creation from an absent baseline, never overwrite
49
+ permission. Preserve unselected collection members and all unrelated inputs.
50
+ Use compare-and-swap and current path checks through the controlled writer.
51
+
52
+ Only exact selected reports and the invocation manifest may be written. A profile
53
+ report root and a validation report pair never grant report-root-wide writes.
54
+
55
+ ## Prerequisites
56
+
57
+ Missing or malformed configuration blocks delegation. Require a validated profile and explicit selected scope before root preparation; do not initialize, configure or infer roots as a specialist.
58
+
59
+ Require verified native prepare/finalize/start/stop capability. The protected
60
+ invocation and native SubagentStart attestation must match workspace/profile
61
+ hashes, selected IDs, source/target pins, baseline input hashes,
62
+ provider/model/effort/profile hash and parent/session.
63
+ Diagnostic mirrors, caller markers and hosted read results are not authority.
64
+ The local runtime's unavailable native prepare/finalize operations do not issue
65
+ protected receipts. There is no local-user fallback or self-attested host success.
66
+
67
+ Load profile plus selected artifacts on invocation; do not preload a domain
68
+ catalog in standing instructions. Managed project memory is host-controlled.
69
+ Memory cannot grant filesystem authority or replace evidence. Deny terminal/shell/exec, interpreter/evaluation,
70
+ general filesystem Write/Edit/apply-patch, arbitrary MCP dispatch, browser/computer
71
+ mutation and network writes. Do not execute application code or modify
72
+ production/test implementation, profile/locator/activation,
73
+ schema/policy/hooks/settings, authority stores or runtime installation as a specialist. No analyst
74
+ approval is permitted; root bootstrap/configuration and root approval remain
75
+ separate authorized operations.
76
+
77
+ ## Step-by-Step Workflows
78
+
79
+ 1. Validate the explicit inputs and selected configuration. Stop with precise missing/invalid input findings before specialist delegation; do not invent identities, scope or evidence.
80
+
81
+ 2. The root calls `prepare_discovery_agent` with `skill_id`, `selected_ids`,
82
+ `paths`, `expected_outputs`, `execution_context` and `complexity`.
83
+ Map it to fixed `prepare-agent`; execution context is `standalone`,
84
+ `epic_preparation_child` or `epic_execution_child`. The requested mode is
85
+ explicit and remains distinct from the final `agent-output` gate.
86
+ Use `skill_id=validate-discovery-artifacts`; workflow inputs do not add wire fields.
87
+ 3. The root launches that exact deployment. Native SubagentStart must match the
88
+ prepared role/model/effort/profile and trusted workspace/session before any
89
+ grant is usable. Missing capability or attestation blocks the action.
90
+ 4. Use only the granted operations. Use `validate_discovery_artifacts` for the authoritative individual validator, `validate-decisions` or `validate-all`, selected by the explicit kind/workspace request. Do not guess artifact types by first-success validation. Use `read_discovery_source` only for selected supporting inputs. The canonical validate-all pair does not authorize neighboring report writes or another schema/graph implementation.
91
+ 5. Preserve all loader/semantic findings and the exact requested mode. Require recomputable structured JSON for the reviewer output; prose or a successful individual artifact check cannot authorize a complete graph. Confirmed empty scope and explicit planning prerequisites are evaluated by the authoritative validator. Do not update inventory, coverage ledger, contracts, parity entries, evidence, decisions or configuration to force a pass.
92
+ 6. Produce every exact required output and the stored `required-output-manifest`,
93
+ preserving its output array order for the digest. Validate claims, references,
94
+ pins and selected-ID accounting. Purpose-built tools supply authorized proposal
95
+ inputs for `input_path`/`evidence_path`; never invent a generic Write staging
96
+ step. Server-side role checks, exact one-use authorization and prospective
97
+ validation remain mandatory. Bounded source reads preserve content identity
98
+ and line ranges; truncation requires a narrower selection, not a completeness
99
+ claim or filesystem fallback.
100
+ 7. Call `finalize_discovery_agent` as the specialist, mapped to `finalize-agent`
101
+ with `mode=agent-output`, non-null `invocation_ref` and no operation inputs.
102
+ It validates the protected invocation's outputs, not final-message paths.
103
+ Native SubagentStop then verifies current output authority.
104
+ Missing final text cannot skip native stop validation.
105
+ 8. After native stop, the root records the explicit result, content-addressed artifact references,
106
+ selected-ID accounting and all findings. A successful tool call or generated
107
+ path alone is not evidence of completed discovery.
108
+
109
+ ## Stop and result
110
+
111
+ A valid FAIL report may finish as `output-valid/result-fail`; it never authorizes discovery, parity or planning completion. Only a current protected passing receipt for the exact requested completion/planning mode can satisfy that gate.
112
+
113
+ Structural success is not discovery, parity or planning completion.
114
+ Missing prepare/finalize/start/stop capability, missing outputs, invalid claims,
115
+ unresolved required work, wrong role/model/start context or a stale/missing
116
+ receipt blocks successful completion. Return explicit
117
+ PASS, FAIL or BLOCKED, distinguishing valid incremental outputs from a passing
118
+ completion gate. Missing native enforcement remains BLOCKED even when ordinary
119
+ local-user operations can run; do not substitute CLI success for native authority.
120
+
121
+ ## References
122
+
123
+ - [Canonical migration-coverage-reviewer contract](../../agents/migration-coverage-reviewer.agent.md)
124
+ - Installed v2 `service-request` and `required-output-manifest` schema contracts;
125
+ consume them through the authoritative runtime, with no checkout-schema fallback.
126
+ - The selected profile and pinned local artifacts supplied for this invocation;
127
+ references do not preload catalogs or grant access to unselected paths.
@@ -75,7 +75,11 @@ $script:GENERATED_AGENT_FAMILIES = @(
75
75
  'python-typed-engineer',
76
76
  'powershell-typed-engineer',
77
77
  'csharp-typed-engineer',
78
- 'typescript-engineer'
78
+ 'typescript-engineer',
79
+ 'legacy-parity-analyst',
80
+ 'runtime-characterization-analyst',
81
+ 'requirements-reconciler',
82
+ 'migration-coverage-reviewer'
79
83
  )
80
84
  $script:LOGICAL_AGENT_ALIASES = @{ 'feature-review' = 'feature-reviewer' }
81
85
 
@@ -0,0 +1,161 @@
1
+ <#
2
+ .SYNOPSIS
3
+ Constrain direct discovery routing to the fixed operation contracts.
4
+ .DESCRIPTION
5
+ Pure companion to CodexTopology. Constants mirror discovery_operations in
6
+ config/orchestration-routing.json so published consumers need no config or
7
+ interpreter. Receipts describe a specialist and allowed output kinds; they
8
+ grant no writes, approvals, installation rights, or native tool authority.
9
+ CONVENTION: this module fails fast at module scope and imports its siblings with -ErrorAction Stop.
10
+ #>
11
+ Set-StrictMode -Version Latest
12
+ $ErrorActionPreference = 'Stop'
13
+
14
+ # Keep each exact operation independent: sharing a role never broadens its kinds.
15
+ $script:DISCOVERY_OPERATIONS = @{
16
+ 'inventory-legacy-system' = @{
17
+ role = 'legacy-parity-analyst'
18
+ kinds = @('coverage-ledger', 'evidence-reference', 'inventory-snapshot',
19
+ 'required-output-manifest', 'unspecified-behavior', 'unspecified-behavior-collection')
20
+ }
21
+ 'extract-feature-contract' = @{
22
+ role = 'legacy-parity-analyst'
23
+ kinds = @('coverage-ledger', 'evidence-reference', 'feature-contract',
24
+ 'required-output-manifest', 'unspecified-behavior', 'unspecified-behavior-collection')
25
+ }
26
+ 'characterize-runtime-behavior' = @{
27
+ role = 'runtime-characterization-analyst'
28
+ kinds = @('evidence-payload', 'evidence-reference', 'required-output-manifest',
29
+ 'runtime-characterization-scenario', 'unspecified-behavior', 'unspecified-behavior-collection')
30
+ }
31
+ 'reconcile-parity-matrix' = @{
32
+ role = 'requirements-reconciler'
33
+ kinds = @('parity-matrix', 'required-output-manifest',
34
+ 'unspecified-behavior', 'unspecified-behavior-collection')
35
+ }
36
+ 'review-discovery-coverage' = @{
37
+ role = 'migration-coverage-reviewer'
38
+ kinds = @('completion-report', 'coverage-report', 'parity-report',
39
+ 'required-output-manifest', 'validation-report')
40
+ }
41
+ 'adjudicate-unspecified-behavior' = @{
42
+ role = 'requirements-reconciler'
43
+ kinds = @('acceptance-specification', 'acceptance-view', 'product-decision',
44
+ 'product-decision-collection', 'required-output-manifest',
45
+ 'unspecified-behavior', 'unspecified-behavior-collection')
46
+ }
47
+ 'generate-acceptance-scenarios' = @{
48
+ role = 'requirements-reconciler'
49
+ kinds = @('acceptance-specification', 'acceptance-view', 'required-output-manifest')
50
+ }
51
+ 'initialize-discovery-workspace' = @{
52
+ role = 'migration-coverage-reviewer'
53
+ kinds = @('coverage-report', 'required-output-manifest', 'validation-report')
54
+ }
55
+ 'validate-discovery-artifacts' = @{
56
+ role = 'migration-coverage-reviewer'
57
+ kinds = @('coverage-report', 'required-output-manifest', 'validation-report')
58
+ }
59
+ }
60
+
61
+ function Resolve-CodexDiscoveryTopology {
62
+ <#
63
+ .SYNOPSIS
64
+ Select a fixed discovery role or allow the unchanged ordinary route.
65
+ .DESCRIPTION
66
+ Called after topology validates context, languages, counts and boolean
67
+ type. Validates selectors without coercion, rejects nonzero code/test
68
+ scope and root overrides, then returns a new seventeen-key receipt.
69
+ Ordinary requests with no skill return null. Invalid selectors or
70
+ combinations throw ArgumentException in the shared contract order.
71
+ No I/O or native authority is created; returned arrays are fresh copies.
72
+ .PARAMETER InvocationKind
73
+ Exact ordinary or discovery string; all other values are rejected.
74
+ .PARAMETER SkillId
75
+ Exact canonical skill string for discovery, null for ordinary requests.
76
+ .PARAMETER Context
77
+ Execution context already validated by the topology resolver; retained
78
+ unchanged. Named Context because ExecutionContext is a readonly
79
+ automatic variable.
80
+ .PARAMETER Language
81
+ Already normalized languages. Discovery requires an empty collection.
82
+ .PARAMETER ProductionFileCount
83
+ Already validated integer count. Discovery requires zero.
84
+ .PARAMETER TestFileCount
85
+ Already validated integer count. Discovery requires zero.
86
+ .PARAMETER CrossCutting
87
+ Already validated boolean. Discovery requires false.
88
+ .PARAMETER RootPersona
89
+ Raw optional root override. Discovery requires null.
90
+ .OUTPUTS
91
+ System.Collections.Hashtable for discovery, or null for ordinary routing.
92
+ #>
93
+ [CmdletBinding()]
94
+ [OutputType([hashtable])]
95
+ param(
96
+ [Parameter(Mandatory)][AllowNull()][object] $InvocationKind,
97
+ [Parameter(Mandatory)][AllowNull()][object] $SkillId,
98
+ [Parameter(Mandatory)][string] $Context,
99
+ [Parameter(Mandatory)][AllowEmptyCollection()][string[]] $Language,
100
+ [Parameter(Mandatory)][int] $ProductionFileCount,
101
+ [Parameter(Mandatory)][int] $TestFileCount,
102
+ [Parameter(Mandatory)][bool] $CrossCutting,
103
+ [Parameter(Mandatory)][AllowNull()][object] $RootPersona
104
+ )
105
+
106
+ # Object selectors retain their actual types; case-insensitive coercion
107
+ # would otherwise admit unsupported operations at this authority boundary.
108
+ if ($InvocationKind -isnot [string] -or @('ordinary', 'discovery') -cnotcontains $InvocationKind) {
109
+ throw [System.ArgumentException]::new('invocation_kind must be ordinary or discovery.')
110
+ }
111
+ if ($InvocationKind -ceq 'ordinary') {
112
+ if ($null -ne $SkillId) {
113
+ throw [System.ArgumentException]::new('skill_id is only valid for discovery invocations.')
114
+ }
115
+ return $null
116
+ }
117
+
118
+ # Reject discovery scope before looking up a role, preserving guard order
119
+ # even when several fields are malformed in the same invocation.
120
+ if ($null -ne $RootPersona) {
121
+ throw [System.ArgumentException]::new('Discovery invocations do not accept root_persona.')
122
+ }
123
+ if ($ProductionFileCount -ne 0) {
124
+ throw [System.ArgumentException]::new('Discovery invocations require production_file_count=0.')
125
+ }
126
+ if ($TestFileCount -ne 0) {
127
+ throw [System.ArgumentException]::new('Discovery invocations require test_file_count=0.')
128
+ }
129
+ if ($Language.Count -ne 0) {
130
+ throw [System.ArgumentException]::new('Discovery invocations do not accept languages.')
131
+ }
132
+ if ($CrossCutting) {
133
+ throw [System.ArgumentException]::new('Discovery invocations do not accept cross_cutting.')
134
+ }
135
+ if ($SkillId -isnot [string] -or $script:DISCOVERY_OPERATIONS.Keys -cnotcontains $SkillId) {
136
+ throw [System.ArgumentException]::new('Discovery invocations require a supported skill_id.')
137
+ }
138
+
139
+ $operation = $script:DISCOVERY_OPERATIONS[$SkillId]
140
+ return @{
141
+ execution_context = $Context
142
+ languages = [string[]]@()
143
+ production_file_count = 0
144
+ test_file_count = 0
145
+ cross_cutting = $false
146
+ root_persona = $null
147
+ route = 'discovery'
148
+ topology = 'discovery_specialist'
149
+ logical_agent = $operation.role
150
+ routing_reason = 'fixed_discovery_operation'
151
+ max_production_files = 0
152
+ max_test_files = 0
153
+ invocation_kind = 'discovery'
154
+ skill_id = $SkillId
155
+ output_contract_version = '2.0.0'
156
+ permissible_artifact_kinds = [string[]]@($operation.kinds)
157
+ gate_mode = 'agent-output'
158
+ }
159
+ }
160
+
161
+ Export-ModuleMember -Function Resolve-CodexDiscoveryTopology
@@ -53,6 +53,8 @@
53
53
  Set-StrictMode -Version Latest
54
54
  $ErrorActionPreference = 'Stop'
55
55
 
56
+ Import-Module (Join-Path $PSScriptRoot 'CodexDiscoveryRouting.psm1') -ErrorAction Stop
57
+
56
58
  # The three permitted execution contexts, the sorted tuple rendering the Python
57
59
  # message interpolates, and the two contexts that mark epic child work.
58
60
  $script:VALID_EXECUTION_CONTEXTS = @('standalone', 'epic_preparation_child', 'epic_execution_child')
@@ -249,11 +251,17 @@ function Resolve-CodexTopology {
249
251
  Whether the change is cross-cutting. Must be a boolean.
250
252
  .PARAMETER RootPersona
251
253
  An optional forced root persona, which requires a standalone context.
254
+ .PARAMETER InvocationKind
255
+ Exact ordinary or discovery selector. Defaults to ordinary routing.
256
+ .PARAMETER SkillId
257
+ Exact canonical discovery operation. Must be absent for ordinary routing.
252
258
  .OUTPUTS
253
259
  System.Collections.Hashtable with the twelve resolved keys:
254
260
  execution_context, languages, production_file_count, test_file_count,
255
261
  cross_cutting, root_persona, route, topology, logical_agent,
256
- routing_reason, max_production_files, max_test_files.
262
+ routing_reason, max_production_files, max_test_files. Discovery adds
263
+ invocation_kind, skill_id, output_contract_version,
264
+ permissible_artifact_kinds, and gate_mode; it grants no write authority.
257
265
  #>
258
266
  [CmdletBinding()]
259
267
  [OutputType([hashtable])]
@@ -281,7 +289,15 @@ function Resolve-CodexTopology {
281
289
 
282
290
  [Parameter(Mandatory = $false)]
283
291
  [AllowNull()]
284
- [object] $RootPersona = $null
292
+ [object] $RootPersona = $null,
293
+
294
+ [Parameter(Mandatory = $false)]
295
+ [AllowNull()]
296
+ [object] $InvocationKind = 'ordinary',
297
+
298
+ [Parameter(Mandatory = $false)]
299
+ [AllowNull()]
300
+ [object] $SkillId = $null
285
301
  )
286
302
 
287
303
  if ($script:VALID_EXECUTION_CONTEXTS -cnotcontains $ExecutionContext) {
@@ -307,6 +323,13 @@ function Resolve-CodexTopology {
307
323
  $testCount = [int]$TestFileCount
308
324
  $isCrossCutting = [bool]$CrossCutting
309
325
 
326
+ # Discovery validates its closed selector before ordinary root/epic/count
327
+ # dispatch. A fixed specialist receipt conveys routing, never tool grants.
328
+ $discovery = Resolve-CodexDiscoveryTopology -InvocationKind $InvocationKind -SkillId $SkillId `
329
+ -Context $context -Language $languages -ProductionFileCount $productionCount `
330
+ -TestFileCount $testCount -CrossCutting $isCrossCutting -RootPersona $RootPersona
331
+ if ($null -ne $discovery) { return $discovery }
332
+
310
333
  # A forced root persona short-circuits all escalation logic and selects
311
334
  # itself, but only from a standalone context.
312
335
  if ($null -ne $RootPersona) {