diff --git a/.gitignore b/.gitignore
index 22ac932..8a1cfba 100755
--- a/.gitignore
+++ b/.gitignore
@@ -1,14 +1,9 @@
-*~
-*\#*
-
-logs/
-
 # python related
 *.pyc
 *.egg-info
 dist
 build
-.venv/
+.venv
 .tox
 
 # go related
diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 0b23d6f..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "lf/onf-make"]
-	path = lf/onf-make
-	url = https://gerrit.opencord.org/onf-make
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
index ee6a665..3accce7 100644
--- a/.pre-commit-config.yaml
+++ b/.pre-commit-config.yaml
@@ -3,10 +3,6 @@
 # -----------------------------------------------------------------------
 # [NOTE] - Propogate .pre-commit-config.yaml edits to all repositories!
 # -----------------------------------------------------------------------
-# [NOTE] - Common config file source lives in repo:onf-make
-#    - https://gerrit.opencord.org/plugins/gitiles/
-#            onf-make/+/refs/heads/master/.pre-commit-config.yaml
-# -----------------------------------------------------------------------
 # [TODO]
 #    - pre-commit yaml config exists individually within repositories.
 #    - Generally lint config and benavior is consistent for all repos.
@@ -35,10 +31,10 @@
 # See https://pre-commit.com for more information
 # See https://pre-commit.com/hooks.html for more hooks
 # -----------------------------------------------------------------------
-# .pre-commit-config-yaml v0.7 (2024-06-13)
+# .pre-commit-config-yaml 2024-04-19 v0.4
 # -----------------------------------------------------------------------
 
-# ci:
+#ci:
 #  autofix_commit_msg: "Chore: pre-commit autoupdate"
 ##  skip: [sync]
 #  skip:
@@ -49,6 +45,7 @@
 
 repos:
   - repo: https://github.com/pre-commit/pre-commit-hooks
+#    rev: c4a0b883114b00d8d76b479c820ce7950211c99b  # frozen: v4.5.0
     rev: v4.5.0
     hooks:
       - id: trailing-whitespace
@@ -58,10 +55,10 @@
       - id: check-merge-conflict
       - id: check-xml
       - id: check-yaml
-      # - id: debug-statements
+#      - id: debug-statements
       - id: end-of-file-fixer
       - id: fix-encoding-pragma
-      # - id: double-quote-string-fixer
+#     - id: double-quote-string-fixer
       - id: requirements-txt-fixer
       - id: mixed-line-ending
         args: ['--fix=lf']
@@ -81,9 +78,9 @@
     hooks:
       - id: yamllint
 
-  ## -----------------------------------------------------------------------
-  ## [SOURCE] Documentation
-  ## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+## [SOURCE] Documentation
+## -----------------------------------------------------------------------
   - repo: https://github.com/rstcheck/rstcheck
     rev: v6.2.1
     hooks:
@@ -93,70 +90,61 @@
     rev: v0.13.0
     hooks:
       - id: markdownlint
-      # - id: markdownlint_docker
+#      - id: markdownlint_docker
 
-  ## -----------------------------------------------------------------------
-  ## [SOURCE] Docker
-  ## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+## [SOURCE] Docker
+## -----------------------------------------------------------------------
   - repo: https://github.com/hadolint/hadolint
     rev: v2.12.0
     hooks:
-      # - id: hadolint       # local tool install
-      - id: hadolint-docker
+      - id: hadolint
+#      - id: hadolint-docker
 
-  ## -----------------------------------------------------------------------
-  ## [SOURCE] Golang
-  ## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+## [SOURCE] Golang
+## -----------------------------------------------------------------------
   - repo: https://github.com/golangci/golangci-lint
     rev: v1.41.1
     hooks:
       - id: golangci-lint
 
