Skip to content

Development

Layout

  • src/Virtufin.Portfolio.DevKit/: the package.
  • tests/Virtufin.Portfolio.DevKit.Tests/: unit tests, including the names, the wire codecs, the snapshot diff and the envelope through BehaviorTestHost.
  • naming/virtufin.portfolio.yaml: the fragment this package owns, embedded and packed under naming/.
  • docs/: this MkDocs site.
  • versions.env: API_VERSION + LIBRARY_VERSION.
  • Virtufin.PortfolioDevKit.slnx: the solution.

Build & test

dotnet build Virtufin.PortfolioDevKit.slnx
dotnet test Virtufin.PortfolioDevKit.slnx

Check the fragment against everything it composes with:

uvx --from virtufin-naming virtufin-naming check naming/

Publishing

.github/workflows/nuget.yaml calls common's nuget-library-common.yaml: tests, pack and push to the Gitea NuGet feed when LIBRARY_VERSION is not yet published.

Versioning

Semantic versioning in versions.env, with every change recorded in CHANGELOG.md. Workers load the newest devkit at runtime, so a release must stay binary compatible; package validation runs against the previous release once one exists.

Conventions

  • Names come from the virtufin.portfolio fragment through the *Topics classes; never write a topic by hand.
  • A contract change is additive: new optional fields, new kinds or statuses only with a minor version and a changelog entry.
  • Nothing in this package acts on a venue.