%%{init: {'themeVariables': { 'fontSize': '12px'}}}%%
graph TD
    classDef path fill:#eee,stroke:#000,color:#000
    classDef plan fill:#fff,stroke-width:1px,color:#000
    classDef itemplan fill:#fff,stroke-width:2px,color:#000
    classDef unbatchedplan fill:#dff,stroke-width:1px,color:#000
    classDef sideeffectplan fill:#fcc,stroke-width:2px,color:#000
    classDef bucket fill:#f6f6f6,color:#000,stroke-width:2px,text-align:left

    subgraph "Buckets for mutations/v4/relay.defaultNodeIdCodec.updateLeftArm"
    Bucket0("Bucket 0 (root)"):::bucket
    Bucket1("Bucket 1 (mutationField)<br />Deps: 18, 13, 19, 2, 21, 36<br /><br />1: PgUpdateSingle[15]<br />2: <br />ᐳ: Object[20]"):::bucket
    Bucket2("Bucket 2 (nullableBoundary)<br />Deps: 2, 15, 20, 21, 36<br /><br />ROOT Object{1}ᐸ{result}ᐳ[20]"):::bucket
    Bucket3("Bucket 3 (nullableBoundary)<br />Deps: 15, 21, 30, 36<br /><br />ROOT PgUpdateSingle{1}ᐸleft_arm(id;)ᐳ[15]<br />1: <br />ᐳ: 23, 22, 24, 25, 26, 34, 35<br />2: PgSelect[27]<br />3: PgSelectRows[32]<br />ᐳ: First[31], PgSelectSingle[33]"):::bucket
    Bucket4("Bucket 4 (nullableBoundary)<br />Deps: 33, 15, 36<br /><br />ROOT PgSelectSingle{3}ᐸpersonᐳ[33]"):::bucket
    end
    Bucket0 --> Bucket1
    Bucket1 --> Bucket2
    Bucket2 --> Bucket3
    Bucket3 --> Bucket4

    %% plan dependencies
    __InputObject6{{"__InputObject[6∈0] ➊<br />More deps:<br />- Constantᐸundefinedᐳ[7]<br />- Constantᐸ'left_arms|42'ᐳ[40]"}}:::plan
    __InputObject9{{"__InputObject[9∈0] ➊<br />More deps:<br />- Constantᐸ0.71ᐳ[41]<br />- Constantᐸundefinedᐳ[7]<br />- Constantᐸnullᐳ[11]"}}:::plan
    __InputObject9 --> __InputObject6
    Object18{{"Object[18∈0] ➊<br />ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
    Access16{{"Access[16∈0] ➊<br />ᐸ2.pgSettingsᐳ<br />More deps:<br />- __Value[2]"}}:::plan
    Access17{{"Access[17∈0] ➊<br />ᐸ2.withPgClientᐳ<br />More deps:<br />- __Value[2]"}}:::plan
    Access16 & Access17 --> Object18
    Lambda12{{"Lambda[12∈0] ➊<br />ᐸdecode_LeftArm_pipeStringᐳ<br />More deps:<br />- Constantᐸ'left_arms|42'ᐳ[40]"}}:::plan
    Access13{{"Access[13∈0] ➊<br />ᐸ12.1ᐳ"}}:::plan
    Lambda12 --> Access13
    ApplyInput19{{"ApplyInput[19∈0] ➊"}}:::plan
    __InputObject6 --> ApplyInput19
    __Value2["__Value[2∈0] ➊<br />ᐸcontextᐳ<br />Dependents: 4"]:::plan
    PgUpdateSingle15[["PgUpdateSingle[15∈1] ➊<br />ᐸleft_arm(id;)ᐳ"]]:::sideeffectplan
    Access13 -->|rejectNull| PgUpdateSingle15
    Object18 & ApplyInput19 --> PgUpdateSingle15
    Object20{{"Object[20∈1] ➊<br />ᐸ{result}ᐳ"}}:::plan
    PgUpdateSingle15 --> Object20
    Object30{{"Object[30∈2] ➊<br />ᐸ{pgSettings,withPgClient}ᐳ"}}:::plan
    Access28{{"Access[28∈2] ➊<br />ᐸ2.pgSettingsᐳ<br />More deps:<br />- __Value[2]"}}:::plan
    Access29{{"Access[29∈2] ➊<br />ᐸ2.withPgClientᐳ<br />More deps:<br />- __Value[2]"}}:::plan
    Access28 & Access29 --> Object30
    List24{{"List[24∈3] ➊<br />ᐸ21,22ᐳ<br />More deps:<br />- Constantᐸ'left_arms'ᐳ[21]"}}:::plan
    PgClassExpression22{{"PgClassExpression[22∈3] ➊<br />ᐸ__left_arm__.”id”ᐳ"}}:::plan
    PgClassExpression22 --> List24
    PgSelect27[["PgSelect[27∈3] ➊<br />ᐸpersonᐳ"]]:::plan
    PgClassExpression26{{"PgClassExpression[26∈3] ➊<br />ᐸ__left_arm...person_id”ᐳ"}}:::plan
    Object30 & PgClassExpression26 --> PgSelect27
    Access23{{"Access[23∈3] ➊<br />ᐸ15.tᐳ"}}:::plan
    Access23 --> PgClassExpression22
    PgUpdateSingle15 --> Access23
    Lambda25{{"Lambda[25∈3] ➊<br />ᐸpipeStringEncodeᐳ"}}:::plan
    List24 --> Lambda25
    Access23 --> PgClassExpression26
    First31{{"First[31∈3] ➊"}}:::plan
    PgSelectRows32[["PgSelectRows[32∈3] ➊"]]:::plan
    PgSelectRows32 --> First31
    PgSelect27 --> PgSelectRows32
    PgSelectSingle33{{"PgSelectSingle[33∈3] ➊<br />ᐸpersonᐳ"}}:::plan
    First31 --> PgSelectSingle33
    PgClassExpression34{{"PgClassExpression[34∈3] ➊<br />ᐸ__left_arm...in_metres”ᐳ"}}:::plan
    Access23 --> PgClassExpression34
    PgClassExpression35{{"PgClassExpression[35∈3] ➊<br />ᐸ__left_arm__.”mood”ᐳ"}}:::plan
    Access23 --> PgClassExpression35
    List38{{"List[38∈4] ➊<br />ᐸ36,37ᐳ<br />More deps:<br />- Constantᐸ'people'ᐳ[36]"}}:::plan
    PgClassExpression37{{"PgClassExpression[37∈4] ➊<br />ᐸ__person__.”id”ᐳ"}}:::plan
    PgClassExpression37 --> List38
    PgSelectSingle33 --> PgClassExpression37
    Lambda39{{"Lambda[39∈4] ➊<br />ᐸpipeStringEncodeᐳ"}}:::plan
    List38 --> Lambda39

    %% define steps
    classDef bucket0 stroke:#696969
    class Bucket0,__Value2,__InputObject6,__InputObject9,Lambda12,Access13,Access16,Access17,Object18,ApplyInput19 bucket0
    classDef bucket1 stroke:#00bfff
    class Bucket1,PgUpdateSingle15,Object20 bucket1
    classDef bucket2 stroke:#7f007f
    class Bucket2,Access28,Access29,Object30 bucket2
    classDef bucket3 stroke:#ffa500
    class Bucket3,PgClassExpression22,Access23,List24,Lambda25,PgClassExpression26,PgSelect27,First31,PgSelectRows32,PgSelectSingle33,PgClassExpression34,PgClassExpression35 bucket3
    classDef bucket4 stroke:#0000ff
    class Bucket4,PgClassExpression37,List38,Lambda39 bucket4

    %% implicit side effects
    PgUpdateSingle15 -.-o Access28
    PgUpdateSingle15 -.-o Access29

