Skip to content

Architectural Flow Catalog

See ResultFlow in action on real code. Every diagram on this page is auto-generated from the REslava.Result.Flow.Demo project — the same output you get when you annotate your own methods with [ResultFlow].

Each method shows its full set of generated views: pipeline flow, architecture layer view, stats, error surface, and error propagation — all derived automatically from the source code with zero manual work.

Info

This page is regenerated automatically on every release. Do not edit manually.


FulfillmentService

FulfillOrder

Pipeline

Success path, typed error edges, async steps

---
title: FulfillOrder → ⟨StockReservation⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}, 'themeVariables': {'primaryTextColor': '#fff', 'titleColor': '#fff', 'edgeLabelBackground': '#2a2a2a'}}}%%
flowchart LR
%% pipelineId: 7f3b7cd8
    ENTRY_ROOT["FindProduct<br/>→ Product"]:::operation ==> sg_6d53f962
    subgraph sg_6d53f962["ReserveStock"]
        ENTRY_6d53f962[ ]:::entry
        ENTRY_6d53f962[ ] ==> b9fd430f
        b9fd430f["Ok<br/>Product"]:::operation
        b9fd430f --> 23fbeae1
        23fbeae1["Bind<br/>Product"]:::bind
        23fbeae1 -->|InsufficientStockError| FAIL
    end
    sg_6d53f962 -->|ok| 6203aac1
    sg_6d53f962 -->|fail| FAIL
    6203aac1["Map<br/>Product → StockReservation"]:::map
    6203aac1 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nInsufficientStock"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#3a2b1f,color:#f2c2a0
classDef bind       fill:#1f3a2d,color:#9fe0c0,stroke:#2d5a4a,stroke-width:3px
classDef map        fill:#1f3a2d,color:#9fe0c0
classDef transform  fill:#1f3a2d,color:#9fe0c0
classDef gatekeeper fill:#1f263a,color:#b8c8f2
classDef sideeffect fill:#3a331f,color:#f2e0a0
classDef terminal   fill:#33203a,color:#d6b0f2
classDef success    fill:#1f3a36,color:#9fe0d6
classDef failure    fill:#3a1f1f,color:#f2b8b8
classDef note       fill:#2a2a2a,color:#aaaaaa,stroke:#555555
classDef subgraphStyle fill:#252520,stroke:#665,stroke-width:1px
linkStyle default stroke:#666,stroke-width:1.5px
classDef Layer0_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer1_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer2_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer3_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer4_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
class sg_6d53f962 subgraphStyle
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   6d53f962 → ReserveStock
%%   6203aac1 → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:870" "Go to FindProduct"
    click 6d53f962 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:873" "Go to ReserveStock"
    click 6203aac1 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:874" "Go to Map"

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: 7f3b7cd8

  subgraph Layer0["Application"]
    subgraph L0_FulfillmentService["FulfillmentService"]
      N_FulfillOrder["FulfillOrder"]:::operation
    end
  end

  subgraph Layer1["Domain"]
    subgraph L1_WarehouseService["WarehouseService"]
      N_ReserveStock["ReserveStock"]:::bind
    end
  end

  N_FulfillOrder -->|"Product / InsufficientStockError"| N_ReserveStock
  N_ReserveStock -->|"InsufficientStockError"| FAIL
  N_ReserveStock -->|ok| SUCCESS

  FAIL([fail]):::failure
  SUCCESS([success]):::success
  click N_ReserveStock "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:873"

classDef entry      fill:none,stroke:none
classDef operation  fill:#3a2b1f,color:#f2c2a0
classDef bind       fill:#1f3a2d,color:#9fe0c0,stroke:#2d5a4a,stroke-width:3px
classDef map        fill:#1f3a2d,color:#9fe0c0
classDef transform  fill:#1f3a2d,color:#9fe0c0
classDef gatekeeper fill:#1f263a,color:#b8c8f2
classDef sideeffect fill:#3a331f,color:#f2e0a0
classDef terminal   fill:#33203a,color:#d6b0f2
classDef success    fill:#1f3a36,color:#9fe0d6
classDef failure    fill:#3a1f1f,color:#f2b8b8
classDef note       fill:#2a2a2a,color:#aaaaaa,stroke:#555555
classDef subgraphStyle fill:#252520,stroke:#665,stroke-width:1px
linkStyle default stroke:#666,stroke-width:1.5px
classDef Layer0_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer1_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer2_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer3_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer4_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
  class Layer0 Layer0_Style
  class Layer1 Layer1_Style

Stats

Node count, error count, depth, async steps

Property Value
Pipeline ID 7f3b7cd8
Steps 4
Async steps 0
Possible errors InsufficientStockError
Layers crossed Domain
Max depth traced 1

Error Surface

All possible errors grouped by the step that produces them

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 7f3b7cd8
  N0_ReserveStock["ReserveStock"] -->|"fail"| FAIL
  N1_Bind["Bind"] -->|"InsufficientStockError"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#3a1f1f,color:#f2b8b8
  linkStyle default stroke:#666,stroke-width:1.5px

Error Propagation

Error types grouped by the architectural layer they originate from

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: 7f3b7cd8

  subgraph Layer0["Domain"]
    E0["InsufficientStockError"]:::failure
  end

  E0 --> FAIL([fail]):::failure

classDef entry      fill:none,stroke:none
classDef operation  fill:#3a2b1f,color:#f2c2a0
classDef bind       fill:#1f3a2d,color:#9fe0c0,stroke:#2d5a4a,stroke-width:3px
classDef map        fill:#1f3a2d,color:#9fe0c0
classDef transform  fill:#1f3a2d,color:#9fe0c0
classDef gatekeeper fill:#1f263a,color:#b8c8f2
classDef sideeffect fill:#3a331f,color:#f2e0a0
classDef terminal   fill:#33203a,color:#d6b0f2
classDef success    fill:#1f3a36,color:#9fe0d6
classDef failure    fill:#3a1f1f,color:#f2b8b8
classDef note       fill:#2a2a2a,color:#aaaaaa,stroke:#555555
classDef subgraphStyle fill:#252520,stroke:#665,stroke-width:1px
linkStyle default stroke:#666,stroke-width:1.5px
classDef Layer0_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer1_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer2_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer3_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer4_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
  class Layer0 Layer0_Style

