my_bundle/contributing.mdtype: Guide

One prerequisite: the .NET SDK.

That's the whole list. OKF4net has zero third-party runtime dependencies by design — please keep it that way (test-only packages like xunit are fine).

##

Build and test

warnings are errors
$ dotnet build OKF4net.sln            # core library + okf CLI + test project
$ dotnet test OKF4net.sln             # unit + integration tests (incl. golden CLI comparisons)
$ dotnet publish src/OKF4net.Cli -c Release   # Native AOT, self-contained okf binary

All warnings are treated as errors, so a clean build is required.

GOLDEN FIXTURES — DO NOT REFORMAT

tests/fixtures/ contains byte-exact golden files: several tests compare generated output byte-for-byte against them. They are protected by .gitattributes and excluded from .editorconfig normalization. Never let an editor or formatter touch them — trailing whitespace, final newlines, and line endings are all significant.

##

Code style

enforced in CI
  • Formatting is enforced with dotnet format --verify-no-changes; run dotnet format OKF4net.sln before pushing.
  • Follow the existing conventions: file-scoped namespaces, XML doc comments on public API, nullable reference types enabled.
  • New source files need the SPDX header used across the codebase: // SPDX-License-Identifier: LGPL-3.0-or-later
##

Spec fidelity

cite your §

OKF4net implements the OKF v0.1 spec. Behavioural changes must stay conformant — cite the relevant section (§) in your PR description. Behaviour intentionally mirrors the OKF reference implementation; divergences need a documented reason.

##

Submitting changes

the suite is the contract
  1. Fork and create a topic branch from main.
  2. Add or update tests for any behaviour change — the test suite is the contract, including golden comparisons for CLI-visible output.
  3. Make sure dotnet test and dotnet format --verify-no-changes pass.
  4. Open a pull request with a clear description of the what and why.

Bug reports and feature requests go through GitHub issues; please use the provided templates. By contributing, you agree that your contributions are licensed under the project license, LGPL-3.0-or-later.

Ship knowledge as files.

The spec is short, the codebase is dependency-free, and the test suite tells you immediately whether you're right.