Skip to content

Architectural Flow Catalog

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

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

Info

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


InventoryService

CheckStock

Pipeline

Success path, typed error edges, async steps

---
title: CheckStock → ⟨StockReservation⟩
---
flowchart LR
    ENTRY_ROOT["FindProduct<br/>→ Product"]:::operation ==> sg_N0_ReserveStock
    subgraph sg_N0_ReserveStock["ReserveStock"]
        ENTRY_N0_ReserveStock[ ]:::entry
        ENTRY_N0_ReserveStock[ ] ==> N0_ReserveStock_0_Ok
        N0_ReserveStock_0_Ok["Ok<br/>Product"]:::operation
        N0_ReserveStock_0_Ok --> N0_ReserveStock_1_Bind
        N0_ReserveStock_1_Bind["Bind<br/>Product"]:::bind
        N0_ReserveStock_1_Bind -->|InsufficientStockError| FAIL
    end
    sg_N0_ReserveStock -->|ok| N1_Map
    sg_N0_ReserveStock -->|fail| FAIL
    N1_Map["Map<br/>Product → StockReservation"]:::map
    N1_Map -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail])
    FAIL:::failure
    classDef operation fill:#fef0e3,color:#b86a1c
    classDef entry fill:none,stroke:none
    classDef bind fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
    classDef transform fill:#e3f0e8,color:#2f7a5c
    classDef map fill:#e3f0e8,color:#2f7a5c
    classDef success fill:#e6f6ea,color:#1c7e4f
    classDef failure fill:#f8e3e3,color:#b13e3e
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   N0_ReserveStock → ReserveStock
%%   N1_Map → Map

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

flowchart TD

  subgraph Domain["Domain"]
    subgraph WarehouseService["WarehouseService"]
      N_ReserveStock["ReserveStock"]:::layerDomain
    end
  end

  subgraph Infrastructure["Infrastructure"]
    subgraph InventoryService["InventoryService"]
      N_CheckStock["CheckStock"]:::layerInfra
    end
  end

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

  FAIL([fail]):::failure
  SUCCESS([success]):::success

  classDef layerDomain fill:#fff6e5,color:#a36b00
  classDef layerInfra fill:#f4e8ff,color:#6a3fa0
  classDef failure fill:#f8e3e3,color:#b13e3e
  classDef success fill:#e6f6ea,color:#1c7e4f

  class Domain layerDomain
  class Infrastructure layerInfra

Stats

Node count, error count, depth, async steps

Property Value
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

flowchart LR
  N0_ReserveStock["ReserveStock"] -->|"fail"| FAIL
  N1_Bind["Bind"] -->|"InsufficientStockError"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#f8e3e3,color:#b13e3e

Error Propagation

Error types grouped by the architectural layer they originate from

flowchart TD

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

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

  classDef layerDomain fill:#fff6e5,color:#a36b00
  classDef failure fill:#f8e3e3,color:#b13e3e

  class Domain layerDomain

ReserveStock

Pipeline

Success path, typed error edges, async steps

---
title: ReserveStock → ⟨StockReservation⟩
---
flowchart LR
    ENTRY_ROOT["FindProduct<br/>→ Product"]:::operation ==> N0_Ensure
    N0_Ensure["<span title='p.Stock > 0'>Ensure<br/>Product</span>"]:::gatekeeper
    N0_Ensure -->|pass| sg_N1_ReserveStock
    N0_Ensure -->|fail| FAIL
    subgraph sg_N1_ReserveStock["ReserveStock"]
        ENTRY_N1_ReserveStock[ ]:::entry
        ENTRY_N1_ReserveStock[ ] ==> N1_ReserveStock_0_Ok
        N1_ReserveStock_0_Ok["Ok<br/>Product"]:::operation
        N1_ReserveStock_0_Ok --> N1_ReserveStock_1_Bind
        N1_ReserveStock_1_Bind["Bind<br/>Product"]:::bind
        N1_ReserveStock_1_Bind -->|InsufficientStockError| FAIL
    end
    sg_N1_ReserveStock -->|ok| N2_Map
    sg_N1_ReserveStock -->|fail| FAIL
    N2_Map["Map<br/>Product → StockReservation"]:::map
    N2_Map -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail])
    FAIL:::failure
    classDef operation fill:#fef0e3,color:#b86a1c
    classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
    classDef entry fill:none,stroke:none
    classDef bind fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
    classDef transform fill:#e3f0e8,color:#2f7a5c
    classDef map fill:#e3f0e8,color:#2f7a5c
    classDef success fill:#e6f6ea,color:#1c7e4f
    classDef failure fill:#f8e3e3,color:#b13e3e
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   N0_Ensure → Ensure
%%   N1_ReserveStock → ReserveStock
%%   N2_Map → Map

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

