@danmoisan/drm-copilot-mcp 1.1.25 → 1.1.27
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.
- package/out/mcp-server.js +170 -52
- package/package.json +1 -1
- package/resources/claude-customizations/.claude/agents/atomic-executor.md +3 -3
- package/resources/claude-customizations/.claude/agents/atomic-planner.md +2 -2
- package/resources/claude-customizations/.claude/agents/csharp-typed-engineer.md +7 -7
- package/resources/claude-customizations/.claude/agents/feature-review.md +6 -3
- package/resources/claude-customizations/.claude/agents/orchestrator.md +11 -7
- package/resources/claude-customizations/.claude/agents/parallel-orchestrator.md +7 -3
- package/resources/claude-customizations/.claude/agents/parallel-planner.md +6 -2
- package/resources/claude-customizations/.claude/agents/powershell-typed-engineer.md +7 -7
- package/resources/claude-customizations/.claude/agents/python-typed-engineer.md +6 -6
- package/resources/claude-customizations/.claude/hooks/enforce-epic-merge-gate-review.ps1 +699 -0
- package/resources/claude-customizations/.claude/hooks/enforce-epic-merge-gate.ps1 +16 -1
- package/resources/claude-customizations/.claude/hooks/enforce-model-routing-receipt.ps1 +41 -0
- package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate-cleanup.ps1 +481 -0
- package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate.ps1 +3 -1
- package/resources/claude-customizations/.claude/hooks/enforce-parallel-cohort-barrier-helpers.ps1 +69 -3
- package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill-helpers.ps1 +2 -2
- package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill.cleanup.ps1 +246 -0
- package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill.docs-only.ps1 +1 -0
- package/resources/claude-customizations/.claude/hooks/hook-cleanup-context.ps1 +343 -0
- package/resources/claude-customizations/.claude/hooks/validate-feature-review-coverage-rules.ps1 +50 -16
- package/resources/claude-customizations/.claude/lib/orchestrator-state/OrchestratorState.psm1 +6 -1
- package/resources/claude-customizations/.claude/lib/orchestrator-state/OrchestratorStateCompletion.psm1 +4 -2
- package/resources/claude-customizations/.claude/lib/orchestrator-state/OrchestratorStateCompletionChecks.psm1 +51 -2
- package/resources/claude-customizations/.claude/lib/orchestrator-state/OrchestratorStateReceipts.psm1 +5 -2
- package/resources/claude-customizations/.claude/lib/orchestrator-state/OrchestratorStateRemediationAccounting.psm1 +116 -4
- package/resources/claude-customizations/.claude/lib/parallel-admission/Invoke-ParallelAdmission.ps1 +626 -0
- package/resources/claude-customizations/.claude/lib/parallel-admission/ParallelAdmission.psm1 +508 -0
- package/resources/claude-customizations/.claude/lib/parallel-admission/ParallelAdmissionJson.psm1 +141 -0
- package/resources/claude-customizations/.claude/lib/parallel-admission/ParallelAdmissionPrecedence.psm1 +508 -0
- package/resources/claude-customizations/.claude/rules/csharp.md +8 -8
- package/resources/claude-customizations/.claude/rules/orchestrator-state.md +28 -2
- package/resources/claude-customizations/.claude/rules/parallel-orchestration.md +17 -1
- package/resources/claude-customizations/.claude/rules/powershell.md +2 -2
- package/resources/claude-customizations/.claude/settings.json +1 -0
- package/resources/claude-customizations/.claude/skills/atomic-plan-contract/SKILL.md +9 -13
- package/resources/claude-customizations/.claude/skills/cleanup-merged-worktrees/SKILL.md +93 -14
- package/resources/claude-customizations/.claude/skills/cleanup-merged-worktrees/scripts/cleanup-worktrees.sh +23 -10
- package/resources/claude-customizations/.claude/skills/cleanup-merged-worktrees/scripts/cleanup_worktrees_preserve_lib.sh +54 -46
- package/resources/claude-customizations/.claude/skills/cleanup-merged-worktrees/scripts/cleanup_worktrees_preserve_merge_lib.sh +234 -0
- package/resources/claude-customizations/.claude/skills/csharp-qa-gate/SKILL.md +14 -15
- package/resources/claude-customizations/.claude/skills/epic-progress-report/SKILL.md +338 -0
- package/resources/claude-customizations/.claude/skills/epic-progress-report/scripts/Get-EpicProgressReport.Logic.ps1 +248 -0
- package/resources/claude-customizations/.claude/skills/epic-progress-report/scripts/Get-EpicProgressReport.Metrics.ps1 +232 -0
- package/resources/claude-customizations/.claude/skills/epic-progress-report/scripts/Get-EpicProgressReport.Render.ps1 +196 -0
- package/resources/claude-customizations/.claude/skills/epic-progress-report/scripts/Get-EpicProgressReport.State.ps1 +286 -0
- package/resources/claude-customizations/.claude/skills/epic-progress-report/scripts/Get-EpicProgressReport.ps1 +475 -0
- package/resources/claude-customizations/.claude/skills/execution-environment/SKILL.md +31 -16
- package/resources/claude-customizations/.claude/skills/feature-review-workflow/SKILL.md +21 -9
- package/resources/claude-customizations/.claude/skills/invoke-csharp-engineer/SKILL.md +5 -5
- package/resources/claude-customizations/.claude/skills/invoke-powershell-engineer/SKILL.md +4 -4
- package/resources/claude-customizations/.claude/skills/invoke-python-engineer/SKILL.md +4 -4
- package/resources/claude-customizations/.claude/skills/orchestrate/SKILL.md +24 -2
- package/resources/claude-customizations/.claude/skills/parallel-add/SKILL.md +71 -7
- package/resources/claude-customizations/.claude/skills/parallel-orchestrate/SKILL.md +34 -2
- package/resources/claude-customizations/.claude/skills/parallel-plan/SKILL.md +82 -12
- package/resources/claude-customizations/.claude/skills/powershell-qa-gate/SKILL.md +16 -17
- package/resources/claude-customizations/.claude/skills/python-qa-gate/SKILL.md +15 -16
- package/resources/claude-customizations/.claude/skills/remediation-handoff-atomic-planner/SKILL.md +1 -1
- package/resources/claude-customizations/.claude-variants/csharp-legacy/agents/csharp-typed-engineer.md +6 -6
- package/resources/claude-customizations/.claude-variants/csharp-legacy/skills/csharp-qa-gate/SKILL.md +13 -14
- package/resources/claude-customizations/.claude-variants/csharp-legacy/skills/invoke-csharp-engineer/SKILL.md +4 -4
- package/resources/claude-customizations/pack-manifests/core.json +15 -0
- package/resources/codex-and-agents-customizations/.agents/skills/atomic-plan-contract/SKILL.md +8 -12
- package/resources/codex-and-agents-customizations/.agents/skills/atomic-planner/SKILL.md +1 -1
- package/resources/codex-and-agents-customizations/.agents/skills/csharp-qa-gate/SKILL.md +13 -14
- package/resources/codex-and-agents-customizations/.agents/skills/execution-environment/SKILL.md +31 -16
- package/resources/codex-and-agents-customizations/.agents/skills/feature-review/SKILL.md +5 -1
- package/resources/codex-and-agents-customizations/.agents/skills/feature-review-workflow/SKILL.md +18 -5
- package/resources/codex-and-agents-customizations/.agents/skills/invoke-csharp-engineer/SKILL.md +4 -4
- package/resources/codex-and-agents-customizations/.agents/skills/invoke-powershell-engineer/SKILL.md +4 -4
- package/resources/codex-and-agents-customizations/.agents/skills/invoke-python-engineer/SKILL.md +4 -4
- package/resources/codex-and-agents-customizations/.agents/skills/orchestrate/SKILL.md +24 -2
- package/resources/codex-and-agents-customizations/.agents/skills/orchestrator-state/SKILL.md +16 -1
- package/resources/codex-and-agents-customizations/.agents/skills/orchestrator-workflow/SKILL.md +3 -3
- package/resources/codex-and-agents-customizations/.agents/skills/powershell/SKILL.md +2 -2
- package/resources/codex-and-agents-customizations/.agents/skills/powershell-qa-gate/SKILL.md +15 -16
- package/resources/codex-and-agents-customizations/.agents/skills/python-qa-gate/SKILL.md +14 -15
- package/resources/codex-and-agents-customizations/.agents/skills/repo-automation-adapter/SKILL.md +2 -0
- package/resources/codex-and-agents-customizations/.agents-variants/csharp-legacy/skills/csharp-qa-gate/SKILL.md +13 -14
- package/resources/codex-and-agents-customizations/.agents-variants/csharp-legacy/skills/invoke-csharp-engineer/SKILL.md +4 -4
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor-c1.toml +3 -3
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor-c2.toml +3 -3
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor-c3-elevated.toml +3 -3
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor-c3.toml +3 -3
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor-c4.toml +3 -3
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor.toml +3 -3
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner-c1.toml +2 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner-c2.toml +2 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner-c3-elevated.toml +2 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner-c3.toml +2 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner-c4.toml +2 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner.toml +2 -2
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-atomic-executor.toml +2 -2
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-atomic-planning.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-orchestrator.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer-c1.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer-c2.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer-c3-elevated.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer-c3.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer-c4.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-typed-engineer.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/feature-review.toml +2 -2
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-atomic-executor.toml +2 -2
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-atomic-planning.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-di-unit-test-engineer.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-orchestrator.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer-c1.toml +7 -7
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer-c2.toml +7 -7
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer-c3-elevated.toml +7 -7
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer-c3.toml +7 -7
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer-c4.toml +7 -7
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-typed-engineer.toml +7 -7
- package/resources/codex-and-agents-customizations/.codex/agents/pytest-unit-test-coding.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/python-atomic-executor.toml +2 -2
- package/resources/codex-and-agents-customizations/.codex/agents/python-atomic-planning.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/python-execution-only-typed.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/python-orchestrator.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer-c1.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer-c2.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer-c3-elevated.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer-c3.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer-c4.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/python-typed-engineer.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/config.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-merge-gate-review.ps1 +699 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-merge-gate.ps1 +29 -2
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate-cleanup.ps1 +481 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate.ps1 +4 -2
- package/resources/codex-and-agents-customizations/.codex/hooks/hook-cleanup-context.ps1 +343 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/validate-feature-review-coverage.ps1 +51 -4
- package/resources/codex-and-agents-customizations/.codex-variants/csharp-legacy/agents/csharp-typed-engineer.toml +6 -6
- package/resources/codex-and-agents-customizations/pack-manifests/core.json +3 -0
- package/resources/customizations/.github/agents/5.1-Beast-adjusted.agent.md +1 -1
- package/resources/customizations/.github/agents/Powershell DI Unit Test Engineer.agent.md +20 -26
- package/resources/customizations/.github/agents/atomic_executor.agent.md +4 -4
- package/resources/customizations/.github/agents/atomic_planning.agent.md +4 -4
- package/resources/customizations/.github/agents/commentary-remediation.agent.md +1 -1
- package/resources/customizations/.github/agents/commit-steward.agent.md +1 -1
- package/resources/customizations/.github/agents/csharp-atomic-executor.agent.md +14 -14
- package/resources/customizations/.github/agents/csharp-atomic-planning.agent.md +2 -2
- package/resources/customizations/.github/agents/csharp-orchestrator.agent.md +4 -4
- package/resources/customizations/.github/agents/csharp-typed-engineer.agent.md +19 -22
- package/resources/customizations/.github/agents/epic-review.agent.md +1 -1
- package/resources/customizations/.github/agents/gpt-5-beast-mode.agent.md +3 -3
- package/resources/customizations/.github/agents/orchestrator.agent.md +8 -8
- package/resources/customizations/.github/agents/powershell-atomic-executor.agent.md +12 -12
- package/resources/customizations/.github/agents/powershell-atomic-planning.agent.md +4 -4
- package/resources/customizations/.github/agents/powershell-orchestrator.agent.md +6 -6
- package/resources/customizations/.github/agents/powershell-typed-engineer.agent.md +21 -24
- package/resources/customizations/.github/agents/pytest-unit-test-coding.agent.md +13 -17
- package/resources/customizations/.github/agents/python-atomic-executor.agent.md +11 -11
- package/resources/customizations/.github/agents/python-atomic-planning.agent.md +2 -2
- package/resources/customizations/.github/agents/python-execution-only-typed.agent.md +14 -17
- package/resources/customizations/.github/agents/python-orchestrator.agent.md +7 -7
- package/resources/customizations/.github/agents/python-typed-engineer.agent.md +17 -20
- package/resources/customizations/.github/agents/staged-review.agent.md +2 -2
- package/resources/customizations/.github/agents/tdd-green.agent.md +1 -1
- package/resources/customizations/.github/agents/tdd-red.agent.md +3 -3
- package/resources/customizations/.github/agents/tdd-refactor.agent.md +2 -2
- package/resources/customizations/.github/agents/typescript-engineer.agent.md +3 -3
- package/resources/customizations/.github/codex/execute-hard-lock.prompt.md +3 -3
- package/resources/customizations/.github/instructions/general-code-change.instructions.md +1 -1
- package/resources/customizations/.github/instructions/powershell-unit-test.instructions.md +1 -1
- package/resources/customizations/.github/instructions/python-code-change.instructions.md +5 -5
- package/resources/customizations/.github/instructions/python-suppressions.instructions.md +3 -3
- package/resources/customizations/.github/instructions/python-unit-test.instructions.md +1 -1
- package/resources/customizations/.github/prompts/execute-hard-lock.prompt.md +2 -2
- package/resources/customizations/.github/prompts/generate-commit-message-repo.prompt.md +2 -2
- package/resources/customizations/.github/prompts/remediate-comments.prompt.md +2 -2
- package/resources/customizations/.github/prompts/review-feature.prompt.md +1 -1
- package/resources/customizations/.github/skills/atomic-plan-contract/SKILL.md +8 -12
- package/resources/customizations/.github/skills/execution-environment/SKILL.md +31 -16
- package/resources/customizations/.github/skills/feature-review-workflow/SKILL.md +15 -2
- package/resources/feature-templates/bug/plan.yyyy-MM-ddTHH-mm.md +4 -4
- package/resources/feature-templates/feature/plan.yyyy-MM-ddTHH-mm.md +3 -3
- package/resources/feature-templates/refactor/plan.yyyy-MM-ddTHH-mm.md +2 -2
- package/resources/powershell/PoshQC/PoshQC.ScanConfig.psm1 +3 -1
- package/resources/powershell/PoshQC/PoshQC.Testing.psm1 +14 -12
- package/resources/powershell/PoshQC/PoshQC.psm1 +3 -3
- package/resources/powershell/PoshQC/README.md +8 -8
- package/resources/powershell/PoshQC/settings/pester.runsettings.psd1 +2 -2
- package/resources/templates/policy_audit/AGENTS.md +9 -10
- package/resources/templates/policy_audit/policy-audit.yyyy-MM-ddTHH-mm.md +19 -20
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: parallel-plan
|
|
3
3
|
description: Prepare a set of thematically unrelated items for concurrent execution before any execution begins - item intake over issue numbers and potential-entry paths, concurrent preparation-mode child orchestrator delegations, blast-radius computation and V1-V3 validation, cohort seeding with a recomputation-parity check, run-manifest and planner-checkpoint authoring, and the parallel-orchestrator kickoff artifact.
|
|
4
|
-
argument-hint: "[items: issue numbers and/or potential-entry paths]"
|
|
4
|
+
argument-hint: "[items: issue numbers and/or potential-entry paths] [--after <later>:<earlier> ...]"
|
|
5
5
|
context: fork
|
|
6
6
|
agent: parallel-planner
|
|
7
7
|
---
|
|
@@ -16,7 +16,8 @@ $ARGUMENTS
|
|
|
16
16
|
This skill frames work for the `parallel-planner` agent, parallel to how
|
|
17
17
|
`.claude/skills/epic-plan/SKILL.md` frames work for `epic-planner`. The `parallel` surface
|
|
18
18
|
schedules thematically unrelated items by computed blast-radius contention: there is no worthiness
|
|
19
|
-
assessment, no operator-supplied ordering
|
|
19
|
+
assessment, no operator-supplied ordering beyond the optional `--after <later>:<earlier>`
|
|
20
|
+
precedence flags, and no shared branch into which item work merges.
|
|
20
21
|
Planning ends at preflight clearance and cohort seeding; no atomic execution, PR authoring, or CI
|
|
21
22
|
monitoring occurs under this skill.
|
|
22
23
|
|
|
@@ -62,13 +63,29 @@ identical forms.
|
|
|
62
63
|
- **`kind`.** Record `kind: feature | bug` at intake from the item source (issue labels, or the
|
|
63
64
|
potential entry's declared kind). When the source is indeterminate, default to `feature` and note
|
|
64
65
|
the choice `[recommendation, not upstream-constrained]`.
|
|
66
|
+
- **Admission assessment.** Run the same `assess` subcommand `/parallel-add` step 2 runs for every
|
|
67
|
+
item whose branch is pushed:
|
|
68
|
+
`pwsh -NoProfile -NonInteractive -File .claude/lib/parallel-admission/Invoke-ParallelAdmission.ps1 assess -Branch origin/<item branch> -FeatureFolder <feature folder>`.
|
|
69
|
+
An item with no pushed branch (an unpromoted potential entry) takes `full_preparation`. Fan-out
|
|
70
|
+
takes only the items whose `next_action` is not `admit_prepared`. An item whose `next_action` is
|
|
71
|
+
`admit_prepared` (stage `cleared`, verdict `fresh`) runs no preparation child: record its
|
|
72
|
+
`plan_path`, `research_path`, `plan_hash`, `base_commit`, `branch_name`, and
|
|
73
|
+
`preflight_status: PREFLIGHT: ALL CLEAR` from the branch, set `preparation_status: prepared`
|
|
74
|
+
(the planner ready value that corresponds to the admission stage `cleared`), and record
|
|
75
|
+
`topology_receipt` as not applicable, because no preparation child ran for it.
|
|
76
|
+
- **Precedence input.** Record each `--after <later>:<earlier>` flag as one top-level
|
|
77
|
+
`precedence[]` entry `{before, after, source, recorded_at}` with `source` `operator`, as
|
|
78
|
+
declared in `## Prepared-Item Admission (issue #1047)` of `.claude/rules/parallel-orchestration.md`.
|
|
79
|
+
The flags are optional and are never requested.
|
|
65
80
|
|
|
66
81
|
The operator is never asked for ordering edges, cohort assignments, or a worthiness verdict.
|
|
67
82
|
Intake proceeds directly to preparation fan-out.
|
|
68
83
|
|
|
69
84
|
## Preparation Fan-Out
|
|
70
85
|
|
|
71
|
-
One preparation-mode `Agent(orchestrator)` run per item
|
|
86
|
+
One preparation-mode `Agent(orchestrator)` run per incomplete item, that is, per item whose
|
|
87
|
+
`assess` `next_action` is not `admit_prepared`; the waves below cover the incomplete items only.
|
|
88
|
+
Preparation produces documents and plans
|
|
72
89
|
rather than code, and items carry no ordering constraint, so preparations may run concurrently —
|
|
73
90
|
but they are BOUNDED, not unbounded.
|
|
74
91
|
|
|
@@ -84,6 +101,8 @@ JSON array of arrays, returns the batches in order, and sorts the keys itself, s
|
|
|
84
101
|
does not depend on caller ordering. Launch wave *k* as one message carrying that wave's `Agent`
|
|
85
102
|
calls, each `isolation: "worktree"` and `run_in_background: true`.
|
|
86
103
|
Create each preparation worktree's branch from `origin/main`.
|
|
104
|
+
A resumed item (`next_action` `resume_preparation`) instead runs on its pushed branch, as
|
|
105
|
+
`## Issue Combination` step 3 does, so its completed stages stay on that branch.
|
|
87
106
|
Launch wave *k+1* only after every child of wave *k* has TERMINATED — not merely reported
|
|
88
107
|
progress. All of this happens inside a single `/parallel-plan` invocation with no operator action
|
|
89
108
|
between waves.
|
|
@@ -107,13 +126,18 @@ invocations after the initial plan. Use `/parallel-plan` for intake and `/parall
|
|
|
107
126
|
admit an item into a run that is already in flight.
|
|
108
127
|
|
|
109
128
|
Each delegation prompt includes this literal kickoff line, followed by the model-budget marker
|
|
110
|
-
line
|
|
129
|
+
line, for an issue-number item only, the issue-adoption line, for a resumed item only, the
|
|
130
|
+
preparation-resume line, and the preparation-receipt line:
|
|
111
131
|
|
|
112
132
|
> `Preparation mode: true. route_id: preparation. parallel_slug: <slug>. Perform promotion, research, feature documents (spec.md, user-story.md), atomic planning, and preflight clearance only. Atomic execution, PR authoring, and CI monitoring are out of scope for this run and are executed later by parallel-orchestrator. After the atomic-executor preflight returns PREFLIGHT: ALL CLEAR, commit the feature folder and plan to the current branch, push the current branch to origin, set out-of-scope step statuses to not-applicable, set next_step to S5_atomic_execution, and stop, reporting the plan-path and preflight status.`
|
|
113
133
|
>
|
|
114
134
|
> `model_budget.fable_policy: <disabled|available|preferred>.`
|
|
115
135
|
>
|
|
116
136
|
> `Issue adoption: this item's GitHub issue already exists. Verify it read-only (gh issue view), do not call potential_to_issue or the promotion-entry tool, and record a top-level issue_adoption object in the checkpoint per .claude/rules/orchestrator-state.md with origin filed_before_orchestration (or transferred when the issue was transferred), waiving potential_to_issue and the promotion-entry tool for the checkpoint's promotion-type. When a lifecycle record for the item exists under docs/features/potential/promoted/, cite it as potential_record.`
|
|
137
|
+
>
|
|
138
|
+
> `Preparation resume: stage <stage>. Existing artifacts: <paths>. Do not repeat a completed stage; supersede with new timestamped files.`
|
|
139
|
+
>
|
|
140
|
+
> `Preparation receipt: before the commit, write <feature folder>/evidence/other/preparation-receipt.<yyyy-MM-ddTHH-mm>.json with schema_version, stage, research_path, spec_path, plan_path, plan_hash, base_commit, preflight_status, and recorded_at.`
|
|
117
141
|
|
|
118
142
|
Properties of that line, each individually load-bearing:
|
|
119
143
|
|
|
@@ -144,6 +168,21 @@ to execution, so the execution child records its own adoption (see
|
|
|
144
168
|
creates and commits the feature folder, the execution child's adoption also waives
|
|
145
169
|
`new_active_feature_folder` and records `feature_folder_record` for that committed folder.
|
|
146
170
|
|
|
171
|
+
**Preparation-resume line.** The preparation-resume line is emitted only for a resumed item, after
|
|
172
|
+
the issue-adoption line (or after the model-budget marker line for a potential-entry item). Its
|
|
173
|
+
`<stage>` is the `assess` `resume_stage`, and its `<paths>` are the existing `research_path`,
|
|
174
|
+
`spec_path`, and `plan_path` written relative to the feature folder. The line carries no mode
|
|
175
|
+
marker and no active feature-folder path and does not match the hook issue-number pattern, so hook
|
|
176
|
+
target resolution and mode classification are unchanged. A stale item resumes at preflight with
|
|
177
|
+
the `assess` `changed_cited_paths` as findings under the unchanged single-pass rule of
|
|
178
|
+
`.claude/skills/orchestrate/SKILL.md` `## Delegation Model`; a falsified premise resumes at `plan`,
|
|
179
|
+
and a superseded artifact is replaced by a new timestamped file and never deleted.
|
|
180
|
+
|
|
181
|
+
**Preparation-receipt line.** The preparation-receipt line is emitted for every delegated item. The
|
|
182
|
+
child resolves `<feature folder>` to its own folder and writes the receipt declared in
|
|
183
|
+
`## Prepared-Item Admission (issue #1047)` of `.claude/rules/parallel-orchestration.md` before its
|
|
184
|
+
commit, so a later `assess` reads the stage, plan hash, and base commit from the branch.
|
|
185
|
+
|
|
147
186
|
**No edit to shared surfaces.** No edit is made to `.claude/skills/orchestrate/SKILL.md` or to
|
|
148
187
|
`config/orchestration-routing.json`, including the `preparation` route. The route mechanism is
|
|
149
188
|
marker-driven; the child contract's "commit ... to the current branch" wording is satisfied by a
|
|
@@ -437,7 +476,13 @@ The library returns the partition; the planner supplies the record fields.
|
|
|
437
476
|
(hard classes, integer cost, pairwise benefit, and the configured `conflict_tolerance`). It
|
|
438
477
|
returns `edges` and `tolerated_overlaps`. The -Relation argument is required; pass the facade's
|
|
439
478
|
Test-BlastRadiusConflict function object as shown. Pass the returned `edges` pairs as
|
|
440
|
-
`--edges "<a>:<b> ..."` and the item keys as `--keys "<k1> <k2> ..."`.
|
|
479
|
+
`--edges "<a>:<b> ..."` and the item keys as `--keys "<k1> <k2> ..."`. Add each recorded
|
|
480
|
+
`precedence[]` pair to `--edges` as one more separating `<a>:<b>` edge with `a < b`, so the
|
|
481
|
+
coloring always separates the pair. Then pass the coloring through the precedence lift:
|
|
482
|
+
`pwsh -NoProfile -NonInteractive -File .claude/lib/parallel-admission/Invoke-ParallelAdmission.ps1 order-cohorts -Cohorts <compute-cohorts output> -Edges "<a>:<b> ..." -Precedence "<before>:<after> ..."`.
|
|
483
|
+
No item has started at seeding, so the call passes no option that holds an item in place, and
|
|
484
|
+
its `cohorts` output is the table steps 3 and 5 record. A `precedence_cycle` or
|
|
485
|
+
`precedence_unknown_item` rejection (exit 1) stops the run with the helper's stderr line.
|
|
441
486
|
The detection relation inside the entry point contributes no `path_overlap` edge for a path
|
|
442
487
|
matching the truth table's optional `mergeable_paths` list, and the path stays in the declared
|
|
443
488
|
radius. When `Test-BlastRadiusConflict` is called directly (for example, while investigating a
|
|
@@ -482,6 +527,18 @@ The library returns the partition; the planner supplies the record fields.
|
|
|
482
527
|
(the bash port of `compute_concurrency_batches(cohort_item_keys, max_concurrency)`), which fills
|
|
483
528
|
slots in ascending item-key order. Recoloring under add, remove, or drift mutation is F6 and F8
|
|
484
529
|
scope. This skill performs seeding only.
|
|
530
|
+
7. **Durable scheduling record.** Build the record content with
|
|
531
|
+
`pwsh -NoProfile -NonInteractive -File .claude/lib/parallel-admission/Invoke-ParallelAdmission.ps1 record -RunFolder docs/features/parallel/<slug> -Entry <entry-json>`
|
|
532
|
+
from the recorded `conflict_edges`, `tolerated_overlaps`, `precedence`, and `items`; the helper
|
|
533
|
+
prints the content and makes no git write. Write it to
|
|
534
|
+
`docs/features/parallel/<slug>/parallel-scheduling.json` and commit it on `parallel/<slug>-plan`
|
|
535
|
+
with the manifest. A re-seed applies the reuse rule per item with
|
|
536
|
+
`pwsh -NoProfile -NonInteractive -File .claude/lib/parallel-admission/Invoke-ParallelAdmission.ps1 reuse-edges -Slug <slug> -IssueNum <issue> -PlanHash <plan_hash>`,
|
|
537
|
+
where `<plan_hash>` is the item's `plan_hash` from its `assess` output. The helper reads the
|
|
538
|
+
committed record by ref from `origin/parallel/<slug>-plan`, runs no fetch, and prints
|
|
539
|
+
`{action, edges, reason}`. On `action` `reuse` the printed `edges` are that item's recorded
|
|
540
|
+
edges and are reused; on `action` `recompute` (reason `record_missing`, `unknown_item`, or
|
|
541
|
+
`plan_hash_changed`) that item's edges are recomputed.
|
|
485
542
|
|
|
486
543
|
### Recomputation parity (planner-owned check)
|
|
487
544
|
|
|
@@ -492,12 +549,18 @@ skill discharges that obligation as documented procedure, not as a new module:
|
|
|
492
549
|
|
|
493
550
|
1. After writing `cohorts[]` into the checkpoint and **before** emitting the kickoff artifact,
|
|
494
551
|
re-invoke `compute_cohorts` over exactly the `item_keys` and `conflict_edges` recorded in the
|
|
495
|
-
checkpoint.
|
|
552
|
+
checkpoint (through `compute-cohorts.sh`), plus the separating edges of the recorded
|
|
553
|
+
`precedence[]` pairs, and pass the result through `order-cohorts` with the recorded precedence,
|
|
554
|
+
exactly as `### Seeding procedure` step 1 does.
|
|
496
555
|
2. Assert that the recomputed list of lists maps to exactly the recorded `cohorts[]` at
|
|
497
556
|
`generation: 0`: the same partition, the same `index` assignment, and the same ascending
|
|
498
|
-
`item_keys[]` ordering.
|
|
499
|
-
|
|
500
|
-
|
|
557
|
+
`item_keys[]` ordering. Then run
|
|
558
|
+
`pwsh -NoProfile -NonInteractive -File .claude/lib/parallel-admission/Invoke-ParallelAdmission.ps1 test-cohorts -CheckpointPath artifacts/orchestration/parallel-planner-state.json`,
|
|
559
|
+
which rejects with `precedence_violated` when a cohort places an `after` item at or before an
|
|
560
|
+
active `before` item.
|
|
561
|
+
3. A mismatch is a **Blocking** condition, and so is a `test-cohorts` rejection. Stop the run and
|
|
562
|
+
report the mismatch or the rejection. Do not auto-correct the recorded cohorts, and do not emit
|
|
563
|
+
the kickoff artifact.
|
|
501
564
|
|
|
502
565
|
No production module is added for this check; it is a re-invocation of the landed library.
|
|
503
566
|
|
|
@@ -558,20 +621,22 @@ Write `artifacts/orchestration/parallel-planner-state.json` after every complete
|
|
|
558
621
|
|
|
559
622
|
Top-level fields: `objective`, `parallel_slug`, `parallel_manifest_path`, `mode`,
|
|
560
623
|
`max_concurrency`, `plan_home_branch` (`parallel/<slug>-plan`), `items[]`, `cohorts[]`,
|
|
561
|
-
`conflict_edges[]`, `
|
|
624
|
+
`conflict_edges[]`, `precedence[]` (the operator precedence entries, declared in
|
|
625
|
+
`## Prepared-Item Admission (issue #1047)` of the rule), `recolor_generation`, `kickoff_prompt_path`
|
|
562
626
|
(`artifacts/orchestration/parallel-kickoff-<slug>.md`), `completed_steps`, `next_step`, and
|
|
563
627
|
`last_updated`. F3's landed required-key set (planner invariant P1) is a strict subset of this
|
|
564
628
|
list, and `plan_home_branch` is a permitted additional field.
|
|
565
629
|
|
|
566
630
|
Per item: `issue_num`, `feature_folder`, `kind`, `state`, `complexity_band`, `complexity_assessment`,
|
|
567
631
|
`preparation_status`,
|
|
568
|
-
`research_path`, `plan_path`, `preflight_status`, `branch_name`, `worktree_path`, `blast_radius`
|
|
632
|
+
`research_path`, `plan_path`, `plan_hash`, `base_commit`, `preflight_status`, `branch_name`, `worktree_path`, `blast_radius`
|
|
569
633
|
(with `source: "declared"`), `radius_validation` (the `v1`, `v2`, and `v3` results with their
|
|
570
634
|
severities), `model_routing_receipt`, and `topology_receipt`.
|
|
571
635
|
|
|
572
636
|
**Deliberately absent:** any `epic_worthiness` analogue, any `depends_on` field, and any `wave`
|
|
573
637
|
field. The parallel surface renders no worthiness verdict and expresses ordering only as
|
|
574
|
-
blast-radius overlap
|
|
638
|
+
blast-radius overlap and as the operator `precedence[]` input, which is a separating input and not
|
|
639
|
+
a dependency field.
|
|
575
640
|
|
|
576
641
|
**Readiness contract.** Before reporting completion the checkpoint must satisfy F3's
|
|
577
642
|
`require_ready_for_execution` gate: at least two items (invariant P6); every item
|
|
@@ -674,6 +739,11 @@ Structural requirements enforced by the contract module:
|
|
|
674
739
|
commit of `parallel/<slug>-plan` as run-level provenance and a per-item `plan-path | plan-hash`
|
|
675
740
|
table whose hashes are 40 to 64 hex characters with no repeated plan path.
|
|
676
741
|
|
|
742
|
+
The planner writes the `## Integrity` section with one row per item, whose `plan-hash` is that
|
|
743
|
+
item's `assess` `plan_hash` (the plan blob hash at the item branch head), the same value recorded
|
|
744
|
+
on the checkpoint item and in the durable scheduling record. The parallel orchestrator passes it to
|
|
745
|
+
the item's execution child in kickoff element 4, which verifies it before any other step.
|
|
746
|
+
|
|
677
747
|
Validate the artifact through `mcp__drm-copilot__validate_orchestration_artifacts` with
|
|
678
748
|
`artifact_type: "parallel-kickoff"`. That artifact type dispatches to
|
|
679
749
|
`scripts/dev_tools/parallel_kickoff_contract.py`, which this feature delivers.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: powershell-qa-gate
|
|
3
|
-
description: Final QA gate for PowerShell changes. Executes the full PoshQC format -> analyze -> test toolchain (with coverage where enforced), compares against
|
|
3
|
+
description: Final QA gate for PowerShell changes. Executes the full PoshQC format -> analyze -> test toolchain (with coverage where enforced), compares static tool results against the static baseline, reads test and coverage results from the single gate run, and produces the required reporting block before the agent declares the change complete.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# PowerShell QA Gate
|
|
@@ -12,14 +12,14 @@ Canonical procedure for the Phase D final quality gate that every PowerShell cha
|
|
|
12
12
|
Use this skill when:
|
|
13
13
|
|
|
14
14
|
- `powershell-typed-engineer` is about to declare a change complete.
|
|
15
|
-
- An executor has finished applying a planned batch and must verify
|
|
15
|
+
- An executor has finished applying a planned batch and must verify the static tools against the static baseline recorded in Phase A, and the tests in the single gate run.
|
|
16
16
|
- A reviewer needs to confirm the toolchain was actually run and produced a clean pass.
|
|
17
17
|
|
|
18
18
|
## Required Inputs
|
|
19
19
|
|
|
20
20
|
Before invoking this gate, the agent must have:
|
|
21
21
|
|
|
22
|
-
- a baseline record produced in Phase A, containing PSScriptAnalyzer findings
|
|
22
|
+
- a static baseline record produced in Phase A, containing PSScriptAnalyzer findings for the in-scope files,
|
|
23
23
|
- the exact list of touched production and test files,
|
|
24
24
|
- a clean working tree (all planned edits committed to the working copy).
|
|
25
25
|
|
|
@@ -29,39 +29,38 @@ Run the full toolchain in this exact order. If any step fails or modifies files,
|
|
|
29
29
|
|
|
30
30
|
1. `mcp__drm-copilot__run_poshqc_format`
|
|
31
31
|
2. `mcp__drm-copilot__run_poshqc_analyze`
|
|
32
|
-
3. `
|
|
33
|
-
4. Coverage check (when enforced by task/repo flow) — use the Pester coverage output
|
|
32
|
+
3. One `Invoke-PoshQCParallelTest` run, through the route in the `execution-environment` brief. Read `ExitCode` first.
|
|
33
|
+
4. Coverage check (when enforced by task/repo flow) — use the Pester coverage output of the run in step 3.
|
|
34
34
|
|
|
35
35
|
If the environment prevents running any tool, stop and report the change as **unverified**. Do not declare completion.
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## Gate Requirements (Hard Gate)
|
|
38
38
|
|
|
39
|
-
Compare the final results to the Phase A
|
|
39
|
+
Compare the final static tool results to the static baseline recorded in Phase A, and read test and coverage results from the single gate run. All of the following must hold:
|
|
40
40
|
|
|
41
41
|
- **PSScriptAnalyzer delta**: 0 new findings across the repository.
|
|
42
|
-
- **Pester
|
|
43
|
-
- **Per-file coverage
|
|
44
|
-
- **
|
|
45
|
-
- **New modules, classes, or methods**: line coverage >= 85% per the uniform tier rule (`.claude/rules/quality-tiers.md`). No tier-specific lower thresholds. No regression on changed lines. Pester measures command (instruction) coverage and line coverage only; branch coverage is not measurable for PowerShell, so no branch-coverage gate applies here (see `.claude/rules/powershell.md`). Command coverage is informational and carries no threshold.
|
|
42
|
+
- **Pester gate**: zero failures in the single gate run.
|
|
43
|
+
- **Per-file coverage**: every changed file meets the coverage thresholds, read from the single gate run, and new behavior is tested.
|
|
44
|
+
- **New modules, classes, or methods**: line coverage >= 85% per the uniform tier rule (`.claude/rules/quality-tiers.md`). No tier-specific lower thresholds. Pester measures command (instruction) coverage and line coverage only; branch coverage is not measurable for PowerShell, so no branch-coverage gate applies here (see `.claude/rules/powershell.md`). Command coverage is informational and carries no threshold.
|
|
46
45
|
|
|
47
|
-
If any
|
|
46
|
+
If any check fails, the agent must revert or fix immediately and rerun the full toolchain. Do not proceed to reporting until all checks are clean.
|
|
48
47
|
|
|
49
48
|
## Required Reporting Block
|
|
50
49
|
|
|
51
50
|
Every completion response must include the following sections:
|
|
52
51
|
|
|
53
52
|
1. **Scope** — exact file list touched in this change.
|
|
54
|
-
2. **Baseline** — PSScriptAnalyzer
|
|
53
|
+
2. **Baseline** — PSScriptAnalyzer findings recorded in Phase A.
|
|
55
54
|
3. **Plan** — design and test-strategy summary, referencing the approved plan, including proposed script/module structure, minimal DI seams, Pester scenario-level test strategy, and external executable wrapper mock strategy.
|
|
56
55
|
4. **Diffs** — patch-style or full-file replacements for scoped files only.
|
|
57
|
-
5. **QA Gate Results** — PSScriptAnalyzer delta,
|
|
56
|
+
5. **QA Gate Results** — PSScriptAnalyzer delta, failures in the single gate run, and per-file coverage against the thresholds. If any step could not be run, mark the corresponding line **unverified** and state why.
|
|
58
57
|
|
|
59
58
|
## Evidence Storage
|
|
60
59
|
|
|
61
60
|
Persist toolchain output according to `evidence-and-timestamp-conventions`:
|
|
62
61
|
|
|
63
|
-
- store baseline outputs under `<FEATURE>/evidence/baseline/<timestamp>/`,
|
|
64
|
-
- store
|
|
62
|
+
- store static baseline outputs under `<FEATURE>/evidence/baseline/<timestamp>/`,
|
|
63
|
+
- store final gate outputs under `<FEATURE>/evidence/qa-gates/<timestamp>/`,
|
|
65
64
|
- use ISO-8601 UTC timestamps in folder names.
|
|
66
65
|
|
|
67
66
|
This location is canonical per evidence-and-timestamp-conventions and is not overridable.
|
|
@@ -73,5 +72,5 @@ The evidence paths must be referenced in the agent's completion message to satis
|
|
|
73
72
|
|
|
74
73
|
- Do not disable, skip, or narrow any step of the toolchain to reach a clean result.
|
|
75
74
|
- Do not add PSScriptAnalyzer rule suppressions (`[Diagnostics.CodeAnalysis.SuppressMessageAttribute]` or `PSScriptAnalyzer` suppression comments) or Pester `-Skip` / `-Pending` to mask new findings introduced by the change.
|
|
76
|
-
- Do not report success based on partial or targeted runs
|
|
75
|
+
- Do not report success based on partial or targeted runs. A focused run of one test file to debug a specific failure is debugging only; it is never a gate or evidence, and the final gate is the single gate run.
|
|
77
76
|
- Do not mock `git`, `gh`, `actionlint`, or other executables directly; mock the wrapper function (for example `Invoke-GitExe`) per `.claude/rules/powershell.md`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: python-qa-gate
|
|
3
|
-
description: Final QA gate for Python changes. Executes the full Black -> Ruff -> Pyright -> Pytest toolchain, compares against
|
|
3
|
+
description: Final QA gate for Python changes. Executes the full Black -> Ruff -> Pyright -> Pytest toolchain, compares static tool results against the static baseline, reads test and coverage results from the single gate run, and produces the required reporting block before the agent declares the change complete.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Python QA Gate
|
|
@@ -12,14 +12,14 @@ Canonical procedure for the Phase D final quality gate that every Python change
|
|
|
12
12
|
Use this skill when:
|
|
13
13
|
|
|
14
14
|
- `python-typed-engineer` is about to declare a change complete.
|
|
15
|
-
- An executor has finished applying a planned batch and must verify
|
|
15
|
+
- An executor has finished applying a planned batch and must verify the static tools against the static baseline recorded in Phase A, and the tests in the single gate run.
|
|
16
16
|
- A reviewer needs to confirm the toolchain was actually run and produced a clean pass.
|
|
17
17
|
|
|
18
18
|
## Required Inputs
|
|
19
19
|
|
|
20
20
|
Before invoking this gate, the agent must have:
|
|
21
21
|
|
|
22
|
-
- a baseline record produced in Phase A, containing Ruff
|
|
22
|
+
- a static baseline record produced in Phase A, containing Ruff and Pyright findings for the in-scope files,
|
|
23
23
|
- the exact list of touched production and test files,
|
|
24
24
|
- a clean working tree (all planned edits committed to the working copy).
|
|
25
25
|
|
|
@@ -30,39 +30,38 @@ Run the full toolchain in this exact order. If any step fails or modifies files,
|
|
|
30
30
|
1. `poetry run black .`
|
|
31
31
|
2. `poetry run ruff check .`
|
|
32
32
|
3. `poetry run pyright`
|
|
33
|
-
4. `poetry run pytest --cov --cov-report=term-missing`
|
|
33
|
+
4. `poetry run pytest -n auto --cov-branch --cov-report=term-missing --cov`
|
|
34
34
|
|
|
35
35
|
If the environment prevents running any tool, stop and report the change as **unverified**. Do not declare completion.
|
|
36
36
|
|
|
37
|
-
##
|
|
37
|
+
## Gate Requirements (Hard Gate)
|
|
38
38
|
|
|
39
|
-
Compare the final results to the Phase A
|
|
39
|
+
Compare the final static tool results to the static baseline recorded in Phase A, and read test and coverage results from the single gate run. All of the following must hold:
|
|
40
40
|
|
|
41
41
|
- **Ruff delta**: 0 new findings across the repository.
|
|
42
42
|
- **Pyright delta**: 0 new diagnostics across the repository.
|
|
43
|
-
- **Pytest
|
|
44
|
-
- **Per-file coverage
|
|
45
|
-
- **
|
|
46
|
-
- **New modules, classes, or methods**: line coverage >= 85% and branch coverage >= 75% per the uniform tier rule (`.claude/rules/quality-tiers.md`). No tier-specific lower thresholds. No regression on changed lines.
|
|
43
|
+
- **Pytest gate**: zero failures in the single gate run.
|
|
44
|
+
- **Per-file coverage**: every changed file meets the coverage thresholds, read from the single gate run, and new behavior is tested.
|
|
45
|
+
- **New modules, classes, or methods**: line coverage >= 85% and branch coverage >= 75% per the uniform tier rule (`.claude/rules/quality-tiers.md`). No tier-specific lower thresholds.
|
|
47
46
|
|
|
48
|
-
If any
|
|
47
|
+
If any check fails, the agent must revert or fix immediately and rerun the full toolchain. Do not proceed to reporting until all checks are clean.
|
|
49
48
|
|
|
50
49
|
## Required Reporting Block
|
|
51
50
|
|
|
52
51
|
Every completion response must include the following sections:
|
|
53
52
|
|
|
54
53
|
1. **Scope** — exact file list touched in this change.
|
|
55
|
-
2. **Baseline** — Ruff
|
|
54
|
+
2. **Baseline** — Ruff and Pyright findings recorded in Phase A.
|
|
56
55
|
3. **Plan** — design and test-strategy summary, referencing the approved plan.
|
|
57
56
|
4. **Diffs** — patch-style or full-file replacements for scoped files only.
|
|
58
|
-
5. **QA Gate Results** — Ruff
|
|
57
|
+
5. **QA Gate Results** — Ruff and Pyright deltas, failures in the single gate run, and per-file coverage against the thresholds. If any step could not be run, mark the corresponding line **unverified** and state why.
|
|
59
58
|
|
|
60
59
|
## Evidence Storage
|
|
61
60
|
|
|
62
61
|
Persist toolchain output according to `evidence-and-timestamp-conventions`:
|
|
63
62
|
|
|
64
|
-
- store baseline outputs under `<FEATURE>/evidence/baseline/<timestamp>/`,
|
|
65
|
-
- store
|
|
63
|
+
- store static baseline outputs under `<FEATURE>/evidence/baseline/<timestamp>/`,
|
|
64
|
+
- store final gate outputs under `<FEATURE>/evidence/qa-gates/<timestamp>/`,
|
|
66
65
|
- use ISO-8601 UTC timestamps in folder names.
|
|
67
66
|
|
|
68
67
|
This location is canonical per evidence-and-timestamp-conventions and is not overridable.
|
|
@@ -74,4 +73,4 @@ The evidence paths must be referenced in the agent's completion message to satis
|
|
|
74
73
|
|
|
75
74
|
- Do not disable, skip, or narrow any step of the toolchain to reach a clean result.
|
|
76
75
|
- Do not add Ruff `noqa`, Pyright `# type: ignore`, or test skips to suppress new findings introduced by the change.
|
|
77
|
-
- Do not report success based on partial or targeted runs
|
|
76
|
+
- Do not report success based on partial or targeted runs. A focused run of one test file to debug a specific failure is debugging only; it is never a gate or evidence, and the final gate is the single gate run.
|
package/resources/claude-customizations/.claude/skills/remediation-handoff-atomic-planner/SKILL.md
CHANGED
|
@@ -98,7 +98,7 @@ A comprehensive or final sweep in a remediation cycle covers that cycle's own pl
|
|
|
98
98
|
|
|
99
99
|
- Phase headings: `### Phase N — <Title>`.
|
|
100
100
|
- Tasks: `- [ ] [P#-T#]` with sequential per-phase IDs.
|
|
101
|
-
- Phase 0 captures policy reads and baseline
|
|
101
|
+
- Phase 0 captures policy reads and static baseline results per `policy-compliance-order` and `evidence-and-timestamp-conventions`.
|
|
102
102
|
- Final phase runs the full toolchain QA loop in the order specified by `atomic-plan-contract` and records numeric coverage values where the repository policy requires coverage.
|
|
103
103
|
- Evidence paths resolve to `<FEATURE>/evidence/<kind>/` per the non-overridable evidence path clause.
|
|
104
104
|
- The plan is design-level per `## Design-Level Plan Contract (Mandatory)` in `atomic-plan-contract`, carries a `## Pre-Mortem` section, and ends with the final-phase self-review task. A proportionate plan covers only the listed findings and stays short.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: csharp-typed-engineer
|
|
3
|
-
description: Project-scoped worker that implements and verifies C# changes within typed repository boundaries. Applies the CSharpier -> .NET Analyzers -> Nullable Analysis -> MSTest toolchain, the 1-3 production-file small-path budget, and
|
|
3
|
+
description: Project-scoped worker that implements and verifies C# changes within typed repository boundaries. Applies the CSharpier -> .NET Analyzers -> Nullable Analysis -> MSTest toolchain, the 1-3 production-file small-path budget, and quality gates read from the single gate run.
|
|
4
4
|
tools:
|
|
5
5
|
- Read
|
|
6
6
|
- Grep
|
|
@@ -33,10 +33,10 @@ Follow the phased workflow defined by the preloaded skills:
|
|
|
33
33
|
|
|
34
34
|
1. **Policy compliance** — apply `policy-compliance-order` to load mandatory repo policies before any change.
|
|
35
35
|
2. **Routing and scope** — apply `csharp-change-budget-router` to estimate scope, select direct vs orchestrator handoff mode, and enforce the 3 production + 3 test per-batch cap.
|
|
36
|
-
3. **Plan and baseline** — apply `atomic-plan-contract` for Phase 0 baseline capture and atomic plan structure. Delegate plan authoring to `atomic_planner` when no plan is supplied. Plans must include the proposed class and module structure, minimal DI seams, MSTest scenario-level test strategy, and Moq mock strategy.
|
|
37
|
-
4. **Implement in batches** — apply the approved plan. After each batch, run targeted analyzer and nullable builds on touched projects
|
|
38
|
-
5. **Final QA gate** — apply `csharp-qa-gate` to run the full toolchain,
|
|
39
|
-
6. **Evidence and handoff** — store baseline and
|
|
36
|
+
3. **Plan and baseline** — apply `atomic-plan-contract` for Phase 0 static baseline capture and atomic plan structure. Delegate plan authoring to `atomic_planner` when no plan is supplied. Plans must include the proposed class and module structure, minimal DI seams, MSTest scenario-level test strategy, and Moq mock strategy.
|
|
37
|
+
4. **Implement in batches** — apply the approved plan. After each batch, run targeted analyzer and nullable builds on touched projects. Test and coverage results come from the single gate run. A focused run of one test file to debug a specific failure is debugging only.
|
|
38
|
+
5. **Final QA gate** — apply `csharp-qa-gate` to run the full toolchain, compare static tool results against the static baseline, read test and coverage results from the single gate run, and produce the required reporting block before declaring completion.
|
|
39
|
+
6. **Evidence and handoff** — store static baseline and final gate evidence per `evidence-and-timestamp-conventions`. Trigger remediation via `remediation-handoff-atomic-planner` when a gate fails.
|
|
40
40
|
|
|
41
41
|
## Mode Marker Resolution
|
|
42
42
|
|
|
@@ -55,7 +55,7 @@ Stop implementation and return to the user when:
|
|
|
55
55
|
|
|
56
56
|
- the scope estimate or an in-flight batch would exceed the 3-production-file cap in direct mode,
|
|
57
57
|
- a file is above or would exceed the 800-line hard limit of the tiered file-size policy (split it before proceeding; at 500 lines look for a logical split, and at 700 lines split more aggressively),
|
|
58
|
-
- any QA gate
|
|
58
|
+
- any QA gate check fails after self-correction,
|
|
59
59
|
- the toolchain cannot be executed in the current environment (mark the change **unverified**),
|
|
60
60
|
- orchestrator handoff mode is requested but the required context package is incomplete,
|
|
61
61
|
- policy instructions conflict.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: csharp-qa-gate
|
|
3
|
-
description: Final QA gate for C# changes. Executes the full CSharpier -> .NET Analyzers -> Nullable Analysis -> MSTest toolchain, compares against
|
|
3
|
+
description: Final QA gate for C# changes. Executes the full CSharpier -> .NET Analyzers -> Nullable Analysis -> MSTest toolchain, compares static tool results against the static baseline, reads test and coverage results from the single gate run, and produces the required reporting block before the agent declares the change complete.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# C# QA Gate
|
|
@@ -12,14 +12,14 @@ Canonical procedure for the Phase D final quality gate that every C# change must
|
|
|
12
12
|
Use this skill when:
|
|
13
13
|
|
|
14
14
|
- `csharp-typed-engineer` is about to declare a change complete.
|
|
15
|
-
- An executor has finished applying a planned batch and must verify
|
|
15
|
+
- An executor has finished applying a planned batch and must verify the static tools against the static baseline recorded in Phase A, and the tests in the single gate run.
|
|
16
16
|
- A reviewer needs to confirm the toolchain was actually run and produced a clean pass.
|
|
17
17
|
|
|
18
18
|
## Required Inputs
|
|
19
19
|
|
|
20
20
|
Before invoking this gate, the agent must have:
|
|
21
21
|
|
|
22
|
-
- a baseline record produced in Phase A, containing analyzer findings
|
|
22
|
+
- a static baseline record produced in Phase A, containing analyzer findings and compiler/nullable diagnostics for the in-scope files,
|
|
23
23
|
- the exact list of touched production and test files,
|
|
24
24
|
- a clean working tree (all planned edits committed to the working copy).
|
|
25
25
|
|
|
@@ -36,35 +36,34 @@ Run the full toolchain in this exact order. If any step fails or modifies files,
|
|
|
36
36
|
|
|
37
37
|
If the environment prevents running any tool, stop and report the change as **unverified**. Do not declare completion.
|
|
38
38
|
|
|
39
|
-
##
|
|
39
|
+
## Gate Requirements (Hard Gate)
|
|
40
40
|
|
|
41
|
-
Compare the final results to the Phase A
|
|
41
|
+
Compare the final static tool results to the static baseline recorded in Phase A, and read test and coverage results from the single gate run. All of the following must hold:
|
|
42
42
|
|
|
43
43
|
- **Analyzer delta**: 0 new findings across the repository.
|
|
44
44
|
- **Compiler / nullable delta**: 0 new diagnostics across the repository.
|
|
45
|
-
- **MSTest
|
|
46
|
-
- **Per-file coverage
|
|
47
|
-
- **Overall coverage delta** (when the repo enforces it): overall coverage is greater than or equal to the baseline.
|
|
45
|
+
- **MSTest gate**: zero failures in the single gate run.
|
|
46
|
+
- **Per-file coverage**: every changed file meets the coverage thresholds, read from the single gate run, and new behavior is tested.
|
|
48
47
|
- **New modules, classes, or methods**: coverage >= 90% for each new unit introduced in the batch.
|
|
49
48
|
|
|
50
|
-
If any
|
|
49
|
+
If any check fails, the agent must revert or fix immediately and rerun the full toolchain. Do not proceed to reporting until all checks are clean.
|
|
51
50
|
|
|
52
51
|
## Required Reporting Block
|
|
53
52
|
|
|
54
53
|
Every completion response must include the following sections:
|
|
55
54
|
|
|
56
55
|
1. **Scope** — exact file list touched in this change.
|
|
57
|
-
2. **Baseline** — analyzer
|
|
56
|
+
2. **Baseline** — analyzer and compiler/nullable findings recorded in Phase A.
|
|
58
57
|
3. **Plan** — design and test-strategy summary, referencing the approved plan.
|
|
59
58
|
4. **Diffs** — patch-style or full-file replacements for scoped files only.
|
|
60
|
-
5. **QA Gate Results** — analyzer
|
|
59
|
+
5. **QA Gate Results** — analyzer and compiler/nullable deltas, failures in the single gate run, and per-file coverage against the thresholds. If any step could not be run, mark the corresponding line **unverified** and state why.
|
|
61
60
|
|
|
62
61
|
## Evidence Storage
|
|
63
62
|
|
|
64
63
|
Persist toolchain output according to `evidence-and-timestamp-conventions`:
|
|
65
64
|
|
|
66
|
-
- store baseline outputs under `<FEATURE>/evidence/baseline/<timestamp>/`,
|
|
67
|
-
- store
|
|
65
|
+
- store static baseline outputs under `<FEATURE>/evidence/baseline/<timestamp>/`,
|
|
66
|
+
- store final gate outputs under `<FEATURE>/evidence/qa-gates/<timestamp>/`,
|
|
68
67
|
- use ISO-8601 UTC timestamps in folder names.
|
|
69
68
|
|
|
70
69
|
This location is canonical per evidence-and-timestamp-conventions and is not overridable.
|
|
@@ -76,4 +75,4 @@ The evidence paths must be referenced in the agent's completion message to satis
|
|
|
76
75
|
|
|
77
76
|
- Do not disable, skip, or narrow any step of the toolchain to reach a clean result.
|
|
78
77
|
- Do not add analyzer suppressions, `#pragma warning disable`, `#nullable disable`, or test `[Ignore]` attributes to suppress new findings introduced by the change.
|
|
79
|
-
- Do not report success based on partial or targeted runs
|
|
78
|
+
- Do not report success based on partial or targeted runs. A focused run of one test file to debug a specific failure is debugging only; it is never a gate or evidence, and the final gate is the single gate run.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: invoke-csharp-engineer
|
|
3
|
-
description: Invoke the csharp-typed-engineer worker to design, implement, and verify C# changes within typed repository boundaries. Applies CSharpier -> .NET Analyzers -> Nullable Analysis -> MSTest toolchain, the 1-3 production-file small-path budget, and
|
|
3
|
+
description: Invoke the csharp-typed-engineer worker to design, implement, and verify C# changes within typed repository boundaries. Applies CSharpier -> .NET Analyzers -> Nullable Analysis -> MSTest toolchain, the 1-3 production-file small-path budget, and quality gates read from the single gate run.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Implement C# Skill
|
|
@@ -28,7 +28,7 @@ If the estimated scope exceeds the small-path budget, this skill defers to the o
|
|
|
28
28
|
## Output Paths
|
|
29
29
|
|
|
30
30
|
- C# source and test files within the approved scope.
|
|
31
|
-
-
|
|
31
|
+
- Static baseline evidence under `<FEATURE>/evidence/baseline/<timestamp>/` and final gate evidence under `<FEATURE>/evidence/qa-gates/<timestamp>/` per `evidence-and-timestamp-conventions`.
|
|
32
32
|
- This location is canonical per evidence-and-timestamp-conventions and is not overridable. See `.claude/skills/evidence-and-timestamp-conventions/SKILL.md` for the canonical evidence path authority.
|
|
33
33
|
- Plan artifacts under the active feature folder when the task is feature-scoped.
|
|
34
34
|
|
|
@@ -37,10 +37,10 @@ If the estimated scope exceeds the small-path budget, this skill defers to the o
|
|
|
37
37
|
The worker must return the following reporting block:
|
|
38
38
|
|
|
39
39
|
1. Scope (exact file list).
|
|
40
|
-
2. Baseline (CSharpier, .NET Analyzers, Nullable Analysis
|
|
40
|
+
2. Baseline (CSharpier, .NET Analyzers, and Nullable Analysis findings).
|
|
41
41
|
3. Plan (design and test strategy).
|
|
42
42
|
4. Diffs (patch-style or full-file replacements).
|
|
43
|
-
5. QA Gate Results (CSharpier, .NET Analyzers, Nullable Analysis,
|
|
43
|
+
5. QA Gate Results (CSharpier, .NET Analyzers, and Nullable Analysis deltas, failures in the single gate run, and per-file coverage against the thresholds, or clearly marked **unverified**).
|
|
44
44
|
|
|
45
45
|
## Worker Routing
|
|
46
46
|
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
".claude/hooks/enforce-epic-merge-gate-resolution.ps1",
|
|
40
40
|
".claude/hooks/enforce-epic-merge-gate-command.ps1",
|
|
41
41
|
".claude/hooks/enforce-epic-merge-gate-green-ci.ps1",
|
|
42
|
+
".claude/hooks/enforce-epic-merge-gate-review.ps1",
|
|
42
43
|
".claude/hooks/enforce-epic-wave-barrier.ps1",
|
|
43
44
|
".claude/hooks/enforce-epic-worktree-removal-gate.ps1",
|
|
44
45
|
".claude/hooks/enforce-epic-worktree-removal-gate-resolution.ps1",
|
|
@@ -47,6 +48,7 @@
|
|
|
47
48
|
".claude/hooks/enforce-file-size-limit.ps1",
|
|
48
49
|
".claude/hooks/enforce-model-routing-receipt.ps1",
|
|
49
50
|
".claude/hooks/enforce-orchestration-preimplementation-gate.ps1",
|
|
51
|
+
".claude/hooks/enforce-orchestration-preimplementation-gate-cleanup.ps1",
|
|
50
52
|
".claude/hooks/enforce-orchestration-preimplementation-gate-epic-scope.ps1",
|
|
51
53
|
".claude/hooks/enforce-orchestration-preimplementation-gate-helpers.ps1",
|
|
52
54
|
".claude/hooks/enforce-orchestration-preimplementation-gate-modes.ps1",
|
|
@@ -60,6 +62,7 @@
|
|
|
60
62
|
".claude/hooks/enforce-powershell-batch-budget.ps1",
|
|
61
63
|
".claude/hooks/enforce-pr-author-command-allowlist.ps1",
|
|
62
64
|
".claude/hooks/enforce-pr-author-skill.artifact-root.ps1",
|
|
65
|
+
".claude/hooks/enforce-pr-author-skill.cleanup.ps1",
|
|
63
66
|
".claude/hooks/enforce-pr-author-skill.current-branch.ps1",
|
|
64
67
|
".claude/hooks/enforce-pr-author-skill.docs-only.ps1",
|
|
65
68
|
".claude/hooks/enforce-pr-author-skill.epic-base-branch.ps1",
|
|
@@ -71,6 +74,7 @@
|
|
|
71
74
|
".claude/hooks/enforce-python-batch-budget.ps1",
|
|
72
75
|
".claude/hooks/feature-folder-resolution.ps1",
|
|
73
76
|
".claude/hooks/feature-review-coverage-thresholds.ps1",
|
|
77
|
+
".claude/hooks/hook-cleanup-context.ps1",
|
|
74
78
|
".claude/hooks/hook-command-heredoc.ps1",
|
|
75
79
|
".claude/hooks/hook-command-invocation.ps1",
|
|
76
80
|
".claude/hooks/hook-command-invocation-operands.ps1",
|
|
@@ -122,6 +126,7 @@
|
|
|
122
126
|
".claude/skills/cleanup-merged-worktrees/scripts/cleanup_worktrees_lib.sh",
|
|
123
127
|
".claude/skills/cleanup-merged-worktrees/scripts/cleanup_worktrees_preserve_eol_lib.sh",
|
|
124
128
|
".claude/skills/cleanup-merged-worktrees/scripts/cleanup_worktrees_preserve_lib.sh",
|
|
129
|
+
".claude/skills/cleanup-merged-worktrees/scripts/cleanup_worktrees_preserve_merge_lib.sh",
|
|
125
130
|
".claude/skills/cleanup-merged-worktrees/scripts/cleanup_worktrees_report_records_lib.sh",
|
|
126
131
|
".claude/skills/cleanup-merged-worktrees/scripts/cleanup_worktrees_scan_helper.sh",
|
|
127
132
|
".claude/skills/commit-message/SKILL.md",
|
|
@@ -134,6 +139,12 @@
|
|
|
134
139
|
".claude/skills/discovery-workflow/SKILL.md",
|
|
135
140
|
".claude/skills/epic-orchestrate/SKILL.md",
|
|
136
141
|
".claude/skills/epic-plan/SKILL.md",
|
|
142
|
+
".claude/skills/epic-progress-report/SKILL.md",
|
|
143
|
+
".claude/skills/epic-progress-report/scripts/Get-EpicProgressReport.Logic.ps1",
|
|
144
|
+
".claude/skills/epic-progress-report/scripts/Get-EpicProgressReport.Metrics.ps1",
|
|
145
|
+
".claude/skills/epic-progress-report/scripts/Get-EpicProgressReport.Render.ps1",
|
|
146
|
+
".claude/skills/epic-progress-report/scripts/Get-EpicProgressReport.State.ps1",
|
|
147
|
+
".claude/skills/epic-progress-report/scripts/Get-EpicProgressReport.ps1",
|
|
137
148
|
".claude/skills/epic-run/SKILL.md",
|
|
138
149
|
".claude/skills/evidence-and-timestamp-conventions/SKILL.md",
|
|
139
150
|
".claude/skills/execute-hard-lock/SKILL.md",
|
|
@@ -231,6 +242,10 @@
|
|
|
231
242
|
".claude/lib/parallel-drift/ParallelDriftHalt.psm1",
|
|
232
243
|
".claude/lib/parallel-drift/ParallelDrift.psm1",
|
|
233
244
|
".claude/lib/parallel-drift/Invoke-ParallelDriftDetection.ps1",
|
|
245
|
+
".claude/lib/parallel-admission/ParallelAdmission.psm1",
|
|
246
|
+
".claude/lib/parallel-admission/ParallelAdmissionPrecedence.psm1",
|
|
247
|
+
".claude/lib/parallel-admission/Invoke-ParallelAdmission.ps1",
|
|
248
|
+
".claude/lib/parallel-admission/ParallelAdmissionJson.psm1",
|
|
234
249
|
".claude/rules/parallel-orchestration.md",
|
|
235
250
|
".claude/rules/shell.md",
|
|
236
251
|
".claude/lib/bash/abandon-parallel-item.sh",
|