FulfillOrder_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: FulfillOrder → ⟨StockReservation⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}, 'themeVariables': {'primaryTextColor': '#fff', 'titleColor': '#fff', 'edgeLabelBackground': '#2a2a2a'}}}%%
flowchart LR
%% pipelineId: 7f3b7cd8
    ENTRY_ROOT["FindProduct<br/>→ Product"]:::operation ==> sg_6d53f962
    subgraph sg_6d53f962["ReserveStock"]
        ENTRY_6d53f962[ ]:::entry
        ENTRY_6d53f962[ ] ==> b9fd430f
        b9fd430f["Ok<br/>Product"]:::operation
        b9fd430f -->|"Product"| 23fbeae1
        23fbeae1["Bind<br/>Product"]:::bind
        23fbeae1 -->|InsufficientStockError| FAIL
    end
    sg_6d53f962 -->|"Product"| 6203aac1
    sg_6d53f962 -->|fail| FAIL
    6203aac1["Map<br/>Product → StockReservation"]:::map
    6203aac1 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nInsufficientStock"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#3a2b1f,color:#f2c2a0
classDef bind       fill:#1f3a2d,color:#9fe0c0,stroke:#2d5a4a,stroke-width:3px
classDef map        fill:#1f3a2d,color:#9fe0c0
classDef transform  fill:#1f3a2d,color:#9fe0c0
classDef gatekeeper fill:#1f263a,color:#b8c8f2
classDef sideeffect fill:#3a331f,color:#f2e0a0
classDef terminal   fill:#33203a,color:#d6b0f2
classDef success    fill:#1f3a36,color:#9fe0d6
classDef failure    fill:#3a1f1f,color:#f2b8b8
classDef note       fill:#2a2a2a,color:#aaaaaa,stroke:#555555
classDef subgraphStyle fill:#252520,stroke:#665,stroke-width:1px
linkStyle default stroke:#666,stroke-width:1.5px
classDef Layer0_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer1_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer2_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer3_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer4_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
class sg_6d53f962 subgraphStyle
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   6d53f962 → ReserveStock
%%   6203aac1 → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:870" "Go to FindProduct"
    click 6d53f962 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:873" "Go to ReserveStock"
    click 6203aac1 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:874" "Go to Map"

InventoryService

CheckStock

Pipeline

Success path, typed error edges, async steps

---
title: CheckStock → ⟨StockReservation⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 54a7d440
    ENTRY_ROOT["FindProduct<br/>→ Product"]:::operation ==> sg_032d09a7
    subgraph sg_032d09a7["ReserveStock"]
        ENTRY_032d09a7[ ]:::entry
        ENTRY_032d09a7[ ] ==> 554b9d5c
        554b9d5c["Ok<br/>Product"]:::operation
        554b9d5c --> 0dec3d52
        0dec3d52["Bind<br/>Product"]:::bind
        0dec3d52 -->|InsufficientStockError| FAIL
    end
    sg_032d09a7 -->|ok| eb2eeec8
    sg_032d09a7 -->|fail| FAIL
    eb2eeec8["Map<br/>Product → StockReservation"]:::map
    eb2eeec8 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nInsufficientStock"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
class sg_032d09a7 subgraphStyle
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   032d09a7 → ReserveStock
%%   eb2eeec8 → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:770" "Go to FindProduct"
    click 032d09a7 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:773" "Go to ReserveStock"
    click eb2eeec8 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:774" "Go to Map"

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: 54a7d440

  subgraph Layer0["Domain"]
    subgraph L0_WarehouseService["WarehouseService"]
      N_ReserveStock["ReserveStock"]:::bind
    end
  end

  subgraph Layer1["Infrastructure"]
    subgraph L1_InventoryService["InventoryService"]
      N_CheckStock["CheckStock"]:::operation
    end
  end

  N_CheckStock -->|"Product / InsufficientStockError"| N_ReserveStock
  N_ReserveStock -->|"InsufficientStockError"| FAIL
  N_ReserveStock -->|ok| SUCCESS

  FAIL([fail]):::failure
  SUCCESS([success]):::success
  click N_ReserveStock "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:773"

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style
  class Layer1 Layer1_Style

Stats

Node count, error count, depth, async steps

Property Value
Pipeline ID 54a7d440
Steps 4
Async steps 0
Possible errors InsufficientStockError
Layers crossed Domain
Max depth traced 1

Error Surface

All possible errors grouped by the step that produces them

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 54a7d440
  N0_ReserveStock["ReserveStock"] -->|"fail"| FAIL
  N1_Bind["Bind"] -->|"InsufficientStockError"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#f8e3e3,color:#b13e3e
  linkStyle default stroke:#888,stroke-width:1.5px

Error Propagation

Error types grouped by the architectural layer they originate from

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: 54a7d440

  subgraph Layer0["Domain"]
    E0["InsufficientStockError"]:::failure
  end

  E0 --> FAIL([fail]):::failure

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style

CheckStock_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: CheckStock → ⟨StockReservation⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 54a7d440
    ENTRY_ROOT["FindProduct<br/>→ Product"]:::operation ==> sg_032d09a7
    subgraph sg_032d09a7["ReserveStock"]
        ENTRY_032d09a7[ ]:::entry
        ENTRY_032d09a7[ ] ==> 554b9d5c
        554b9d5c["Ok<br/>Product"]:::operation
        554b9d5c -->|"Product"| 0dec3d52
        0dec3d52["Bind<br/>Product"]:::bind
        0dec3d52 -->|InsufficientStockError| FAIL
    end
    sg_032d09a7 -->|"Product"| eb2eeec8
    sg_032d09a7 -->|fail| FAIL
    eb2eeec8["Map<br/>Product → StockReservation"]:::map
    eb2eeec8 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nInsufficientStock"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
class sg_032d09a7 subgraphStyle
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   032d09a7 → ReserveStock
%%   eb2eeec8 → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:770" "Go to FindProduct"
    click 032d09a7 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:773" "Go to ReserveStock"
    click eb2eeec8 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:774" "Go to Map"

ReserveStock

Pipeline

Success path, typed error edges, async steps

---
title: ReserveStock → ⟨StockReservation⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 6cec944a
    ENTRY_ROOT["FindProduct<br/>→ Product"]:::operation ==> f711bcd1
    f711bcd1["<span title='p.Stock > 0'>ℹ️Ensure<br/>Product</span>"]:::gatekeeper
    f711bcd1 -->|pass| sg_fa40ac54
    f711bcd1 -->|fail| FAIL
    subgraph sg_fa40ac54["ReserveStock"]
        ENTRY_fa40ac54[ ]:::entry
        ENTRY_fa40ac54[ ] ==> 4907750e
        4907750e["Ok<br/>Product"]:::operation
        4907750e --> 90b79c2c
        90b79c2c["Bind<br/>Product"]:::bind
        90b79c2c -->|InsufficientStockError| FAIL
    end
    sg_fa40ac54 -->|ok| 0ced9651
    sg_fa40ac54 -->|fail| FAIL
    0ced9651["Map<br/>Product → StockReservation"]:::map
    0ced9651 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nInsufficientStock"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
