Implementation Plan: Decouple Dead Semantic Kernel Harness Leftovers¶
Execution handoff: Use the completion execution plan for current task order, acceptance gates, and progress. This record retains the reconciled design and historical task evidence.
Spec: docs/product-specs/035-openai-agents-backend/spec.md
Status: Implementation complete; verification gates not re-established by this reconciliation.
Reconciled: 2026-09-06 against b585e80 and implementation commit 3805e80 (#338).
Scope: Delete orphaned SK MCP factories, tool filtering, and dead stubs. Retain live retrieval dependencies.
Evidence and status convention¶
Checked items below mean the implementation is present in the current tree, established by source, configuration, test, and Git inspection. See the reconciliation report for fresh focused test results; these do not establish every historical full-suite gate below. Unchecked validation items identify evidence still needed to close the original gates. The task IDs preserve the original plan's work breakdown.
The original draft described SK embedding/chat services as retained. The subsequent LiteLLM plan replaced those services. The current SK runtime dependency is vector-store abstractions/connectors and text splitting, plus retained telemetry configuration and logging/filter defaults. Agent execution already uses native backends.
Decisions and migration¶
- Remove the entire dead SK MCP package; retain native backend MCP bridges and
MCPTool. - Remove the parsed-but-ignored
tool_filteringfield immediately. Agent configuration forbids extra fields, so users must delete that block from their YAML. This breaking change is recorded indocs/CHANGELOG.md; a deprecation flag was not implemented. - Retain the
semantic-kerneldependency until connectors and chunking are replaced. - Retain SK observability hooks at this stage. Their former embedding/chat rationale is superseded by LiteLLM telemetry; reassess the remaining hooks during final decommission.
Task reconciliation¶
Task 1 — Delete the dead SK MCP package¶
-
src/holodeck/tools/mcp/andtests/unit/tools/mcp/deleted. - No
holodeck.tools.mcp,create_mcp_plugin, orMCPStdioPluginreferences insrc/ortests/. - Native MCP implementation remains in
lib/backends/mcp_bridge.pyand the OpenAI backend. - Re-establish the original full unit-suite and live-MCP regression gate.
Checkpoint A: Deletion and search criteria complete; original runtime validation not rerun.
Task 2 — Delete the unused tool-filter module¶
-
src/holodeck/lib/tool_filter/andtests/unit/lib/tool_filter/deleted. - No
holodeck.lib.tool_filter,ToolFilterManager, orToolIndexreferences in source/tests. - Re-establish the original type-check gate.
Task 3 — Remove the tool-filter configuration surface¶
-
ToolFilterConfigimport andAgent.tool_filteringfield removed. -
validate_tool_filteringand its Claude-backend invocation removed. - Schema definition/property and research-agent sample block removed.
- Validator tests for the removed field removed.
- Breaking migration note published in
docs/CHANGELOG.md. - No
tool_filteringorToolFilterConfigreferences insrc/,tests/,schemas/, orsample/. - Re-establish schema validation, sample loading, and the original full-suite gate.
Checkpoint B: Configuration removal complete; runtime/schema validation not rerun.
Task 4 — Remove the hierarchical-tool stub¶
-
to_semantic_kernel_functionand its tests removed; source/test search is empty. - Re-establish the hierarchical-document regression-test gate.
Task 5 — Remove the unused observability field¶
-
include_semantic_kernel_metricsremoved from the model and tests. -
enable_semantic_kernel_telemetry, logger suppression, and bridge namespace defaults retained. - Re-establish observability tests and the original type-check gate.
Searches for removed fields must exclude historical plans/design records, which intentionally retain their names; the old requirement for zero matches across all documentation was incorrect.
Task 6 — Documentation cleanup¶
-
docs/api/tool-filter.mddeleted. - Tool-filter references removed from
docs/guides/tools.mdanddocs/api/backends.md. - SK MCP factory references removed from
docs/api/tools.md. - Current
AGENTS.mdhas no tool-filter/SK-MCP guidance. Its former detailed vector-store description is superseded by the harness architecture map, not a missing restoration task. - Historical feature documents remain point-in-time records in the migrated product/design trees.
Task 7 — Final verification and retained surface¶
- Source search confirms deleted modules/stubs/configuration are absent.
- Remaining SK references match the inventory below;
tool_initializer.pyandllm_context_generator.pynow use LiteLLM, as established by the later plan. - Re-establish format, lint, type, security, and full parallel test gates.
- Verify an installed
semantic_kernelimport and a real RAG ingest/grounded-answer run.
Checkpoint C: Implementation complete. The historical all-checks-green acceptance statement is not established by this source reconciliation; keep the verification items distinct from code work.
Remaining SK inventory and follow-ups¶
| Surface | Evidence | Remaining work |
|---|---|---|
| Vector abstractions and 11 collection mappings | src/holodeck/lib/vector_store.py |
Replace record decorators/fields, collection contracts, provider clients, and Postgres settings; preserve provider/search behavior. |
| Chunking | src/holodeck/lib/text_chunker.py imports split_plaintext_paragraph |
Replace splitter and verify chunk-boundary/overlap behavior. |
| Observability | lib/observability/{instrumentation,providers,__init__}.py |
Remove obsolete SK setup/exports after checking retained connector telemetry. |
| Logger/filter defaults | lib/logging_config.py, lib/backends/otel_bridge.py, models/observability.py |
Reassess/remove SK defaults and update tests/configuration docs. |
| Test dependencies | SK vector fixtures/mocks; tests/integration/test_structured_vectorstore.py imports OllamaTextEmbedding |
Migrate fixtures and the direct embedding client; remove obsolete SK mocks. |
| Packaging/docs | pyproject.toml, observability API and vector-store guide |
Remove dependency constraints/lock entries and update docs after runtime/test imports are gone. |
Embedding and contextual-chat replacement is implemented in the LiteLLM plan, with its own outstanding acceptance gaps. Full SK decommission still needs a separate scoped implementation plan; this cleanup did not provide one.