-  ## -----------------------------------------------------------------------
-  ## [SOURCE] REUSE License Checking
-  ## -----------------------------------------------------------------------
-  ## tox -e [style,py,py-coverage,doc]
-  ## -----------------------------------------------------------------------
-  - repo: https://github.com/fsfe/reuse-tool
-    rev: v3.0.2
-    hooks:
-      - id: reuse
+## -----------------------------------------------------------------------
+## [SOURCE] REUSE License Checking
+## -----------------------------------------------------------------------
+#  - repo: https://github.com/fsfe/reuse-tool
+#    rev: v3.0.2
+#    hooks:
+#      - id: reuse
+#     - id: add-license-headers
+#
+# - repo: https://github.com/ansys/pre-commit-hooks
+#   rev: v0.2.9
+#   hooks:
+#     - id: add-license-headers
+#   args:
+# - --custom_copyright=custom copyright phrase
+# - --custom_template=template_name
+# - --custom_license=license_name
+# - --ignore_license_check
+# - --start_year=2023
 
-  - repo: https://github.com/ansys/pre-commit-hooks
-    rev: v0.2.9
-    hooks:
-      - id: add-license-headers
-    args:
-      - --custom_copyright=Open Networking Foundation Contributors
-      - --custom_template=open_networking_foundation
-      - --custom_license=Apache-2.0
-      # - --ignore_license_check
-      - --start_year=2019
-
-  ## -----------------------------------------------------------------------
-  ## [SOURCE] Python
-  ## -----------------------------------------------------------------------
-  - repo: https://github.com/psf/black
-    rev: 22.10.0
-    hooks:
-      - id: black
+## -----------------------------------------------------------------------
+## [SOURCE] Python
+## -----------------------------------------------------------------------
+# - repo: https://github.com/psf/black
+#   rev: 22.10.0
+#   hooks:
+#     - id: black
 
 # - repo: https://github.com/PyCQA/doc8
-  # rev: v1.1.1
-  # hooks:
-  # - id: doc8
+#   rev: v1.1.1
+#   hooks:
+#     - id: doc8
 
-  ## -----------------------------------------------------------------------
-  ## [SOURCE] Spelling
-  ## -----------------------------------------------------------------------
-  - repo: https://github.com/codespell-project/codespell
-    rev: v2.2.4
-    hooks:
-      - id: codespell
-
-  ## -----------------------------------------------------------------------
-  ## [SOURCE] Testing
-  ## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+## [SOURCE] Testing
+## -----------------------------------------------------------------------
   - repo: https://github.com/MarketSquare/robotframework-tidy
     rev: 4.11.0
     hooks:
@@ -164,24 +152,12 @@
 
 # -------------------------------------------------------------------
 # https://docs.python.org/3/library/re.html#regular-expression-syntax
-# https://pre-commit.com/#top_level-exclude
-# -------------------------------------------------------------------
-# [TODO] add file patterns per-repository:
-#   .gitignore: *~ *\#*
-# -------------------------------------------------------------------
-# [TODO]
-#   o Remove vendor/ post copyright cleanup
-#   o https://pre-commit.com/#filtering-files-with-types
 # -------------------------------------------------------------------
 exclude: |
     (?x)^(
-        ^VERSION                      |
-        ^makefiles/.*                 |
-        ^lf/.*                        |
-        ^.venv/.*                     |
-        ^.vendor/.*                   |
-        ^______FIX_BELOW_______       |
-        ^vendor/                      |
+        ^makefiles/.*       |
+        ^lf/.*              |
+        ^.venv/.*           |
         ^ignore-end-of-exclude-marker
     )$
 
