diff --git a/polkadot/.gitlab-ci.yml b/polkadot/.gitlab-ci.yml
index a81ad449681032df469a760d3cb022e47f6b7b82..e175b10c8924eb7678e974acb9f9d5b1a959b7b3 100644
--- a/polkadot/.gitlab-ci.yml
+++ b/polkadot/.gitlab-ci.yml
@@ -80,6 +80,33 @@ variables:
 
 
 
+#### stage:                        test
+
+check-runtime:
+  stage:                           test
+  image:                           parity/tools:latest
+  <<:                              *kubernetes-env
+  only:
+    - /^[0-9]+$/
+  variables:
+    GITLAB_API:                    "https://gitlab.parity.io/api/v4"
+    GITHUB_API_PROJECT:            "parity%2Finfrastructure%2Fgithub-api"
+  script:
+    - ./scripts/gitlab/check_runtime.sh
+  allow_failure:                   true
+
+
+check-line-width:
+  stage:                           test
+  image:                           parity/tools:latest
+  <<:                              *kubernetes-env
+  only:
+    - /^[0-9]+$/
+  script:
+    - ./scripts/gitlab/check_line_width.sh
+  allow_failure:                   true
+
+
 
 
 test-linux-stable:                 &test
@@ -305,6 +332,7 @@ deploy-polkasync-kusama:
   variables:
     GITLAB_API:                    "https://gitlab.parity.io/api/v4"
     GITHUB_API_PROJECT:            "parity%2Finfrastructure%2Fparity-testnet"
+    GIT_STRATEGY:                  none
   allow_failure:                   true
   script:
     - |