flowchart TD

  subgraph Domain["Domain"]
    subgraph WarehouseService["WarehouseService"]
      N_ReserveStock["ReserveStock"]:::layerDomain
    end
  end

  subgraph Infrastructure["Infrastructure"]
    subgraph InventoryService["InventoryService"]
      N_ReserveStock["ReserveStock"]:::layerInfra
    end
  end

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

  FAIL([fail]):::failure
  SUCCESS([success]):::success

  classDef layerDomain fill:#fff6e5,color:#a36b00
  classDef layerInfra fill:#f4e8ff,color:#6a3fa0
  classDef failure fill:#f8e3e3,color:#b13e3e
  classDef success fill:#e6f6ea,color:#1c7e4f

  class Domain layerDomain
  class Infrastructure layerInfra

Stats

Node count, error count, depth, async steps

Property Value
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

flowchart LR
  N0_Ensure["Ensure"] -->|"fail"| FAIL
  N1_ReserveStock["ReserveStock"] -->|"fail"| FAIL
  N2_Bind["Bind"] -->|"InsufficientStockError"| FAIL

  FAIL([fail]):::failure

  classDef failure fill:#f8e3e3,color:#b13e3e

Error Propagation

Error types grouped by the architectural layer they originate from

flowchart TD

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

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

  classDef layerDomain fill:#fff6e5,color:#a36b00
  classDef failure fill:#f8e3e3,color:#b13e3e

  class Domain layerDomain

MatchDemo

ConfirmOrder

Pipeline

Success path, typed error edges, async steps

---
title: ConfirmOrder → ⟨⟩
---
flowchart LR
    ENTRY_ROOT["BuildOrder<br/>→ Order"]:::operation ==> N0_Match
    N0_Match{{"Match"}}:::terminal
    N0_Match -->|ok| SUCCESS
    SUCCESS([success]):::success
    N0_Match -->|fail| FAIL
    FAIL([fail])
    FAIL:::failure
    classDef operation fill:#fef0e3,color:#b86a1c
    classDef success fill:#e6f6ea,color:#1c7e4f
    classDef terminal fill:#f2e3f5,color:#8a4f9e
    classDef failure fill:#f8e3e3,color:#b13e3e
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   N0_Match → Match

OrderService

PlaceOrderCross

Pipeline

Success path, typed error edges, async steps

---
title: PlaceOrderCross → ⟨Order⟩
---
flowchart LR
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> sg_N0_ValidateUser
    subgraph sg_N0_ValidateUser["ValidateUser"]
        ENTRY_N0_ValidateUser[ ]:::entry
        ENTRY_N0_ValidateUser[ ] ==> N0_ValidateUser_0_Ok
        N0_ValidateUser_0_Ok["Ok<br/>User"]:::operation
        N0_ValidateUser_0_Ok --> N0_ValidateUser_1_Bind
        N0_ValidateUser_1_Bind["Bind<br/>User"]:::bind
        N0_ValidateUser_1_Bind -->|ok| N0_ValidateUser_2_Bind
        N0_ValidateUser_1_Bind -->|UserInactiveError| FAIL
        N0_ValidateUser_2_Bind["Bind<br/>User"]:::bind
        N0_ValidateUser_2_Bind -->|UnauthorizedRoleError| FAIL
    end
    sg_N0_ValidateUser -->|ok| N1_FindProduct
    sg_N0_ValidateUser -->|fail| FAIL
    N1_FindProduct["FindProduct<br/>User → Product"]:::bind
    N1_FindProduct -->|ok| N2_Map
    N1_FindProduct -->|fail| FAIL
    N2_Map["Map<br/>Product → Order"]:::map
    N2_Map -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail])
    FAIL:::failure
    classDef operation fill:#fef0e3,color:#b86a1c
    classDef entry fill:none,stroke:none
    classDef bind fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
    classDef transform fill:#e3f0e8,color:#2f7a5c
    classDef map fill:#e3f0e8,color:#2f7a5c
    classDef success fill:#e6f6ea,color:#1c7e4f
    classDef failure fill:#f8e3e3,color:#b13e3e
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   N0_ValidateUser → ValidateUser
%%   N1_FindProduct → FindProduct
%%   N2_Map → Map