diff --git a/.reuse/dep5 b/.reuse/dep5
deleted file mode 100644
index d22d32d..0000000
--- a/.reuse/dep5
+++ /dev/null
@@ -1,12 +0,0 @@
-Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Upstream-Name: onf-make
-Upstream-Contact: Open Networking Foundation <info@opennetworking.org>
-Source: https://gerrit.opencord.org/onf-make
-
-#Files:
-#     makefiles/virtualenv/patches/*
-#    makefiles/lint/groovy/.groovylintrc.json
-
-# Copyright: The Linux Foundation
-Copyright: Open Networking Foundation Contributors
-License: Apache-2.0
diff --git a/.reuse/templates/open_networking_foundation.jinja2 b/.reuse/templates/open_networking_foundation.jinja2
deleted file mode 100644
index ad566b8..0000000
--- a/.reuse/templates/open_networking_foundation.jinja2
+++ /dev/null
@@ -1,32 +0,0 @@
-{% if date.start and date.end %}
-
-  {% if date.start eq date.end %}
-    {% set date.range = {{ date.end } %}
-  {% else
-    {% set date.range = {{ date.start }}-{{ date.end } %}
-  {% endif %}
-
-% else %}
-    {% set date.range = {{ date.end }
-{% endif %}
-
-{% set copyright = {{ date.range }} Open Networking Foundation Contributors %}
-
-# -----------------------------------------------------------------------
-# Copyright {{ copyright }}
-#
-# 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: {{ copyright }}
-# SPDX-License-Identifier: Apache-2.0
-# ----------------------------------------------------------------------
diff --git a/.reuse/templates/urls b/.reuse/templates/urls
deleted file mode 100644
index 915cd9c..0000000
--- a/.reuse/templates/urls
+++ /dev/null
@@ -1 +0,0 @@
-https://jinja.palletsprojects.com/en/2.10.x/templates/
\ No newline at end of file
diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt
deleted file mode 100644
index 137069b..0000000
--- a/LICENSES/Apache-2.0.txt
+++ /dev/null
@@ -1,73 +0,0 @@
-Apache License
-Version 2.0, January 2004
-http://www.apache.org/licenses/
-
-TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-1. Definitions.
-
-"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.
-
-"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.
-
-"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.
-
-"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.
-
-"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.
-
-"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.
-
-"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).
-
-"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.
-
-"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."
-
-"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.
-
-2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.
-
-3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.
-
-4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:
-
-     (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and
-
-     (b) You must cause any modified files to carry prominent notices stating that You changed the files; and
-
-     (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and
-
-     (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
-
-     You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.
-
-5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
-
-6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.
-
-7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.
-
-8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.
-
-9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.
-
-END OF TERMS AND CONDITIONS
-
-APPENDIX: How to apply the Apache License to your work.
-
-To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!)  The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.
-
-Copyright [yyyy] [name of copyright owner]
-
-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.
diff --git a/Makefile b/Makefile
index fa6ca53..5cbd2b9 100755
--- a/Makefile
+++ b/Makefile
@@ -15,28 +15,16 @@
 # limitations under the License.
 # -----------------------------------------------------------------------
 
-$(if $(DEBUG),$(warning ENTER))
-
 .PHONY: test
-.DEFAULT_GOAL   := test
-MAKECMDGOALS    ?= test
+.DEFAULT_GOAL := test
 
 ##-------------------##
 ##---]  GLOBALS  [---##
 ##-------------------##
-$(if $(findstring joey,$(USER)),\
-   $(eval USE_LF_MK := 1)) # special snowflake
+TOP         ?= .
+MAKEDIR     ?= $(TOP)/makefiles
 
-##--------------------##
-##---]  INCLUDES  [---##
-##--------------------##
-ifdef USE_LF_MK
-  include lf/include.mk
-else
-  include lf/transition.mk
-  include $(legacy-mk)/include.mk
-endif # ifdef USE_LF_MK
-
+$(if $(VERBOSE),$(eval export VERBOSE=$(VERBOSE))) # visible to include(s)
 
 ##--------------------------
 ## Enable setup.py debugging
@@ -45,6 +33,18 @@
 # export DISTUTILS_DEBUG := 1      # verbose: pip
 export DOCKER_DEBUG    := 1      # verbose: docker
 
+# Makefile for voltha-protos
+default: test
+
+## Library linting
+# NO-LINT-MAKEFILE := true    # cleanup needed
+NO-LINT-SHELL    := true    # cleanup needed
+
+##--------------------##
+##---]  INCLUDES  [---##
+##--------------------##
+include $(MAKEDIR)/include.mk
+
 # Function to extract the last path component from go_package line in .proto files
 define go_package_path
 $(shell grep go_package $(1) | sed -n 's/.*\/\(.*\)";/\1/p')
@@ -73,14 +73,7 @@
 PROTO_JAVA_DEST_DIR := java
 PROTO_JAVA_PB := $(foreach f, $(PROTO_FILES), $(patsubst protos/voltha_protos/%.proto,$(PROTO_JAVA_DEST_DIR)/$(call java_package_path,$(f))/%.pb.java,$(f)))
 
-# -----------------------------------------------------------------------
-# Force pb file to be regenerated every time.  Otherwise the make process
-# assumes generated version is still valid.
-# -----------------------------------------------------------------------
-# [TODO]
-#   - Revisit: fix target to be dependency driven.
-#   - When source not modified make "voltha.pb" behavior always a NOP
-# -----------------------------------------------------------------------
+# Force pb file to be regenrated every time.  Otherwise the make process assumes generated version is still valid
 .PHONY: voltha.pb
 
 ##----------------##
@@ -234,12 +227,9 @@
 	$(call banner-leave,target $@)
 
 ## -----------------------------------------------------------------------
-## Intent: Regenerate voltha.pb
+## Intent:
 ## ----------------------------------------------------------------------
-voltha-pb	+= show-proto-files
-voltha-pb	+= docker-debug-joey
-
-voltha.pb: $(voltha-pb)
+voltha.pb: show-proto-files
 	$(call banner-enter,target $@)
 
 	${PROTOC} \
@@ -340,17 +330,4 @@
 	@echo -e "PROTO_FILES:\n$(PROTO_FILES)" | tr ' ' '\n'
 	$(call banner-leave,Target $@)
 
-## -----------------------------------------------------------------------
-## Intent: Debug mode
-##   - New image not logging ssh connections while job is running (?!?)
-##   - We should be on label=voltha-1804-micro.
-##   - Let(s) see what the reality is while checking configs.
-## -----------------------------------------------------------------------
-.PHONY: docker-debug-joey
-docker-debug-joey:
-
-	$(call banner-enter,Target $@)
-	ip --brief addr
-	$(call banner-leave,Target $@)
-
 # [EOF]
diff --git a/VERSION b/VERSION
index a12d74b..d50359d 100755
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5.5.2-dev3
+5.5.0
diff --git a/config.mk b/config.mk
new file mode 100644
index 0000000..2400d7f
--- /dev/null
+++ b/config.mk
@@ -0,0 +1,32 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2023-2024 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.
+# -----------------------------------------------------------------------
+
+##--------------------------------##
+##---]  Disable lint targets  [---##
+##--------------------------------##
+NO-LINT-DOC8      := true
+# NO-LINT-GOLANG  := true
+NO-LINT-GROOVY    := true
+NO-LINT-JJB       := true
+NO-LINT-JSON      := true
+# NO-LINT-MAKE    := false
+NO-LINT-PYTHON    := true
+NO-LINT-ROBOT     := true
+# NO-LINT-SHELL   := true
+NO-LINT-YAML    := true
+
+# [EOF]
diff --git a/lf/README.md b/lf/README.md
deleted file mode 100644
index 20e0a3d..0000000
--- a/lf/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
-# repo:onf-make - Library makefiles
-
-> $(sandbox-root)/include.mk
->>    Source this makefile to import all makefile logic.
->
-> $(sandbox-root)/lf/onf-make/
-> $(sandbox-root)/lf/onf-make/include.mk
->>    repo:onf-make contains common library makefile logic.
->>    tag based checkout (frozen) as a git submodule.
-> 
-> $(sandbox-root)/lf/local/
-> $(sandbox-root)/lf/local/include.mk
->>    per-repository targets and logic to customize makefile behavior.
-
-> $(sandbox-root)/lf/bridge.mk
->>    Temporary makefile to help with transition to repo:onf-make.
->>    Slowly replace include makefiles/* with include lf/onf-make/makefiles/*
diff --git a/lf/config.mk b/lf/config.mk
deleted file mode 100644
index fc5d5a2..0000000
--- a/lf/config.mk
+++ /dev/null
@@ -1,141 +0,0 @@
-# -*- makefile -*-
-# -----------------------------------------------------------------------
-# Copyright 2023-2024 Open Networking Foundation 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.
-# -----------------------------------------------------------------------
-# SPDX-FileCopyrightText: 2023-2024 Open Networking Foundation Contributors
-# SPDX-License-Identifier: Apache-2.0
-# -----------------------------------------------------------------------
-# [NOTE] All of these conditionals and logic can be removed if makefile
-#        logic transitions from static to dynamic detection (by file extension).
-#        See detect.mk for an early implementation.
-# -----------------------------------------------------------------------
-
---repo-name-- := onf-make
---repo-name-- ?= $(error --repo-name--= is required)
-
-##--------------------------------##
-##---]  Disable lint targets  [---##
-##--------------------------------##
-NO-LINT-DOC8      := true
-# USE_DOC8_INI        := true
-# NO-LINT-GOLANG    := true
-NO-LINT-GROOVY    := true#               # Note[1]
-NO-LINT-JJB       := true#               # Note[2]
-NO-LINT-JSON      := true#               # Note[1]
-NO-LINT-MAKEFILE  := true#               # Note[1]
-NO-LINT-REUSE     := true                # License check
-NO-LINT-ROBOT     := true
-# NO-LINT-SHELL     := true#               # Note[1]
-NO-LINT-YAML      := true#               # Note[1]
-
-# NO-LINT-FLAKE8    := true#               # Note[1]
-NO-LINT-PYTHON    := true#               # Note[1]
-# NO-LINT-PYLINT    := true#               # Note[1]
-
-# Note[1] - A boatload of source to cleanup prior to enable.
-# Note[2] - No sources available
-
-##---------------------------------##
-##---] Conditional make logic  [---##
-##---------------------------------##
-# USE-ONF-DOCKER-MK      := true
-# USE-ONF-GERRIT-MK      := true
-# USE-ONF-GIT-MK         := true
-# USE-ONF-JJB-MK         := true
-# USE-VOLTHA-RELEASE-MK  := true
-
-##----------------------##
-##---]  Debug Mode  [---##
-##----------------------##
-# export DEBUG           := 1      # makefile debug
-# export DISTUTILS_DEBUG := 1      # verbose: pip
-# export DOCKER_DEBUG    := 1      # verbose: docker
-# export VERBOSE         := 1      # makefile debug
-
-##-----------------------------------##
-##---]  JJB/Jenkins Job Builder  [---##
-##-----------------------------------##
-JJB_VERSION   ?= 2.8.0
-JOBCONFIG_DIR ?= job-configs
-
-##---------------------------------##
-##---]  Filesystem exclusions  [---##
-##---------------------------------##
-onf-excl-dirs := $(null)        # make clean: dirs=
-onf-excl-dirs += lf/onf-make    # repo:onf-make git submodule
-onf-excl-dirs += .venv#         # $(venv-name)
-onf-excl-dirs += patches#       # voltha docs - python upgrade
-onf-excl-dirs += .tmp           #
-onf-excl-dirs += .tox           # also a python dependency
-# onf-excl-dirs += vendor#        # golang / voltha*-go -- local exclude
-
-# [NOTE] Add exclusions: lint/doc8/doc8.incl
-
-ifeq ($(--repo-name--),voltha-docs)
-  lint-doc8-excl += '_build' # TODO: deprecate
-endif
-
-onf-excl-dirs ?= $(error onf-excl-dirs= is required)
-
-##-----------------------------##
-##---]  Feature Detection  [---##
-##-----------------------------##
-# [TODO] include makefiles/features/include.mk
-# [TODO] All logic below can migrate there.
-
-$(if $(filter %ci-management,$(--repo-name--)),\
-  $(eval --REPO-IS-CI-MANAGEMENT-- := true)\
-)
-
-$(if $(filter %voltha-docs,$(--repo-name--)),\
-  $(eval --REPO-IS-VOLTHA-DOCS-- := true)\
-)
-
-# create makefiles/config/byrepo/{--repo-name--}.mk for one-off snowflakes ?
-# $(if $(wildcard docker),$(eval USE-ONF-DOCKER-MK := true))
-
-##-------------------------##
-##---]  Derived Flags  [---##
-##-------------------------##
-ifdef --REPO-IS-CI-MANAGEMENT--
-  USE-ONF-JJB := true
-
-  onf-excl-dirs += global-jjb
-  onf-excl-dirs += lf-ansible
-  onf-excl-dirs += packer
-endif
-
-ifdef --REPO-IS-VOLTHA-DOCS--
-  onf-excl-dirs += _build
-  onf-excl-dirs += repos
-endif
-
-ifdef NO-LINT-PYTHON
-  NO-LINT-FLAKE8 := true
-  NO-LINT-PYLINT := true
-endif
-
-ifndef USE-ONF-JJB
-  NO-LINT-JJB := true
-endif
-
-onf-excl-dirs := $(sort $(strip $(onf-excl-dirs)))
-
-# --------------------------------------------------------------------
-# Repository specific values
-# --------------------------------------------------------------------
-# sterile-dirs += archives
-
-# [EOF]
diff --git a/lf/include.mk b/lf/include.mk
deleted file mode 100644
index 5d52907..0000000
--- a/lf/include.mk
+++ /dev/null
@@ -1,109 +0,0 @@
-# -*- makefile -*-
-# -----------------------------------------------------------------------
-# Copyright 2023-2024 Open Networking Foundation 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.
-# -----------------------------------------------------------------------
-# SPDX-FileCopyrightText: 2023-2024 Open Networking Foundation Contributors
-# SPDX-License-Identifier: Apache-2.0
-# -----------------------------------------------------------------------
-
-$(if $(DEBUG),$(warning ENTER))
-
-## -----------------------------------------------------------------------
-## Infer path to cloned sandbox root
-## [TODO] Deprecate TOP=
-## -----------------------------------------------------------------------
-lf-sbx-root   := $(abspath $(lastword $(MAKEFILE_LIST)))
-lf-sbx-root   := $(subst /lf/include.mk,$(null),$(lf-sbx-root))
-
-## -----------------------------------------------------------------------
-## Define vars based on relative import (normalize symlinks)
-## Usage: include makefiles/onf/include.mk
-## -----------------------------------------------------------------------
-onf-mk-abs    := $(abspath $(lastword $(MAKEFILE_LIST)))
-onf-mk-top    := $(subst /include.mk,$(null),$(onf-mk-abs))
-onf-mk-lib    := $(onf-mk-top)/onf-make/makefiles
-onf-mk-loc    := $(onf-mk-top)/local
-
-TOP           ?= $(patsubst %/makefiles/include.mk,%,$(onf-mk-abs))
-
-## -----------------------------------------------------------------------
-## This variable is a bridge to help transition away from legacy makefiles.
-## -----------------------------------------------------------------------
-legacy-mk     := $(lf-sbx-root)/makefiles
-
-## ------------------------------------------------------
-## Two distinct vars needed to access library or project
-## ------------------------------------------------------
-ONF_MAKEDIR ?= $(onf-mk-lib)
-MAKEDIR     ?= $(onf-mk-loc)
-
-# -----------------------------------------------------------------------
-# Load per-repository conditionals
-# Load late else alter MAKEFILE_LIST
-# NOTE: config.mk can be removed if dynamic feature detection by
-#       file extension is added.
-# -----------------------------------------------------------------------
-include $(wildcard $(lf-sbx-root)/config.mk $(lf-sbx-root)/lf/config.mk)
-
-## -----------------------------------------------------------------------
-## Load makefiles in order:
-##   1) Library constants and logic loaded first
-##   2) Parameterize and augment targets from local (repo specific)
-## -----------------------------------------------------------------------
-include $(onf-mk-lib)/include.mk
-include $(onf-mk-loc)/include.mk
-
-## Define late so caller (?- env --ignore-environment -?)
-GIT ?= /usr/bin/env git
-
-## -----------------------------------------------------------------------
-## Intent: This target will update dependent git-submodule to the latest
-##         version available from the remote repository.  Subsequently
-##         a checkin will be needed to make the submodule update permanent.
-## -----------------------------------------------------------------------
-.PHONY: update-git-submodules
-update-git-submodules:
-	$(GIT) submodule foreach git pull
-
-## -----------------------------------------------------------------------
-## Intent: On-demand cloning of git submodule(s).
-## -----------------------------------------------------------------------
-## Trigger: include $(onf-mk-lib)/include.mk
-##   - When the make command attempts to include a makefile from the
-##     repo:onf-make submodule, this target/dependency will initialize
-##     and checkout all submodules the current repository depends on.
-## -----------------------------------------------------------------------
-.PHONY: git-submodules
-git-submodules : $(onf-mk-lib)/include.mk
-
-$(onf-mk-lib)/include.mk:
-
-	$(call banner-enter,(Checkout git submodules))
-
-	$(GIT) submodule update --init --recursive
-
-	$(call banner-leave,(Checkout git submodules))
-
-## -----------------------------------------------------------------------
-## -----------------------------------------------------------------------
-help-git :
-	@printf '  %-33.33s %s\n' 'git-submodules' \
-	  'Init and recursive checkout of git submodule(s)'
-	@printf '  %-33.33s %s\n' 'update-git-submodules' \
-	  'Update git submodule(s) to the latest version'
-
-$(if $(DEBUG),$(warning LEAVE))
-
-# [EOF]
diff --git a/lf/local/include.mk b/lf/local/include.mk
deleted file mode 100644
index a0dedcc..0000000
--- a/lf/local/include.mk
+++ /dev/null
@@ -1,26 +0,0 @@
-# -*- makefile -*
-# -----------------------------------------------------------------------
-# Copyright 2017-2024 Open Networking Foundation 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.
-# -----------------------------------------------------------------------
-# SPDX-FileCopyrightText: 2017-2024 Open Networking Foundation Contributors
-# SPDX-License-Identifier: Apache-2.0
-# -----------------------------------------------------------------------
-# Intent: This makefile is the top level source for including
-#         per-repository makefile logic and configs.
-# Import hierarchy:
-#   Makefile      -> lf/include.mk
-#   lf/include.mk -> lf/onf-make/include.mk    # library makefiles
-#   lf/include.mk -> lf/local/include.mk       # per-repo makefiles
-# -----------------------------------------------------------------------
diff --git a/lf/onf-make b/lf/onf-make
deleted file mode 160000
index 50fb252..0000000
--- a/lf/onf-make
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 50fb252bab92a04d9b33cd2bb708ff14215fa757
diff --git a/lf/transition.mk b/lf/transition.mk
deleted file mode 100644
index f9e71d3..0000000
--- a/lf/transition.mk
+++ /dev/null
@@ -1,54 +0,0 @@
-# -*- makefile -*-
-# -----------------------------------------------------------------------
-# Copyright 2024 Open Networking Foundation 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.
-# -----------------------------------------------------------------------
-# SPDX-FileCopyrightText: 2024 Open Networking Foundation Contributors
-# SPDX-License-Identifier: Apache-2.0
-# -----------------------------------------------------------------------
-
-$(if $(DEBUG),$(warning ENTER))
-
-##-------------------##
-##---]  GLOBALS  [---##
-##-------------------##
-lf-sbx-root   := $(abspath $(lastword $(MAKEFILE_LIST)))
-lf-sbx-root   := $(subst /lf/transition.mk,$(null),$(lf-sbx-root))
-
-legacy-mk   ?= $(lf-sbx-root)/makefiles
-onf-mk-dir  ?= $(lf-sbx-root)/lf/onf-make/makefiles
-
-sandbox-root := $(lf-sbx-root)
-
-TOP           ?= $(lf-sbx-root)
-ONF_MAKEDIR   ?= $(TOP)/makefiles
-MAKEDIR       ?= $(TOP)/makefiles
-
-
-# set default shell options
-SHELL = bash -e -o pipefail
-
-# dependency of virtualenv::sterile
-clean ::
-
-##--------------------##
-##---]  INCLUDES  [---##
-##--------------------##
-include $(lf-sbx-root)/lf/config.mk
-include $(onf-mk-dir)/consts.mk
-# include.mk depends on ONF_MAKEDIR
-include $(onf-mk-dir)/etc/features.mk
-include $(onf-mk-dir)/virtualenv/include.mk
-
-# [EOF]
diff --git a/makefiles/include.mk b/makefiles/include.mk
index 952cd33..ecf52d5 100644
--- a/makefiles/include.mk
+++ b/makefiles/include.mk
@@ -34,10 +34,15 @@
 ##--------------------##
 include $(MAKEDIR)/help/include.mk
 
+include $(MAKEDIR)/consts.mk
+include $(MAKEDIR)/etc/include.mk
+include $(MAKEDIR)/virtualenv.mk
+
 include $(MAKEDIR)/golang/include.mk
 
 include $(MAKEDIR)/help/variables.mk
 include $(MAKEDIR)/lint/include.mk
+include $(MAKEDIR)/todo.mk
 
 include $(MAKEDIR)/docker/include.mk
 
diff --git a/makefiles/todo.mk b/makefiles/todo.mk
new file mode 100644
index 0000000..c13ab97
--- /dev/null
+++ b/makefiles/todo.mk
@@ -0,0 +1,37 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2024 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.
+#
+# SPDX-FileCopyrightText: 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+help::
+	@echo "  todo                         Display future enhancement list"
+
+todo ::
+	@echo
+	@echo "[TODO: voltha-protos]"
+	@echo "  o Cleanup lint complaints so lint target can be enabled by default."
+	@echo "  o Directory go/ is under reivsion control but go-* targets will remove content"
+	@echo "  o Update NO-LINT* targets to auto-enable based on source availability"
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# [EOF]
diff --git a/protoset.go b/protoset.go
index 212ef1a..e971390 100755
--- a/protoset.go
+++ b/protoset.go
@@ -1,7 +1,18 @@
-// Copyright 2018-2024 Open Networking Foundation Contributors
-// SPDX-FileCopyrightText: 2018-2024 Open Networking Foundation Contributors
-//
-// SPDX-License-Identifier: Apache-2.0
+/*
+ * Copyright 2018-2024 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.
+ */
 
 /*
  * Import this file into a go project in order to cause `go mod vendor`
diff --git a/requirements.txt b/requirements.txt
index 7b6a0f8..5b4308d 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -17,25 +17,10 @@
 # SPDX-License-Identifier: Apache-2.0
 # -----------------------------------------------------------------------
 
-## Lint
-pre-commit
-ansys-pre-commit-hooks
-
-# googleapis-common-protos
-# protobuf
-
-# grpcio
-# grpcio-tools
-
-# Test coverage
-nose2[coverage_plugin]
-
-# -----------------------------------------------------------------------
-# Changeset with pkg versions: 9a57710f6ae5903009cfdd85ebdf4df970027679
-# -----------------------------------------------------------------------
 googleapis-common-protos==1.52.0
 grpcio==1.39.0
 grpcio-tools==1.39.0
+nose2[coverage_plugin]
 protobuf==3.17.3
 
 # [EOF]
diff --git a/tox.ini b/tox.ini
index 219e9be..74db4c6 100755
--- a/tox.ini
+++ b/tox.ini
@@ -1,4 +1,4 @@
-; Copyright 2019-2024 Open Networking Foundation ONF Contributors
+; Copyright 2019-2024 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.
@@ -11,13 +11,9 @@
 ; 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: 2010-2024 the Open Networking Foundation Contributors
-; SPDX-License-Identifier: Apache-2.0
-; -----------------------------------------------------------------------
 
 [tox]
-envlist = py36,py37,py38,3.10.6.py312,py313
+envlist = py36,py37,3.10.6
 skip_missing_interpreters = true
 
 [testenv]