diff --git a/polkadot/scripts/gitlab/check_line_width.sh b/polkadot/scripts/gitlab/check_line_width.sh
new file mode 100755
index 0000000000000000000000000000000000000000..f382d630b183c6396115cc1e76e77dfab4c20047
--- /dev/null
+++ b/polkadot/scripts/gitlab/check_line_width.sh
@@ -0,0 +1,52 @@
+#!/bin/sh
+#
+# check if line width of rust source files is not beyond x characters
+#
+
+
+BASE_BRANCH="origin/master"
+LINE_WIDTH="121"
+GOOD_LINE_WIDTH="101"
+
+
+git diff --name-only ${BASE_BRANCH}...${CI_COMMIT_SHA} \*.rs | ( while read file
+do
+  if [ ! -f ${file} ];
+  then
+	echo "Skipping removed file."
+  elif git diff ${BASE_BRANCH}...${CI_COMMIT_SHA} ${file} | grep -q "^+.\{${LINE_WIDTH}\}"
+  then
+    if [ -z "${FAIL}" ]
+    then
+      echo "| warning!"
+      echo "| Lines should not be longer than 120 characters."
+      echo "| "
+      echo "| see more https://wiki.parity.io/Substrate-Style-Guide"
+      echo "|"
+      FAIL="true"
+    fi
+    echo "| file: ${file}"
+    git diff ${BASE_BRANCH}...${CI_COMMIT_SHA} ${file} \
+      | grep -n "^+.\{${LINE_WIDTH}\}"
+    echo "|"
+  else
+    if git diff ${BASE_BRANCH}...${CI_COMMIT_SHA} ${file} | grep -q "^+.\{${GOOD_LINE_WIDTH}\}"
+    then
+      if [ -z "${FAIL}" ]
+      then
+        echo "| warning!"
+        echo "| Lines should be longer than 100 characters only in exceptional circumstances!"
+        echo "| "
+        echo "| see more https://wiki.parity.io/Substrate-Style-Guide"
+        echo "|"
+      fi
+      echo "| file: ${file}"
+      git diff ${BASE_BRANCH}...${CI_COMMIT_SHA} ${file} \
+        | grep -n "^+.\{${LINE_WIDTH}\}"
+      echo "|"
+    fi
+  fi
+done
+
+test -z "${FAIL}"
+)
diff --git a/polkadot/scripts/gitlab/check_runtime.sh b/polkadot/scripts/gitlab/check_runtime.sh
new file mode 100755
index 0000000000000000000000000000000000000000..fdba7941bdc7f6275284ab95e36198640b8d4d80
--- /dev/null
+++ b/polkadot/scripts/gitlab/check_runtime.sh
@@ -0,0 +1,117 @@
+#!/bin/sh
+#
+#
+# check for any changes in the node/src/runtime, srml/ and core/sr_* trees. if
+# there are any changes found, it should mark the PR breaksconsensus and
+# "auto-fail" the PR if there isn't a change in the runtime/src/lib.rs file 
+# that alters the version.
+
+set -e # fail on any error
+
+
+# give some context
+git log --graph --oneline --decorate=short -n 10
+
+
+VERSIONS_FILE="runtime/src/lib.rs"
+
+github_label () {
+	echo
+	echo "# run github-api job for labeling it ${1}"
+	curl -sS -X POST \
+		-F "token=${CI_JOB_TOKEN}" \
+		-F "ref=master" \
+		-F "variables[LABEL]=${1}" \
+		-F "variables[PRNO]=${CI_COMMIT_REF_NAME}" \
+		-F "variables[PROJECT]=paritytech/polkadot" \
+		${GITLAB_API}/projects/${GITHUB_API_PROJECT}/trigger/pipeline
+}
+
+
+
+
+# check if the wasm sources changed
+if ! git diff --name-only origin/master...${CI_COMMIT_SHA} \
+	| grep -q -e '^runtime/'
+then
+	cat <<-EOT
+	
+	no changes to the runtime source code detected
+
+	EOT
+
+	exit 0
+fi
+
+
+
+# check for spec_version updates: if the spec versions changed, then there is
+# consensus-critical logic that has changed. the runtime wasm blobs must be
+# rebuilt.
+
+add_spec_version="$(git diff origin/master...${CI_COMMIT_SHA} ${VERSIONS_FILE} \
+	| sed -n -r "s/^\+[[:space:]]+spec_version: +([0-9]+),$/\1/p")"
+sub_spec_version="$(git diff origin/master...${CI_COMMIT_SHA} ${VERSIONS_FILE} \
+	| sed -n -r "s/^\-[[:space:]]+spec_version: +([0-9]+),$/\1/p")"
+
+
+# see if the version and the binary blob changed
+if [ "${add_spec_version}" != "${sub_spec_version}" ]
+then
+
+	github_label "B2-breaksapi"
+
+	cat <<-EOT
+		
+		changes to the runtime sources and changes in the spec version.
+	
+		spec_version: ${sub_spec_version} -> ${add_spec_version}
+	
+	EOT
+	exit 0
+
+else
+	# check for impl_version updates: if only the impl versions changed, we assume
+	# there is no consensus-critical logic that has changed.
+
+	add_impl_version="$(git diff origin/master...${CI_COMMIT_SHA} ${VERSIONS_FILE} \
+		| sed -n -r 's/^\+[[:space:]]+impl_version: +([0-9]+),$/\1/p')"
+	sub_impl_version="$(git diff origin/master...${CI_COMMIT_SHA} ${VERSIONS_FILE} \
+		| sed -n -r 's/^\-[[:space:]]+impl_version: +([0-9]+),$/\1/p')"
+
+
+	# see if the impl version changed
+	if [ "${add_impl_version}" != "${sub_impl_version}" ]
+	then
+		cat <<-EOT
+		
+		changes to the runtime sources and changes in the impl version.
+
+		impl_version: ${sub_impl_version} -> ${add_impl_version}
+
+		EOT
+		exit 0
+	fi
+
+
+	cat <<-EOT
+
+	wasm source files changed but not the spec/impl version and the runtime
+	binary blob. If changes made do not alter logic, just bump 'impl_version'.
+	If they do change logic, bump 'spec_version' and rebuild wasm.
+
+	source file directories:
+	- runtime
+
+	versions file: ${VERSIONS_FILE}
+
+	EOT
+
+	# drop through into pushing `gotissues` and exit 1...
+fi
+
+# dropped through. there's something wrong;  exit 1.
+
+exit 1
+
+# vim: noexpandtab