Layer View

Architecture layers — Domain / Application / Infrastructure boundaries

flowchart TD

  subgraph Application["Application"]
    subgraph OrderService["OrderService"]
      N_PlaceOrderCross["PlaceOrderCross"]:::layerApp
    end
  end

  subgraph Domain["Domain"]
    subgraph UserService["UserService"]
      N_ValidateUser["ValidateUser"]:::layerDomain
    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

  classDef layerApp fill:#e8f7ee,color:#1e6f43
  classDef layerDomain fill:#fff6e5,color:#a36b00
  classDef failure fill:#f8e3e3,color:#b13e3e
  classDef success fill:#e6f6ea,color:#1c7e4f

  class Application layerApp
  class Domain layerDomain

Stats

Node count, error count, depth, async steps

Property Value
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

flowchart LR
  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

Error Propagation

Error types grouped by the architectural layer they originate from

flowchart TD

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

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

  classDef layerDomain fill:#fff6e5,color:#a36b00
  classDef failure fill:#f8e3e3,color:#b13e3e

  class Domain layerDomain

Pipelines

ValidateOrder

Pipeline

Success path, typed error edges, async steps

---
title: ValidateOrder → ⟨Order⟩
---
flowchart LR
    N0_Ok["Ok<br/>Order"]:::operation
    N0_Ok --> N1_Ensure
    N1_Ensure["<span title='o.Amount > 0'>Ensure<br/>Order</span>"]:::gatekeeper
    N1_Ensure -->|pass| N2_Ensure
    N1_Ensure -->|fail| FAIL
    N2_Ensure["<span title='o.Amount < 5_000'>Ensure<br/>Order</span>"]:::gatekeeper
    N2_Ensure -->|pass| N3_Ensure
    N2_Ensure -->|fail| FAIL
    N3_Ensure["<span title='GetUserRole(o.UserId) == &quot;Admin&quot;'>Ensure<br/>Order</span>"]:::gatekeeper
    N3_Ensure -->|fail| FAIL
    N3_Ensure -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail])
    FAIL:::failure
    classDef operation fill:#fef0e3,color:#b86a1c
    classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
    classDef success fill:#e6f6ea,color:#1c7e4f
    classDef failure fill:#f8e3e3,color:#b13e3e
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   N0_Ok → Ok
%%   N1_Ensure → Ensure
%%   N2_Ensure → Ensure
%%   N3_Ensure → Ensure

PlaceOrder

Pipeline

Success path, typed error edges, async steps

---
title: PlaceOrder → ⟨Order⟩
---
flowchart LR
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> N0_FindProduct
    N0_FindProduct["FindProduct<br/>User → Product"]:::bind
    N0_FindProduct -->|ok| N1_BuildOrder
    N0_FindProduct -->|fail| FAIL
    N1_BuildOrder["BuildOrder<br/>Product → Order"]:::bind
    N1_BuildOrder -->|fail| FAIL
    N1_BuildOrder -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail])
    FAIL:::failure
    classDef operation fill:#fef0e3,color:#b86a1c
    classDef bind fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
    classDef success fill:#e6f6ea,color:#1c7e4f
    classDef failure fill:#f8e3e3,color:#b13e3e
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   N0_FindProduct → FindProduct
%%   N1_BuildOrder → BuildOrder

ProcessCheckout

Pipeline

Success path, typed error edges, async steps

---
title: ProcessCheckout → ⟨String⟩
---
flowchart LR
    ENTRY_ROOT["FindUser<br/>→ User"]:::operation ==> N0_FindProduct
    N0_FindProduct["FindProduct<br/>User → Product"]:::bind
    N0_FindProduct -->|ok| N1_BuildOrder
    N0_FindProduct -->|fail| FAIL
    N1_BuildOrder["BuildOrder<br/>Product → Order"]:::bind
    N1_BuildOrder -->|ok| N2_Map
    N1_BuildOrder -->|fail| FAIL
    N2_Map["Map<br/>Order → String"]:::map
    N2_Map -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail])
    FAIL:::failure
    classDef operation fill:#fef0e3,color:#b86a1c
    classDef bind fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
    classDef map fill:#e3f0e8,color:#2f7a5c
    classDef success fill:#e6f6ea,color:#1c7e4f
    classDef failure fill:#f8e3e3,color:#b13e3e
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   N0_FindProduct → FindProduct
%%   N1_BuildOrder → BuildOrder
%%   N2_Map → Map