class sg_fa40ac54 subgraphStyle
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   f711bcd1 → Ensure
%%   fa40ac54 → ReserveStock
%%   0ced9651 → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:780" "Go to FindProduct"
    click f711bcd1 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:783" "Go to Ensure"
    click fa40ac54 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:785" "Go to ReserveStock"
    click 0ced9651 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:786" "Go to Map"

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: 6cec944a

  subgraph Layer0["Domain"]
    subgraph L0_WarehouseService["WarehouseService"]
      N_ReserveStock["ReserveStock"]:::bind
    end
  end

  subgraph Layer1["Infrastructure"]
    subgraph L1_InventoryService["InventoryService"]
      N_ReserveStock["ReserveStock"]:::operation
    end
  end

  N_ReserveStock -->|"Product / InsufficientStockError"| N_ReserveStock
  N_ReserveStock -->|"InsufficientStockError"| FAIL
  N_ReserveStock -->|ok| SUCCESS

  FAIL([fail]):::failure
  SUCCESS([success]):::success
  click N_ReserveStock "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:785"

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style
  class Layer1 Layer1_Style

Stats

Node count, error count, depth, async steps

Property Value
Pipeline ID 6cec944a
Steps 5
Async steps 0
Possible errors InsufficientStockError
Layers crossed Domain
Max depth traced 1

Error Surface

All possible errors grouped by the step that produces them

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 6cec944a
  N0_Ensure["Ensure"] -->|"fail"| FAIL
  N1_ReserveStock["ReserveStock"] -->|"fail"| FAIL
  N2_Bind["Bind"] -->|"InsufficientStockError"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#f8e3e3,color:#b13e3e
  linkStyle default stroke:#888,stroke-width:1.5px

Error Propagation

Error types grouped by the architectural layer they originate from

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: 6cec944a

  subgraph Layer0["Domain"]
    E0["InsufficientStockError"]:::failure
  end

  E0 --> FAIL([fail]):::failure

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style

ReserveStock_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: ReserveStock → ⟨StockReservation⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 6cec944a
    ENTRY_ROOT["FindProduct<br/>→ Product"]:::operation ==> f711bcd1
    f711bcd1["<span title='p.Stock > 0'>ℹ️Ensure<br/>Product</span>"]:::gatekeeper
    f711bcd1 -->|"Product"| sg_fa40ac54
    f711bcd1 -->|fail| FAIL
    subgraph sg_fa40ac54["ReserveStock"]
        ENTRY_fa40ac54[ ]:::entry
        ENTRY_fa40ac54[ ] ==> 4907750e
        4907750e["Ok<br/>Product"]:::operation
        4907750e -->|"Product"| 90b79c2c
        90b79c2c["Bind<br/>Product"]:::bind
        90b79c2c -->|InsufficientStockError| FAIL
    end
    sg_fa40ac54 -->|"Product"| 0ced9651
    sg_fa40ac54 -->|fail| FAIL
    0ced9651["Map<br/>Product → StockReservation"]:::map
    0ced9651 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nInsufficientStock"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
class sg_fa40ac54 subgraphStyle
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   f711bcd1 → Ensure
%%   fa40ac54 → ReserveStock
%%   0ced9651 → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:780" "Go to FindProduct"
    click f711bcd1 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:783" "Go to Ensure"
    click fa40ac54 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:785" "Go to ReserveStock"
    click 0ced9651 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:786" "Go to Map"

MatchDemo

ConfirmOrder

Pipeline

Success path, typed error edges, async steps

---
title: ConfirmOrder → ⟨⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 3dd746ba
    ENTRY_ROOT["BuildOrder<br/>→ Order"]:::operation ==> 85733bce
    85733bce{{"Match"}}:::terminal
    85733bce -->|ok| SUCCESS
    SUCCESS([success]):::success
    85733bce -->|fail| FAIL
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   85733bce → Match
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:698" "Go to BuildOrder"
    click 85733bce "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:700" "Go to Match"

ConfirmOrder_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: ConfirmOrder → ⟨⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 3dd746ba
    ENTRY_ROOT["BuildOrder<br/>→ Order"]:::operation ==> 85733bce
    85733bce{{"Match"}}:::terminal
    85733bce -->|ok| SUCCESS
    SUCCESS([success]):::success
    85733bce -->|fail| FAIL
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   85733bce → Match
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:698" "Go to BuildOrder"
    click 85733bce "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:700" "Go to Match"

OrderService

PlaceOrderCross

Pipeline

Success path, typed error edges, async steps

---
title: PlaceOrderCross → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: fd319c15
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> sg_6e5097fb
    subgraph sg_6e5097fb["ValidateUser"]
        ENTRY_6e5097fb[ ]:::entry
        ENTRY_6e5097fb[ ] ==> d8313a82
        d8313a82["Ok<br/>User"]:::operation
        d8313a82 --> 879c46d8
        879c46d8["Bind<br/>User"]:::bind
        879c46d8 -->|ok| c882fd49
        879c46d8 -->|UserInactiveError| FAIL
        c882fd49["Bind<br/>User"]:::bind
        c882fd49 -->|UnauthorizedRoleError| FAIL
    end
    sg_6e5097fb -->|ok| 3d5813e1
    sg_6e5097fb -->|fail| FAIL
    3d5813e1["FindProduct<br/>User → Product"]:::bind
    3d5813e1 -->|ok| eefef016
    3d5813e1 -->|fail| FAIL
    eefef016["Map<br/>Product → Order"]:::map
    eefef016 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nUserInactive\nUnauthorizedRole"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
class sg_6e5097fb subgraphStyle
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   6e5097fb → ValidateUser
%%   3d5813e1 → FindProduct
%%   eefef016 → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:647" "Go to FindUser"
    click 6e5097fb "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:650" "Go to ValidateUser"
    click 3d5813e1 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:651" "Go to FindProduct"
    click eefef016 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:652" "Go to Map"

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: fd319c15

  subgraph Layer0["Application"]
    subgraph L0_OrderService["OrderService"]
      N_PlaceOrderCross["PlaceOrderCross"]:::operation
    end
  end

  subgraph Layer1["Domain"]
    subgraph L1_UserService["UserService"]
      N_ValidateUser["ValidateUser"]:::bind
    end
  end

  N_PlaceOrderCross -->|"User / UserInactiveError, UnauthorizedRoleError"| N_ValidateUser
  N_ValidateUser -->|"UserInactiveError"| FAIL
  N_ValidateUser -->|"UnauthorizedRoleError"| FAIL
  N_ValidateUser -->|ok| SUCCESS

  FAIL([fail]):::failure
  SUCCESS([success]):::success
  click N_ValidateUser "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:650"

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style
  class Layer1 Layer1_Style

Stats

Node count, error count, depth, async steps

