Concepts

Analyze open windows without pretending they are final.

Live comparisons clip open windows to an explicit horizon and mark rows that depend on those open windows as provisional.

Problem

Open windows are useful, but they are not final evidence.

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

Clip open windows to a horizon and label provisional rows.

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

Decide whether the question is historical or live.

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

Finality belongs to the row, not just the run.

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.

Final rows

Depend only on closed windows and remain stable when the same comparison is replayed from the same history.

Provisional rows

Depend on open windows clipped to the current horizon and may change when those windows close or extend.

Exports

Debug HTML, JSON, Markdown, and LLM context carry finality metadata so incident reports can distinguish live state from settled history.

Use it for

Dashboards, incident rooms, and replay-safe audits.

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.