Namespace Kuestenlogik.Bowire.Recordings.Correlation

Classes

RecordingCorrelationAnalyzer

Turns a recording into a correlated timeline (#539) — the single canonical implementation behind both the workbench's Timeline tab (via POST /api/recordings/correlate) and bowire recording correlate.

A recording has no trace id: nothing in the .bwr format carries one, and no capture path writes one. So the analyzer resolves a signal in three tiers — a correlation header on step.metadata, otherwise a shared id-shaped JSON leaf inferred from the payloads, otherwise nothing, in which case the whole recording is treated as one transaction and the result is a plain protocol-lane time chart.

One key is not always enough (#545): a transaction that renames its identifier on the way across the landscape lights only the lanes that speak the chosen key. So a step the key missed gets a second and last edge — it joins the transaction when it shares a distinctive id-shaped value with a step the key did match, and the resulting RecordingCorrelationLink always names that value. See Kuestenlogik.Bowire.Recordings.Correlation.RecordingCorrelationAnalyzer.JoinThroughBridges(System.Collections.Generic.List{Kuestenlogik.Bowire.Mocking.BowireRecordingStep},System.Int64[],System.Collections.Generic.List{Kuestenlogik.Bowire.Recordings.Correlation.RecordingCorrelationEvent},Kuestenlogik.Bowire.Recordings.Correlation.RecordingCorrelationKey,System.Collections.Generic.List{System.String}) for the admissibility rule and what it turns down.

Pure and stateless by contract: no cache, no ring buffer, no injected dependency. Two calls with the same inputs produce the same output, which is what lets the CLI and the endpoint agree.

RecordingCorrelationCandidate

One key the analyzer would accept, offered to the operator so they can override the auto-pick.

RecordingCorrelationEvent

One recorded step, placed on the shared time axis.

RecordingCorrelationFrame

One streamed frame inside a correlated event.

RecordingCorrelationKey

The resolved signal a correlated timeline is read through (#539).

RecordingCorrelationLane

One protocol lane.

RecordingCorrelationLink

Why a step is on the transaction even though the correlation key is nowhere in it (#545). One bridge value, shared with one step the key matched directly — the second and last edge of the join.

RecordingCorrelationMatch

The match tiers a step or frame can land in.

RecordingCorrelationTimeline

The full correlated view of one recording — what the workbench's Timeline tab renders and what bowire recording correlate --json prints.