Property Value
Pipeline ID fd319c15
Steps 6
Async steps 0
Possible errors UserInactiveError, UnauthorizedRoleError
Layers crossed Domain
Max depth traced 1

Error Surface

All possible errors grouped by the step that produces them

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: fd319c15
  N0_ValidateUser["ValidateUser"] -->|"fail"| FAIL
  N1_Bind["Bind"] -->|"UserInactiveError"| FAIL
  N2_Bind["Bind"] -->|"UnauthorizedRoleError"| FAIL
  N3_FindProduct["FindProduct"] -->|"fail"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#f8e3e3,color:#b13e3e
  linkStyle default stroke:#888,stroke-width:1.5px

Error Propagation

Error types grouped by the architectural layer they originate from

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: fd319c15

  subgraph Layer0["Domain"]
    E0["UserInactiveError"]:::failure
    E1["UnauthorizedRoleError"]:::failure
  end

  E0 --> FAIL([fail]):::failure
  E1 --> FAIL([fail]):::failure

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style

PlaceOrderCross_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: PlaceOrderCross → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: fd319c15
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> sg_6e5097fb
    subgraph sg_6e5097fb["ValidateUser"]
        ENTRY_6e5097fb[ ]:::entry
        ENTRY_6e5097fb[ ] ==> d8313a82
        d8313a82["Ok<br/>User"]:::operation
        d8313a82 -->|"User"| 879c46d8
        879c46d8["Bind<br/>User"]:::bind
        879c46d8 -->|"User"| c882fd49
        879c46d8 -->|UserInactiveError| FAIL
        c882fd49["Bind<br/>User"]:::bind
        c882fd49 -->|UnauthorizedRoleError| FAIL
    end
    sg_6e5097fb -->|"User"| 3d5813e1
    sg_6e5097fb -->|fail| FAIL
    3d5813e1["FindProduct<br/>User → Product"]:::bind
    3d5813e1 -->|"Product"| eefef016
    3d5813e1 -->|fail| FAIL
    eefef016["Map<br/>Product → Order"]:::map
    eefef016 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nUserInactive\nUnauthorizedRole"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
class sg_6e5097fb subgraphStyle
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   6e5097fb → ValidateUser
%%   3d5813e1 → FindProduct
%%   eefef016 → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:647" "Go to FindUser"
    click 6e5097fb "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:650" "Go to ValidateUser"
    click 3d5813e1 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:651" "Go to FindProduct"
    click eefef016 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:652" "Go to Map"

Pipelines

ValidateOrder

Pipeline

Success path, typed error edges, async steps

---
title: ValidateOrder → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: adb74c10
    3de39e98["Ok<br/>Order"]:::operation
    3de39e98 --> b0dc7c05
    b0dc7c05["<span title='o.Amount > 0'>ℹ️Ensure<br/>Order</span>"]:::gatekeeper
    b0dc7c05 -->|pass| 6ff5c594
    b0dc7c05 -->|fail| FAIL
    6ff5c594["<span title='o.Amount < 5_000'>ℹ️Ensure<br/>Order</span>"]:::gatekeeper
    6ff5c594 -->|pass| 330f156f
    6ff5c594 -->|fail| FAIL
    330f156f["<span title='GetUserRole(o.UserId) == “Admin“'>ℹ️Ensure<br/>Order</span>"]:::gatekeeper
    330f156f -->|fail| FAIL
    330f156f -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   3de39e98 → Ok
%%   b0dc7c05 → Ensure
%%   6ff5c594 → Ensure
%%   330f156f → Ensure
    click 3de39e98 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:409" "Go to Ok"
    click b0dc7c05 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:410" "Go to Ensure"
    click 6ff5c594 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:412" "Go to Ensure"
    click 330f156f "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:414" "Go to Ensure"

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: adb74c10

  subgraph Layer0["Application"]
    subgraph L0_Pipelines["Pipelines"]
      N_ValidateOrder["ValidateOrder"]:::operation
    end
  end

  N_ValidateOrder -->|ok| SUCCESS

  SUCCESS([success]):::success

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style

Stats

Node count, error count, depth, async steps

Property Value
Pipeline ID adb74c10
Steps 4
Async steps 0
Possible errors none
Layers crossed
Max depth traced 0

Error Surface

All possible errors grouped by the step that produces them

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: adb74c10
  N0_Ensure["Ensure"] -->|"fail"| FAIL
  N1_Ensure["Ensure"] -->|"fail"| FAIL
  N2_Ensure["Ensure"] -->|"fail"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#f8e3e3,color:#b13e3e
  linkStyle default stroke:#888,stroke-width:1.5px

ValidateOrder_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: ValidateOrder → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: adb74c10
    3de39e98["Ok<br/>Order"]:::operation
    3de39e98 -->|"Order"| b0dc7c05
    b0dc7c05["<span title='o.Amount > 0'>ℹ️Ensure<br/>Order</span>"]:::gatekeeper
    b0dc7c05 -->|"Order"| 6ff5c594
    b0dc7c05 -->|fail| FAIL
    6ff5c594["<span title='o.Amount < 5_000'>ℹ️Ensure<br/>Order</span>"]:::gatekeeper
    6ff5c594 -->|"Order"| 330f156f
    6ff5c594 -->|fail| FAIL
    330f156f["<span title='GetUserRole(o.UserId) == “Admin“'>ℹ️Ensure<br/>Order</span>"]:::gatekeeper
    330f156f -->|fail| FAIL
    330f156f -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   3de39e98 → Ok
%%   b0dc7c05 → Ensure
%%   6ff5c594 → Ensure
%%   330f156f → Ensure
    click 3de39e98 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:409" "Go to Ok"
    click b0dc7c05 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:410" "Go to Ensure"
    click 6ff5c594 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:412" "Go to Ensure"
    click 330f156f "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:414" "Go to Ensure"

PlaceOrder

Pipeline

Success path, typed error edges, async steps

---
title: PlaceOrder → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 24aa4db7
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> 3863a655
    3863a655["FindProduct<br/>User → Product"]:::bind
    3863a655 -->|ok| e0f19aa4
    3863a655 -->|fail| FAIL
    e0f19aa4["BuildOrder<br/>Product → Order"]:::bind
    e0f19aa4 -->|fail| FAIL
    e0f19aa4 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   3863a655 → FindProduct
%%   e0f19aa4 → BuildOrder
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:427" "Go to FindUser"
    click 3863a655 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:430" "Go to FindProduct"
    click e0f19aa4 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:431" "Go to BuildOrder"

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: 24aa4db7

  subgraph Layer0["Application"]
    subgraph L0_Pipelines["Pipelines"]
      N_PlaceOrder["PlaceOrder"]:::operation
    end
  end

  N_PlaceOrder -->|ok| SUCCESS

  SUCCESS([success]):::success

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style

Stats

Node count, error count, depth, async steps

