ToolUp.Facts.Core 0.22.0

Prefix Reserved
dotnet add package ToolUp.Facts.Core --version 0.22.0
                    
NuGet\Install-Package ToolUp.Facts.Core -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.Core" 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.Core" Version="0.22.0" />
                    
Directory.Packages.props
<PackageReference Include="ToolUp.Facts.Core" />
                    
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.Core --version 0.22.0
                    
#r "nuget: ToolUp.Facts.Core, 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.Core@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.Core&version=0.22.0
                    
Install as a Cake Addin
#tool nuget:?package=ToolUp.Facts.Core&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 (1)

Showing the top 1 NuGet packages that depend on ToolUp.Facts.Core:

Package Downloads
ToolUp.Facts.Server

ToolUp.Facts Server — IFactStore (append-only, bitemporal, content-addressed fact base with derived supersession + AsOf reconstruction) + BlobFactStore default. Depends on ToolUp.Platform.Server + ToolUp.Facts.Core. Phase 520.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.22.0 34 8/27/2026
0.21.0 45 8/26/2026
0.20.1 95 8/20/2026
0.20.0 98 8/19/2026