(chore): upgrade claude - #575
Merged
Merged
Conversation
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Aug 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
chore(claude): sync
.clauderuntime — Python-free enforcement hooks, TaskMaster blast-radius map, Mermaid gateSummary
validate-orchestrator-output.ps1,enforce-discovery-artifact-gate.ps1, andvalidate-discovery-artifact-gate.ps1previously shelled out topython -m scripts.dev_tools.…. TaskMaster has noscripts/dev_toolstree, so those calls could never succeed here. Validation now runs in-process through 15 new PowerShell modules under.claude/lib/.config/blast-radius.jsonis retargeted to this repository. The module map is replaced with TaskMaster's 20 actual projects (QuickFiler,ToDoModel,UtilitiesCS,TaskVisualization, … plus each.Testsibling) in place of the reference repo's four location buckets, and a newmandate_readsexclusion list stops policy-file citations from being counted as write contention.Write|Editmatcher: one hook (enforce-mermaid-validation.ps1, 390 lines), four.claude/lib/mermaid/modules, an authoring skill with nine per-type references, and.claude/rules/mermaid.md.max_concurrencywidens from1..8to1..32, manifest invariant M8 (expected_conflict_components) is added, andenforce-epic-merge-gate.ps1gains a third allow-branch for per-item parallel merges.>= 75%branch-coverage gate no longer applies to PowerShell (Pester) or bash (kcov), which measure no branch coverage. Line coverage and the no-regression rule are unchanged, and no file leaves the coverage denominator..claude/rules/plan-acceptance-gates.md) that reject atomic-plan acceptance conditions which cannot fail.1.0.0.25→1.0.0.27(TaskMaster/TaskMaster.csproj).Why
The context bundle carries no PR Intent fields and no feature-doc excerpts, so the motivation below is read from the diff itself rather than from an authored intent record.
This is a push-down sync of the
.clauderuntime from the reference repository into TaskMaster. Two of the incoming changes fix conditions that were structurally broken in this repository specifically:.claude/**payload ships to destinations with no guaranteed Python, Poetry, orscripts/dev_tools. TaskMaster is exactly such a destination —scripts/dev_toolsdoes not exist here — so every hook path that invokedpython -m scripts.dev_tools.…either failed obscurely or blocked the operation it gated. The replacement modules are destination-runtime PowerShell ports measured row by row against the Python reference's parity inventory.config/blast-radius.jsonpreviously carried the reference repo's module map (claude-runtime,config,docs,tests). Buckets keyed on where a file lives rather than on which subsystem owns it match nearly every work item, so a level that always fires suppresses concurrency while carrying no information. The map is now keyed on TaskMaster's real project boundaries.The coverage-policy change removes a threshold that could not be evaluated: Pester reports command (instruction) and line coverage only, so a
>= 75%branch gate on PowerShell had no measurable input. The vendored prose is explicit that this is a capability limit on an unevaluable threshold, not a licence to exclude files from measurement.What Changed
Portable validation modules (new, 15 files)
OrchestratorStateCheckpointValue,OrchestratorStateCompletionChecks,OrchestratorStateReceipts,OrchestratorStateModelReceipts,OrchestratorStateRoutingContract,OrchestratorStateRoutingMatrix,OrchestratorStateUnconditional,OrchestratorStateCodexModelReceipts,OrchestratorStateCodexTopologyReceiptsDiscoveryValidation(schema validation viaTest-Json -SchemaFile)CodexDeployment,CodexTopologyBlastRadiusNormalizationMermaidGrammar,MermaidLineScanner,MermaidMarkdownFences,MermaidValidationOrchestratorState.psm1andOrchestratorStateCompletion.psm1were modified to compose the new siblings; the split exists so no module exceeds the repository's 500-line file cap.Hooks
enforce-mermaid-validation.ps1— newPreToolUsegate onWrite|Edit, wired in.claude/settings.json.validate-orchestrator-output.ps1— default invoker names no interpreter and starts no subprocess. AddsTest-OrchestratorCheckpointStructure, a type-scoped check (exists / parses / object root) forepic-orchestrator-stateandparallel-orchestrator-state, where the Python reference exits 2 under this hook's flag pair and runs no checks at all. The standard-checkpoint required-key block and the model-routing gate are deliberately not applied to those types.enforce-epic-merge-gate.ps1— third allow-branch: agh pr merge --mergeis authorized from the parallel checkpoint whenroute_id == "parallel", the command's explicit PR number matches anitems[]entry, and that item'smerge_status == "ci_green". The PR-number parser is broadened additively to acceptgh pr merge --merge 410(flag before number) while preserving the originalgh pr merge 410capture verbatim. Every other case still fails closed withEPIC_MERGE_GATE_BLOCKED.enforce-discovery-artifact-gate.ps1,validate-discovery-artifact-gate.ps1—Invoke-DiscoveryValidatorExekeeps its name,-ValidatorArgs <string[]>signature, and@{ ExitCode; Output }return shape so existing mocks bind; only the body changes. Both now require PowerShell 7.4+.Rules and policy
.claude/rules/mermaid.md,.claude/rules/plan-acceptance-gates.md.quality-tiers.md,general-unit-test.md,powershell.md— branch-coverage exemption for PowerShell and bash.parallel-orchestration.md— M8, the1..32bound with its constraint analysis, the blast-radius contention doctrine, and the parallel merge-gate branch.typescript.md— ESLint stack, architecture-boundary pointer, property/mutation/golden-test obligations, determinism rules, and coverage aligned to the uniform85/75tier rule.csharp.md— toolchain prose rewritten (see Backward Compatibility).Skills and agents
mermaid-diagramskill plus nine per-type reference files (flowchart,sequence,class,state,er,c4,gantt,pie,other-types).atomic-plan-contractgains a mandatory wrap-tolerant assertion-authoring section;evidence-and-timestamp-conventionsgains the optionalExpectedExitCodefield with exact-spelling, first-wins, and per-file semantics;feature-promotion-lifecyclegains check 4b (the promoted record must survivenew_active_feature_folder);feature-review-workflow,powershell-qa-gate, andagents/feature-review.mdcarry the branch-coverage exemption;parallel-plan,parallel-orchestrate,parallel-add,parallel-remove, andagents/parallel-*.mdcarry the per-edge barrier and bounded preparation waves;agents/typescript-engineer.mdpinsmodel: sonnet..claude/lib/bash/parallel-manifest-validate.shimplements M8 and raisesPM_MAX_CONCURRENCYto 32.Not changed
No production C# source, no test project, no CI workflow, and no
.github/**file is touched. The only non-.claudechanges areconfig/blast-radius.jsonand theApplicationVersionbump.Architecture / How It Fits Together
Two contracts are load-bearing across the whole set:
ExitCode = 0with an emptyOutput. The callers deny on a non-zero exit code or on non-empty output, so any success chatter inside a validator would deny a passing validation.config/blast-radius.jsonfeeds.claude/lib/blast-radius/:mandate_readsentries are stripped from the harvest byderive_blast_radiusand from the plan-side extraction byvalidate_blast_radius, so both stay self-consistent against a radius derived from the same plan. The key is optional and fail-closed — omitting it excludes nothing and reproduces prior behaviour exactly.Verification
Completed
1dab2523)gh pr checks 575dotnet tool run csharpier check .[Parser]::ParseFileover all.claude/lib/**/*.psm1and.claude/hooks/*.ps1Import-ModuleonOrchestratorStateCompletion,DiscoveryValidation,CodexTopology,CodexDeployment,BlastRadiusTest-MermaidDiagramon a balanced and an unbalancedflowchart TDValid / flowchartandInvalid / 1 findingConvertFrom-Jsononconfig/blast-radius.jsonmandate_reads, 3shared_surfaces$PSVersionTable.PSVersionNot verified in this PR
.psm1modules. TaskMaster carries Pester tests only undertests/scripts/vscode/, and no CI job runs Pester at all. The parity test suites live in the upstream reference repository; the modules land here untested. The checks above establish that they parse, import, and behave correctly on a smoke sample — not that they are at parity.PreToolUseinvocation.ExpectedExitCodeevidence field or the G1–G6 plan gates (the latter's enforcement lives inscripts/dev_tools/, which this repository does not have).Recommended before merge
Backward Compatibility / Migration Notes
Test-Json -SchemaFileDraft 2020-12). The local environment is 7.6.5; any consumer on 7.0–7.3 loses those gates.Invoke-DiscoveryValidatorExekeeps its name, parameter, and return shape;Get-EpicMergeGateCommandPrNumberpreserves its original regex as the first branch. Existing mocks andShould -Invokeassertions continue to bind.max_concurrencywidening is one-directional. A manifest valid under1..8stays valid under1..32. The epic surface is untouched:max_parallel_featuresremains1..8.expected_conflict_componentsproduces a byte-identical error list to before. When present, the value must be a YAML block sequence — the bash subset parser rejects flow collections such asmembers: [101, 102]..claude/rules/csharp.mdand.claude/skills/csharp-qa-gate/SKILL.mdwere overwritten by the generic upstream text, namely (a) the direct references to.github/workflows/_build-analyzers.ymland_build-nullable.yml, and (b) the requirement to capture an MSBuild file log and record zero occurrences ofSkipping target "CoreCompile". The substantive/t:Rebuildand "do not pass/p:Nullable=enable" guidance survives in both files and inCLAUDE.md, but the CoreCompile skip-count evidence obligation is gone. Restoring it is a follow-up.ApplicationVersion1.0.0.25 → 1.0.0.27 affects the VSTO publish manifest, not the assembly contract.Risks and Mitigations
Write/Editmermaid gate blocks all file writesWriteandEdit..claude/settings.jsonhook entry.scripts/dev_tools), so a divergent port is still strictly better than a hook that cannot run.#472,#475,#487,#489, and#491as provenance. In TaskMaster those numbers are five open, unrelated QuickFiler/ItemViewer bugs. A reader following them lands on the wrong ticket.parallel-orchestration.mdstill describes the reference repo's seven subsystem modules (mcp-server,benchmarks,poshqc,powershell-dev-tools,codex-runtime,config,schemas); the shippedconfig/blast-radius.jsondeclares 20 TaskMaster projects. The prose does not describe the config.mandate_readsover-excludesartifacts/**is excluded as a mandate read while the same rule file statesartifacts/is not a known top-level segment for a subtree claim.detect_escaped_pathscatches an actual write against observed diff evidence rather than plan prose.typescript.md.dependency-cruiser.cjs,run-jest.cjs,package.json, andquality-tiers.yml— none of which exist in TaskMaster (architecture-boundaries.mddoes exist).parallel-planstill names a Python diagnosticpoetry run python -m scripts.dev_tools.parallel_lane_assertion, which cannot run here.Rollback: the change is one commit (
1dab2523) touching only.claude/**,config/blast-radius.json, and one.csprojline.git revert 1dab2523restores prior behaviour with no build or data implications.Review Guide
64 files, +9,191 / −441. Roughly 8,700 of the added lines are new PowerShell modules and skill reference documents; the behavioural surface is much smaller than the line count suggests.
Suggested order:
.claude/settings.json(5 lines) — the only file that changes what actually executes. Confirm the mermaid hook registration and the skill permission.config/blast-radius.json(72 lines) — the sole non-.claudebehavioural change. Confirm the 20 project buckets match this repository's layout..claude/hooks/enforce-epic-merge-gate.ps1(+109/−5) — security-relevant: it authorizesgh pr merge. Focus onTest-ParallelCheckpointAllowsMergeand the broadened PR-number regex; verify every path still fails closed..claude/hooks/validate-orchestrator-output.ps1(+117/−46) — the interpreter removal and the type-scoped structural check..claude/hooks/enforce-mermaid-validation.ps1(390 lines, new) — read with.claude/lib/mermaid/MermaidValidation.psm1. Highest blast radius if wrong.quality-tiers.md,general-unit-test.md,powershell.md(the coverage-policy change, roughly 10 lines total), thencsharp.md(the overwrite noted above), thenparallel-orchestration.md..psm1modules, the 10 mermaid skill and reference documents, and the remaining skill prose. Largest diffs, lowest per-line risk; each module carries a header comment stating its parity scope.Low-signal by volume:
.claude/skills/mermaid-diagram/references/*.md(9 files, roughly 530 lines) are pure syntax reference..claude/lib/orchestrator-state/*.psm1(9 new files, roughly 3,000 lines) are mechanical row-by-row ports.Follow-ups
.claude/skills/csharp-qa-gate/SKILL.md, and the CI workflow filename references in.claude/rules/csharp.md, that this sync overwrote.#472,#475,#487,#489,#491) in the vendored rule and module prose so they cannot be mistaken for TaskMaster issues.parallel-orchestration.mdmodule-map narrative with the shippedconfig/blast-radius.json..claude/lib/**so ported modules are verified in this repository rather than only upstream, or record an explicit exemption.scripts/dev_tools/parallel_lane_assertioninvocation inparallel-plan, and theplan_gate_discriminationenforcement path referenced by.claude/rules/plan-acceptance-gates.md.GitHub Auto-close