Architectural Flow Catalog
See ResultFlow in action on real code. Every diagram on this page is auto-generated from the
REslava.Result.Flow.Demoproject — 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"