Final rows
Depend only on closed windows and remain stable when the same comparison is replayed from the same history.
Concepts
Live comparisons clip open windows to an explicit horizon and mark rows that depend on those open windows as provisional.
Problem
During an incident the current open window is often the most important record. But if a comparison treats it like closed history, the result can look settled even though the end point has not happened yet.
var live = pipeline.History
.Compare("Live Provider QA")
.Target("provider-a", selector => selector.Source("provider-a"))
.Against("provider-b", selector => selector.Source("provider-b"))
.Within(scope => scope.Window("DeviceOffline"))
.Using(comparators => comparators.Overlap().Residual())
.RunLive(TemporalPoint.ForPosition(100));
var provisional = live.ProvisionalRowFinalities();
Solution
The horizon is the processing position or timestamp where the live view is evaluated. Rows derived from windows clipped to that horizon can change when more events arrive, so Spanfold keeps row finality explicit.
Journey
Historical comparisons should usually reject open windows because the evidence is not complete. Live comparisons intentionally include open windows, but only after clipping them to a declared horizon and labeling rows that can still change.
Row finality
A live comparison can contain both final and provisional rows. Closed historical ranges remain final even in a live run. Only rows derived from clipped open windows need the provisional label.
Depend only on closed windows and remain stable when the same comparison is replayed from the same history.
Depend on open windows clipped to the current horizon and may change when those windows close or extend.
Debug HTML, JSON, Markdown, and LLM context carry finality metadata so incident reports can distinguish live state from settled history.
Use it for
Live finality lets the same comparison model power a current dashboard and a later historical review without confusing the two. The dashboard can show what appears true at the horizon, while exports can preserve which rows were provisional at the time.
For audits, prefer historical runs with closed windows and known-at filtering. For operations, use live runs with a visible horizon. The distinction is what prevents a live view from being mistaken for final evidence.