diff --git a/Makefile b/Makefile
index 079d82e..cb8ee1b 100644
--- a/Makefile
+++ b/Makefile
@@ -46,7 +46,8 @@
 
 # Other repos with documentation to include.
 # edit the `git_refs` file with the commit/tag/branch that you want to use
-OTHER_REPO_DOCS ?= bbsim cord-tester ofagent-go openolt voltctl voltha-openolt-adapter voltha-openonu-adapter-go voltha-protos voltha-system-tests device-management-interface voltha-helm-charts
+OTHER_REPO_DOCS ?= bbsim ofagent-go openolt voltctl voltha-openolt-adapter voltha-openonu-adapter-go voltha-protos device-management-interface voltha-helm-charts
+# Temporarily disabled: cord-tester voltha-system-tests
 
 ifdef NO_OTHER_REPO_DOCS
   # Inhibit pulling in external repos.
@@ -55,7 +56,7 @@
 endif
 
 # Static docs, built by other means (usually robot framework)
-STATIC_DOCS    := _static/voltha-system-tests _static/cord-tester
+# STATIC_DOCS    := _static/voltha-system-tests _static/cord-tester
 
 # Why is existing source Makefile PHONY (?)
 .PHONY: help test lint reload Makefile prep
@@ -72,7 +73,7 @@
 ## Usage:
 ##   make reload
 ## -----------------------------------------------------------------------
-reload: $(venv-activate-patched)
+reload: $(venv-activate-script)
 	$(activate) && sphinx-reload $(SOURCEDIR)
 
 ## -----------------------------------------------------------------------
@@ -82,8 +83,8 @@
 test: lint linkcheck
 
 # [TODO] relocate into repo:onf-make/
-lint      : $(venv-activate-patched)
-linkcheck : $(venv-activate-patched)
+lint      : $(venv-activate-script)
+linkcheck : $(venv-activate-script)
 
 ## -----------------------------------------------------------------------
 ## Intent: Exercise all generation targets
@@ -156,17 +157,17 @@
 	GIT_SUBDIR=`grep '^$@ ' git_refs | awk '{print $$2}'` ;\
 	cp -r repos/$(@)$$GIT_SUBDIR $@ ;\
 
