Fuaran.UI.Telemetry.Drift
0.39.0
Prefix Reserved
dotnet add package Fuaran.UI.Telemetry.Drift --version 0.39.0
NuGet\Install-Package Fuaran.UI.Telemetry.Drift -Version 0.39.0
<PackageReference Include="Fuaran.UI.Telemetry.Drift" Version="0.39.0" />
<PackageVersion Include="Fuaran.UI.Telemetry.Drift" Version="0.39.0" />
<PackageReference Include="Fuaran.UI.Telemetry.Drift" />
paket add Fuaran.UI.Telemetry.Drift --version 0.39.0
#r "nuget: Fuaran.UI.Telemetry.Drift, 0.39.0"
#:package Fuaran.UI.Telemetry.Drift@0.39.0
#addin nuget:?package=Fuaran.UI.Telemetry.Drift&version=0.39.0
#tool nuget:?package=Fuaran.UI.Telemetry.Drift&version=0.39.0
Fuaran.UI.Telemetry.Drift
Drift detector for Fuaran.UI.Telemetry.Abstractions OpApplyTelemetry records.
Computes per-OpKind aggregate metrics (success rate, p50/p95 latency, top decoder-rejection reasons, top NodeNotFound NodeIds) and flags week-on-week success-rate regressions whose drop exceeds an operator-tunable threshold (default 10pp).
Two op-apply surfaces:
Fuaran.UI.Telemetry.Drift.Aggregates.compute— group records byOpKind, compute the per-kind aggregate.Fuaran.UI.Telemetry.Drift.Detect.run— given a baseline window and a current window, emit oneDriftFindingperOpKind(Regression/NoRegression/InsufficientData).
Defaults live in Fuaran.UI.Telemetry.Drift.Defaults; operators override per-deployment by passing a configured DriftThresholds record to Detect.run.
Style drift (StyleDrift, Phase 151)
The resolved-style twin of the op-apply detector: it catches visual regressions the way Detect.run catches behavioural ones. StyleDrift.detect takes a baseline and a current window of StyleObservation (the values Fuaran.UI.StyleObserver's IStyleObserver.Subscribe already emits) and returns a StyleDriftReport:
Introduced—(NodeId, flag-kind)violations present in the current window and absent in the baseline (a render that added aContrastBelowAA/UsageBudgetExceeded/ … flag). This is the regression set.Cleared— violations present in the baseline and gone in the current window (a fix).WeightedSeverity— the introduced violations summed by the violated invariant'sInvariant.Weight(Phase 145); manifest-free flags weight at the default1.0.StyleDrift.regressionDetected report— a CI-gate predicate (trueiff at least one violation was introduced).StyleDrift.formatReport report— a one-line summary in the manifest's own vocabulary (introduced 2 style violation(s) across 2 node(s) (… worst: UsageBudgetExceeded brand (budget 10.0%, observed 22.0%) on n1)).
This is the Chromatic / Percy / Applitools visual-regression idea made semantic and deterministic: the diff is a set comparison keyed on (NodeId, StyleFlag.kind), not screenshot pixels — reproducible, cheap, CI-gateable, and reported in declared-invariant terms rather than "these pixels changed". It does not introduce a new sink: the observations are the ones the observer already emits (FGP 5 — reuse the existing emission path).
Console entry point — dotnet run --project src/Fuaran.UI.Telemetry.Drift — prints a wiring guide and a synthetic 100-record demonstration. Cron-friendly scheduling lives in the host's deployment toolchain (each host wires it against its own observability backend).
Apache-2.0 licensed — see the repo LICENSE.
| Product | Versions 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. |
-
net10.0
- Fable.Core (>= 5.0.0)
- FSharp.Core (>= 10.1.300)
- Fuaran.Core.Column (>= 0.11.0)
- Fuaran.Core.DataFrame (>= 0.11.0)
- Fuaran.Core.Tree (>= 0.11.0)
- Fuaran.Core.Validator (>= 0.11.0)
- Fuaran.Core.Wire (>= 0.11.0)
- Fuaran.UI.StyleObserver.Abstractions (>= 0.39.0)
- Fuaran.UI.Telemetry.Abstractions (>= 0.39.0)
- Fuaran.UI.ThemeManifest (>= 0.39.0)
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.39.0 | 28 | 8/27/2026 |
| 0.35.0 | 78 | 8/24/2026 |
| 0.32.0 | 74 | 8/23/2026 |
| 0.31.0 | 85 | 8/21/2026 |
| 0.30.0 | 91 | 8/21/2026 |
| 0.29.0 | 84 | 8/19/2026 |
| 0.28.0 | 89 | 8/18/2026 |
| 0.27.0 | 92 | 8/18/2026 |
| 0.26.0 | 84 | 8/18/2026 |
| 0.18.0 | 96 | 8/10/2026 |
| 0.15.0 | 88 | 8/9/2026 |
| 0.12.0 | 105 | 7/31/2026 |
| 0.11.0 | 98 | 7/30/2026 |
| 0.10.0 | 99 | 7/29/2026 |
| 0.6.0 | 99 | 7/27/2026 |
| 0.4.0 | 104 | 7/26/2026 |
| 0.3.0 | 107 | 7/24/2026 |