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 throughBehaviorTestHost.naming/virtufin.portfolio.yaml: the fragment this package owns, embedded and packed undernaming/.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.portfoliofragment through the*Topicsclasses; 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.