Skip to content

V0.10.0/dotnet nuget update - #40

Open
gimlichael wants to merge 22 commits into
mainfrom
v0.10.0/dotnet-nuget-update
Open

V0.10.0/dotnet nuget update#40
gimlichael wants to merge 22 commits into
mainfrom
v0.10.0/dotnet-nuget-update

Conversation

@gimlichael

Copy link
Copy Markdown
Member

This pull request introduces the new dotnet-nuget-update skill, a deterministic tool for auditing and updating NuGet dependencies in .NET repositories. It ensures every declared package version is accounted for before any update, supports both central and project-level package management, preserves compatibility markers, and offers both interactive and automated update modes. The update also adds comprehensive documentation, test coverage, and offline-testable scripts.

New skill: dotnet-nuget-update

  • Introduces the dotnet-nuget-update skill for complete NuGet dependency auditing and updating, supporting central and project-level versioning, TFM-band awareness, stable/prerelease intent inference, and two interactive modes (normal and yolo). [1] [2]
  • Bundles deterministic scripts for dependency graph enumeration, package version resolution, TFM matrix discovery, and minimal XML edits that preserve comments and structure.
  • Implements per-process memoization for NuGet feeds and supports deterministic offline testing via filesystem fixtures.
  • Enforces a complete-audit invariant and preserves XML comments as update notes, requiring explicit attention for rationale-marked updates.
  • Documents the skill in the README.md with catalog entry, installation instructions, and a detailed "Why dotnet-nuget-update?" section explaining its approach to dependency management. [1] [2] [3]

Release and documentation updates

  • Adds a new 0.10.0 release entry in CHANGELOG.md describing the new skill and its features.
  • Links the new release in the version history section.

aicia-bot and others added 3 commits September 7, 2026 23:00
Introduce complete NuGet dependency audit and update workflow with support for central package management and project-level versioning. Handles TFM-aware updates, stable/prerelease intent tracking, major version approval batching, and offline-testable scenarios. Includes bundled scripts for audit, comparison, and structured file edits.
Add dotnet-nuget-update to the Available Skills catalog table with full skill description, include the npx installation command in the setup section, and add a 'Why dotnet-nuget-update?' community health section explaining the need for complete dependency graph auditing, TFM-band awareness, and preservation of intentional pins and compatibility markers.
@gimlichael gimlichael self-assigned this Sep 7, 2026
@greptile-apps

greptile-apps Bot commented Sep 7, 2026

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

The PR appears safe to merge, with one non-blocking reporting defect in the new runner's dry-run summary.

Fix All in CodexFindings

  1. P2 Dry Runs Count As Applied
Fix with agent prompt
### Issue 1
skills/dotnet-nuget-update/scripts/Update-NuGetPackages.ps1:79
When `-DryRun` previews pending safe updates, this count includes each `dry-run` outcome in `appliedCount`, even though `Apply-PackageUpdates.ps1` does not write those changes. Callers using this field to distinguish a preview from a completed update therefore receive an inaccurate summary.