-# Build Robot documentation in voltha-system-tests and copy it into _static.
-_static/voltha-system-tests: | $(OTHER_REPO_DOCS)
-	make -C voltha-system-tests gendocs
-	mkdir -p $@
-	cp -r voltha-system-tests/gendocs/* $@
-
-# Build Robot documentation in cord-tester and copy it into _static.
-_static/cord-tester: | $(OTHER_REPO_DOCS)
-	make -C cord-tester gendocs
-	mkdir -p $@
-	cp -r cord-tester/gendocs/* $@
+# # Build Robot documentation in voltha-system-tests and copy it into _static.
+# _static/voltha-system-tests: | $(OTHER_REPO_DOCS)
+# 	make -C voltha-system-tests gendocs
+# 	mkdir -p $@
+# 	cp -r voltha-system-tests/gendocs/* $@
+#
+# # Build Robot documentation in cord-tester and copy it into _static.
+# _static/cord-tester: | $(OTHER_REPO_DOCS)
+# 	make -C cord-tester gendocs
+# 	mkdir -p $@
+# 	cp -r cord-tester/gendocs/* $@
 
 ## -----------------------------------------------------------------------
 ## Intent: generate a list of git checksums suitable for updating git_refs
@@ -183,7 +184,7 @@
 ## -----------------------------------------------------------------------
 ## Intent: build multiple versions
 ## -----------------------------------------------------------------------
-multiversion: $(venv-activate-patched) Makefile | prep $(OTHER_REPO_DOCS)
+multiversion: $(venv-activate-script) Makefile | prep $(OTHER_REPO_DOCS)
 	$(activate)\
  && sphinx-multiversion "$(SOURCEDIR)" "$(BUILDDIR)/multiversion" $(SPHINXOPTS)
 	cp "$(SOURCEDIR)/_templates/meta_refresh.html" "$(BUILDDIR)/multiversion/index.html"
@@ -200,7 +201,7 @@
 ## -----------------------------------------------------------------------
 include $(ONF_MAKEDIR)/voltha/docs-catchall-targets.mk
 voltha-docs-catchall : $(voltha-docs-catchall)
-$(voltha-docs-catchall): $(venv-activate-patched) Makefile | $(OTHER_REPO_DOCS) $(STATIC_DOCS)
+$(voltha-docs-catchall): $(venv-activate-script) Makefile | $(OTHER_REPO_DOCS) $(STATIC_DOCS)
 	@echo " ** CATCHALL: $@"
 	$(activate)\
  && $(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
@@ -208,7 +209,7 @@
 ## -----------------------------------------------------------------------
 ## Intent: Display makefile target help
 ## -----------------------------------------------------------------------
-help-targets-sphinx : $(venv-activate-patched)
+help-targets-sphinx : $(venv-activate-script)
 	@ echo
 	@echo '[HELP: Sphinx]'
 	$(HIDE)$(activate) \
diff --git a/VERSION b/VERSION
index f9595dd..f208b0d 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.12.44
+2.12.45
diff --git a/makefiles-orig/virtualenv.mk b/makefiles-orig/virtualenv.mk
index aa24172..44939c9 100644
--- a/makefiles-orig/virtualenv.mk
+++ b/makefiles-orig/virtualenv.mk
@@ -65,7 +65,6 @@
 venv-activate-patched : $(venv-activate-patched)
 $(venv-activate-patched) : $(venv-activate-script)
 	$(call banner-enter,Target $@)
-	$(onf-mk-top)/../patches/python_310_migration.sh
 	touch $@
 	$(call banner-leave,Target $@)
 
diff --git a/patches/README.md b/patches/README.md
deleted file mode 100644
index 6019c05..0000000
--- a/patches/README.md
+++ /dev/null
@@ -1,64 +0,0 @@
-# Migration support for python 3.10+
-
-## Intent
-
-Applications of patches will enable local use of newer python versions
-available with a recent OS install or package manager installation.
-Makefile targets will fail out of the box w/o modifying collection imports.
-
-Create new patches as needed to help testing along.
-Eventually this hierarchy can be dismantled once the latest interpreter
-is generally in use.
-
-## patches/
-
-This directory contains patch files that can be directly applied to sources
-in the python virtualenv directory.  Patches are created to support use of
-three python version variants for the robot ramework:
-    python 2x       (deprecated)
-    python >= 3.10  (collections.abc required)
-    python < 3.10   (collections.abc optional)
-
-
-# vst_venv/
-
-Makefile will first create a python virtualenv directory to selectively
-use packages.  After setup patches are applied to venv (as a transition)
-to fully enable support for local interpreter use for newer OS installs.
-
-
-# staging/
-
-The staging directory is used for comparison with the vst_venv directory
-to generate patches.  Populate the directory with a copy of a cleanly
-patched virtual interpreter then modify files benath/ staging to generate
-a patch from.
-
-% make sterile
-% make vst_venv
-% mkdir staging
-% rsync -rv --checksum vst_venv/. staging/.
-[NOTE] Make python 3.10+ migration edits beneath staging as needed
-% make patch-gather
-% make sterile
-% make lint
-
-
-# makefile targets
-
-make patch-gather:
-   * gather a list of potential sources to edit.
-
-make patch-apply:
-   * Gather a list of patch files.
-   * Apply each in turn to sources in the virtualenv directory.
-
-make patch-create:
-   * make patch-create VENV_NAME="venv_docs" PATCH_PATH="lib/python3.10/site-packages/sphinx/util/typing.py"
-   * make sterile
-   * make help     # reinstall virtualenv and verify help target
-
-# Verify installation
-   * make lint -or- make test
-
-# [EOF]
\ No newline at end of file
diff --git a/patches/lib/python3.10/site-packages/robot/utils/normalizing.py/patch b/patches/lib/python3.10/site-packages/robot/utils/normalizing.py/patch
deleted file mode 100644
index ae8619a..0000000
--- a/patches/lib/python3.10/site-packages/robot/utils/normalizing.py/patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- vault/lib/python3.10/site-packages/robot/utils/normalizing.py	2022-11-26 06:59:47.438751606 -0500
-+++ .venv/lib/python3.10/site-packages/robot/utils/normalizing.py	2022-11-26 06:57:29.960476182 -0500
-@@ -13,10 +13,7 @@
- #  See the License for the specific language governing permissions and
- #  limitations under the License.
- 
--try: # python >= 3.10
--    from collections.abc import MutableMapping
--except ImportError: # python 2x
--    from collections import MutableMapping
-+from collections import MutableMapping
- 
- from .platform import IRONPYTHON, PY_VERSION, PY3
- from .robottypes import is_dict_like, is_unicode
diff --git a/patches/lib/python3.10/site-packages/robot/utils/robottypes3.py/patch b/patches/lib/python3.10/site-packages/robot/utils/robottypes3.py/patch
deleted file mode 100644
index d1aa540..0000000
--- a/patches/lib/python3.10/site-packages/robot/utils/robottypes3.py/patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- vault/lib/python3.10/site-packages/robot/utils/robottypes3.py	2022-11-26 07:00:17.126386733 -0500
-+++ .venv/lib/python3.10/site-packages/robot/utils/robottypes3.py	2022-11-26 06:57:29.956476232 -0500
-@@ -13,12 +13,7 @@
- #  See the License for the specific language governing permissions and
- #  limitations under the License.
- 
--try: # python >= 3.10
--    from collections.abc import Mapping
--    from collections     import UserString
--except ImportError: # python 2x
--    from collections import Mapping, UserString
--
-+from collections import Mapping, UserString
- from io import IOBase
- 
- from .platform import RERAISED_EXCEPTIONS
diff --git a/patches/lib/python3.10/site-packages/sphinx/util/typing.py/patch b/patches/lib/python3.10/site-packages/sphinx/util/typing.py/patch
deleted file mode 100644
index da24cd5..0000000
--- a/patches/lib/python3.10/site-packages/sphinx/util/typing.py/patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- staging/lib/python3.10/site-packages/sphinx/util/typing.py	2023-09-14 16:25:24.179214865 -0400
-+++ .venv/lib/python3.10/site-packages/sphinx/util/typing.py	2023-09-14 16:22:16.545588690 -0400
-@@ -34,14 +34,7 @@
-             return ref._eval_type(globalns, localns)
- 
- if sys.version_info > (3, 10):
--
--    try: # ver >= 3.10.12
--        from typing import Union as types_Union
--    except ImportError:
--        try: # ver >= 3.10.6
--            from types import Union as types_Union
--        except ImportError:
--            types_Union = None
-+    from types import Union as types_Union
- else:
-     types_Union = None
- 
diff --git a/patches/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py/patch b/patches/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py/patch
deleted file mode 100644
index 3fda183..0000000
--- a/patches/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py/patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- staging/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py	2022-12-02 18:47:40.050490678 -0500
-+++ venv_docs/lib/python3.10/site-packages/sphinxcontrib/openapi/utils.py	2022-12-02 18:45:53.023832002 -0500
-@@ -10,12 +10,7 @@
- 
- from __future__ import unicode_literals
- 
--try:
--    import collections.abc
--    from collections.abc import Mapping
--except ImportError: # fall through
--    import collections
--    from collections import Mapping
-+import collections
- 
- import jsonschema
- try:
-@@ -40,10 +35,10 @@
-     resolver = jsonschema.RefResolver(uri, spec)
- 
-     def _do_resolve(node):
--        if isinstance(node, Mapping) and '$ref' in node:
-+        if isinstance(node, collections.Mapping) and '$ref' in node:
-             with resolver.resolving(node['$ref']) as resolved:
-                 return resolved
--        elif isinstance(node, Mapping):
-+        elif isinstance(node, collections.Mapping):
-             for k, v in node.items():
-                 node[k] = _do_resolve(v)
-         elif isinstance(node, (list, tuple)):
diff --git a/patches/python_310_migration.sh b/patches/python_310_migration.sh
deleted file mode 100755
index 8ce4d5f..0000000
--- a/patches/python_310_migration.sh
+++ /dev/null
@@ -1,113 +0,0 @@
-#!/bin/bash
-# -----------------------------------------------------------------------
-# 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.
-# 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.
-# -----------------------------------------------------------------------
-
-##-------------------##
-##---]  GLOBALS  [---##
-##-------------------##
-set -euo pipefail
-
-## -----------------------------------------------------------------------
-## Intent: Display script documentation.
-## -----------------------------------------------------------------------
-function show_help()
-{
-    cat <<EOH
-Usage: $0
-  apply    Patch virtualenv python modules by version (3.10+).
-  backup   Create a tarball for work-in-progress.
-  gather   Display a list of potential source files to patch.
-
-  --venv   Installed venv directory to patch (override default)
-  --help   This message
-
-See Also
-  patches/README.md       Howto create a patch file.
-
-EOH
-    exit 0
-}
-
-##----------------##
-##---]  MAIN  [---##
-##----------------##
-declare dst='.venv'  # "vst_venv"
-declare src="staging"
-declare pat="patches"
-
-## -----------------------
-## Slurp available patches
-## -----------------------
-pushd "$pat" >/dev/null
-readarray -t fyls < <(find . -name 'patch' -print)
-popd         >/dev/null
-
-if [ $# -eq 0 ]; then set -- apply; fi
-
-while [ $# -gt 0 ]; do
-    opt="$1"; shift
-    case "$opt" in
-
-	-*help) show_help ;;
-	-*venv) dst="$1"; shift ;;
-
-	apply)
-	    pushd "$dst" >/dev/null || { echo "pushd $dst failed"; exit 1; }
-	    for fyl in "${fyls[@]}";
-	    do
-		path="${fyl%/*}"
-
-		# Conditional install, jenkins may not support interpreter yet.
-		if [ ! -e "$path" ]; then
-		    echo "[SKIP] $path"
-		    continue
-		fi
-		
-		echo "[APPLY] $path"
-		patch -R -p1 < "../$pat/${path}/patch"
-	    done
-	    popd >/dev/null || { echo "popd $dst failed"; exit 1; }
-	    ;;
-
-	backup)
-	    mkdir ~/backups
-	    pushd "$src" || { echo "pushd $dst failed"; exit 1; }
-	    tar czvf ~/backups/vault."$(date '+%Y%m%d%H%M%S')" "${fyls[@]}"
-	    popd || { echo "popd $dst failed"; exit 1; }
-	    ;;
-
-	gather)
-	    for fyl in "${fyls[@]}";
-	    do
-		patchDir="$pat/$fyl"
-		mkdir -p "$patchDir"
-		diff -Naur "$src/$fyl" "$dst/$fyl" | tee "$pat/$fyl/patch"
-	    done
-	    find "$pat" -print
-	    ;;
-
-	help) show_help ;;
-
-	*)
-	    echo "ERROR: Unknown action [$opt]"
-	    exit 1
-	    ;;
-    esac
-
-    echo
-done
-
-# [EOF]
diff --git a/requirements.txt b/requirements.txt
index ec3428f..5838cbc 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -19,17 +19,15 @@
 # -----------------------------------------------------------------------
 
 
-Sphinx~=4.1.2         # 2021-07-26
-doc8~=0.9.0
-docutils==0.16
-recommonmark~=0.6.0
-sphinx-rtd-theme~=0.5.2
-sphinxcontrib-openapi~=0.6.0
-sphinxcontrib-spelling~=7.2.1
-git+https://github.com/zdw/sphinx-multiversion@ec7c01cdaf2f9241245e84483dfb9bc0d0dffc62
-
-#
-sphinx-reload
+Sphinx~=8.1.3
+recommonmark~=0.7.1
+doc8~=1.1.2
+docutils~=0.21.2
+sphinx-multiversion~=0.2.4
+sphinx-reload~=0.2.0
+sphinx-rtd-theme~=3.0.2
+sphinxcontrib-openapi~=0.8.4
+sphinxcontrib-spelling~=8.0.1
 
 ##----------------##
 ##---]  LINT  [---##
