REF-003: retire bash workflow dual path - #321
Merged
Merged
Conversation
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
Co-authored-by: John Menke <jmjava@gmail.com>
jmjava
marked this pull request as ready for review
September 14, 2026 05:13
Keeps cmd_shell within the diff complexity gate by moving candidate enumeration and lookup into dedicated helpers. Co-authored-by: John Menke <jmjava@gmail.com>
CI installs the engine into the job interpreter and never creates a repo .venv, so harnesses pinning .venv/bin/python handed the dispatcher a path that does not exist. Share one resolver across the shell harnesses and make resolve_engine_python report an unrunnable interpreter instead of a truncated version. Co-authored-by: John Menke <jmjava@gmail.com>
REF-003 T05. Replace dual-engine prose in operator, testing, engine, template, and research docs; drop the now-inert SDLC_ENGINE=python prefixes from command examples; describe the pytest coverage that replaced the retired twin harnesses. Route the last bare python3 calls in the retained session/capture utilities through SDLC_PY. Co-authored-by: John Menke <jmjava@gmail.com>
REF-003 T06. Add the review and sync artifacts, mark every acceptance criterion and operation complete against a recorded run, reconcile the stale shell-harness counts (30 -> 28 -> 25), and mark REF-003 Complete in the requirement, Milestone 3, and the roadmap. Accept the four staged lessons. Co-authored-by: John Menke <jmjava@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
REF-003 removes the duplicate bash workflow, gate, pointer, and registry implementations so Python
sdlc_engineis the only lifecycle flow. Bash keeps install/upgrade packaging and a few retained utilities, which are now thin Python-engine clients.All six operations (T01–T06) are complete and every acceptance criterion was executed rather than inferred.
What changed
sdlc-workflow.sh,sdlc-team-registry.sh, andsdlc-pointer.share gone fromtemplates/agent-context/andsdlc-spdd/scripts/— 3,100 shipped template LOC, 6,200 including the dogfood copies.scripts/sdlc.shrequires Python 3.12 and an importablesdlc_engine, with no bash fallback.SDLC_ENGINE=shellandSDLC_GATE_ENGINE=shellexit non-zero;SDLC_ENGINE=pythonstays accepted as a no-op.start-agent-session.sh,capture-session-memory.sh, andaccept-lessons.shcall the engine throughSDLC_PYand no longer source a twin or shell out to barepython3for engine behavior.sdlc-engine shellresolves helpers in both orchestratorscripts/and installedsdlc-spdd/scripts/layouts.test-sdlc-workflow.sh,test-sdlc-pointer.sh, andtest-archive-work.share replaced byengine/tests_unit/coverage; their CI workflows are removed.Defects found and fixed during review
cmd_shellfor installed targets raised its CCN from 4 to 6, and the gate fails on any rise in a touched function. Candidate enumeration and lookup moved into_shell_script_candidatesand_resolve_shell_script.${REPO_ROOT}/.venv/bin/python, but CI installs the engine into the job interpreter and never creates a repo venv, sotest-sdlc-workflowfailed on a path that did not exist. Resolution now goes through one sharedtests/lib/engine-python.sh, whichtest-integration-merge.shandtests/live-consumer/lib.shalso use instead of their own copies of the same fallback chain.resolve_engine_pythonparsed the version withread -r major minor <<<"$(...)". When the interpreter could not run at all, the here-string still supplied one empty line, soreadreturned 0 and the guard printedis 3.with an empty minor — which is how defect 2 surfaced in CI. It now detects the empty version string and reports an unrunnable interpreter, and prints the fullmajor.minorfor a wrong version.REASONS Canvas
REF-003-retire-bash-workflow-dual-pathsdlc-spdd/spdd/canvas/REF-003-retire-bash-workflow-dual-path.mdsdlc-spdd/spdd/reviews/REF-003-retire-bash-workflow-dual-path-review.mdsdlc-spdd/spdd/sync/REF-003-retire-bash-workflow-dual-path-sync.mdChecklist
Test evidence
test-guide-stack-live.shskipped (needs a live Guide + Neo4j stack)bash -nclean;-S errorcleanorigin/mainNot covered
test-guide-stack-live.shneeds a live Guide + Neo4j stack and was not run; it does not exercise the dispatcher contract this Work ID changed.SDLC_ENGINE=shell"), and adapter parity plus spec generation are green.