FlowProxy β€” Always-On Tracing + Debug Mode (v1.53.0)

Make your class partial and the generator emits a FlowProxy alongside the diagram constants β€” no manual observer wiring required.

// 1. Add 'partial' to the class:
public partial class OrderService
{
    [ResultFlow]
    public Result<Order> Process(int userId, int productId) =>
        FindUser(userId)
            .Bind(_ => FindProduct(productId))
            .Map(p => new Order(userId, p.Id, p.Price));
}

// 2. Always-on tracing β€” wraps the real method, seeds exact pipelineId + nodeIds:
var ringBuffer = new RingBufferObserver(capacity: 50);
PipelineObserver.Register(ringBuffer);

var result = svc.Flow.Process(userId, productId);  // same signature as the real method

PipelineObserver.Unregister();
ringBuffer.Save();  // β†’ reslava-traces.json β€” VSIX Debug panel auto-opens

// 3. Single-trace debug β€” one execution, auto-saved, no setup:
svc.Flow.Debug.Process(userId, productId);
// β†’ reslava-debug-Process.json in bin/
// β†’ VSIX file watcher fires β†’ Debug panel opens with the trace

Static class variant β€” Flow is a static property on the class itself:

public static partial class MathService
{
    [ResultFlow]
    public static Result<int> Triple(int i) => Result<int>.Ok(i).Map(x => x * 3);
}

MathService.Flow.Triple(5);         // always-on
MathService.Flow.Debug.Triple(5);   // debug β†’ reslava-debug-Triple.json

REF004 diagnostic β€” fires when a [ResultFlow] class is not partial. A one-click code fix adds partial to the class declaration β€” no need to type it manually.