diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index e4226ee8adb84a3f71f34877afc4dba5e9495e47..439fda5fabe1eb38d88212666b4db367482a43a2 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -148,7 +148,6 @@ test-linux-stable:                 &test-linux
 test-dependency-rules:             &test-linux
   stage:                           test
   <<:                              *docker-env
-  allow_failure:                   true
   except:
     variables:
       - $DEPLOY_TAG
diff --git a/.maintain/ensure-deps.sh b/.maintain/ensure-deps.sh
index d8383cd3137726366afc629cd73682e454426db1..696d0d56ca78366fcebf79eb7ae4ac5a75d6a4db 100755
--- a/.maintain/ensure-deps.sh
+++ b/.maintain/ensure-deps.sh
@@ -3,36 +3,41 @@
 # The script is meant to check if the rules regarding packages
 # dependencies are satisfied.
 # The general format is:
-# [top-lvl-dir]<[crate-name-prefix]
+# [top-lvl-dir] MESSAGE/[other-top-dir]
 
 # For instance no crate within `./client` directory
 # is allowed to import any crate with a directory path containing `frame`.
-# Such rule is just: `client<frame`.
+# Such rule is just: `client crates must not depend on anything in /frame`.
 
 # The script should be run from the main repo directory!
 
 set -u
 
+# HARD FAILING
+MUST_NOT=(
+	"client crates must not depend on anything in /frame"
+	"client crates must not depend on anything in /node"
+	"frame crates must not depend on anything in /node"
+	"frame crates must not depend on anything in /client"
+	"primitives crates must not depend on anything in /frame"
+)
+
+# ONLY DISPLAYED, script still succeeds
 PLEASE_DONT=(
-	"client<frame"
-	"client<node"
-	"frame<node"
-	"frame<client"
-	"primitives<frame"
-	"primitives<client"
+	"primitives crates must not depend on anything in /client"
 )
 
 VIOLATIONS=()
 PACKAGES=()
 
-for rule in "${PLEASE_DONT[@]}"
-do
-	from=$(echo $rule | cut -f1 -d\<)
-	to=$(echo $rule | cut -f2 -d\<)
+function check_rule() {
+	rule=$1
+	from=$(echo $rule | cut -f1 -d\ )
+	to=$(echo $rule | cut -f2 -d\/)
 
 	cd $from
-	echo "Checking rule $rule"
-	packages=$(find -name Cargo.toml | xargs grep -wn "path.*$to")
+	echo "Checking rule '$rule'"
+	packages=$(find -name Cargo.toml | xargs grep -wn "path.*\.\.\/$to")
 	has_references=$(echo -n $packages | wc -c)
 	if [ "$has_references" != "0" ]; then
 		VIOLATIONS+=("$rule")
@@ -40,6 +45,20 @@ do
 		PACKAGES+=("$packages")
 	fi
 	cd - > /dev/null
+}
+
+for rule in "${MUST_NOT[@]}"
+do
+	check_rule "$rule";
+done
+
+# Only the MUST NOT will be counted towards failure
+HARD_VIOLATIONS=${#VIOLATIONS[@]}
+
+
+for rule in "${PLEASE_DONT[@]}"
+do
+	check_rule "$rule";
 done
 
 # Display violations and fail
@@ -58,4 +77,4 @@ EOF
 	I=$I+1
 done
 
-exit ${#VIOLATIONS[@]}
+exit $HARD_VIOLATIONS