FS.GG.Game.Harness 0.9.0

Prefix Reserved
dotnet add package FS.GG.Game.Harness --version 0.9.0
                    
NuGet\Install-Package FS.GG.Game.Harness -Version 0.9.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FS.GG.Game.Harness" Version="0.9.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FS.GG.Game.Harness" Version="0.9.0" />
                    
Directory.Packages.props
<PackageReference Include="FS.GG.Game.Harness" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FS.GG.Game.Harness --version 0.9.0
                    
#r "nuget: FS.GG.Game.Harness, 0.9.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package FS.GG.Game.Harness@0.9.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=FS.GG.Game.Harness&version=0.9.0
                    
Install as a Cake Addin
#tool nuget:?package=FS.GG.Game.Harness&version=0.9.0
                    
Install as a Cake Tool

FS.GG.Game.Harness

Deterministic, headless gameplay test harness on FS.GG.Game.Core. Drives a game's world through the standard Command input frontier, folds whole fixed steps, and fingerprints the world trace as a value — so a replay is a comparison, not a tolerance check.

Depends on nothing but FS.GG.Game.Core and the BCL — no render/input stack, no keymap type, no I/O (WI-6, Game#425). Everything below lives in the FS.GG.Game.Harness namespace.

The vocabulary

  • Trace — the provenance-carrying comparison surface. A Trace<'f> is the world's evolution fingerprinted as a value, tagged with its Origin, so two runs are compared as data rather than re-simulated and eyeballed.
  • Playable — the driven-game contract (Playable<'world,'key>) plus Bot<'view>, the in-process policy that turns a view of the world into commands. This is what a game implements to be driven by the harness.
  • Driver — the drivers that produce a Run<'f>: scripted raw-key → keymap → Command input folded over whole fixed steps, and an in-process bot policy driving the same Command frontier.
  • Matrix — the multi-seed, bot-vs-bot match matrix. Seat, MatchSetup<'world,'view> and Match<'view> set up a seeded field of matches so a policy is exercised across many seeds, not one.
  • Synthetic — the typed synthetic-state escape hatch: a labeled fallback that keeps its own evidence self-identifying, so a synthetic trace can never be mistaken for a real driven one.

Guarantees

Headlessly testable — zero Skia, zero Scene, no wall-clock. It drives only through Game.Core's device-free Command vocabulary and advances only by whole fixed steps, so identical input replays byte-identically across runs and the trace fingerprint is a stable value to diff against.

House style: .fsi is the sole public surface; net10.0; -preview channel. See FS-GG/FS.GG.Game and ADR-0022.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.9.0 0 7/22/2026
0.8.0 43 7/21/2026
0.7.1 57 7/19/2026
0.7.0 57 7/19/2026
0.6.0 59 7/19/2026