Skip to content

feat(echo): add Echo:NuGet ecosystem with +echo.N ordering - #6061

Open
ofrinevo wants to merge 1 commit into
google:masterfrom
ofrinevo:echo-nuget-support
Open

ofrinevo wants to merge 1 commit into
google:masterfrom
ofrinevo:echo-nuget-support

Conversation

@ofrinevo

@ofrinevo ofrinevo commented Sep 23, 2026 •

Copy link
Copy Markdown

Overview

Extends the Echo ecosystem to support NuGet versioning semantics via the Echo:NuGet suffix, so Echo can publish advisories for its secured NuGet packages without affecting the upstream NuGet ecosystem. Follows the existing Echo:PyPI (#5286), Echo:Maven (#5555) and Echo:npm (#5589) handling.

Echo:NuGet advisories are already in the Echo feed. Without this change they fall through to the dpkg ordering, which mis-orders NuGet prereleases (e.g. 1.0.0-beta).

Details

  • Echo:NuGet delegates to the existing NuGet helper, which handles four-part versions (x.y.z.R) and case-insensitive prereleases.
  • NuGet follows SemVer precedence and ignores build metadata, so 12.0.3, 12.0.3+echo.1 and 12.0.3+echo.2 would otherwise compare equal. Like Echo:npm, the +echo.N build number is used as a tie-breaker: 12.0.3 < 12.0.3+echo.1 < 12.0.3+echo.2 < 12.0.4.
  • Python: the tie-break now applies when the delegate is SemverLike or NuGet.
  • Go: the npm-only wrapper (echoSemverEcosystem/echoSemverVersion) is generalized to echoBuildEcosystem/echoBuildVersion, which wraps either semverLikeEcosystem (npm) or nugetEcosystem (NuGet). npm behavior is unchanged.

Testing

  • Added Python (_ecosystems_test.py) and Go (echo_test.go) cases for Echo:NuGet: base NuGet ordering, +echo.N ordering, four-part versions, and +echo.N builds of prereleases.
  • python -m unittest discover osv/ecosystems/ "*_test.py" . (96 tests) and go test ./osv/ecosystem/... pass; yapf, pylint and golangci-lint are clean.

@google-cla

google-cla Bot commented Sep 23, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

Delegates Echo:NuGet to the NuGet ecosystem helper (four-part versions,
case-insensitive prereleases). NuGet follows SemVer precedence and
ignores build metadata, so like Echo:npm the +echo.N build number is
used as a tie-breaker; the Go npm wrapper is generalized to wrap either
helper.

Echo:NuGet advisories are already in the Echo feed and currently fall
through to the dpkg ordering.

Signed-off-by: ofrinevo <Ofri.nevo@echo.ai>
@ofrinevo
ofrinevo marked this pull request as ready for review September 23, 2026 13:02
@orizerah

Copy link
Copy Markdown
Contributor

Hey, @another-rex, we have added Nuget patched libraries and Ofri from our team is contributing the OSV support.

jess-lowe pushed a commit to ossf/osv-schema that referenced this pull request Sep 24, 2026
## Summary

Adds `Echo:NuGet` to the supported `:<ECOSYSTEM>` suffixes in the `Echo`
ecosystem definition documented in #615.

| Ecosystem | Packages | Version ordering |
|---|---|---|
| `Echo:NuGet` | NuGet | NuGet |

Echo now publishes secured builds of NuGet packages, which carry the
same `+echo.<N>` build suffix (e.g. `12.0.3+echo.1`). Version ordering
support in osv.dev: google/osv.dev#6061.

## Changes

Updates the `Echo` entry in `ecosystems.json` and regenerates the list
in `docs/schema.md` with `scripts/update-ecosystems-lists.py`.

Signed-off-by: ofrinevo <Ofri.nevo@echo.ai>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
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