My configuration DAG of Argo workflow was like this:

{
  name: "my-workflow",
  dag: {
    tasks: [
      {
        name: "step1",
        template: "template1",
      },
      {
        name: "manual-check",
        template: "template-manual-check",
        depends: "step1.Failed",
      },
      {
        name: "step2",
        template: "template2",
        depends: "manual-check",
      },
    ],
  },
}

If “step1” failed, the “manual-check” will suspend the whole pipeline and let users (or customers) decide whether this pipeline could continue. But I met a funny situation when “step1” is successful: the “manual-check” step was omitted by workflow and “step2” would never be executed because it depends on “manual-check”!

The correct solution should let “step2” run when “step1” is successful. Therefore I need to change the configuration to this:

{
  ......
      {
        name: "step2",
        template: "template2",
        depends: "manual-check || step1.Succeeded",
      },
    ],
  },
}

Thanks to this reference: “Enhanced Depends Logic“.