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).

##

Where to start

new here?

Pick an issue labelled good first issue — scoped, names the files, states how to verify. Bigger idea? See the roadmap below, or open a Discussion first.

##

Roadmap

now · next · later
  • Now: broader test coverage and tutorials, for library users and agent builders alike.
  • Next: more Agent Framework samples, performance baselines, a bundle viewer. The first Catalog sample has shipped.
  • Later: ecosystem integrations, tracking the spec past v0.2, and growing producers/OkfProducer — an early, repo-scanning bundle generator — past its first walking-skeleton slice.
##

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. Most were captured from this project's own former Rust implementation before its removal (see NOTICE); a couple of newer ones (v0.2, §10 Attested Computation) postdate that implementation and are hand-verified against the spec text instead — none of them currently re-check against Google's own OKF reference implementation, whose CLI has no equivalent commands to compare output against. 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.2 spec. Behavioural changes must stay conformant — cite the relevant section (§) in your PR description. The data model intentionally mirrors Google's OKF reference implementation's structure; 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.