FS.GG.Game.Harness 0.12.0

Prefix Reserved
dotnet add package FS.GG.Game.Harness --version 0.12.0
                    
NuGet\Install-Package FS.GG.Game.Harness -Version 0.12.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.12.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.12.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.12.0
                    
#r "nuget: FS.GG.Game.Harness, 0.12.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.12.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.12.0
                    
Install as a Cake Addin
#tool nuget:?package=FS.GG.Game.Harness&version=0.12.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.
  • Journey — the stronger boot-to-outcome route. A ProductionJourney starts from a product's real boot function, drives timestamp-free host events through production mapping/update/tick/effect seams, and emits an opaque, bounded JourneyReceipt. Its Origin.ProductionJourney provenance is distinct from Playable's simulation/component evidence. fsgg-playtest obtains the receipt only by executing an IProductionJourneyProof and never accepts a caller-authored receipt file. emit-evidence serializes the validated receipt as a versioned journeyReceipt map and generates a JUnit report from that same in-memory execution. The shared execution id and receipt-binding digest mean a caller-supplied stale or fabricated TRX cannot stand in for the journey run.
  • Workload — named expected-workload scripts and a product cost adapter. It keeps Release-only timing and bounded work observations separate from the deterministic Trace, and renders the generated scaffold's performance-evidence shape.
  • 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 and zero Scene. It drives only through Game.Core's device-free Command vocabulary and whole fixed steps, so identical input replays byte-identically. The optional Workload.run clock feeds only WorkloadObservation; it never contaminates trace frames.

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.12.0 117 7/26/2026
0.11.0 37 7/26/2026
0.10.1 46 7/26/2026
0.10.0 36 7/25/2026
0.9.1 43 7/25/2026
0.9.0 46 7/22/2026
0.8.0 77 7/21/2026
0.7.1 82 7/19/2026
0.7.0 83 7/19/2026
0.6.0 86 7/19/2026