diff --git a/.gitignore b/.gitignore
index 692a994..acc0e85 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,7 +2,7 @@
 tests
 /voltctl
 voltctl.cp
-release
+/release
 *.log
 sca-report
 .idea/
diff --git a/Makefile b/Makefile
index 32e9283..a8c4483 100644
--- a/Makefile
+++ b/Makefile
@@ -22,12 +22,16 @@
 TOP         ?= .
 MAKEDIR     ?= $(TOP)/makefiles
 
+quoted = $(quote-single)$(1)$(quote-single)
+
 $(if $(VERBOSE),$(eval export VERBOSE=$(VERBOSE))) # visible to include(s)
 
 ##--------------------##
 ##---]  INCLUDES  [---##
 ##--------------------##
 include $(MAKEDIR)/include.mk
+include $(MAKEDIR)/release/include.mk
+
 ifdef LOCAL_LINT
   include $(MAKEDIR)/lint/golang/sca.mk
 endif
@@ -35,7 +39,6 @@
 ## Are lint-style and lint-sanity targets defined in docker ?
 help ::
 	@echo
-	@echo "release      - build binaries using cross compliing for the support architectures"
 	@echo "build        - build the binary as a local executable"
 	@echo "install      - build and install the binary into \$$GOPATH/bin"
 	@echo "run          - runs voltctl using the command specified as \$$CMD"
@@ -48,7 +51,7 @@
 	@echo "check        - runs targets that should be run before a commit"
 	@echo "clean        - remove temporary and generated files"
 
-SHELL=bash -e -o pipefail
+# SHELL=bash -e -o pipefail
 
 VERSION=$(shell cat ./VERSION)
 GITCOMMIT=$(shell git rev-parse HEAD)
@@ -85,11 +88,14 @@
 # tool containers
 VOLTHA_TOOLS_VERSION ?= 2.4.0
 
-GO                = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golang go
-GO_SH             = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golang sh -c
-GO_JUNIT_REPORT   = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/appecho  -i voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-go-junit-report go-junit-report
-GOCOVER_COBERTURA = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app -i voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-gocover-cobertura gocover-cobertura
-GOLANGCI_LINT     = docker run --rm --user $$(id -u):$$(id -g) -v ${CURDIR}:/app $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg -e GOGC=10 voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golangci-lint golangci-lint
+docker-run = docker run --rm --user $$(id -u):$$(id -g)#     # Docker command stem
+docker-run-app = $(docker-run) -v ${CURDIR}:/app#            # w/filesystem mount
+
+GO                = $(docker-run-app) $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golang go
+GO_SH             = $(docker-run-app) $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golang sh -c
+GO_JUNIT_REPORT   = $(docker-run) -v ${CURDIR}:/appecho  -i voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-go-junit-report go-junit-report
+GOCOVER_COBERTURA = $(docker-run-app) -i voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-gocover-cobertura gocover-cobertura
+GOLANGCI_LINT     = $(docker-run-app) $(shell test -t 0 && echo "-it") -v gocache:/.cache -v gocache-${VOLTHA_TOOLS_VERSION}:/go/pkg -e GOGC=10 voltha/voltha-ci-tools:${VOLTHA_TOOLS_VERSION}-golangci-lint golangci-lint
 
 ## -----------------------------------------------------------------------
 ## Why is docker an implicit dependency for "make lint" (?)
@@ -107,33 +113,42 @@
   GOLANGCI_LINT := golangci-lint
 endif
 
-release:
-	@mkdir -p $(RELEASE_DIR)
-	@${GO_SH} ' \
-	  set -e -o pipefail; \
-	  for x in ${RELEASE_OS_ARCH}; do \
-	    OUT_PATH="$(RELEASE_DIR)/$(RELEASE_NAME)-$(subst -dev,_dev,$(VERSION))-$$x"; \
-	    echo "$$OUT_PATH"; \
-	    GOOS=$${x%-*} GOARCH=$${x#*-} go build -mod=vendor -v $(LDFLAGS) -o "$$OUT_PATH" cmd/voltctl/voltctl.go; \
-	  done'
+## -----------------------------------------------------------------------
+## Intent: Cross-compile binaries for release
+## -----------------------------------------------------------------------
+release: release-build
 