PlaceOrderAsync

Pipeline

Success path, typed error edges, async steps

---
title: PlaceOrder⚡ → ⟨Order⟩
---
flowchart LR
    ENTRY_ROOT["FindUser⚡<br/>→ User"]:::operation ==> N0_FindProductAsync
    N0_FindProductAsync["FindProduct⚡<br/>User → Product"]:::bind
    N0_FindProductAsync -->|ok| N1_EnsureAsync
    N0_FindProductAsync -->|fail| FAIL
    N1_EnsureAsync["<span title='p.Stock > 0'>Ensure⚡<br/>Product</span>"]:::gatekeeper
    N1_EnsureAsync -->|pass| N2_MapAsync
    N1_EnsureAsync -->|fail| FAIL
    N2_MapAsync["Map⚡<br/>Product → Order"]:::map
    N2_MapAsync --> N3_SaveOrderAsync
    N3_SaveOrderAsync["SaveOrder⚡<br/>Order"]:::bind
    N3_SaveOrderAsync -->|fail| FAIL
    N3_SaveOrderAsync -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail])
    FAIL:::failure
    classDef operation fill:#fef0e3,color:#b86a1c
    classDef bind fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
    classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
    classDef map fill:#e3f0e8,color:#2f7a5c
    classDef success fill:#e6f6ea,color:#1c7e4f
    classDef failure fill:#f8e3e3,color:#b13e3e
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   N0_FindProductAsync → FindProductAsync
%%   N1_EnsureAsync → EnsureAsync
%%   N2_MapAsync → MapAsync
%%   N3_SaveOrderAsync → SaveOrderAsync

AdminCheckout

Pipeline

Success path, typed error edges, async steps

---
title: AdminCheckout → ⟨String⟩
---
flowchart LR
    ENTRY_ROOT["FindUser⚡<br/>→ User"]:::operation ==> N0_EnsureAsync
    N0_EnsureAsync["<span title='u.Role == &quot;Admin&quot;'>Ensure⚡<br/>User</span>"]:::gatekeeper
    N0_EnsureAsync -->|pass| N1_FindProductAsync
    N0_EnsureAsync -->|fail| FAIL
    N1_FindProductAsync["FindProduct⚡<br/>User → Product"]:::bind
    N1_FindProductAsync -->|ok| N2_EnsureAsync
    N1_FindProductAsync -->|fail| FAIL
    N2_EnsureAsync["<span title='p.Stock > 0'>Ensure⚡<br/>Product</span>"]:::gatekeeper
    N2_EnsureAsync -->|pass| N3_MapAsync
    N2_EnsureAsync -->|fail| FAIL
    N3_MapAsync["Map⚡<br/>Product → Order"]:::map
    N3_MapAsync --> N4_SaveOrderAsync
    N4_SaveOrderAsync["SaveOrder⚡<br/>Order"]:::bind
    N4_SaveOrderAsync -->|ok| N5_Log
    N4_SaveOrderAsync -->|fail| FAIL
    N5_Log["Log<br/>Order"]:::sideeffect
    N5_Log --> N6_Log
    N6_Log["Log<br/>Order"]:::sideeffect
    N6_Log --> N7_MapAsync
    N7_MapAsync["Map⚡<br/>Order → String"]:::map
    N7_MapAsync -->|ok| SUCCESS
    SUCCESS([success]):::success
    FAIL([fail])
    FAIL:::failure
    classDef operation fill:#fef0e3,color:#b86a1c
    classDef gatekeeper fill:#e3e9fa,color:#3f5c9a
    classDef bind fill:#e3f0e8,color:#2f7a5c,stroke:#1a5c3c,stroke-width:3px
    classDef map fill:#e3f0e8,color:#2f7a5c
    classDef sideeffect fill:#fff4d9,color:#b8882c
    classDef success fill:#e6f6ea,color:#1c7e4f
    classDef failure fill:#f8e3e3,color:#b13e3e
%% --- Node correlation (ReasonMetadata.NodeId / PipelineStep) ---
%%   N0_EnsureAsync → EnsureAsync
%%   N1_FindProductAsync → FindProductAsync
%%   N2_EnsureAsync → EnsureAsync
%%   N3_MapAsync → MapAsync
%%   N4_SaveOrderAsync → SaveOrderAsync
%%   N5_Log → Log
%%   N6_Log → Log
%%   N7_MapAsync → MapAsync