Property Value
Pipeline ID 24aa4db7
Steps 2
Async steps 0
Possible errors none
Layers crossed
Max depth traced 0

Error Surface

All possible errors grouped by the step that produces them

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 24aa4db7
  N0_FindProduct["FindProduct"] -->|"fail"| FAIL
  N1_BuildOrder["BuildOrder"] -->|"fail"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#f8e3e3,color:#b13e3e
  linkStyle default stroke:#888,stroke-width:1.5px

PlaceOrder_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: PlaceOrder → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 24aa4db7
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> 3863a655
    3863a655["FindProduct<br/>User → Product"]:::bind
    3863a655 -->|"Product"| e0f19aa4
    3863a655 -->|fail| FAIL
    e0f19aa4["BuildOrder<br/>Product → Order"]:::bind
    e0f19aa4 -->|fail| FAIL
    e0f19aa4 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   3863a655 → FindProduct
%%   e0f19aa4 → BuildOrder
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:427" "Go to FindUser"
    click 3863a655 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:430" "Go to FindProduct"
    click e0f19aa4 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:431" "Go to BuildOrder"

ProcessCheckout

Pipeline

Success path, typed error edges, async steps

---
title: ProcessCheckout → ⟨String⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 1c366505
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> 07928f73
    07928f73["FindProduct<br/>User → Product"]:::bind
    07928f73 -->|ok| 7ddfa6b6
    07928f73 -->|fail| FAIL
    7ddfa6b6["BuildOrder<br/>Product → Order"]:::bind
    7ddfa6b6 -->|ok| d665d5d7
    7ddfa6b6 -->|fail| FAIL
    d665d5d7["Map<br/>Order → String"]:::map
    d665d5d7 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   07928f73 → FindProduct
%%   7ddfa6b6 → BuildOrder
%%   d665d5d7 → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:443" "Go to FindUser"
    click 07928f73 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:446" "Go to FindProduct"
    click 7ddfa6b6 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:447" "Go to BuildOrder"
    click d665d5d7 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:448" "Go to Map"

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: 1c366505

  subgraph Layer0["Application"]
    subgraph L0_Pipelines["Pipelines"]
      N_ProcessCheckout["ProcessCheckout"]:::operation
    end
  end

  N_ProcessCheckout -->|ok| SUCCESS

  SUCCESS([success]):::success

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style

Stats

Node count, error count, depth, async steps

Property Value
Pipeline ID 1c366505
Steps 3
Async steps 0
Possible errors none
Layers crossed
Max depth traced 0

Error Surface

All possible errors grouped by the step that produces them

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 1c366505
  N0_FindProduct["FindProduct"] -->|"fail"| FAIL
  N1_BuildOrder["BuildOrder"] -->|"fail"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#f8e3e3,color:#b13e3e
  linkStyle default stroke:#888,stroke-width:1.5px

ProcessCheckout_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: ProcessCheckout → ⟨String⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 1c366505
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> 07928f73
    07928f73["FindProduct<br/>User → Product"]:::bind
    07928f73 -->|"Product"| 7ddfa6b6
    07928f73 -->|fail| FAIL
    7ddfa6b6["BuildOrder<br/>Product → Order"]:::bind
    7ddfa6b6 -->|"Order"| d665d5d7
    7ddfa6b6 -->|fail| FAIL
    d665d5d7["Map<br/>Order → String"]:::map
    d665d5d7 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   07928f73 → FindProduct
%%   7ddfa6b6 → BuildOrder
%%   d665d5d7 → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:443" "Go to FindUser"
    click 07928f73 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:446" "Go to FindProduct"
    click 7ddfa6b6 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:447" "Go to BuildOrder"
    click d665d5d7 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:448" "Go to Map"

PlaceOrderAsync

Pipeline

Success path, typed error edges, async steps

---
title: PlaceOrder⚡ → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 61f014d4
    ENTRY_ROOT["FindUser⚡<br/>→ User"]:::operation ==> 8ccab286
    8ccab286["FindProduct⚡<br/>User → Product"]:::bind
    8ccab286 -->|ok| 3db337b5
    8ccab286 -->|fail| FAIL
    3db337b5["<span title='p.Stock > 0'>ℹ️Ensure⚡<br/>Product</span>"]:::gatekeeper
    3db337b5 -->|pass| 25a9abc6
    3db337b5 -->|fail| FAIL
    25a9abc6["Map⚡<br/>Product → Order"]:::map
    25a9abc6 --> 2d18179e
    2d18179e["SaveOrder⚡<br/>Order"]:::bind
    2d18179e -->|fail| FAIL
    2d18179e -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   8ccab286 → FindProductAsync
%%   3db337b5 → EnsureAsync
%%   25a9abc6 → MapAsync
%%   2d18179e → SaveOrderAsync
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:462" "Go to FindUserAsync"
    click 8ccab286 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:466" "Go to FindProductAsync"
    click 3db337b5 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:467" "Go to EnsureAsync"
    click 25a9abc6 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:469" "Go to MapAsync"
    click 2d18179e "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:470" "Go to SaveOrderAsync"

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: 61f014d4

  subgraph Layer0["Application"]
    subgraph L0_Pipelines["Pipelines"]
      N_PlaceOrderAsync["PlaceOrderAsync"]:::operation
    end
  end

  N_PlaceOrderAsync -->|ok| SUCCESS

  SUCCESS([success]):::success

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style

Stats

Node count, error count, depth, async steps

Property Value
Pipeline ID 61f014d4
Steps 4
Async steps 4
Possible errors none
Layers crossed
Max depth traced 0

Error Surface

All possible errors grouped by the step that produces them

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 61f014d4
  N0_FindProductAsync["FindProductAsync"] -->|"fail"| FAIL
  N1_EnsureAsync["EnsureAsync"] -->|"fail"| FAIL
  N2_SaveOrderAsync["SaveOrderAsync"] -->|"fail"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#f8e3e3,color:#b13e3e
  linkStyle default stroke:#888,stroke-width:1.5px

PlaceOrderAsync_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: PlaceOrder⚡ → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 61f014d4
    ENTRY_ROOT["FindUser⚡<br/>→ User"]:::operation ==> 8ccab286
    8ccab286["FindProduct⚡<br/>User → Product"]:::bind
    8ccab286 -->|"Product"| 3db337b5
    8ccab286 -->|fail| FAIL
    3db337b5["<span title='p.Stock > 0'>ℹ️Ensure⚡<br/>Product</span>"]:::gatekeeper
    3db337b5 -->|"Product"| 25a9abc6
    3db337b5 -->|fail| FAIL
    25a9abc6["Map⚡<br/>Product → Order"]:::map
    25a9abc6 -->|"Order"| 2d18179e
    2d18179e["SaveOrder⚡<br/>Order"]:::bind
    2d18179e -->|fail| FAIL
    2d18179e -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   8ccab286 → FindProductAsync