```suggestion
$successfulApplyCount = @($applyResults | Where-Object { $_.outcome -eq 'applied' }).Count
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Summary

  • Audits and applies safe package updates while preserving held notes, major updates, and unresolved rows.
  • Resolves deduplicated package IDs across independent feeds with bounded concurrency and deterministic merging.
  • Updates repository validation, documentation, tests, and the release catalog for the new skill.
  • Re-checking confirmed that all previous Greptile threads are resolved.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
    Repo[.NET repository] --> Audit[Dependency audit]
    Sources[NuGet sources] --> Resolve[Bounded parallel resolution]
    Resolve --> Audit
    Audit --> Plan[Safe update plan]
    Plan --> Apply[Structural XML apply]
    Audit --> Held[Notes, majors, unresolved]
    Apply --> Result[Update summary]
    Held --> Result
Loading

Reviews (9) · Last reviewed commit: "💬 update repository readme and release ..."

Comment thread skills/dotnet-nuget-update/scripts/Apply-PackageUpdates.ps1
Comment thread skills/dotnet-nuget-update/scripts/Apply-PackageUpdates.ps1 Outdated
Comment thread skills/dotnet-nuget-update/scripts/Get-DependencyAudit.ps1
Comment thread skills/dotnet-nuget-update/scripts/_common.ps1
Comment thread skills/dotnet-nuget-update/scripts/_common.ps1
Comment thread skills/dotnet-nuget-update/scripts/_common.ps1
Comment thread skills/dotnet-nuget-update/scripts/_common.ps1
Comment thread skills/dotnet-nuget-update/scripts/_common.ps1 Outdated
Comment thread skills/dotnet-nuget-update/scripts/Get-TargetFrameworks.ps1
Enhance file encoding detection to support UTF-32 and UTF-16 variants. Improve line-ending preservation with better handling of mixed styles. Refactor XML and NuGet version parsing with more sophisticated patterns and error handling. Strengthen cross-line tag parsing and version validation for edge cases in package updates and audit workflows.
Comment thread skills/dotnet-nuget-update/scripts/Get-DependencyAudit.ps1
Comment thread skills/dotnet-nuget-update/scripts/Get-TargetFrameworks.ps1 Outdated
Comment thread skills/dotnet-nuget-update/scripts/Apply-PackageUpdates.ps1 Outdated
Improve central vs project package declaration routing to correctly handle updates targeting project files. Enhance conflict reporting to enumerate all conflicting sources when unspecified. Fix property resolution precedence to preserve first-matched declarations instead of overwriting with later files.
Comment thread skills/dotnet-nuget-update/scripts/Apply-PackageUpdates.ps1
Eval Worker and others added 13 commits September 8, 2026 00:17
The Get-TargetFrameworks.ps1 static scanner resolves property declarations through Directory.Build.props/targets and recursive imports, but it does not evaluate MSBuild conditions or SDK-supplied properties. The documentation now clarifies this scope so users understand when to verify results with project-specific MSBuild evaluation.
Restructured the property-map walker to handle import chains and property-token resolution recursively. The scanner now traverses Directory.Build.props and .targets files in the correct order, resolves property references within each scope, and preserves unresolved tokens for later discovery. This fixes edge cases where projects in different directories share property names or where scoped .props files define properties that should not leak across project boundaries.
Added eval case #8 to verify that the framework scanner correctly handles projects in different directories with their own Directory.Build.props scope. The test fixture includes three projects with scoped properties to ensure the scanner does not borrow framework versions from sibling projects or resolve properties from unimported files. This eval validates the scoped-property fix in Get-TargetFrameworks.
Added test-target-frameworks.ps1 as a standalone validation harness for Get-TargetFrameworks.ps1. The script builds complex fixture hierarchies with nested Directory.Build.props, property tokens, and conditional framework declarations, then verifies the scanner correctly resolves each project's target frameworks. This enables rapid validation during development without requiring full skill evals.
The commit grouping guidance in SKILL.md is now sufficiently detailed to warrant a dedicated reference document. This extracts the 'Repo-aligned grouping example' and 'Commit body guidance' sections into references/grouping-examples.md for clarity and easier maintenance, while improving the overall skill structure without changing its core workflow or validation logic.
Adds three new eval cases to git-visual-commits testing: untracked file discovery (eval 26), path handling with spaces and untracked directories (eval 27), and explicit scope narrowing excluding in-scope changes (eval 28). These tests validate the skill handles file inventory, mixed staged/unstaged/untracked changes, and scope boundaries correctly.
Finalize 0.10.0 release notes with the release date and add description of git-visual-commits refactoring and enhancements that complete this release.
Update repository agent guidelines (AGENTS.md) and installation documentation (README.md) to explicitly specify concurrent suite dispatch for agent-driven validation, bounded concurrency of at least two workers, per-suite exit codes, and the prohibition on sequential aggregate runs. Clarify that agents must use the suite matrix from GitHub Actions workflows as the source of truth, include user-instruction overrides for testing suspension, and report limitations instead of falling back to sequential execution.
Update test assertions in validate-skill-templates.ps1 to match the refined quality-gate guidance in git-visual-commits SKILL.md. The assertion now verifies that agents explicitly refresh the Step 1 inventory and explain each path's rationale, audience, and lifecycle before classification rather than only checking git status.
Comment thread scripts/validate-skill-templates.ps1 Outdated
Enable concurrent NuGet package version lookups with bounded parallelism (default concurrency: 8, timeout: 15s). Audit deduplicates package IDs and reuses responses for repeated declarations. Adds Update-NuGetPackages.ps1 orchestration script to keep audit, in-memory plan construction, and structural apply in one process for attended and yolo modes. Updates SKILL.md documentation and related validation/test infrastructure. All independent lookups now batch through bounded-parallel feed resolution rather than sequential requests.
Add comprehensive validation coverage for git-visual-commits grouping-examples.md reference file, testing both current and historical reference layouts. Validates six test cases covering: current linked reference, historical inline examples, historical linked reference with broken link, missing current reference, missing historical content, and edge cases. Ensures repository tooling validates skill content integrity across reference-structure variations.
Add test coverage for Codex eval runner path resolution and validation. Tests verify that runner-owned and orchestrator-owned delegation paths are correctly resolved and validated. Ensures eval runner infrastructure properly handles path contracts and runner configuration validation. Updates runner-common.ps1 shared infrastructure to support enhanced path validation workflow.
Update README.md to reflect recent repository enhancements and clarifications for eval infrastructure, skill validation, and release workflows. Ensures documentation matches current repository capabilities and provides accurate guidance for contributors and maintainers.
}

$applyResults = @($applyResult.results)
$successfulApplyCount = @($applyResults | Where-Object { $_.outcome -in @('applied', 'dry-run') }).Count

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Dry Runs Count As Applied

When -DryRun previews pending safe updates, this count includes each dry-run outcome in appliedCount, even though Apply-PackageUpdates.ps1 does not write those changes. Callers using this field to distinguish a preview from a completed update therefore receive an inaccurate summary.

Suggested change
$successfulApplyCount = @($applyResults | Where-Object { $_.outcome -in @('applied', 'dry-run') }).Count
$successfulApplyCount = @($applyResults | Where-Object { $_.outcome -eq 'applied' }).Count
Prompt To Fix With AI
This is a comment left during a code review.
Path: skills/dotnet-nuget-update/scripts/Update-NuGetPackages.ps1
Line: 79

Comment:
**Dry Runs Count As Applied**

When `-DryRun` previews pending safe updates, this count includes each `dry-run` outcome in `appliedCount`, even though `Apply-PackageUpdates.ps1` does not write those changes. Callers using this field to distinguish a preview from a completed update therefore receive an inaccurate summary.

```suggestion
$successfulApplyCount = @($applyResults | Where-Object { $_.outcome -eq 'applied' }).Count
```

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Fix in Codex

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants