Fuaran.UI.OpStream.Dag.Abstractions 0.15.0

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Fuaran.UI.OpStream.Dag.Abstractions --version 0.15.0
                    
NuGet\Install-Package Fuaran.UI.OpStream.Dag.Abstractions -Version 0.15.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="Fuaran.UI.OpStream.Dag.Abstractions" Version="0.15.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Fuaran.UI.OpStream.Dag.Abstractions" Version="0.15.0" />
                    
Directory.Packages.props
<PackageReference Include="Fuaran.UI.OpStream.Dag.Abstractions" />
                    
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 Fuaran.UI.OpStream.Dag.Abstractions --version 0.15.0
                    
#r "nuget: Fuaran.UI.OpStream.Dag.Abstractions, 0.15.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 Fuaran.UI.OpStream.Dag.Abstractions@0.15.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=Fuaran.UI.OpStream.Dag.Abstractions&version=0.15.0
                    
Install as a Cake Addin
#tool nuget:?package=Fuaran.UI.OpStream.Dag.Abstractions&version=0.15.0
                    
Install as a Cake Tool

Fuaran.UI.OpStream.Dag.Abstractions

The opt-in, rung-4 branching-DAG generalisation of the Fuaran op-stream.

The linear op-stream (Fuaran.UI.OpStream.Abstractions) chains applied TreeOps into a SHA-256 hash-chain — one parent per record, one head. This package generalises the temporal graph to a content-addressed Merkle-DAG: records carry Parents: string list (0..n parent hashes) instead of a single PreviousHash, so a history can branch and merge.

The spatial graph is untouched: the Node<'Msg> tree stays a tree and the 10-op TreeOp algebra is unchanged. Branch and merge are properties of how op-records link, never new TreeOp cases.

What ships here

Type / module Role
DagOpRecord<'Msg> Content-addressed, multi-parent op-record. Parents in author order (primary first); hash sorts them so merge identity is parent-order-independent. Merge nodes commit to an outcome hash (the canonical hash of the resulting tree), not the op-path.
DagOpRecord.ofLinear Embeds a linear OpRecord history as a single-parent DAG — the degenerate-equivalence path (same resulting tree, verifiable chain, no data migration).
DagTopology Pure reachable / isAncestor / lca over a getParents lookup. LcaResult is None / Unique / Ambiguous (the last = "needs 3-way merge — Phase 179").
DagVerify Integrity check: parent-linkage + content-address recompute. Tombstoned records keep their hash (payload pruned) and the chain still verifies.
IDagOpStreamSink<'Msg> Durable superset interface: content-addressed Add, atomic TryAdvanceHead CAS on the trunk head, topology queries, and tombstone pruning.

Posture

  • Opt-in. A consumer that references only Fuaran.UI / .Renderer / .Ops / the linear .OpStream.* packages pulls none of this binary or API. The merge engine (Fuaran.UI.OpStream.Dag.Merge) requires IDagOpStreamSink, so DAG behaviour is structurally unreachable from the linear path.
  • FGP 2 / FGP 6. Depends on FSharp.Core + Fuaran.UI + Fuaran.UI.Ops + the linear Fuaran.UI.OpStream.Abstractions only. No orchestration-private dependency; Apache-2.0-clean alongside the linear abstractions.

Apache-2.0 licensed — see the repo LICENSE.

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 (4)

Showing the top 4 NuGet packages that depend on Fuaran.UI.OpStream.Dag.Abstractions:

Package Downloads
Fuaran.UI.OpStream.Dag.Merge

M1 branch-merge engine for the Fuaran op-stream DAG (opt-in, rung-4). LCA over the DAG (unique-base), spine replay, fast-forward, and disjoint-(NodeId,facet) auto-merge with a deterministic NodeId-canonical-bytes tie-break (no wall-clock). Merge nodes commit to the canonical encoding of the resulting tree (outcome-hash), so two hosts agree iff they reach the same tree; overlapping changes refuse with the contended cells named. Requires IDagOpStreamSink, so DAG behaviour is structurally unreachable from the linear path. Apache-2.0 licensed.

Fuaran.UI.OpStream.Dag.Inspect

DAG-aware op-stream inspector substrate for the Fuaran op-stream DAG (opt-in, rung-4). A derived, read-only view over the branching DAG: a layered render model (branches, merge nodes, heads/leaves from the sink topology), audition-by-content-addressed-coordinate (replay a node to its snapshot, with a host preview hook), a precedence + retention/tombstone overlay, and arbitrary-coordinate snapshot-diff (the DAG generalisation of the linear Phase 57 adjacent-step diff). Consumes the DAG abstractions + merge engine + the linear Replay TreeDiff; emits no op-stream records or telemetry (FGP 5 — a consumer of the stream, not a writer). Requires the DAG packages, so it is structurally unreachable from the light path. Apache-2.0 licensed.

Fuaran.UI.OpStream.Dag.Sqlite

SQLite-backed IDagOpStreamSink — durable content-addressed branching-DAG sink. The trunk-head compare-and-swap is a conditional UPDATE … WHERE head = expected (atomic at the statement level), so concurrent advancers leave exactly one winner. Opt-in (rung-4) companion to Fuaran.UI.OpStream.Dag.Abstractions. Apache-2.0 licensed.

Fuaran.UI.OpStream.Dag.InMemory

In-memory IDagOpStreamSink — per-process content-addressed branching-DAG sink with a guarded-ref tryAdvanceHead CAS. Opt-in (rung-4) companion to Fuaran.UI.OpStream.Dag.Abstractions, for tests and ephemeral preview environments. Apache-2.0 licensed.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.39.0 27 8/27/2026
0.35.0 113 8/24/2026
0.32.0 121 8/23/2026
0.31.0 124 8/21/2026
0.30.0 122 8/21/2026
0.29.0 156 8/19/2026
0.28.0 132 8/18/2026
0.27.0 129 8/18/2026
0.26.0 133 8/18/2026
0.18.0 128 8/10/2026
0.15.0 122 8/9/2026
0.12.0 145 7/31/2026
0.11.0 141 7/30/2026
0.10.0 142 7/29/2026
0.6.0 136 7/27/2026
0.4.0 141 7/26/2026
0.3.0 150 7/24/2026