diff --git a/consensus/tendermint/version.go b/consensus/tendermint/version.go
index 04dfcef7aebaf5d92543bd4bc6d0ba669ddd615e..870d1313bf43977a8976f0415d07f1aa5d1f2b2d 100644
--- a/consensus/tendermint/version.go
+++ b/consensus/tendermint/version.go
@@ -17,6 +17,10 @@
 package tendermint
 
 import (
+	"strconv"
+
+	tendermint_version "github.com/tendermint/tendermint/version"
+
 	version "github.com/eris-ltd/eris-db/version"
 )
 
@@ -24,14 +28,51 @@ const (
 	// Client identifier to advertise over the network
 	tendermintClientIdentifier = "tendermint"
 	// Major version component of the current release
-	tendermintVersionMajor = 0
+	tendermintVersionMajorConst uint8 = 0
 	// Minor version component of the current release
-	tendermintVersionMinor = 6
+	tendermintVersionMinorConst uint8 = 6
 	// Patch version component of the current release
-	tendermintVersionPatch = 0
+	tendermintVersionPatchConst uint8 = 0
+)
+
+var (
+	tendermintVersionMajor uint8
+	tendermintVersionMinor uint8
+	tendermintVersionPatch uint8
 )
 
+func init() {
+	// discard error because we test for this in Continuous Integration tests
+	tendermintVersionMajor, _ = getTendermintMajorVersionFromSource()
+	tendermintVersionMinor, _ = getTendermintMinorVersionFromSource()
+	tendermintVersionPatch, _ = getTendermintPatchVersionFromSource()
+}
+
 func GetTendermintVersion() *version.VersionIdentifier {
 	return version.New(tendermintClientIdentifier, tendermintVersionMajor,
 		tendermintVersionMinor, tendermintVersionPatch)
 }
+
+func getTendermintMajorVersionFromSource() (uint8, error) {
+	majorVersionUint, err := strconv.ParseUint(tendermint_version.Maj, 10, 8)
+	if err != nil {
+		return tendermintVersionMajorConst, err
+	}
+	return uint8(majorVersionUint), nil
+}
+
+func getTendermintMinorVersionFromSource() (uint8, error) {
+	minorVersionUint, err := strconv.ParseUint(tendermint_version.Min, 10, 8)
+	if err != nil {
+		return tendermintVersionMinorConst, err
+	}
+	return uint8(minorVersionUint), nil
+}
+
+func getTendermintPatchVersionFromSource() (uint8, error) {
+	patchVersionUint, err := strconv.ParseUint(tendermint_version.Fix, 10, 8)
+	if err != nil {
+		return tendermintVersionPatchConst, err
+	}
+	return uint8(patchVersionUint), nil
+}
diff --git a/consensus/tendermint/version_test.go b/consensus/tendermint/version_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..2896e8e55822431eace1599a10d6396930d20050
--- /dev/null
+++ b/consensus/tendermint/version_test.go
@@ -0,0 +1,58 @@
+// Copyright 2015, 2016 Eris Industries (UK) Ltd.
+// This file is part of Eris-RT
+
+// Eris-RT is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// Eris-RT is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with Eris-RT.  If not, see <http://www.gnu.org/licenses/>.
+
+package tendermint
+
+import (
+	"fmt"
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestMinorVersionTendermintEqual(t *testing.T) {
+	// assert explicitly on major and minor version number
+	assert.Equal(t, tendermintVersionMajorConst, tendermintVersionMajor,
+		fmt.Sprintf("Major version number for Tendermint consensus is not %v as expected: %v",
+		tendermintVersionMajorConst, tendermintVersionMajor))
+	assert.Equal(t, tendermintVersionMinorConst, tendermintVersionMinor,
+		fmt.Sprintf("Minor version number for Tendermint consensus is not %v as expected: %v",
+		tendermintVersionMinorConst, tendermintVersionMinor))
+	// assert patch number can not regress
+	if tendermintVersionPatchConst > tendermintVersionPatch {
+		t.Errorf("Patch version has regressed for Tendermint consensus: expected minimally %v, got %v",
+			tendermintVersionPatchConst, tendermintVersionPatch)
+		t.Fail()
+	}
+}
+
+func TestSemanticVersioningTendermint(t *testing.T) {
+	// assert that reading the semantic version from Tendermint vendored source
+	// succeeds without error; at runtime initialisation, on error we default
+	// to hard-coded semantic version
+	if _, err := getTendermintMajorVersionFromSource(); err != nil {
+		t.Errorf("Failed to read Major version from Tendermint source code: %s", err)
+		t.Fail()
+	}
+	if _, err := getTendermintMinorVersionFromSource(); err != nil {
+		t.Errorf("Failed to read Minor version from Tendermint source code: %s", err)
+		t.Fail()
+	}
+	if _, err := getTendermintPatchVersionFromSource(); err != nil {
+		t.Errorf("Failed to read Patch version from Tendermint source code: %s", err)
+		t.Fail()
+	}
+}
\ No newline at end of file
diff --git a/version/version.go b/version/version.go
index d6e52b9dc9acd7e0477ef2187f632be03b82472c..521120043705cac24a3090a269625717a411cb9f 100644
--- a/version/version.go
+++ b/version/version.go
@@ -125,11 +125,8 @@ func (version *VersionIdentifier) MatchesMinorVersion(
 }
 
 //------------------------------------------------------------------------------
-// Version number for DOCKER/build.sh
-
-// NOTE [ben]: deprecate public const version string
-const TENDERMINT_VERSION = "0.5.0"
+// Version number for tests/build_tool.sh
 
 // IMPORTANT: Eris-DB version must be on the last line of this file for
-// the deployment script DOCKER/build.sh to pick up the right label.
-const VERSION = "0.12.0-rc2"
+// the deployment script tests/build_tool.sh to pick up the right label.
+const VERSION = "0.12.0-rc3"
\ No newline at end of file