From 873792a97bc27feadb368136a87b88ffc0876456 Mon Sep 17 00:00:00 2001 From: Brett Heap <1513478+brettheap@users.noreply.github.com> Date: Tue, 6 Oct 2026 09:49:06 +0000 Subject: [PATCH] T024, U-5: the retired ideation_dashboard.session_git spelling answers with opendox.session_git (plan 038, CF-3) A new scripts/ideation_dashboard/session_git.py, three statements, with no __init__.py beside it: import sys from opendox import session_git as _m sys.modules[__name__] = _m The carve moved session_git.py verbatim to openDox-code as opendox.session_git. tests/test_session_transaction.py:296 still spells the old path in its module-level LOCK_HOLDER string, and a protected suite's module-level text cannot be respelled under batch C (no entry can hold an edit that lies inside no test). The shim restores the spelling instead, and edits no protected file. With no __init__.py, scripts/ideation_dashboard/ stays a portion of the ideation_dashboard namespace package, so in the composed run it merges with openxFactory's own scripts/ideation_dashboard/ (which has none) and does not shadow it. That follows from Python's namespace-package rule. Of the four nodes in the transaction suite that need it, three go green, composed. The fourth, test_a_lock_contention_through_the_CLI_is_the_same_refusal, passes its first cause and stops at its second, the gate subcommand that no host registers for that suite. tests/conftest.py is T020's, and not touched here. Refs opensoft/openxFactory#656 (plan 038, CF-3; the ruling is 6013547504). Lane: openXfactory-3 Co-Authored-By: Claude Sonnet 5.5 --- scripts/ideation_dashboard/session_git.py | 24 +++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 scripts/ideation_dashboard/session_git.py diff --git a/scripts/ideation_dashboard/session_git.py b/scripts/ideation_dashboard/session_git.py new file mode 100644 index 0000000..3961d34 --- /dev/null +++ b/scripts/ideation_dashboard/session_git.py @@ -0,0 +1,24 @@ +# Compatibility shim: the retired pre-carve spelling of `session_git`. +# +# The carve moved `ideation_dashboard/session_git.py` verbatim to openDox-code +# as `opendox.session_git`. One protected suite still spells the old path in a +# module-level string, `LOCK_HOLDER` in `tests/test_session_transaction.py`: +# a rival process runs `from ideation_dashboard import session_git as sg` +# after putting this directory's parent, `scripts/`, first on its `sys.path`. +# This module answers that import with the real module under its new name. +# +# THERE IS NO `__init__.py` IN THIS DIRECTORY, ON PURPOSE. Without one, this +# directory is a portion of the `ideation_dashboard` NAMESPACE package, so in a +# composed run it merges with openxFactory's own `scripts/ideation_dashboard/` +# (which has none either) instead of shadowing it. An `__init__.py` here would +# turn `ideation_dashboard` into a regular package and hide every openxFactory +# lane module beside it. +# +# `sys.modules[__name__] = _m` replaces this module's own entry with the real +# one, so `ideation_dashboard.session_git` and `opendox.session_git` are the +# same module object, and `SessionGit` and the rest of its names are identical. +import sys + +from opendox import session_git as _m + +sys.modules[__name__] = _m