%%   3db337b5 → EnsureAsync
%%   25a9abc6 → MapAsync
%%   2d18179e → SaveOrderAsync
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:462" "Go to FindUserAsync"
    click 8ccab286 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:466" "Go to FindProductAsync"
    click 3db337b5 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:467" "Go to EnsureAsync"
    click 25a9abc6 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:469" "Go to MapAsync"
    click 2d18179e "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:470" "Go to SaveOrderAsync"

AdminCheckout

Pipeline

Success path, typed error edges, async steps

---
title: AdminCheckout → ⟨String⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: fe8bf8c8
    ENTRY_ROOT["FindUser⚡<br/>→ User"]:::operation ==> 604b90f2
    604b90f2["<span title='u.Role == “Admin“'>ℹ️Ensure⚡<br/>User</span>"]:::gatekeeper
    604b90f2 -->|pass| 229258b9
    604b90f2 -->|fail| FAIL
    229258b9["FindProduct⚡<br/>User → Product"]:::bind
    229258b9 -->|ok| e27e2a5c
    229258b9 -->|fail| FAIL
    e27e2a5c["<span title='p.Stock > 0'>ℹ️Ensure⚡<br/>Product</span>"]:::gatekeeper
    e27e2a5c -->|pass| 293434b9
    e27e2a5c -->|fail| FAIL
    293434b9["Map⚡<br/>Product → Order"]:::map
    293434b9 --> f38371c7
    f38371c7["SaveOrder⚡<br/>Order"]:::bind
    f38371c7 -->|ok| f94c1e79
    f38371c7 -->|fail| FAIL
    f94c1e79["Log<br/>Order"]:::sideeffect
    f94c1e79 --> b8656808
    b8656808["Log<br/>Order"]:::sideeffect
    b8656808 --> 24cf01e5
    24cf01e5["Map⚡<br/>Order → String"]:::map
    24cf01e5 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   604b90f2 → EnsureAsync
%%   229258b9 → FindProductAsync
%%   e27e2a5c → EnsureAsync
%%   293434b9 → MapAsync
%%   f38371c7 → SaveOrderAsync
%%   f94c1e79 → Log
%%   b8656808 → Log
%%   24cf01e5 → MapAsync
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:484" "Go to FindUserAsync"
    click 604b90f2 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:488" "Go to EnsureAsync"
    click 229258b9 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:490" "Go to FindProductAsync"
    click e27e2a5c "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:491" "Go to EnsureAsync"
    click 293434b9 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:493" "Go to MapAsync"
    click f38371c7 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:494" "Go to SaveOrderAsync"
    click f94c1e79 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:495" "Go to Log"
    click b8656808 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:496" "Go to Log"
    click 24cf01e5 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:497" "Go to MapAsync"

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: fe8bf8c8

  subgraph Layer0["Application"]
    subgraph L0_Pipelines["Pipelines"]
      N_AdminCheckout["AdminCheckout"]:::operation
    end
  end

  N_AdminCheckout -->|ok| SUCCESS

  SUCCESS([success]):::success

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style

Stats

Node count, error count, depth, async steps

Property Value
Pipeline ID fe8bf8c8
Steps 8
Async steps 6
Possible errors none
Layers crossed
Max depth traced 0

Error Surface

All possible errors grouped by the step that produces them

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: fe8bf8c8
  N0_EnsureAsync["EnsureAsync"] -->|"fail"| FAIL
  N1_FindProductAsync["FindProductAsync"] -->|"fail"| FAIL
  N2_EnsureAsync["EnsureAsync"] -->|"fail"| FAIL
  N3_SaveOrderAsync["SaveOrderAsync"] -->|"fail"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#f8e3e3,color:#b13e3e
  linkStyle default stroke:#888,stroke-width:1.5px

AdminCheckout_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: AdminCheckout → ⟨String⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: fe8bf8c8
    ENTRY_ROOT["FindUser⚡<br/>→ User"]:::operation ==> 604b90f2
    604b90f2["<span title='u.Role == “Admin“'>ℹ️Ensure⚡<br/>User</span>"]:::gatekeeper
    604b90f2 -->|"User"| 229258b9
    604b90f2 -->|fail| FAIL
    229258b9["FindProduct⚡<br/>User → Product"]:::bind
    229258b9 -->|"Product"| e27e2a5c
    229258b9 -->|fail| FAIL
    e27e2a5c["<span title='p.Stock > 0'>ℹ️Ensure⚡<br/>Product</span>"]:::gatekeeper
    e27e2a5c -->|"Product"| 293434b9
    e27e2a5c -->|fail| FAIL
    293434b9["Map⚡<br/>Product → Order"]:::map
    293434b9 -->|"Order"| f38371c7
    f38371c7["SaveOrder⚡<br/>Order"]:::bind
    f38371c7 -->|"Order"| f94c1e79
    f38371c7 -->|fail| FAIL
    f94c1e79["Log<br/>Order"]:::sideeffect
    f94c1e79 -->|"Order"| b8656808
    b8656808["Log<br/>Order"]:::sideeffect
    b8656808 -->|"Order"| 24cf01e5
    24cf01e5["Map⚡<br/>Order → String"]:::map
    24cf01e5 -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   604b90f2 → EnsureAsync
%%   229258b9 → FindProductAsync
%%   e27e2a5c → EnsureAsync
%%   293434b9 → MapAsync
%%   f38371c7 → SaveOrderAsync
%%   f94c1e79 → Log
%%   b8656808 → Log
%%   24cf01e5 → MapAsync
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:484" "Go to FindUserAsync"
    click 604b90f2 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:488" "Go to EnsureAsync"
    click 229258b9 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:490" "Go to FindProductAsync"
    click e27e2a5c "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:491" "Go to EnsureAsync"
    click 293434b9 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:493" "Go to MapAsync"
    click f38371c7 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:494" "Go to SaveOrderAsync"
    click f94c1e79 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:495" "Go to Log"
    click b8656808 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:496" "Go to Log"
    click 24cf01e5 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:497" "Go to MapAsync"

ProcessOrder

Pipeline

Success path, typed error edges, async steps

---
title: ProcessOrder → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 7b1f558f
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> sg_ff063a21
    subgraph sg_ff063a21["ValidateUser"]
        ENTRY_ff063a21[ ]:::entry
        ENTRY_ff063a21[ ] ==> 80c96097
        80c96097["Ok<br/>User"]:::operation
        80c96097 --> d991d889
        d991d889["Bind<br/>User"]:::bind
        d991d889 -->|ok| 98ab2218
        d991d889 -->|UserInactiveError| FAIL
        98ab2218["Bind<br/>User"]:::bind
        98ab2218 -->|UnauthorizedRoleError| FAIL
    end
    sg_ff063a21 -->|ok| 634670d7
    sg_ff063a21 -->|fail| FAIL
    634670d7["FindProduct<br/>User → Product"]:::bind
    634670d7 -->|ok| d6fcba3c
    634670d7 -->|fail| FAIL
    d6fcba3c["Map<br/>Product → Order"]:::map
    d6fcba3c -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nUserInactive\nUnauthorizedRole"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
