ToolUp.Facts.Server 0.22.0

Prefix Reserved
dotnet add package ToolUp.Facts.Server --version 0.22.0
                    
NuGet\Install-Package ToolUp.Facts.Server -Version 0.22.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="ToolUp.Facts.Server" Version="0.22.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ToolUp.Facts.Server" Version="0.22.0" />
                    
Directory.Packages.props
<PackageReference Include="ToolUp.Facts.Server" />
                    
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 ToolUp.Facts.Server --version 0.22.0
                    
#r "nuget: ToolUp.Facts.Server, 0.22.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 ToolUp.Facts.Server@0.22.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=ToolUp.Facts.Server&version=0.22.0
                    
Install as a Cake Addin
#tool nuget:?package=ToolUp.Facts.Server&version=0.22.0
                    
Install as a Cake Tool

ToolUp.Facts

A bitemporal, content-addressed fact store for ToolUp.Platform — the typed memory tier that numeric answers quote verbatim. Companion package (Phase 520); a deployment that composes no fact store pays zero runtime cost.

What this is

A fact is a verified assertion about a (subject, metric, period): a value, with provenance, produced by deterministic computation, asserted by a human, or imported from a peer. The model is deliberately small and every guarantee is decidable:

  • Content-addressedFactId = hash(subject, metric, period, method, inputHashes). Re-asserting an identical tuple is idempotent (the store converges under replay); a changed input yields a new fact whose supersession edge is derived, never declared.
  • BitemporalPeriod is valid time, AsOf is transaction time. "The fact base as of May 3" is a first-class query. A forecast is simply a fact whose valid time extends beyond its transaction time — no flag; the timestamps carry it.
  • Append-only — a correction is a supersession (a new fact with a later AsOf), never a mutation.
  • Disclosure-classified at birth — every fact carries a Disclosure (Surfaceable / Internal / Restricted policy) from its first assertion. Egress enforcement is a later phase; the field lands here.
Concern File Types
Fact model + laws Shared/FactTypes.fs Fact, FactValue, MethodRef, Disclosure, TemporalExtent, Fact.compute / lineageKey / Freshness.derive
Store contract Server/IFactStore.fs IFactStore, FactDraft, FactQuery
Blob-backed default Server/BlobFactStore.fs BlobFactStore.create

Why a companion, not core SDK

A fact base is a grounding capability, not platform substrate. Nothing else in the SDK depends on IFactStore; analytics-only or CRUD-only deployments never need it. Same rationale as ToolUp.AI / ToolUp.RAG not living in ToolUp.Platform.

The companion is a consumer of substrate (IBlobStorage for storage, IEventStore for the GP 6 audit trail under the reserved _facts source module), not substrate itself.

How to use

open ToolUp.Facts

let store = BlobFactStore.create blobStorage eventStore

let! asserted =
    store.Assert(
        scopeId,
        { Subject = { Hierarchy = "geography"; Path = [ "uk" ] }
          Metric = MetricRef "revenue"
          Value = Scalar 1_250_000m
          Period = { From = q2Start; To = q2End; Label = Some "Q2-2026" }
          Method = Computed("sales.rollup", "1", paramHash)
          Evidence = { ResultRef = Some resultId; InputHashes = [ dataHash ]; TriggerRef = None }
          Confidence = None
          Disclosure = Surfaceable }
    )

// Reconstruct what we knew at a past transaction time (law L4):
let! asOfMay3 = store.Query(scopeId, FactQuery.forSubjectMetric subject metric |> FactQuery.asOf may3)

ServerConfig.FactStore (default NoFactStore) is the composition slot the introspection manifest reports; BlobFactStore.create composes the store directly today.

See also

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.22.0 32 8/27/2026
0.21.0 48 8/26/2026
0.20.1 87 8/20/2026
0.20.0 85 8/19/2026