diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index b9b3cd2d63fbb739a008475a0ddab6a01b60cc6b..0e3050d129b3bc3c7b1bf2f9944c6f9cc50abea0 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -233,7 +233,6 @@ include:
     PR_NUM: "${PR_NUM}"
   trigger:
     project: "parity/infrastructure/ci_cd/pipeline-stopper"
-    branch: "as-improve"
 
 remove-cancel-pipeline-message:
   stage: .post
diff --git a/.gitlab/pipeline/build.yml b/.gitlab/pipeline/build.yml
index 684f6dd5c25296f35eb51a1d3150f77d26dfd259..0364c3607606516103ab6dd920725eaade38b3dd 100644
--- a/.gitlab/pipeline/build.yml
+++ b/.gitlab/pipeline/build.yml
@@ -82,8 +82,11 @@ build-staking-miner:
   extends:
     - .docker-env
     - .common-refs
-    - .run-immediately
-    - .collect-artifacts
+    # - .collect-artifacts
+  # DAG
+  needs:
+    - job: build-malus
+      artifacts: false
   script:
     - time cargo build --locked --release --package staking-miner
     # # pack artifacts
@@ -269,8 +272,11 @@ build-linux-substrate:
   extends:
     - .docker-env
     - .common-refs
-    - .run-immediately
     - .collect-artifacts
+  # DAG
+  needs:
+    - job: build-linux-stable
+      artifacts: false
   variables:
     # this variable gets overriden by "rusty-cachier environment inject", use the value as default
     CARGO_TARGET_DIR: "$CI_PROJECT_DIR/target"
@@ -320,6 +326,10 @@ build-linux-substrate:
 
 build-subkey-linux:
   extends: .build-subkey
+  # DAG
+  needs:
+    - job: build-staking-miner
+      artifacts: false
 # tbd
 # build-subkey-macos:
 #   extends: .build-subkey
diff --git a/.gitlab/pipeline/check.yml b/.gitlab/pipeline/check.yml
index 4e1cd833040b3692180d47c13849a52e018b79b0..efd57ba1d863317af8e4f8f42c23e96129bec471 100644
--- a/.gitlab/pipeline/check.yml
+++ b/.gitlab/pipeline/check.yml
@@ -32,7 +32,8 @@ cargo-fmt-manifest:
     - zepter format features --check
   allow_failure: true # Experimental
 
-cargo-deny-licenses:
+# FIXME
+.cargo-deny-licenses:
   stage: check
   extends:
     - .docker-env
@@ -132,6 +133,10 @@ check-runtime-migration-polkadot:
 
 check-runtime-migration-kusama:
   stage: check
+  # DAG
+  needs:
+    - job: check-runtime-migration-polkadot
+      artifacts: false
   extends:
     - .docker-env
     - .test-pr-refs
@@ -152,6 +157,10 @@ check-runtime-migration-westend:
 
 check-runtime-migration-rococo:
   stage: check
+  # DAG
+  needs:
+    - job: check-runtime-migration-westend
+      artifacts: false
   extends:
     - .docker-env
     - .test-pr-refs
diff --git a/.gitlab/pipeline/test.yml b/.gitlab/pipeline/test.yml
index cbba5dfe422c398e50fe5906d7657387481a4d0a..a83ab8c2bfaa60b60dc0b6524939c06f5e5efd06 100644
--- a/.gitlab/pipeline/test.yml
+++ b/.gitlab/pipeline/test.yml
@@ -160,7 +160,10 @@ test-rustdoc:
   extends:
     - .docker-env
     - .common-refs
-    - .run-immediately
+  # DAG
+  needs:
+    - job: test-doc
+      artifacts: false
   variables:
     SKIP_WASM_BUILD: 1
     RUSTDOCFLAGS: "-Dwarnings"
@@ -173,7 +176,10 @@ cargo-check-all-benches:
   extends:
     - .docker-env
     - .common-refs
-    - .run-immediately
+  # DAG
+  needs:
+    - job: cargo-hfuzz
+      artifacts: false
   script:
     - time cargo check --all --benches
 
@@ -202,7 +208,10 @@ test-deterministic-wasm:
   extends:
     - .docker-env
     - .common-refs
-    - .run-immediately
+  # DAG
+  needs:
+    - job: test-frame-support
+      artifacts: false
   script:
     - .gitlab/test_deterministic_wasm.sh
 
@@ -289,7 +298,10 @@ test-frame-support:
   extends:
     - .docker-env
     - .common-refs
-    - .run-immediately
+  # DAG
+  needs:
+    - job: test-frame-examples-compile-to-wasm
+      artifacts: false
   variables:
     # Enable debug assertions since we are running optimized builds for testing
     # but still want to have debug assertions.
@@ -328,7 +340,10 @@ test-frame-examples-compile-to-wasm:
   extends:
     - .docker-env
     - .common-refs
-    - .run-immediately
+  # DAG
+  needs:
+    - job: test-full-crypto-feature
+      artifacts: false
   variables:
     # Enable debug assertions since we are running optimized builds for testing
     # but still want to have debug assertions.
@@ -439,7 +454,10 @@ cargo-hfuzz:
   extends:
     - .docker-env
     - .common-refs
-    - .run-immediately
+  # DAG
+  needs:
+    - job: check-tracing
+      artifacts: false
   variables:
     # max 10s per iteration, 60s per file
     HFUZZ_RUN_ARGS: >