Context
Only the Claude runner is supported going forward. Three runner implementations have zero production call sites (confirmed by PR #1302).
What to delete
Implementation files (888 lines)
factory/runners/bob.py (316 lines)
factory/runners/codex.py (219 lines)
factory/runners/opencode.py (353 lines)
factory/runners/usage.py (179 lines) — all callers are dead runners
Dead test files (~2,600 lines)
tests/test_codex_runner.py (612 lines)
tests/test_opencode_runner.py (646 lines)
- Bob/OpenCode test classes in
tests/test_runners.py (~570 lines across 7 classes)
- Codex test classes in
tests/test_plugin_agents.py (~112 lines across 3 classes)
- Bob tests in
tests/test_session_resume.py (~20 lines)
Infrastructure cleanup (modify, don't delete)
factory/runners/__init__.py — remove imports, _RUNNERS dict entries, __all__ exports for dead runners
factory/cli/_parser_groups.py — remove codex from --runner choices
factory/user_config.py — remove bob/codex example profiles and env var mappings
factory/ceo_completion.py — remove BobRunner comment
tests/conftest.py — remove FACTORY_BOB_DRY_RUN=1 setup
factory/agents/plugin.py — remove codex TOML generation functions (~60 lines)
factory/cli/admin.py — remove codex import and --runner codex branch (~30 lines)
scripts/sync_agents.py — remove codex imports and sync logic (~40 lines)
Dead documentation
docs/codex-mcp.md (78 lines)
docs/runner-v2-spec.md (202 lines)
Dead environment variables
FACTORY_BOB_DRY_RUN, FACTORY_BOB_MAX_INVOCATIONS_PER_CYCLE, BOBSHELL_API_KEY
FACTORY_CODEX_DRY_RUN, CODEX_API_KEY
FACTORY_OPENCODE_DRY_RUN, FACTORY_OPENCODE_MAX_INVOCATIONS_PER_CYCLE
Verification
All verified to have zero production call sites outside the runner subsystem itself. See PR #1302 Section 2 for full evidence.
Related
Context
Only the Claude runner is supported going forward. Three runner implementations have zero production call sites (confirmed by PR #1302).
What to delete
Implementation files (888 lines)
factory/runners/bob.py(316 lines)factory/runners/codex.py(219 lines)factory/runners/opencode.py(353 lines)factory/runners/usage.py(179 lines) — all callers are dead runnersDead test files (~2,600 lines)
tests/test_codex_runner.py(612 lines)tests/test_opencode_runner.py(646 lines)tests/test_runners.py(~570 lines across 7 classes)tests/test_plugin_agents.py(~112 lines across 3 classes)tests/test_session_resume.py(~20 lines)Infrastructure cleanup (modify, don't delete)
factory/runners/__init__.py— remove imports,_RUNNERSdict entries,__all__exports for dead runnersfactory/cli/_parser_groups.py— removecodexfrom--runnerchoicesfactory/user_config.py— remove bob/codex example profiles and env var mappingsfactory/ceo_completion.py— remove BobRunner commenttests/conftest.py— removeFACTORY_BOB_DRY_RUN=1setupfactory/agents/plugin.py— remove codex TOML generation functions (~60 lines)factory/cli/admin.py— remove codex import and--runner codexbranch (~30 lines)scripts/sync_agents.py— remove codex imports and sync logic (~40 lines)Dead documentation
docs/codex-mcp.md(78 lines)docs/runner-v2-spec.md(202 lines)Dead environment variables
FACTORY_BOB_DRY_RUN,FACTORY_BOB_MAX_INVOCATIONS_PER_CYCLE,BOBSHELL_API_KEYFACTORY_CODEX_DRY_RUN,CODEX_API_KEYFACTORY_OPENCODE_DRY_RUN,FACTORY_OPENCODE_MAX_INVOCATIONS_PER_CYCLEVerification
All verified to have zero production call sites outside the runner subsystem itself. See PR #1302 Section 2 for full evidence.
Related
factory.mdsmoke test's-k 'not BobAuth'filter