class sg_ff063a21 subgraphStyle
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   ff063a21 → ValidateUser
%%   634670d7 → FindProduct
%%   d6fcba3c → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:564" "Go to FindUser"
    click ff063a21 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:567" "Go to ValidateUser"
    click 634670d7 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:568" "Go to FindProduct"
    click d6fcba3c "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:569" "Go to Map"

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: 7b1f558f

  subgraph Layer0["Application"]
    subgraph L0_Pipelines["Pipelines"]
      N_ProcessOrder["ProcessOrder"]:::operation
    end
  end

  subgraph Layer1["Domain"]
    subgraph L1_UserService["UserService"]
      N_ValidateUser["ValidateUser"]:::bind
    end
  end

  N_ProcessOrder -->|"User / UserInactiveError, UnauthorizedRoleError"| N_ValidateUser
  N_ValidateUser -->|"UserInactiveError"| FAIL
  N_ValidateUser -->|"UnauthorizedRoleError"| FAIL
  N_ValidateUser -->|ok| SUCCESS

  FAIL([fail]):::failure
  SUCCESS([success]):::success
  click N_ValidateUser "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:567"

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style
  class Layer1 Layer1_Style

Stats

Node count, error count, depth, async steps

Property Value
Pipeline ID 7b1f558f
Steps 6
Async steps 0
Possible errors UserInactiveError, UnauthorizedRoleError
Layers crossed Domain
Max depth traced 1

Error Surface

All possible errors grouped by the step that produces them

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 7b1f558f
  N0_ValidateUser["ValidateUser"] -->|"fail"| FAIL
  N1_Bind["Bind"] -->|"UserInactiveError"| FAIL
  N2_Bind["Bind"] -->|"UnauthorizedRoleError"| FAIL
  N3_FindProduct["FindProduct"] -->|"fail"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#f8e3e3,color:#b13e3e
  linkStyle default stroke:#888,stroke-width:1.5px

Error Propagation

Error types grouped by the architectural layer they originate from

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: 7b1f558f

  subgraph Layer0["Domain"]
    E0["UserInactiveError"]:::failure
    E1["UnauthorizedRoleError"]:::failure
  end

  E0 --> FAIL([fail]):::failure
  E1 --> FAIL([fail]):::failure

classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
  class Layer0 Layer0_Style

ProcessOrder_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: ProcessOrder → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: 7b1f558f
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> sg_ff063a21
    subgraph sg_ff063a21["ValidateUser"]
        ENTRY_ff063a21[ ]:::entry
        ENTRY_ff063a21[ ] ==> 80c96097
        80c96097["Ok<br/>User"]:::operation
        80c96097 -->|"User"| d991d889
        d991d889["Bind<br/>User"]:::bind
        d991d889 -->|"User"| 98ab2218
        d991d889 -->|UserInactiveError| FAIL
        98ab2218["Bind<br/>User"]:::bind
        98ab2218 -->|UnauthorizedRoleError| FAIL
    end
    sg_ff063a21 -->|"User"| 634670d7
    sg_ff063a21 -->|fail| FAIL
    634670d7["FindProduct<br/>User → Product"]:::bind
    634670d7 -->|"Product"| d6fcba3c
    634670d7 -->|fail| FAIL
    d6fcba3c["Map<br/>Product → Order"]:::map
    d6fcba3c -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nUserInactive\nUnauthorizedRole"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
class sg_ff063a21 subgraphStyle
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   ff063a21 → ValidateUser
%%   634670d7 → FindProduct
%%   d6fcba3c → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:564" "Go to FindUser"
    click ff063a21 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:567" "Go to ValidateUser"
    click 634670d7 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:568" "Go to FindProduct"
    click d6fcba3c "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:569" "Go to Map"

RuntimeTracingService

Process

Pipeline

Success path, typed error edges, async steps

---
title: Process → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: d64f7293
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> e3711a91
    e3711a91["FindProduct<br/>User → Product"]:::bind
    e3711a91 -->|ok| 14eaa3ec
    e3711a91 -->|fail| FAIL
    14eaa3ec["Map<br/>Product → Order"]:::map
    14eaa3ec -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   e3711a91 → FindProduct
%%   14eaa3ec → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:896" "Go to FindUser"
    click e3711a91 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:899" "Go to FindProduct"
    click 14eaa3ec "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:900" "Go to Map"

Process_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: Process → ⟨Order⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: d64f7293
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> e3711a91
    e3711a91["FindProduct<br/>User → Product"]:::bind
    e3711a91 -->|"Product"| 14eaa3ec
    e3711a91 -->|fail| FAIL
    14eaa3ec["Map<br/>Product → Order"]:::map
    14eaa3ec -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#faf0e3,color:#b45f2b
classDef bind       fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
classDef map        fill:#e3f0e8,color:#2f7a5c
classDef transform  fill:#e3f0e8,color:#2f7a5c
classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
classDef sideeffect fill:#fff4d9,color:#b8882c
classDef terminal   fill:#f2e3f5,color:#8a4f9e
classDef success    fill:#e8f4f0,color:#1c7e6f
classDef failure    fill:#f8e3e3,color:#b13e3e
classDef note       fill:#f5f5f5,color:#555555,stroke:#cccccc
classDef subgraphStyle fill:#ffffde,stroke:#aa3,stroke-width:1px
linkStyle default stroke:#888,stroke-width:1.5px
classDef Layer0_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer1_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer2_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
classDef Layer3_Style fill:#f0f8f0,color:#1e6f43,stroke:#b8d8c0,stroke-width:1px
classDef Layer4_Style fill:#eff4ff,color:#2b4c7e,stroke:#c0d0f0,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   e3711a91 → FindProduct
%%   14eaa3ec → Map
    click ENTRY_ROOT "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:896" "Go to FindUser"
    click e3711a91 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:899" "Go to FindProduct"
    click 14eaa3ec "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:900" "Go to Map"

WarehouseService

ReserveStock

Pipeline

Success path, typed error edges, async steps

---
title: ReserveStock → ⟨Product⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}, 'themeVariables': {'primaryTextColor': '#fff', 'titleColor': '#fff', 'edgeLabelBackground': '#2a2a2a'}}}%%
flowchart LR
%% pipelineId: cc1184cd
    8dc1a163["Ok<br/>Product"]:::operation
    8dc1a163 --> bcd3315d
    bcd3315d["Bind<br/>Product"]:::bind
    bcd3315d -->|InsufficientStockError| FAIL
    bcd3315d -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nInsufficientStock"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#3a2b1f,color:#f2c2a0