+## -----------------------------------------------------------------------
 ## Local Development Helpers
+## -----------------------------------------------------------------------
 local-lib-go:
 ifdef LOCAL_LIB_GO
-	rm -rf vendor/github.com/opencord/voltha-lib-go/v7/pkg
+	$(RM) -r vendor/github.com/opencord/voltha-lib-go/v7/pkg
 	mkdir -p vendor/github.com/opencord/voltha-lib-go/v7/pkg
 	cp -r ${LOCAL_LIB_GO}/pkg/* vendor/github.com/opencord/voltha-lib-go/v7/pkg/
 endif
 
+## -----------------------------------------------------------------------
+## Itent:
+## -----------------------------------------------------------------------
 build: local-lib-go
 	go build -mod=vendor $(LDFLAGS) cmd/voltctl/voltctl.go
 
+## -----------------------------------------------------------------------
+## Itent:
+## -----------------------------------------------------------------------
 install:
 	go install -mod=vendor $(LDFLAGS) cmd/voltctl/voltctl.go
 
+## -----------------------------------------------------------------------
+## Itent:
+## -----------------------------------------------------------------------
 run:
 	go run -mod=vendor $(LDFLAGS) cmd/voltctl/voltctl.go $(CMD)
 
+## -----------------------------------------------------------------------
+## Itent:
+## -----------------------------------------------------------------------
 lint-mod:
 	@echo "Running dependency check..."
 	@$(GO) mod verify
@@ -176,25 +191,31 @@
 	${GOCOVER_COBERTURA} < ./tests/results/go-test-coverage.out > ./tests/results/go-test-coverage.xml ;\
 	exit $$RETURN
 
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
 view-coverage:
 	go tool cover -html ./tests/results/go-test-coverage.out
 
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
 check: lint sca test
 
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
 mod-update:
 	$(GO) mod tidy
 	$(GO) mod vendor
 
 ## ---------------------------------------------------------
 ## ---------------------------------------------------------
-clean:
-	$(RM) -r voltctl voltctl.cp release sca-report
+clean ::
+	$(RM) -r voltctl voltctl.cp sca-report
 
 ## ---------------------------------------------------------
 ## This belongs in a library makefile: makefiles/go/clean.mk
 ## ---------------------------------------------------------
 go-clean-cache += -cache
-go-clean-cache += -fuzzcache
+# go-clean-cache += -fuzzcache
 go-clean-cache += -modcache
 go-clean-cache += -testcache
 
diff --git a/makefiles/consts.mk b/makefiles/consts.mk
index 8d8270d..5f04e23 100644
--- a/makefiles/consts.mk
+++ b/makefiles/consts.mk
@@ -1,6 +1,6 @@
 # -*- makefile -*-
 # -----------------------------------------------------------------------
-# Copyright 2022 Open Networking Foundation (ONF) and the ONF Contributors
+# Copyright 2022-2023 Open Networking Foundation (ONF) and the ONF Contributors
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -14,18 +14,41 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-# SPDX-FileCopyrightText: 2022 Open Networking Foundation (ONF) and the ONF Contributors
+# SPDX-FileCopyrightText: 2022-2023 Open Networking Foundation (ONF) and the ONF Contributors
 # SPDX-License-Identifier: Apache-2.0
 # -----------------------------------------------------------------------
+# ONF.makefile.version = 1.0
+# -----------------------------------------------------------------------
 
-null        :=#
-space       := $(null) $(null)
-dot         ?= .
+$(if $(DEBUG),$(warning ENTER))
 
+# include makefiles/constants.mk
+export dot          :=.
+export null         :=#
+export space        := $(null) $(null)
+export quote-single := $(null)"$(null)# colorization-closing-quote(")
+export quote-double := $(null)'$(null)# colorization-closing-quote(')
+
+# [DEBUG] make {target} HIDE=
 HIDE        ?= @
-# SHELL       := bash -e -o pipefail
 
-env-clean   = /usr/bin/env --ignore-environment
+env-clean      ?= /usr/bin/env --ignore-environment
+xargs-n1       := xargs -0 -t -n1 --no-run-if-empty
+xargs-n1-clean := $(env-clean) $(xargs-n1)
 
+## -----------------------------------------------------------------------
+## Default shell:
+##   o set -e            enable error checking
+##   o set -u            report undefined errors
+##   o set -o pipefail   propogate shell pipeline failures.
+## -----------------------------------------------------------------------
+SHELL ?= /bin/bash
+have-shell-bash := $(filter bash,$(subst /,$(space),$(SHELL)))
+$(if $(have-shell-bash),$(null),\
+  $(eval export SHELL := bash -euo pipefail))
+
+export SHELL ?= bash -euo pipefail
+
+$(if $(DEBUG),$(warning LEAVE))
 
 # [EOF]
diff --git a/makefiles/release/include.mk b/makefiles/release/include.mk
new file mode 100644
index 0000000..4ee1f1a
--- /dev/null
+++ b/makefiles/release/include.mk
@@ -0,0 +1,38 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2023 Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+# SPDX-FileCopyrightText: 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+## -----------------------------------------------------------------------
+## Intent: Dispaly a help section for release targets
+## -----------------------------------------------------------------------
+help::
+	@echo
+	@echo '[RELEASE]'
+	@echo "  release             Build then publish binaries to github/release"
+
+##--------------------##
+##---]  INCLUDES  [---##
+##--------------------##
+include $(MAKEDIR)/release/release-build.mk
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# [EOF]
diff --git a/makefiles/release/release-build.mk b/makefiles/release/release-build.mk
new file mode 100644
index 0000000..4a2bd3f
--- /dev/null
+++ b/makefiles/release/release-build.mk
@@ -0,0 +1,72 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2019-2023 Open Networking Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+## -----------------------------------------------------------------------
+## Intent:
+##   o Generate volctl binaries in a docker container container
+##   o Copy container:/apps/release to localhost:{pwd}/release
+## -----------------------------------------------------------------------
+## [TODO] Replace ${GO_SH} $(single-quote) ..   with $(call quoted,cmd-text)
+## -----------------------------------------------------------------------
+release-build :
+
+	@echo 
+	@echo "** -----------------------------------------------------------------------"
+	@echo "** $(MAKE): processing target [$@]"
+	@echo "** Sandbox: $(shell /bin/pwd)"
+	@echo "** -----------------------------------------------------------------------"
+
+	@echo -e "\n** golang attributes"
+	$(HIDE)${GO_SH} $(call quoted,which$(space)-a$(space)go)
+	$(HIDE)${GO_SH} $(call quoted,go$(space)version)
+
+	@echo -e "\n** Create filesystem target for docker volume: $(RELEASE_DIR)"
+	$(RM) -r "./$(RELEASE_DIR)"
+	mkdir -vp "$(RELEASE_DIR)"
+
+	@echo
+	@echo '** Docker builds bins into mounted filesystem:'
+	@echo '**   container:/app/relase'
+	@echo '**   localhost:{pwd}/release'
+	@${GO_SH} $(single-quote) \
+	  set -e -o pipefail; \
+	  for x in ${RELEASE_OS_ARCH}; do \
+	    OUT_PATH="$(RELEASE_DIR)/$(RELEASE_NAME)-$(subst -dev,_dev,$(VERSION))-$$x"; \
+	    echo "$$OUT_PATH"; \
+	    GOOS=$${x%-*} GOARCH=$${x#*-} go build -mod=vendor -v $(LDFLAGS) -o "$$OUT_PATH" cmd/voltctl/voltctl.go; \
+	done \
+$(single-quote)
+
+	@echo
+	@echo '** Post-build, files to release'
+	$(HIDE)find "$(RELEASE_DIR)" ! -type d -print
+
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+clean ::
+	$(RM) -r "./$(RELEASE_DIR)"
+
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+help ::
+	@echo '  release-build       Cross-compile binaries into a docker mounted filesystem'
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# [EOF]
