@danmoisan/drm-copilot-mcp 1.1.18 → 1.1.20
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 +1149 -661
- package/package.json +3 -2
- package/resources/claude-customizations/.claude/agents/atomic-executor.md +28 -6
- package/resources/claude-customizations/.claude/agents/atomic-planner.md +20 -2
- package/resources/claude-customizations/.claude/agents/epic-orchestrator.md +17 -4
- package/resources/claude-customizations/.claude/agents/epic-planner.md +5 -4
- package/resources/claude-customizations/.claude/agents/feature-review.md +6 -4
- package/resources/claude-customizations/.claude/agents/orchestrator.md +9 -5
- package/resources/claude-customizations/.claude/agents/parallel-orchestrator.md +35 -13
- package/resources/claude-customizations/.claude/agents/parallel-planner.md +9 -6
- package/resources/claude-customizations/.claude/agents/pr-author.md +15 -2
- package/resources/claude-customizations/.claude/agents/prd-feature.md +1 -1
- package/resources/claude-customizations/.claude/agents/task-researcher.md +8 -0
- package/resources/claude-customizations/.claude/hooks/check-powershell-test-purity.ps1 +7 -1
- package/resources/claude-customizations/.claude/hooks/check-python-test-purity.ps1 +7 -1
- package/resources/claude-customizations/.claude/hooks/enforce-checkpoint-monotonic.ps1 +7 -1
- package/resources/claude-customizations/.claude/hooks/enforce-completion-consistency.ps1 +111 -46
- package/resources/claude-customizations/.claude/hooks/enforce-completion-helpers.ps1 +105 -0
- package/resources/claude-customizations/.claude/hooks/enforce-discovery-artifact-gate.ps1 +8 -1
- package/resources/claude-customizations/.claude/hooks/enforce-epic-invocation-origin.ps1 +7 -1
- package/resources/claude-customizations/.claude/hooks/enforce-epic-merge-gate-command.ps1 +190 -0
- package/resources/claude-customizations/.claude/hooks/enforce-epic-merge-gate-resolution.ps1 +116 -59
- package/resources/claude-customizations/.claude/hooks/enforce-epic-merge-gate.ps1 +78 -77
- package/resources/claude-customizations/.claude/hooks/enforce-epic-wave-barrier.ps1 +74 -75
- package/resources/claude-customizations/.claude/hooks/enforce-epic-worktree-removal-gate-resolution.ps1 +127 -35
- package/resources/claude-customizations/.claude/hooks/enforce-epic-worktree-removal-gate.ps1 +61 -57
- package/resources/claude-customizations/.claude/hooks/enforce-evidence-locations.ps1 +7 -1
- package/resources/claude-customizations/.claude/hooks/enforce-feature-folder-order.ps1 +129 -39
- package/resources/claude-customizations/.claude/hooks/enforce-mermaid-validation.ps1 +7 -1
- package/resources/claude-customizations/.claude/hooks/enforce-model-routing-receipt.ps1 +9 -3
- package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate-epic-scope.ps1 +39 -51
- package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate-helpers.ps1 +31 -58
- package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate-modes.ps1 +63 -47
- package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate-targets.ps1 +433 -0
- package/resources/claude-customizations/.claude/hooks/enforce-orchestration-preimplementation-gate.ps1 +17 -12
- package/resources/claude-customizations/.claude/hooks/enforce-parallel-abandon-gate.ps1 +9 -3
- package/resources/claude-customizations/.claude/hooks/enforce-parallel-cohort-barrier.ps1 +65 -50
- package/resources/claude-customizations/.claude/hooks/enforce-parallel-drift-gate.ps1 +49 -42
- package/resources/claude-customizations/.claude/hooks/enforce-parallel-worktree-removal-gate.ps1 +54 -72
- package/resources/claude-customizations/.claude/hooks/enforce-powershell-batch-budget.ps1 +8 -2
- package/resources/claude-customizations/.claude/hooks/enforce-pr-author-command-allowlist.ps1 +279 -0
- package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill-helpers.ps1 +129 -75
- package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill.artifact-root.ps1 +233 -0
- package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill.docs-only.ps1 +224 -0
- package/resources/claude-customizations/.claude/hooks/enforce-pr-author-skill.ps1 +69 -24
- package/resources/claude-customizations/.claude/hooks/enforce-prd-feature-before-planner-helpers.ps1 +29 -18
- package/resources/claude-customizations/.claude/hooks/enforce-prd-feature-before-planner.ps1 +10 -4
- package/resources/claude-customizations/.claude/hooks/enforce-promotion-mcp-only.ps1 +14 -5
- package/resources/claude-customizations/.claude/hooks/enforce-python-batch-budget.ps1 +8 -2
- package/resources/claude-customizations/.claude/hooks/feature-folder-resolution.ps1 +373 -0
- package/resources/claude-customizations/.claude/hooks/feature-review-coverage-thresholds.ps1 +85 -0
- package/resources/claude-customizations/.claude/hooks/hook-command-heredoc.ps1 +119 -0
- package/resources/claude-customizations/.claude/hooks/hook-command-invocation-operands.ps1 +198 -0
- package/resources/claude-customizations/.claude/hooks/hook-command-invocation.ps1 +254 -255
- package/resources/claude-customizations/.claude/hooks/hook-command-payload-powershell.ps1 +201 -0
- package/resources/claude-customizations/.claude/hooks/hook-command-payload.ps1 +484 -0
- package/resources/claude-customizations/.claude/hooks/hook-command-scanner.ps1 +27 -110
- package/resources/claude-customizations/.claude/hooks/hook-dependency-guard.ps1 +114 -0
- package/resources/claude-customizations/.claude/hooks/hook-docs-only-diff.ps1 +497 -0
- package/resources/claude-customizations/.claude/hooks/premortem-section.ps1 +149 -0
- package/resources/claude-customizations/.claude/hooks/subagentstop-envelope.ps1 +192 -0
- package/resources/claude-customizations/.claude/hooks/validate-bash.ps1 +9 -3
- package/resources/claude-customizations/.claude/hooks/validate-discovery-artifact-gate.ps1 +40 -42
- package/resources/claude-customizations/.claude/hooks/validate-executor-output.ps1 +267 -113
- package/resources/claude-customizations/.claude/hooks/validate-feature-review-coverage-metrics.ps1 +180 -0
- package/resources/claude-customizations/.claude/hooks/validate-feature-review-coverage-rules.ps1 +195 -0
- package/resources/claude-customizations/.claude/hooks/validate-feature-review-coverage.ps1 +141 -395
- package/resources/claude-customizations/.claude/hooks/validate-orchestrator-output-resolution.ps1 +311 -0
- package/resources/claude-customizations/.claude/hooks/validate-orchestrator-output-routing.ps1 +170 -0
- package/resources/claude-customizations/.claude/hooks/validate-orchestrator-output.ps1 +115 -190
- package/resources/claude-customizations/.claude/hooks/validate-planner-output.ps1 +77 -33
- package/resources/claude-customizations/.claude/hooks/validate-pr-author-output.ps1 +39 -44
- package/resources/claude-customizations/.claude/hooks/validate-prd-feature-output.ps1 +43 -14
- package/resources/claude-customizations/.claude/hooks/validate-required-artifact-output.ps1 +66 -36
- package/resources/claude-customizations/.claude/hooks/validate-task-researcher-output.ps1 +52 -36
- package/resources/claude-customizations/.claude/lib/bash/mutate-parallel-run.sh +191 -0
- package/resources/claude-customizations/.claude/lib/bash/parallel-cohorts.sh +13 -3
- package/resources/claude-customizations/.claude/lib/bash/parallel-mutation-cli.sh +152 -0
- package/resources/claude-customizations/.claude/lib/bash/parallel-mutation-ops.sh +193 -0
- package/resources/claude-customizations/.claude/lib/bash/parallel-mutation.sh +322 -0
- package/resources/claude-customizations/.claude/lib/bash/remove-parallel-item.sh +146 -0
- package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusExtraction.psm1 +23 -33
- package/resources/claude-customizations/.claude/lib/blast-radius/BlastRadiusTokenShape.psm1 +86 -6
- package/resources/claude-customizations/.claude/lib/ci-gate/Invoke-CiGateParser.ps1 +91 -19
- package/resources/claude-customizations/.claude/lib/ci-gate/Invoke-MergeConfirmationParser.ps1 +203 -0
- package/resources/claude-customizations/.claude/lib/orchestrator-state/OrchestratorStateEpicWaveBarrier.psm1 +346 -0
- package/resources/claude-customizations/.claude/lib/orchestrator-state/OrchestratorStateIssueAdoption.psm1 +24 -3
- package/resources/claude-customizations/.claude/lib/worktree-resolution/WorktreeItemResolution.psm1 +79 -2
- package/resources/claude-customizations/.claude/lib/worktree-resolution/WorktreeRunResolution.psm1 +3 -3
- package/resources/claude-customizations/.claude/rules/architecture-boundaries.md +5 -5
- package/resources/claude-customizations/.claude/rules/csharp.md +2 -2
- package/resources/claude-customizations/.claude/rules/general-code-change.md +1 -1
- package/resources/claude-customizations/.claude/rules/general-unit-test.md +3 -2
- package/resources/claude-customizations/.claude/rules/orchestrator-state.md +37 -4
- package/resources/claude-customizations/.claude/rules/parallel-orchestration.md +50 -5
- package/resources/claude-customizations/.claude/rules/plan-acceptance-gates.md +85 -10
- package/resources/claude-customizations/.claude/rules/quality-tiers.md +11 -7
- package/resources/claude-customizations/.claude/rules/shell.md +10 -8
- package/resources/claude-customizations/.claude/rules/typescript.md +1 -1
- package/resources/claude-customizations/.claude/settings.json +3 -4
- package/resources/claude-customizations/.claude/skills/acceptance-criteria-tracking/SKILL.md +1 -1
- package/resources/claude-customizations/.claude/skills/atomic-plan-contract/SKILL.md +52 -16
- package/resources/claude-customizations/.claude/skills/cleanup-merged-worktrees/SKILL.md +7 -3
- package/resources/claude-customizations/.claude/skills/cleanup-merged-worktrees/scripts/cleanup_worktrees_detached_lib.sh +1 -1
- package/resources/claude-customizations/.claude/skills/cleanup-merged-worktrees/scripts/cleanup_worktrees_enumerate_lib.sh +2 -0
- package/resources/claude-customizations/.claude/skills/cleanup-merged-worktrees/scripts/cleanup_worktrees_scan_helper.sh +2 -0
- package/resources/claude-customizations/.claude/skills/csharp-change-budget-router/SKILL.md +2 -2
- package/resources/claude-customizations/.claude/skills/epic-orchestrate/SKILL.md +45 -9
- package/resources/claude-customizations/.claude/skills/epic-plan/SKILL.md +5 -3
- package/resources/claude-customizations/.claude/skills/evidence-and-timestamp-conventions/SKILL.md +10 -1
- package/resources/claude-customizations/.claude/skills/execution-environment/SKILL.md +134 -0
- package/resources/claude-customizations/.claude/skills/feature-promotion-lifecycle/SKILL.md +1 -1
- package/resources/claude-customizations/.claude/skills/feature-review-workflow/SKILL.md +4 -3
- package/resources/claude-customizations/.claude/skills/orchestrate/SKILL.md +36 -15
- package/resources/claude-customizations/.claude/skills/parallel-add/SKILL.md +52 -14
- package/resources/claude-customizations/.claude/skills/parallel-close/SKILL.md +22 -9
- package/resources/claude-customizations/.claude/skills/parallel-orchestrate/SKILL.md +108 -21
- package/resources/claude-customizations/.claude/skills/parallel-plan/SKILL.md +63 -7
- package/resources/claude-customizations/.claude/skills/parallel-remove/SKILL.md +35 -12
- package/resources/claude-customizations/.claude/skills/powershell-change-budget-router/SKILL.md +1 -1
- package/resources/claude-customizations/.claude/skills/pr-author/SKILL.md +3 -1
- package/resources/claude-customizations/.claude/skills/python-change-budget-router/SKILL.md +1 -1
- package/resources/claude-customizations/.claude/skills/quota-throttling/SKILL.md +1 -1
- package/resources/claude-customizations/.claude/skills/remediation-handoff-atomic-planner/SKILL.md +16 -8
- package/resources/claude-customizations/.claude/skills/research-issue/SKILL.md +6 -0
- package/resources/claude-customizations/pack-manifests/core.json +27 -0
- package/resources/codex-and-agents-customizations/.agents/skills/README.md +1 -0
- package/resources/codex-and-agents-customizations/.agents/skills/acceptance-criteria-tracking/SKILL.md +1 -1
- package/resources/codex-and-agents-customizations/.agents/skills/architecture-boundaries/SKILL.md +5 -5
- package/resources/codex-and-agents-customizations/.agents/skills/atomic-executor/SKILL.md +19 -7
- package/resources/codex-and-agents-customizations/.agents/skills/atomic-plan-contract/SKILL.md +43 -4
- package/resources/codex-and-agents-customizations/.agents/skills/atomic-planner/SKILL.md +18 -6
- package/resources/codex-and-agents-customizations/.agents/skills/csharp/SKILL.md +2 -2
- package/resources/codex-and-agents-customizations/.agents/skills/csharp-change-budget-router/SKILL.md +2 -2
- package/resources/codex-and-agents-customizations/.agents/skills/csharp-qa-gate/SKILL.md +2 -2
- package/resources/codex-and-agents-customizations/.agents/skills/epic-orchestrate/SKILL.md +16 -1
- package/resources/codex-and-agents-customizations/.agents/skills/epic-plan/SKILL.md +17 -1
- package/resources/codex-and-agents-customizations/.agents/skills/epic-run/SKILL.md +2 -1
- package/resources/codex-and-agents-customizations/.agents/skills/evidence-and-timestamp-conventions/SKILL.md +10 -1
- package/resources/codex-and-agents-customizations/.agents/skills/execution-environment/SKILL.md +134 -0
- package/resources/codex-and-agents-customizations/.agents/skills/feature-review-workflow/SKILL.md +13 -5
- package/resources/codex-and-agents-customizations/.agents/skills/general-code-change/SKILL.md +1 -1
- package/resources/codex-and-agents-customizations/.agents/skills/general-unit-test/SKILL.md +3 -2
- package/resources/codex-and-agents-customizations/.agents/skills/orchestrate/SKILL.md +27 -8
- package/resources/codex-and-agents-customizations/.agents/skills/orchestrator-workflow/SKILL.md +1 -1
- package/resources/codex-and-agents-customizations/.agents/skills/powershell-change-budget-router/SKILL.md +1 -1
- package/resources/codex-and-agents-customizations/.agents/skills/python-change-budget-router/SKILL.md +1 -1
- package/resources/codex-and-agents-customizations/.agents/skills/quality-tiers/SKILL.md +11 -7
- package/resources/codex-and-agents-customizations/.agents/skills/remediation-handoff-atomic-planner/SKILL.md +7 -3
- package/resources/codex-and-agents-customizations/.agents/skills/research-issue/SKILL.md +6 -0
- package/resources/codex-and-agents-customizations/.agents/skills/translate-claude-to-codex/SKILL.md +1 -1
- package/resources/codex-and-agents-customizations/.agents-variants/csharp-legacy/skills/csharp/SKILL.md +2 -2
- package/resources/codex-and-agents-customizations/.agents-variants/csharp-legacy/skills/csharp-qa-gate/SKILL.md +2 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor-c1.toml +21 -6
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor-c2.toml +21 -6
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor-c3-elevated.toml +21 -6
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor-c3.toml +21 -6
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor-c4.toml +21 -6
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-executor.toml +21 -6
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner-c1.toml +15 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner-c2.toml +15 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner-c3-elevated.toml +15 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner-c3.toml +15 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner-c4.toml +15 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planner.toml +15 -2
- package/resources/codex-and-agents-customizations/.codex/agents/atomic-planning.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/csharp-atomic-planning.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/epic-orchestrator.toml +4 -1
- package/resources/codex-and-agents-customizations/.codex/agents/feature-review.toml +6 -6
- package/resources/codex-and-agents-customizations/.codex/agents/orchestrator-c1.toml +7 -4
- package/resources/codex-and-agents-customizations/.codex/agents/orchestrator-c2.toml +7 -4
- package/resources/codex-and-agents-customizations/.codex/agents/orchestrator-c3-elevated.toml +7 -4
- package/resources/codex-and-agents-customizations/.codex/agents/orchestrator-c3.toml +7 -4
- package/resources/codex-and-agents-customizations/.codex/agents/orchestrator-c4.toml +7 -4
- package/resources/codex-and-agents-customizations/.codex/agents/orchestrator.toml +7 -4
- package/resources/codex-and-agents-customizations/.codex/agents/powershell-atomic-planning.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/python-atomic-planning.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/agents/task-researcher-c1.toml +6 -0
- package/resources/codex-and-agents-customizations/.codex/agents/task-researcher-c2.toml +6 -0
- package/resources/codex-and-agents-customizations/.codex/agents/task-researcher-c3-elevated.toml +6 -0
- package/resources/codex-and-agents-customizations/.codex/agents/task-researcher-c3.toml +6 -0
- package/resources/codex-and-agents-customizations/.codex/agents/task-researcher-c4.toml +6 -0
- package/resources/codex-and-agents-customizations/.codex/agents/task-researcher.toml +6 -0
- package/resources/codex-and-agents-customizations/.codex/codex-web-setup.sh +318 -273
- package/resources/codex-and-agents-customizations/.codex/config.toml +1 -1
- package/resources/codex-and-agents-customizations/.codex/hooks/check-powershell-test-purity.ps1 +7 -1
- package/resources/codex-and-agents-customizations/.codex/hooks/check-python-test-purity.ps1 +7 -1
- package/resources/codex-and-agents-customizations/.codex/hooks/codex-epic-child-launch-attestation.ps1 +1 -1
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-checkpoint-monotonic.ps1 +7 -1
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-codex-model-routing.ps1 +8 -2
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-completion-consistency.ps1 +97 -44
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-completion-helpers.ps1 +105 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-child-worktree-binding.ps1 +7 -1
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-merge-gate-command.ps1 +190 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-merge-gate.ps1 +54 -43
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-planning-only.ps1 +6 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-root-invocation.ps1 +7 -1
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-wave-barrier.ps1 +7 -1
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-epic-worktree-removal-gate.ps1 +54 -41
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-evidence-locations.ps1 +7 -1
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate-epic-scope.ps1 +35 -14
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate-helpers.ps1 +31 -58
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate-modes.ps1 +63 -47
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate-targets.ps1 +433 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-orchestration-preimplementation-gate.ps1 +24 -11
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-powershell-batch-budget.ps1 +8 -2
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-promotion-mcp-only.ps1 +13 -4
- package/resources/codex-and-agents-customizations/.codex/hooks/enforce-python-batch-budget.ps1 +8 -2
- package/resources/codex-and-agents-customizations/.codex/hooks/feature-folder-resolution.ps1 +373 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/feature-review-coverage-thresholds.ps1 +85 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/hook-command-heredoc.ps1 +119 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/hook-command-invocation-operands.ps1 +198 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/hook-command-invocation.ps1 +254 -255
- package/resources/codex-and-agents-customizations/.codex/hooks/hook-command-payload-powershell.ps1 +201 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/hook-command-payload.ps1 +484 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/hook-command-scanner.ps1 +27 -110
- package/resources/codex-and-agents-customizations/.codex/hooks/hook-dependency-guard.ps1 +114 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/hook-docs-only-diff.ps1 +497 -0
- package/resources/codex-and-agents-customizations/.codex/hooks/validate-bash.ps1 +8 -2
- package/resources/codex-and-agents-customizations/.codex/hooks/validate-codex-subagent-routing.ps1 +7 -1
- package/resources/codex-and-agents-customizations/.codex/hooks/validate-feature-review-coverage.ps1 +24 -8
- package/resources/codex-and-agents-customizations/.codex/prompts/feature-review-remediate.md +6 -4
- package/resources/codex-and-agents-customizations/pack-manifests/core.json +11 -0
- package/resources/customizations/.github/agents/atomic_executor.agent.md +21 -11
- package/resources/customizations/.github/agents/atomic_planning.agent.md +8 -3
- package/resources/customizations/.github/agents/csharp-atomic-executor.agent.md +13 -9
- package/resources/customizations/.github/agents/csharp-atomic-planning.agent.md +2 -2
- package/resources/customizations/.github/agents/csharp-orchestrator.agent.md +2 -2
- package/resources/customizations/.github/agents/csharp-typed-engineer.agent.md +5 -5
- package/resources/customizations/.github/agents/orchestrator.agent.md +8 -5
- package/resources/customizations/.github/agents/powershell-atomic-executor.agent.md +13 -9
- package/resources/customizations/.github/agents/powershell-atomic-planning.agent.md +2 -2
- package/resources/customizations/.github/agents/powershell-orchestrator.agent.md +2 -2
- package/resources/customizations/.github/agents/powershell-typed-engineer.agent.md +3 -3
- package/resources/customizations/.github/agents/python-atomic-executor.agent.md +13 -9
- package/resources/customizations/.github/agents/python-atomic-planning.agent.md +2 -2
- package/resources/customizations/.github/agents/python-orchestrator.agent.md +2 -2
- package/resources/customizations/.github/agents/task-researcher.agent.md +6 -0
- package/resources/customizations/.github/instructions/csharp-code-change.instructions.md +4 -4
- package/resources/customizations/.github/instructions/csharp-unit-test.instructions.md +2 -2
- package/resources/customizations/.github/prompts/generate-atomic-plan.prompt.md +16 -10
- package/resources/customizations/.github/prompts/orchestrate-csharp-work.prompt.md +2 -2
- package/resources/customizations/.github/prompts/orchestrate-powershell-work.prompt.md +1 -1
- package/resources/customizations/.github/prompts/orchestrate-python-work.prompt.md +1 -1
- package/resources/customizations/.github/prompts/orchestrate-work.prompt.md +2 -2
- package/resources/customizations/.github/skills/acceptance-criteria-tracking/SKILL.md +1 -1
- package/resources/customizations/.github/skills/atomic-plan-contract/SKILL.md +43 -4
- package/resources/customizations/.github/skills/csharp-change-budget-router/SKILL.md +1 -1
- package/resources/customizations/.github/skills/evidence-and-timestamp-conventions/SKILL.md +10 -1
- package/resources/customizations/.github/skills/execution-environment/SKILL.md +134 -0
- package/resources/customizations/.github/skills/feature-review-workflow/SKILL.md +1 -1
- package/resources/customizations/.github/skills/powershell-change-budget-router/SKILL.md +1 -1
- package/resources/customizations/.github/skills/remediation-handoff-atomic-planner/SKILL.md +7 -3
- package/resources/feature-templates/bug/plan.yyyy-MM-ddTHH-mm.md +10 -0
- package/resources/feature-templates/feature/plan.yyyy-MM-ddTHH-mm.md +11 -0
- package/resources/feature-templates/refactor/plan.yyyy-MM-ddTHH-mm.md +11 -0
- package/resources/powershell/PoshQC/PoshQC.Coverage.psm1 +314 -0
- package/resources/powershell/PoshQC/PoshQC.CoverageMerge.psm1 +163 -0
- package/resources/powershell/PoshQC/PoshQC.Shard.psm1 +296 -0
- package/resources/powershell/PoshQC/PoshQC.Testing.psm1 +48 -32
- package/resources/powershell/PoshQC/PoshQC.psd1 +7 -1
- package/resources/powershell/PoshQC/PoshQC.psm1 +18 -5
- package/resources/powershell/PoshQC/README.md +21 -3
- package/resources/powershell/PoshQC/settings/pester.runsettings.psd1 +5 -319
|
@@ -42,6 +42,11 @@ identical forms.
|
|
|
42
42
|
- **Promotion.** Unpromoted items are promoted by their own preparation-mode child, not by the
|
|
43
43
|
planner. The `preparation` route already carries the promotion MCP tools (`new_potential_entry`,
|
|
44
44
|
`potential_to_issue`, `new_active_feature_folder`).
|
|
45
|
+
- **Issue adoption.** Issue-number items are adopted, not promoted. The item's GitHub issue
|
|
46
|
+
already exists, so its preparation child verifies the issue read-only and records a top-level
|
|
47
|
+
`issue_adoption` object in its checkpoint instead of calling `potential_to_issue` or the
|
|
48
|
+
promotion-entry tool. The delegation prompt carries that instruction as the issue-adoption line
|
|
49
|
+
under `## Preparation Fan-Out`.
|
|
45
50
|
- **`issue_num` resolution.** `issue_num` is the primary key for every item reference. It is known
|
|
46
51
|
at intake for issue-number items. For potential-entry items, record negative placeholders in
|
|
47
52
|
intake order (`-1`, `-2`, ...) and back-fill the real number from each child's promotion receipt
|
|
@@ -102,11 +107,13 @@ invocations after the initial plan. Use `/parallel-plan` for intake and `/parall
|
|
|
102
107
|
admit an item into a run that is already in flight.
|
|
103
108
|
|
|
104
109
|
Each delegation prompt includes this literal kickoff line, followed by the model-budget marker
|
|
105
|
-
line:
|
|
110
|
+
line and, for an issue-number item only, the issue-adoption line:
|
|
106
111
|
|
|
107
112
|
> `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.`
|
|
108
113
|
>
|
|
109
114
|
> `model_budget.fable_policy: <disabled|available|preferred>.`
|
|
115
|
+
>
|
|
116
|
+
> `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.`
|
|
110
117
|
|
|
111
118
|
Properties of that line, each individually load-bearing:
|
|
112
119
|
|
|
@@ -128,6 +135,13 @@ does not apply to preparation. It contains no `Parallel mode: true`, so F7's fut
|
|
|
128
135
|
hook, which matches that marker, will not gate preparation either. Both omissions are intentional
|
|
129
136
|
and must be preserved verbatim when the line is emitted.
|
|
130
137
|
|
|
138
|
+
**Issue-adoption line.** The issue-adoption line is emitted only for an issue-number item, after
|
|
139
|
+
the model-budget marker line, and is omitted for a potential-entry item, whose child promotes it.
|
|
140
|
+
The line carries no mode marker, no digits, and no active feature-folder path, so hook target
|
|
141
|
+
resolution and mode classification are unchanged. The preparation checkpoint does not carry over
|
|
142
|
+
to execution, so the execution child records its own adoption (see
|
|
143
|
+
`.claude/skills/parallel-orchestrate/SKILL.md`, kickoff element 4).
|
|
144
|
+
|
|
131
145
|
**No edit to shared surfaces.** No edit is made to `.claude/skills/orchestrate/SKILL.md` or to
|
|
132
146
|
`config/orchestration-routing.json`, including the `preparation` route. The route mechanism is
|
|
133
147
|
marker-driven; the child contract's "commit ... to the current branch" wording is satisfied by a
|
|
@@ -135,8 +149,9 @@ branch created off `origin/main`; and `routes.preparation` declares no epic-spec
|
|
|
135
149
|
agent, skill, or MCP tool.
|
|
136
150
|
|
|
137
151
|
**Collected per child at termination:** `plan-path`, preflight status, the promotion receipt (the
|
|
138
|
-
`issue_num` back-fill source
|
|
139
|
-
|
|
152
|
+
`issue_num` back-fill source for a potential-entry item) or, for an issue-number item, the
|
|
153
|
+
`issue_adoption` record from the child checkpoint, the model-routing receipt with
|
|
154
|
+
`agent: "orchestrator"`, the topology receipt, `branch_name`, and `worktree_path`. There is no fan-in merge step: the planner
|
|
140
155
|
fetches and records each pushed item branch, back-fills `issue_num` into the manifest on
|
|
141
156
|
`parallel/<slug>-plan`, and updates the checkpoint.
|
|
142
157
|
|
|
@@ -276,6 +291,44 @@ concurrently.
|
|
|
276
291
|
Derivation, the V1-V3 rules, and the contention relation are implemented upstream. This skill calls
|
|
277
292
|
them; it defines none of them.
|
|
278
293
|
|
|
294
|
+
## Complexity Assessment
|
|
295
|
+
|
|
296
|
+
**Assessment point.** Assess each item's complexity band after the item is `prepared` — its
|
|
297
|
+
preflight status is `PREFLIGHT: ALL CLEAR` and its `declared` radius is V1/V2-clear — and before
|
|
298
|
+
cohort seeding, which consumes the band through the scheduling entry point. The parallel parent
|
|
299
|
+
reads the same band to choose the `model` of that item's `Agent(orchestrator)` spawn, so an item
|
|
300
|
+
without a band cannot be routed.
|
|
301
|
+
|
|
302
|
+
**Signals and scale.** Read the signal catalog and the band scale from `model_policy` in
|
|
303
|
+
`config/orchestration-routing.json`. Record every signal the item's approved plan and spec exhibit
|
|
304
|
+
in `signals_present`, then choose a band from the scale.
|
|
305
|
+
|
|
306
|
+
**Floor.** Compute the floor with `Get-ComplexityFloor -SignalsPresent <signals>` from
|
|
307
|
+
`.claude/lib/model-routing/ModelRouting.psm1` in PowerShell, or `compute_complexity_floor(signals)`
|
|
308
|
+
in Python. The chosen band must be at or above the floor; the floor is a lower bound only.
|
|
309
|
+
|
|
310
|
+
**Model resolution.** Resolve the child model with
|
|
311
|
+
`Resolve-DelegationModel -Agent orchestrator -Band <band> -FablePolicy <fable_policy>` from the same
|
|
312
|
+
module, or `resolve_delegation_model("orchestrator", band, fable_policy)` in Python, using the
|
|
313
|
+
run's `model_budget.fable_policy`.
|
|
314
|
+
|
|
315
|
+
**Per-item record.** Write three fields on the item:
|
|
316
|
+
|
|
317
|
+
- `complexity_band` — one of `C1`, `C2`, `C3`, `C4`.
|
|
318
|
+
- `complexity_assessment` — `{ band, floor, signals_present, rationale, assessed_at }`, where `band`
|
|
319
|
+
equals `complexity_band`, `floor` is the computed floor, `rationale` is a non-empty string, and
|
|
320
|
+
`assessed_at` is a non-empty ISO-8601 string.
|
|
321
|
+
- `model_routing_receipt` — `{ agent: "orchestrator", phase, complexity_band, fable_policy,
|
|
322
|
+
table_model, clamped_from, model }`, copied from the resolver output, with `complexity_band`
|
|
323
|
+
equal to the item's band.
|
|
324
|
+
|
|
325
|
+
The kickoff artifact's `## Item Summary` `complexity` cell for the item equals its
|
|
326
|
+
`complexity_band`.
|
|
327
|
+
|
|
328
|
+
**Routing input, not a verdict.** The band is a routing input for model selection and edge
|
|
329
|
+
derivation. It is distinct from the deliberately absent worthiness verdict: assessing a band never
|
|
330
|
+
admits, rejects, or reorders an item.
|
|
331
|
+
|
|
279
332
|
## Cohort Seeding
|
|
280
333
|
|
|
281
334
|
Reach cohort computation through the **destination-runtime bash entry point** under
|
|
@@ -448,7 +501,8 @@ Top-level fields: `objective`, `parallel_slug`, `parallel_manifest_path`, `mode`
|
|
|
448
501
|
`last_updated`. F3's landed required-key set (planner invariant P1) is a strict subset of this
|
|
449
502
|
list, and `plan_home_branch` is a permitted additional field.
|
|
450
503
|
|
|
451
|
-
Per item: `issue_num`, `feature_folder`, `kind`, `state`, `complexity_band`, `
|
|
504
|
+
Per item: `issue_num`, `feature_folder`, `kind`, `state`, `complexity_band`, `complexity_assessment`,
|
|
505
|
+
`preparation_status`,
|
|
452
506
|
`research_path`, `plan_path`, `preflight_status`, `branch_name`, `worktree_path`, `blast_radius`
|
|
453
507
|
(with `source: "declared"`), `radius_validation` (the `v1`, `v2`, and `v3` results with their
|
|
454
508
|
severities), `model_routing_receipt`, and `topology_receipt`.
|
|
@@ -461,8 +515,10 @@ blast-radius overlap.
|
|
|
461
515
|
`require_ready_for_execution` gate: at least two items (invariant P6); every item
|
|
462
516
|
`preparation_status: prepared` with `preflight_status` exactly `PREFLIGHT: ALL CLEAR`, non-empty
|
|
463
517
|
`research_path` and `plan_path`, and `blast_radius.source == "declared"` (P7); `next_step` exactly
|
|
464
|
-
the ready sentinel `PARALLEL_EXECUTION_READY` (P8);
|
|
465
|
-
`artifacts/orchestration/parallel-kickoff-<slug>.md` (P9)
|
|
518
|
+
the ready sentinel `PARALLEL_EXECUTION_READY` (P8); `kickoff_prompt_path` exactly
|
|
519
|
+
`artifacts/orchestration/parallel-kickoff-<slug>.md` (P9); and every item carries a valid
|
|
520
|
+
`complexity_band`, a `complexity_assessment`, and a `model_routing_receipt` with
|
|
521
|
+
`agent: "orchestrator"` that agree with the band (P10).
|
|
466
522
|
|
|
467
523
|
**Git integrity is F4-owned.** F3's `require_ready_for_execution` gate is structural only, so
|
|
468
524
|
verifying that each item's committed plan blob exists on that item's pushed branch ref — and that
|
|
@@ -595,7 +651,7 @@ With no ready feature checkpoint, the exemption admits two attribution-trailer f
|
|
|
595
651
|
- The trailer option: `git commit -m 'docs: plan' --trailer 'Co-Authored-By: Name <email>' --trailer 'Claude-Session: <url>' -- <exempt paths>`. The separate-value form and the `--trailer=<value>` form are both admitted, any number of times, on `git commit` only; `git add --trailer` and a trailer option with no value are denied. Git writes every trailer value into one trailer block.
|
|
596
652
|
- The one-paragraph multi-message form: the subject in the first `-m` and every trailer in one single-quoted second `-m` value, separated by a literal newline. Each `-m` value becomes its own paragraph and git parses only the last paragraph as the trailer block, so trailers split across separate `-m` values do not form one trailer block.
|
|
597
653
|
|
|
598
|
-
Quoting rules: `$` and backtick are literal and admitted inside single quotes, and denied outside quotes and inside double quotes, where the shell expands them. `<` and `>` are admitted inside single or double quotes and denied outside quotes. An unquoted `#` is denied anywhere, because it starts a shell comment that the exemption does not model; a `#` inside quotes is admitted. A typographic quote character (U+2018 to U+201E) anywhere in the command line is denied, because a PowerShell host reads it as a quote.
|
|
654
|
+
Quoting rules: `$` and backtick are literal and admitted inside single quotes, and denied outside quotes and inside double quotes, where the shell expands them. `<` and `>` are admitted inside single or double quotes and denied outside quotes. An unquoted `#` is denied anywhere, because it starts a shell comment that the exemption does not model; a `#` inside quotes is admitted. A typographic quote character (U+2018 to U+201E) anywhere in the command line is denied, because a PowerShell host reads it as a quote. Because the executing shell is undetermined (issue #735), a shape whose meaning differs between a POSIX shell and PowerShell is denied: a backslash anywhere in the command line is denied, and `{`, `}`, `,`, `(`, `)`, and `@` are denied outside quotes. Every staging operand must be a plain forward-slash repository-relative path that uses only the characters `A-Z a-z 0-9 . _ / -`.
|
|
599
655
|
|
|
600
656
|
Not admitted: heredoc-fed messages, including `git commit -m "$(cat <<'EOF' ... EOF)"` and `git commit -F - <<'EOF'`, and message files supplied through `-F <file>` or `--file=<file>`. Use one of the two forms above instead.
|
|
601
657
|
|
|
@@ -73,17 +73,28 @@ Do not record a partial removal, and do not record the rejection itself in `muta
|
|
|
73
73
|
|
|
74
74
|
1. Re-derive durable state as above and resolve the item key against `items[]`.
|
|
75
75
|
|
|
76
|
-
2. Decide the removal
|
|
77
|
-
|
|
78
|
-
|
|
76
|
+
2. Decide the removal through the bundled entry point:
|
|
77
|
+
|
|
78
|
+
```shell
|
|
79
|
+
bash .claude/lib/bash/remove-parallel-item.sh decide --item <key> --state <state> --removal-disposition <detach|abandon>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
`--state` is the state re-derived in step 1; omit it when the key resolves to no `items[]`
|
|
83
|
+
entry. Pass the caller's disposition as `--removal-disposition`, and omit the option when none
|
|
84
|
+
was supplied. Exit 0 prints the decision object (`item_key`, `prior_state`, `new_state`,
|
|
85
|
+
`disposition`, `triggers_recompute`) as one JSON line on stdout. Exit 1 is a rejected row:
|
|
86
|
+
surface its single stderr line and stop. Exit 2 is a usage error in the invocation itself.
|
|
79
87
|
|
|
80
88
|
3. **Unstarted removal (recompute).** Set the item's state to `withdrawn`, drop its vertex, and
|
|
81
|
-
recolor
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
89
|
+
recolor through the bundled entry point:
|
|
90
|
+
|
|
91
|
+
```shell
|
|
92
|
+
bash .claude/lib/bash/remove-parallel-item.sh recolor --unstarted "<k> ..." --edges "<a>:<b> ..." --pinned "<k> ..." --generation <g> --current-cohort <c> --highest-pinned-cohort <h>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Write the output field `cohort_assignments` into `cohorts[]` and set the top-level
|
|
96
|
+
`recolor_generation` to the output field `generation`; the generation increments by exactly
|
|
97
|
+
one. The result names no pinned key, so no in-flight item moves.
|
|
87
98
|
|
|
88
99
|
`current_cohort` is F3's top-level field, read from the re-verified durable state: the lowest
|
|
89
100
|
current-generation cohort index still holding a non-terminal item. Under the per-edge barrier an
|
|
@@ -117,8 +128,18 @@ Do not record a partial removal, and do not record the rejection itself in `muta
|
|
|
117
128
|
invocation above, so an ad hoc command is not matchable and would bypass the confirmation
|
|
118
129
|
contract entirely. One invocation, one item, both side effects.
|
|
119
130
|
|
|
120
|
-
6. **Append exactly one `mutations[]` entry** for a successful removal, built
|
|
121
|
-
|
|
131
|
+
6. **Append exactly one `mutations[]` entry** for a successful removal, built through the
|
|
132
|
+
bundled entry point:
|
|
133
|
+
|
|
134
|
+
```shell
|
|
135
|
+
bash .claude/lib/bash/remove-parallel-item.sh entry --item <key> --prior-state <state> --removal-disposition <detach|abandon> --recompute <true|false> --generation <g> --at <timestamp>
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
`--recompute` equals the decision's `triggers_recompute`. `--generation` is the generation
|
|
139
|
+
before the removal. Omit `--removal-disposition` for an unstarted item. `--at` is the mutation
|
|
140
|
+
timestamp in `yyyy-MM-ddTHH-mm` form; when it is omitted the entry point uses the current UTC
|
|
141
|
+
minute. Exit 0 prints the entry as one JSON line on stdout; exit 1 is a contract rejection whose
|
|
142
|
+
single stderr line is surfaced before stopping; exit 2 is a usage error.
|
|
122
143
|
|
|
123
144
|
| Case | `op` | `item_key` | `prior_state` | `new_state` | `disposition` | `recolor_generation` |
|
|
124
145
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
@@ -127,7 +148,9 @@ Do not record a partial removal, and do not record the rejection itself in `muta
|
|
|
127
148
|
| Remove, `abandon` | `remove` | item key | `in_flight` | `withdrawn` | `abandon` | `g` (unchanged) |
|
|
128
149
|
|
|
129
150
|
`disposition` is non-null only on an in-flight removal and is null on the unstarted row. The `at`
|
|
130
|
-
timestamp comes from the
|
|
151
|
+
timestamp comes from the `--at` value, or from the current UTC minute when `--at` is omitted.
|
|
152
|
+
The repository-local module `scripts/dev_tools/parallel_mutation_protocol.py` is retained as the
|
|
153
|
+
parity reference for this entry point and is not invoked on this path.
|
|
131
154
|
|
|
132
155
|
7. **Validate the checkpoint** before treating the removal as applied. Run the
|
|
133
156
|
`validate_orchestration_artifacts` MCP tool with `artifact_type:
|
package/resources/claude-customizations/.claude/skills/powershell-change-budget-router/SKILL.md
CHANGED
|
@@ -28,7 +28,7 @@ When routed through `/orchestrate`, small path still requires lifecycle scaffold
|
|
|
28
28
|
- promote potential item to GitHub issue with `--work-mode minor-audit`,
|
|
29
29
|
- create active feature folder with `--work-mode minor-audit`,
|
|
30
30
|
- delegate minimal-audit plan creation to `atomic_planner` with `DIRECTIVE: MINIMAL-AUDIT PLAN REQUIRED`,
|
|
31
|
-
- require `atomic_executor` preflight
|
|
31
|
+
- require single-pass `atomic_executor` preflight ending in `PREFLIGHT: ALL CLEAR` (at most one return to the planner),
|
|
32
32
|
- execute Phase 0 only via `atomic_executor` before branching,
|
|
33
33
|
- run reduced small-audit after implementation and QC.
|
|
34
34
|
|
|
@@ -49,7 +49,7 @@ PreToolUse hook can verify the body passed to `gh pr create --body-file` is the
|
|
|
49
49
|
produced:
|
|
50
50
|
|
|
51
51
|
1. Write the body text to `artifacts/pr_body_<N>.md`, where `<N>` is the target issue or PR number.
|
|
52
|
-
2. Compute the SHA-256 of the body file
|
|
52
|
+
2. Compute the SHA-256 of the body file by running `sha256sum artifacts/pr_body_<N>.md` as a single command (no chaining) and take the lowercase hexadecimal digest.
|
|
53
53
|
3. Write the sibling receipt `artifacts/pr_body_<N>.receipt.json` with the shape:
|
|
54
54
|
|
|
55
55
|
```json
|
|
@@ -63,6 +63,8 @@ produced:
|
|
|
63
63
|
}
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
+
Obtain it by running `date -u +%Y-%m-%dT%H:%M:%SZ` as a single command.
|
|
67
|
+
|
|
66
68
|
4. Pass the body to the pull request via `--body-file artifacts/pr_body_<N>.md`; do not use inline
|
|
67
69
|
`--body`.
|
|
68
70
|
|
|
@@ -40,7 +40,7 @@ When routed through `/orchestrate`, the small path still requires lifecycle scaf
|
|
|
40
40
|
- promote the potential item to a GitHub issue with `--work-mode minor-audit`,
|
|
41
41
|
- create the active feature folder with `--work-mode minor-audit`,
|
|
42
42
|
- delegate minimal-audit plan creation to `atomic_planner` with `DIRECTIVE: MINIMAL-AUDIT PLAN REQUIRED`,
|
|
43
|
-
- require `atomic_executor` preflight
|
|
43
|
+
- require single-pass `atomic_executor` preflight ending in `PREFLIGHT: ALL CLEAR` (at most one return to the planner),
|
|
44
44
|
- execute Phase 0 only via `atomic_executor` before branching,
|
|
45
45
|
- run the reduced small-audit after implementation and QC.
|
|
46
46
|
|
|
@@ -6,7 +6,7 @@ description: 'Quota throttling and account-switching policy for multi-agent orch
|
|
|
6
6
|
# Quota Throttling and Account-Switching Policy
|
|
7
7
|
|
|
8
8
|
Policy for keeping long-running, multi-agent orchestration inside account usage limits without
|
|
9
|
-
losing work. Derived from about five days of continuous multi-agent orchestration (
|
|
9
|
+
losing work. Derived from about five days of continuous multi-agent orchestration (consumer-repository runs
|
|
10
10
|
`bugs-2026-09-11` and `bugs-2026-09-17`).
|
|
11
11
|
|
|
12
12
|
Every figure marked **MEASURED** was observed; figures marked **ESTIMATE** are extrapolations.
|
package/resources/claude-customizations/.claude/skills/remediation-handoff-atomic-planner/SKILL.md
CHANGED
|
@@ -5,7 +5,7 @@ description: 'Remediation handoff chain from orchestrator through atomic-planner
|
|
|
5
5
|
|
|
6
6
|
# Remediation Handoff to atomic-planner
|
|
7
7
|
|
|
8
|
-
Strict handoff chain for orchestrator-initiated remediation cycles. The chain enforces that an `atomic-planner`-authored plan is preflighted by `atomic-executor`, revised through
|
|
8
|
+
Strict handoff chain for orchestrator-initiated remediation cycles. The chain enforces that an `atomic-planner`-authored plan is preflighted by `atomic-executor`, revised at most once through the preflight sub-loop if needed, executed by `atomic-executor` task-by-task, and reaudited by `feature-review`. Workers are never invoked directly by the orchestrator.
|
|
9
9
|
|
|
10
10
|
## When to Use This Skill
|
|
11
11
|
|
|
@@ -14,7 +14,7 @@ Use this skill when:
|
|
|
14
14
|
- Audit findings require remediation (FAIL or material PARTIAL findings).
|
|
15
15
|
- Toolchain checks fail.
|
|
16
16
|
- Acceptance criteria are unmet.
|
|
17
|
-
- A
|
|
17
|
+
- A CI check fails after the pull request is open.
|
|
18
18
|
- Any new finding surfaces during execution of an active cycle (in which case begin a new cycle, do not extend the active one).
|
|
19
19
|
|
|
20
20
|
## Full Handoff Chain
|
|
@@ -30,7 +30,7 @@ orchestrator
|
|
|
30
30
|
PREFLIGHT: ALL CLEAR -> proceed to execution
|
|
31
31
|
PREFLIGHT: REVISIONS REQUIRED -> route back to atomic-planner
|
|
32
32
|
with a precise plan delta; planner revises in place and
|
|
33
|
-
orchestrator re-runs preflight (
|
|
33
|
+
orchestrator re-runs preflight once (at most one return)
|
|
34
34
|
-> atomic-executor executes the cleared plan task-by-task
|
|
35
35
|
(workers are invoked by atomic-executor only)
|
|
36
36
|
-> orchestrator delegates to feature-review
|
|
@@ -52,7 +52,7 @@ Trigger remediation when any of these are true:
|
|
|
52
52
|
- Audit artifacts contain FAIL or meaningful PARTIAL findings.
|
|
53
53
|
- Toolchain checks fail (format, lint, type-check, test, contract, or integration stages).
|
|
54
54
|
- Acceptance criteria are not met.
|
|
55
|
-
- A
|
|
55
|
+
- A CI check fails after the PR is open (workflow-file changes specifically must enter the loop and trigger the `modified-workflow-needs-green-run` rule defined in `.claude/skills/feature-review-workflow/SKILL.md`).
|
|
56
56
|
|
|
57
57
|
Remediation triggers only on blocking findings classified `autonomous`. Each blocking finding carries one remediability class (`autonomous`, `external_dependency`, `policy_hold`, `awaiting_ci`, or `human_decision_required`; `autonomous` when no class is stated). When no blocking finding is `autonomous`, the review verdict is `HALT_NON_REMEDIABLE` or `AWAITING_CI`: the orchestrator halts or waits, and no cycle, remediation plan, or `atomic-planner` handoff is created.
|
|
58
58
|
|
|
@@ -63,6 +63,11 @@ The orchestrator authors `remediation/<entry-ts>/remediation-inputs.md` with:
|
|
|
63
63
|
- Enumerated fix list with file paths, expected behavior, and verification commands.
|
|
64
64
|
- A "do not do" list (no scope creep, no policy weakening, no silent skips).
|
|
65
65
|
- A pointer to the audit artifacts that produced the findings.
|
|
66
|
+
- Exactly one mode line, `Remediation-Mode: proportionate` or `Remediation-Mode: design`. The cycle is proportionate when every `autonomous` finding can be fixed without changing a spec acceptance criterion, a public interface, or the item's file inventory beyond the files already in the branch diff plus their tests and mirrors; otherwise it is design. CI-failure findings are normally proportionate.
|
|
67
|
+
|
|
68
|
+
Proportionate cycle. One `atomic-planner` delegation writes a short plan; one `atomic-executor` delegation then runs single-pass preflight with in-place trivial fixes and executes the plan in the same run. The orchestrator records `preflight: {iterations: 1, final_status: "clear"}` on the cycle before `execution_status`. When that preflight finds a substantive defect, the executor stops with `BLOCKED at preflight (before [P0-T1])`, a plan delta, and no checked task, and the orchestrator converts the cycle to design mode by rewriting the mode line to `Remediation-Mode: design` before one planner revision.
|
|
69
|
+
|
|
70
|
+
Design cycle. The full chain above runs with the preflight sub-loop below, bounded by the at-most-one-return rule.
|
|
66
71
|
|
|
67
72
|
## Required Artifacts
|
|
68
73
|
|
|
@@ -96,25 +101,28 @@ A comprehensive or final sweep in a remediation cycle covers that cycle's own pl
|
|
|
96
101
|
- Phase 0 captures policy reads and baseline toolchain results per `policy-compliance-order` and `evidence-and-timestamp-conventions`.
|
|
97
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.
|
|
98
103
|
- Evidence paths resolve to `<FEATURE>/evidence/<kind>/` per the non-overridable evidence path clause.
|
|
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.
|
|
99
105
|
|
|
100
106
|
The plan must pass the `mcp__drm-copilot__validate_orchestration_artifacts` MCP tool with `artifact_type: "plan"` and `artifact_path: <plan-path>` before `atomic-executor` runs preflight against it.
|
|
101
107
|
|
|
102
108
|
## Preflight Sub-Loop
|
|
103
109
|
|
|
104
|
-
After the plan is authored, `atomic-executor` runs preflight under the directive `DIRECTIVE: PREFLIGHT VALIDATION ONLY
|
|
110
|
+
After the plan is authored, `atomic-executor` runs preflight under the directive `DIRECTIVE: PREFLIGHT VALIDATION ONLY`, which the orchestrator places in the delegation prompt and never in the plan file. Preflight is single-pass: trivial defects are fixed in place and recorded as `PREFLIGHT-FIX:` lines with a `preflight-fix-record:` path. The exact signal returned is either:
|
|
105
111
|
|
|
106
112
|
- `PREFLIGHT: ALL CLEAR` — the plan proceeds to execution.
|
|
107
|
-
- `PREFLIGHT: REVISIONS REQUIRED` — `atomic-executor` returns a precise plan delta. The orchestrator routes the
|
|
113
|
+
- `PREFLIGHT: REVISIONS REQUIRED` — `atomic-executor` returns a precise plan delta with one `PREFLIGHT-DEFECT:` line per substantive defect. The orchestrator routes the full defect list to `atomic-planner` for one revision. `atomic-planner` updates the same plan file in place (per the plan-path continuity contract in `atomic-plan-contract`). The orchestrator then re-runs preflight once.
|
|
114
|
+
|
|
115
|
+
At most one return. The sub-loop returns to `atomic-planner` at most once per cycle: when the second preflight still reports a substantive defect, the iteration ceiling below applies.
|
|
108
116
|
|
|
109
117
|
The orchestrator records the preflight outcome in `remediation_loop.cycles[current_cycle].preflight` with `iterations` (counter) and `final_status` (`clear|changes_requested|pending`).
|
|
110
118
|
|
|
111
119
|
For a well-scoped item where `preflight.iterations > 1`, record a process-defect investigation that identifies the incomplete planner internal-review dimension. Treat excess rounds as a process signal, not routine iteration.
|
|
112
120
|
|
|
113
|
-
The exhaustive-pass, defect-
|
|
121
|
+
The exhaustive-pass, defect-classification, in-place-fix, and fix-self-check rules that govern how `atomic-executor` conducts preflight are defined in the `## Preflight Validation (Planner ↔ Executor)` section of `.claude/skills/atomic-plan-contract/SKILL.md` and are not restated here.
|
|
114
122
|
|
|
115
123
|
Alongside `iterations` and `final_status`, the orchestrator also records in `remediation_loop.cycles[current_cycle].preflight` the convergence line `atomic-executor` returned on that round, which is one of `CONVERGENCE: NO FURTHER ROUNDS EXPECTED` or `CONVERGENCE: FURTHER ROUNDS LIKELY`. This convergence field extends the field set already recorded at `remediation_loop.cycles[current_cycle].preflight` rather than replacing it: `iterations` and `final_status` continue to be recorded exactly as stated above, and the convergence field is written in addition to them.
|
|
116
124
|
|
|
117
|
-
Iteration ceiling. When a cycle's `iterations` would exceed 2, the orchestrator records `final_status: "blocked_preflight_iteration_limit"`, halts the preflight sub-loop, and escalates to the caller
|
|
125
|
+
Iteration ceiling. When a cycle's `iterations` would exceed 2, the orchestrator records `final_status: "blocked_preflight_iteration_limit"`, halts the preflight sub-loop, and escalates to the caller. `blocked_preflight_iteration_limit` is a fourth `final_status` value extending the `clear|changes_requested|pending` enumeration stated above. Under the at-most-one-return rule the ceiling is reached after one planner revision: the first preflight and the confirming preflight are the two permitted iterations.
|
|
118
126
|
|
|
119
127
|
## Execution and Reaudit
|
|
120
128
|
|
|
@@ -63,6 +63,12 @@ Create or update a single research file at one of the two tracked research roots
|
|
|
63
63
|
- Propose a test strategy consistent with repository policy (unit tests for pure logic, integration seams).
|
|
64
64
|
- Do not write test code; describe the strategy only.
|
|
65
65
|
|
|
66
|
+
### 6. Pre-Mortem
|
|
67
|
+
|
|
68
|
+
- Feature-associated research (a research path under `docs/features/`) MUST carry a `## Pre-Mortem` section with one bullet beginning with each of the seven labels `Review checklists`, `Coverage`, `Mirror parity`, `File size`, `Test isolation`, `CI-only behavior`, and `Evidence`. Each bullet states how the next review or CI run could fail on that dimension and the mitigation the plan must carry; a label that does not apply is written as "not applicable" followed by the reason.
|
|
69
|
+
- One-off research under `docs/research/` is exempt.
|
|
70
|
+
- The researcher SubagentStop hook blocks feature research without a complete section. The `execution-environment` skill states the CI shape, contract tests, and isolation checks the section accounts for.
|
|
71
|
+
|
|
66
72
|
## Constraints
|
|
67
73
|
|
|
68
74
|
- Research only. Do not implement changes.
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
".claude/hooks/enforce-epic-merge-gate.ps1",
|
|
31
31
|
".claude/hooks/enforce-epic-merge-gate-authorization.ps1",
|
|
32
32
|
".claude/hooks/enforce-epic-merge-gate-resolution.ps1",
|
|
33
|
+
".claude/hooks/enforce-epic-merge-gate-command.ps1",
|
|
33
34
|
".claude/hooks/enforce-epic-wave-barrier.ps1",
|
|
34
35
|
".claude/hooks/enforce-epic-worktree-removal-gate.ps1",
|
|
35
36
|
".claude/hooks/enforce-epic-worktree-removal-gate-resolution.ps1",
|
|
@@ -40,25 +41,43 @@
|
|
|
40
41
|
".claude/hooks/enforce-orchestration-preimplementation-gate-epic-scope.ps1",
|
|
41
42
|
".claude/hooks/enforce-orchestration-preimplementation-gate-helpers.ps1",
|
|
42
43
|
".claude/hooks/enforce-orchestration-preimplementation-gate-modes.ps1",
|
|
44
|
+
".claude/hooks/enforce-orchestration-preimplementation-gate-targets.ps1",
|
|
43
45
|
".claude/hooks/enforce-parallel-abandon-gate.ps1",
|
|
44
46
|
".claude/hooks/enforce-parallel-cohort-barrier.ps1",
|
|
45
47
|
".claude/hooks/enforce-parallel-cohort-barrier-helpers.ps1",
|
|
46
48
|
".claude/hooks/enforce-parallel-drift-gate.ps1",
|
|
47
49
|
".claude/hooks/enforce-parallel-drift-gate-helpers.ps1",
|
|
48
50
|
".claude/hooks/enforce-parallel-worktree-removal-gate.ps1",
|
|
51
|
+
".claude/hooks/enforce-pr-author-command-allowlist.ps1",
|
|
52
|
+
".claude/hooks/enforce-pr-author-skill.artifact-root.ps1",
|
|
53
|
+
".claude/hooks/enforce-pr-author-skill.docs-only.ps1",
|
|
49
54
|
".claude/hooks/enforce-pr-author-skill.epic-base-branch.ps1",
|
|
50
55
|
".claude/hooks/enforce-pr-author-skill.ps1",
|
|
51
56
|
".claude/hooks/enforce-pr-author-skill-helpers.ps1",
|
|
52
57
|
".claude/hooks/enforce-prd-feature-before-planner-helpers.ps1",
|
|
53
58
|
".claude/hooks/enforce-prd-feature-before-planner.ps1",
|
|
54
59
|
".claude/hooks/enforce-promotion-mcp-only.ps1",
|
|
60
|
+
".claude/hooks/feature-folder-resolution.ps1",
|
|
61
|
+
".claude/hooks/feature-review-coverage-thresholds.ps1",
|
|
62
|
+
".claude/hooks/hook-command-heredoc.ps1",
|
|
55
63
|
".claude/hooks/hook-command-invocation.ps1",
|
|
64
|
+
".claude/hooks/hook-command-invocation-operands.ps1",
|
|
65
|
+
".claude/hooks/hook-command-payload.ps1",
|
|
66
|
+
".claude/hooks/hook-command-payload-powershell.ps1",
|
|
56
67
|
".claude/hooks/hook-command-scanner.ps1",
|
|
68
|
+
".claude/hooks/hook-dependency-guard.ps1",
|
|
69
|
+
".claude/hooks/hook-docs-only-diff.ps1",
|
|
57
70
|
".claude/hooks/persist-session-id.ps1",
|
|
71
|
+
".claude/hooks/premortem-section.ps1",
|
|
72
|
+
".claude/hooks/subagentstop-envelope.ps1",
|
|
58
73
|
".claude/hooks/validate-bash.ps1",
|
|
59
74
|
".claude/hooks/validate-discovery-artifact-gate.ps1",
|
|
60
75
|
".claude/hooks/validate-executor-output.ps1",
|
|
76
|
+
".claude/hooks/validate-feature-review-coverage-metrics.ps1",
|
|
77
|
+
".claude/hooks/validate-feature-review-coverage-rules.ps1",
|
|
61
78
|
".claude/hooks/validate-feature-review-coverage.ps1",
|
|
79
|
+
".claude/hooks/validate-orchestrator-output-resolution.ps1",
|
|
80
|
+
".claude/hooks/validate-orchestrator-output-routing.ps1",
|
|
62
81
|
".claude/hooks/validate-orchestrator-output.ps1",
|
|
63
82
|
".claude/hooks/validate-planner-output.ps1",
|
|
64
83
|
".claude/hooks/validate-prd-feature-output.ps1",
|
|
@@ -100,6 +119,7 @@
|
|
|
100
119
|
".claude/skills/epic-run/SKILL.md",
|
|
101
120
|
".claude/skills/evidence-and-timestamp-conventions/SKILL.md",
|
|
102
121
|
".claude/skills/execute-hard-lock/SKILL.md",
|
|
122
|
+
".claude/skills/execution-environment/SKILL.md",
|
|
103
123
|
".claude/skills/feature-promotion-lifecycle/SKILL.md",
|
|
104
124
|
".claude/skills/feature-review-workflow/SKILL.md",
|
|
105
125
|
".claude/skills/fill-feature-docs/SKILL.md",
|
|
@@ -145,6 +165,7 @@
|
|
|
145
165
|
".claude/lib/orchestrator-state/OrchestratorStateRoutingContract.psm1",
|
|
146
166
|
".claude/lib/orchestrator-state/OrchestratorStateIssueAdoption.psm1",
|
|
147
167
|
".claude/lib/orchestrator-state/OrchestratorStateUnconditional.psm1",
|
|
168
|
+
".claude/lib/orchestrator-state/OrchestratorStateEpicWaveBarrier.psm1",
|
|
148
169
|
".claude/lib/discovery-validation/DiscoveryValidation.psm1",
|
|
149
170
|
".claude/lib/codex-routing/CodexDeployment.psm1",
|
|
150
171
|
".claude/lib/codex-routing/CodexTopology.psm1",
|
|
@@ -163,6 +184,7 @@
|
|
|
163
184
|
".claude/lib/project-file-merge/ProjectFileMerge.psm1",
|
|
164
185
|
".claude/lib/project-file-merge/Resolve-MergeableConflict.ps1",
|
|
165
186
|
".claude/lib/ci-gate/Invoke-CiGateParser.ps1",
|
|
187
|
+
".claude/lib/ci-gate/Invoke-MergeConfirmationParser.ps1",
|
|
166
188
|
".claude/lib/parallel-drift/ParallelDriftHalt.psm1",
|
|
167
189
|
".claude/lib/parallel-drift/ParallelDrift.psm1",
|
|
168
190
|
".claude/lib/parallel-drift/Invoke-ParallelDriftDetection.ps1",
|
|
@@ -171,13 +193,18 @@
|
|
|
171
193
|
".claude/lib/bash/abandon-parallel-item.sh",
|
|
172
194
|
".claude/lib/bash/compute-cohorts.sh",
|
|
173
195
|
".claude/lib/bash/compute-concurrency-batches.sh",
|
|
196
|
+
".claude/lib/bash/mutate-parallel-run.sh",
|
|
174
197
|
".claude/lib/bash/parallel-cohorts.sh",
|
|
175
198
|
".claude/lib/bash/parallel-common.sh",
|
|
176
199
|
".claude/lib/bash/parallel-items-validate.sh",
|
|
177
200
|
".claude/lib/bash/parallel-lane-assertion.sh",
|
|
178
201
|
".claude/lib/bash/parallel-manifest-validate.sh",
|
|
202
|
+
".claude/lib/bash/parallel-mutation-cli.sh",
|
|
203
|
+
".claude/lib/bash/parallel-mutation-ops.sh",
|
|
204
|
+
".claude/lib/bash/parallel-mutation.sh",
|
|
179
205
|
".claude/lib/bash/parallel-yaml-emit.sh",
|
|
180
206
|
".claude/lib/bash/parallel-yaml-scan.sh",
|
|
207
|
+
".claude/lib/bash/remove-parallel-item.sh",
|
|
181
208
|
".claude/lib/bash/report-lane-assertion.sh",
|
|
182
209
|
".claude/lib/bash/validate-parallel-manifest.sh",
|
|
183
210
|
"config/orchestration-routing.json",
|
|
@@ -9,6 +9,7 @@ Repository-local Codex skills live under `.agents/skills/<skill-name>/SKILL.md`.
|
|
|
9
9
|
- `atomic-plan-contract`
|
|
10
10
|
- `acceptance-criteria-tracking`
|
|
11
11
|
- `evidence-and-timestamp-conventions`
|
|
12
|
+
- `execution-environment`
|
|
12
13
|
- `skill-canonical-location-audit`
|
|
13
14
|
|
|
14
15
|
- Integration
|
|
@@ -86,7 +86,7 @@ During feature review (feature-audit phase):
|
|
|
86
86
|
|
|
87
87
|
### When Orchestrators Enforce AC Tracking
|
|
88
88
|
|
|
89
|
-
Orchestrators do not directly check off AC items.
|
|
89
|
+
Orchestrators do not directly check off AC items. The one exception is a CI-dependent criterion, which the item's own orchestrator run checks off at S9 as described in `### CI-Dependent Criteria` above. For every other criterion, orchestrators instead:
|
|
90
90
|
|
|
91
91
|
1. Ensure delegated executors and reviewers reference this skill.
|
|
92
92
|
2. After executor or reviewer completion, verify that AC source files reflect delivered work (spot-check; do not re-execute verification).
|
package/resources/codex-and-agents-customizations/.agents/skills/architecture-boundaries/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: architecture-boundaries
|
|
3
|
-
description: Architecture boundary enforcement rules for
|
|
3
|
+
description: Architecture boundary enforcement rules for a host-neutral layered architecture.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Converted rule
|
|
@@ -16,7 +16,7 @@ Architecture boundary enforcement is a uniform gate across all tiers (T1–T4).
|
|
|
16
16
|
- **TypeScript:** `dependency-cruiser`. Configuration file pattern: `.dependency-cruiser.cjs`.
|
|
17
17
|
- **.NET (when the backend exists):** `NetArchTest.Rules`. Test project naming pattern: `*.ArchitectureTests`.
|
|
18
18
|
|
|
19
|
-
##
|
|
19
|
+
## Host-Neutral Architecture Rules (enforceable assertions)
|
|
20
20
|
|
|
21
21
|
Production code in this repository must satisfy each of the following assertions. Each assertion is enforced by `dependency-cruiser` (TypeScript) or `NetArchTest.Rules` (.NET) where applicable; legacy import utilities, when added, must satisfy the same assertions.
|
|
22
22
|
|
|
@@ -39,9 +39,9 @@ Production code in this repository must satisfy each of the following assertions
|
|
|
39
39
|
|
|
40
40
|
## Layer Boundary Assertions (.NET, applies once the backend exists)
|
|
41
41
|
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
- Adapter projects may depend on
|
|
42
|
+
- `<Product>.Domain` must have zero references to Outlook PIA, VSTO, or Office.js types.
|
|
43
|
+
- `<Product>.Application` may depend on `<Product>.Domain` only.
|
|
44
|
+
- Adapter projects may depend on `<Product>.Domain` and `<Product>.Application`; domain may not depend on adapters.
|
|
45
45
|
|
|
46
46
|
## Enforcement Outcome
|
|
47
47
|
|
|
@@ -13,6 +13,7 @@ Always apply:
|
|
|
13
13
|
- `policy-compliance-order`
|
|
14
14
|
- `atomic-plan-contract`
|
|
15
15
|
- `acceptance-criteria-tracking`
|
|
16
|
+
- `execution-environment`
|
|
16
17
|
|
|
17
18
|
## Role
|
|
18
19
|
|
|
@@ -33,17 +34,17 @@ Blocking is allowed only during preflight.
|
|
|
33
34
|
|
|
34
35
|
### Validation-Only Mode Contract
|
|
35
36
|
|
|
36
|
-
If the incoming handoff includes the exact directive `DIRECTIVE: PREFLIGHT VALIDATION ONLY
|
|
37
|
+
If the incoming handoff includes the exact directive `DIRECTIVE: PREFLIGHT VALIDATION ONLY` (the directive belongs in the delegation prompt, never in a plan file):
|
|
37
38
|
|
|
38
|
-
1. Perform preflight validation only
|
|
39
|
+
1. Perform preflight validation only, in one pass over the entire plan, under `### Single-Pass Preflight` in `atomic-plan-contract`.
|
|
39
40
|
2. Do not execute tasks, establish execution state, or run implementation commands.
|
|
40
|
-
3.
|
|
41
|
+
3. Fix trivial defects in place in task text only (never add, remove, or reorder tasks), record each fix in `<FEATURE>/evidence/other/preflight-fixes.<timestamp>.md`, and report it as a `PREFLIGHT-FIX:` line with a `preflight-fix-record:` path.
|
|
42
|
+
4. Return exactly one of:
|
|
41
43
|
- `PREFLIGHT: ALL CLEAR`
|
|
42
44
|
- `PREFLIGHT: REVISIONS REQUIRED`
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
7. If the planner-return handoff cannot be started or completed, stop and report blocked state; do not convert the failure into `PREFLIGHT: ALL CLEAR`.
|
|
45
|
+
5. If revisions are required, include a precise plan delta that `atomic-planner` can apply to the same plan file, with one `PREFLIGHT-DEFECT:` line per substantive defect and every substantive defect listed.
|
|
46
|
+
6. Return the result to the caller. A plan returns to the planner at most once; the orchestrator routes the defect list for one revision and runs one confirming preflight.
|
|
47
|
+
7. If the required handoff cannot be started or completed, stop and report blocked state; do not convert the failure into `PREFLIGHT: ALL CLEAR`.
|
|
47
48
|
|
|
48
49
|
## Execution Rules
|
|
49
50
|
|
|
@@ -55,6 +56,17 @@ For each task:
|
|
|
55
56
|
4. Check off the plan file on disk immediately after verification passes.
|
|
56
57
|
5. Check off satisfied acceptance criteria in the authoritative requirement source file per `acceptance-criteria-tracking`.
|
|
57
58
|
|
|
59
|
+
## Scratch Location
|
|
60
|
+
|
|
61
|
+
Concurrent child runs in one session share one session scratchpad, so every scratch file a run writes lives in a directory unique to the child.
|
|
62
|
+
|
|
63
|
+
- `SCRATCH` resolves to `<session scratchpad>/issue-<issue-num>/`, where `<issue-num>` is the plan's canonical issue number.
|
|
64
|
+
- Every scratch file, helper script, staged copy, and coverage report a plan names lives under `SCRATCH`. Subdirectories such as `SCRATCH/stage/` are permitted.
|
|
65
|
+
- Create `SCRATCH` before the first scratch write. Never write a scratch file to the scratchpad root or to a fixed shared name outside `SCRATCH`.
|
|
66
|
+
- When a plan written before this rule defines `SCRATCH` as the bare session scratchpad, treat that definition as `<session scratchpad>/issue-<issue-num>/`. This is a mechanical micro-action, not replanning.
|
|
67
|
+
- Plans and evidence artifacts record the literal token `SCRATCH`, never a host path.
|
|
68
|
+
- If two runs for the same issue can execute at once, the run-unique form `issue-<issue-num>-<yyyy-MM-ddTHH-mm>` replaces `issue-<issue-num>`.
|
|
69
|
+
|
|
58
70
|
## Non-Negotiable Constraints
|
|
59
71
|
|
|
60
72
|
- Do not invent new phases or tasks.
|