classDef bind       fill:#1f3a2d,color:#9fe0c0,stroke:#2d5a4a,stroke-width:3px
classDef map        fill:#1f3a2d,color:#9fe0c0
classDef transform  fill:#1f3a2d,color:#9fe0c0
classDef gatekeeper fill:#1f263a,color:#b8c8f2
classDef sideeffect fill:#3a331f,color:#f2e0a0
classDef terminal   fill:#33203a,color:#d6b0f2
classDef success    fill:#1f3a36,color:#9fe0d6
classDef failure    fill:#3a1f1f,color:#f2b8b8
classDef note       fill:#2a2a2a,color:#aaaaaa,stroke:#555555
classDef subgraphStyle fill:#252520,stroke:#665,stroke-width:1px
linkStyle default stroke:#666,stroke-width:1.5px
classDef Layer0_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer1_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer2_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer3_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer4_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   8dc1a163 → Ok
%%   bcd3315d → Bind
    click 8dc1a163 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:744" "Go to Ok"
    click bcd3315d "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:745" "Go to Bind"

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: cc1184cd

  subgraph Layer0["Domain"]
    subgraph L0_WarehouseService["WarehouseService"]
      N_ReserveStock["ReserveStock"]:::operation
    end
  end

  N_ReserveStock -->|ok| SUCCESS

  SUCCESS([success]):::success

classDef entry      fill:none,stroke:none
classDef operation  fill:#3a2b1f,color:#f2c2a0
classDef bind       fill:#1f3a2d,color:#9fe0c0,stroke:#2d5a4a,stroke-width:3px
classDef map        fill:#1f3a2d,color:#9fe0c0
classDef transform  fill:#1f3a2d,color:#9fe0c0
classDef gatekeeper fill:#1f263a,color:#b8c8f2
classDef sideeffect fill:#3a331f,color:#f2e0a0
classDef terminal   fill:#33203a,color:#d6b0f2
classDef success    fill:#1f3a36,color:#9fe0d6
classDef failure    fill:#3a1f1f,color:#f2b8b8
classDef note       fill:#2a2a2a,color:#aaaaaa,stroke:#555555
classDef subgraphStyle fill:#252520,stroke:#665,stroke-width:1px
linkStyle default stroke:#666,stroke-width:1.5px
classDef Layer0_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer1_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer2_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer3_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer4_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
  class Layer0 Layer0_Style

Stats

Node count, error count, depth, async steps

Property Value
Pipeline ID cc1184cd
Steps 2
Async steps 0
Possible errors InsufficientStockError
Layers crossed
Max depth traced 0

Error Surface

All possible errors grouped by the step that produces them

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart LR
%% pipelineId: cc1184cd
  N0_Bind["Bind"] -->|"InsufficientStockError"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#3a1f1f,color:#f2b8b8
  linkStyle default stroke:#666,stroke-width:1.5px

Error Propagation

Error types grouped by the architectural layer they originate from

%%{init: {'theme': 'base', 'flowchart': {'scale': 1}}}%%
flowchart TD
%% pipelineId: cc1184cd

  subgraph Layer0["Domain"]
    E0["InsufficientStockError"]:::failure
  end

  E0 --> FAIL([fail]):::failure

classDef entry      fill:none,stroke:none
classDef operation  fill:#3a2b1f,color:#f2c2a0
classDef bind       fill:#1f3a2d,color:#9fe0c0,stroke:#2d5a4a,stroke-width:3px
classDef map        fill:#1f3a2d,color:#9fe0c0
classDef transform  fill:#1f3a2d,color:#9fe0c0
classDef gatekeeper fill:#1f263a,color:#b8c8f2
classDef sideeffect fill:#3a331f,color:#f2e0a0
classDef terminal   fill:#33203a,color:#d6b0f2
classDef success    fill:#1f3a36,color:#9fe0d6
classDef failure    fill:#3a1f1f,color:#f2b8b8
classDef note       fill:#2a2a2a,color:#aaaaaa,stroke:#555555
classDef subgraphStyle fill:#252520,stroke:#665,stroke-width:1px
linkStyle default stroke:#666,stroke-width:1.5px
classDef Layer0_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer1_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer2_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer3_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer4_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
  class Layer0 Layer0_Style

ReserveStock_TypeFlow

Pipeline

Success path, typed error edges, async steps

---
title: ReserveStock → ⟨Product⟩
---
%%{init: {'theme': 'base', 'flowchart': {'scale': 1}, 'themeVariables': {'primaryTextColor': '#fff', 'titleColor': '#fff', 'edgeLabelBackground': '#2a2a2a'}}}%%
flowchart LR
%% pipelineId: cc1184cd
    8dc1a163["Ok<br/>Product"]:::operation
    8dc1a163 -->|"Product"| bcd3315d
    bcd3315d["Bind<br/>Product"]:::bind
    bcd3315d -->|InsufficientStockError| FAIL
    bcd3315d -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL(["fail\nInsufficientStock"]):::failure
classDef entry      fill:none,stroke:none
classDef operation  fill:#3a2b1f,color:#f2c2a0
classDef bind       fill:#1f3a2d,color:#9fe0c0,stroke:#2d5a4a,stroke-width:3px
classDef map        fill:#1f3a2d,color:#9fe0c0
classDef transform  fill:#1f3a2d,color:#9fe0c0
classDef gatekeeper fill:#1f263a,color:#b8c8f2
classDef sideeffect fill:#3a331f,color:#f2e0a0
classDef terminal   fill:#33203a,color:#d6b0f2
classDef success    fill:#1f3a36,color:#9fe0d6
classDef failure    fill:#3a1f1f,color:#f2b8b8
classDef note       fill:#2a2a2a,color:#aaaaaa,stroke:#555555
classDef subgraphStyle fill:#252520,stroke:#665,stroke-width:1px
linkStyle default stroke:#666,stroke-width:1.5px
classDef Layer0_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer1_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer2_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
classDef Layer3_Style fill:#1a2a20,color:#70b890,stroke:#2a3a30,stroke-width:1px
classDef Layer4_Style fill:#1a2535,color:#8aa8d0,stroke:#2a3a55,stroke-width:1px
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   8dc1a163 → Ok
%%   bcd3315d → Bind
    click 8dc1a163 "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:744" "Go to Ok"
    click bcd3315d "vscode://file//home/runner/work/nuget-package-reslava-result/nuget-package-reslava-result/samples/REslava.Result.Flow.Demo/Program.cs:745" "Go to Bind"