Skip to content

move(core): the memex test container and the voice gateway leave core for MeshWeaver.Plugins (delete half) - #7306

Merged
rbuergi merged 2 commits into
mainfrom
move/core-free-carve
Oct 27, 2026
Merged

rbuergi merged 2 commits into
mainfrom
move/core-free-carve

Conversation

@rbuergi

@rbuergi rbuergi commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

The DELETE half of a core-slimming move. The memex test container library and the voice gateway leave core. Their ADDITION half is Systemorph/MeshWeaver.Plugins#4341. This PR stays a draft until #4341 has merged into Plugins main. Until then, Plugins' two consumers still compile core's copy of MeshWeaver.Testcontainers.

Pairs-with: Systemorph/MeshWeaver.Plugins#4341

Satellite-pins: Testcontainers, Testcontainers.PostgreSql — I grepped the .csproj and .props files of the local checkouts of MeshWeaver.Plugins (current main), .Education, .Reinsurance, .SocialMedia, .Manufacturing, .Crm, .FundReporting, Memex and MeshWeaver.Deploy for Testcontainers. Only MeshWeaver.Plugins references either id, versionless, in MeshWeaver.Testcontainers, MeshWeaver.Testcontainers.Test, MeshWeaver.Content.Test, MeshWeaver.Hosting.Cosmos.Test, MeshWeaver.Hosting.PostgreSql.Test, MeshWeaver.ContentCollections.Indexing.PostgreSql.Test and Memex.Database.Migration.Test. Plugins#4341 pins both itself as fill-in entries in src/Directory.Packages.Plugins.props, at 4.16.0 and 4.14.0, the versions they carried here. No core project restores either id.

What leaves

  • src/MeshWeaver.Testcontainers (MemexBuilder, MemexReadiness). Its only consumers, Memex.Portal.Shared.Test and MeshWeaver.Testcontainers.Test, were already in Plugins. It now lives at Plugins src/MeshWeaver.Testcontainers under the same assembly name, and no image ships it. It is outside FrameworkBuildIdentity.ContentSurfaceAssemblies, so the framework identity does not change. The MeshWeaver.slnx entry goes too.
  • clients/voice-gateway: 35 files, byte-identical at Plugins clients/voice-gateway. Nothing here built or tested it. Plugins runs its 44 pytest cases in a new Voice gateway workflow.
  • Pins: Testcontainers (root Directory.Packages.props) and Testcontainers.PostgreSql (test/Directory.Packages.props). SSH.NET stays, because test/Directory.Build.props references it in every test project, satellites' suites included.

Public surface: every public type of MeshWeaver.Testcontainers leaves src/, so it is a whole-assembly departure, and the pair is declared above. Before deleting anything I searched for callers that CI cannot compile. Core's samples/*/Data and src/MeshWeaver.Documentation/Data have no .cs or .json mention of either assembly. In the Plugins content trees, the only node source naming src/MeshWeaver.Testcontainers is the triage marker list in Hosting/Deployment/Source/TriageOwnership.cs, a string, not a binding. I did not run a live-mesh search_chunks sweep.

What stays, and why

  • MeshWeaver.Hosting.AspNetCore stays. It looked free, since nothing in core's src/, test/ or tools/ references it, but two other consumers do.
    • memex/aspire/Memex.Portal.ServiceDefaults references it. That project is leaving in chore(platform): core drops memex/ and the dead Roslynator pins (delete half) #7297.
    • The satellite MeshWeaver.SocialMedia compiles its module MeshWeaver.Social from $(MeshWeaverRoot)/src/MeshWeaver.Hosting.AspNetCore, because the module derives from MeshEndpointProviderAttribute, the endpoint-contribution hook. Satellites depend on the platform only and never check out Plugins, so the move would leave that module with nothing to compile against.
    • Splitting the hook (platform) from Portal/ (host code) changes which assembly declares public types. That is a design change with type forwarders, not a free move.
  • MeshWeaver.Markdown.Export.Contract stays. Its only core consumer is Hosting.AspNetCore (PortalApplication).
  • clients/python stays, and so do clients.yml and clients/README.md. The core-built deploy/python-gate and deploy/pandas-gate images COPY the SDK, and it generates from core's canonical mesh.proto. The README is rewritten to describe what is left. Nothing in clients/ belongs in MeshWeaver.Deploy.

CarvingProjectsOutOfCore records all of this. It gains three rows in the remaining-projects table, a section headed Outside the content surface is not the same as free, and a clients/ table. Comments and docs that named the old paths now point at Plugins: dotnet-test.yml, control-image-acceptance.sh, clients.yml, the i18n skill, FirstRunSetup, InstanceIdentityAndSetup, DockerHubInCi, DocsFollowTheFunctionality and VoiceModelDistribution.

Local gates

  • MeshWeaver.Documentation.Test builds Release -warnaserror with 0 warnings and 0 errors. DocumentationLinkIntegrityTest, PackageFamiliesMoveTogetherGuard, ArchitectureTopicMapTest and NoLiteralNulInSourceGuard pass 13 of 13 (trx).
  • The other direction: Plugins#4341's MeshWeaver.Testcontainers, MeshWeaver.Testcontainers.Test, MeshWeaver.Content.Test and Memex.Portal.Shared.Test each build Release -warnaserror against THIS branch with 0 warnings and 0 errors. MemexReadinessTest passes 10 of 10.
  • Not run: a solution-wide restore, which the local hook blocks. No core .csproj references either Testcontainers id, so no core project can lose a version (NU1010).

Recycles: none. No per-node hub serves anything this changes.

🤖 Generated with Claude Code

… for MeshWeaver.Plugins (delete half)

src/MeshWeaver.Testcontainers and clients/voice-gateway move to MeshWeaver.Plugins (src/ and
clients/). Both were consumed only there: the test container's two consumers already lived in
Plugins, and nothing in core built or tested the voice gateway. Their Testcontainers and
Testcontainers.PostgreSql pins leave with them; no core project restores either.

MeshWeaver.Hosting.AspNetCore and MeshWeaver.Markdown.Export.Contract stay: a satellite's
compiled module derives from MeshEndpointProviderAttribute and compiles it from core source, and
the contract is pinned by Hosting.AspNetCore alone. clients/python stays: core's python-gate and
pandas-gate images COPY it. CarvingProjectsOutOfCore records all three verdicts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Test Results

    25 files      25 suites   56m 39s ⏱️
11 924 tests 11 922 ✅ 2 💤 0 ❌
11 950 runs  11 948 ✅ 2 💤 0 ❌

Results for commit a1e513d.

♻️ This comment has been updated with latest results.

@rbuergi
rbuergi marked this pull request as ready for review October 27, 2026 10:58
Copilot AI balanced review requested due to automatic review settings October 27, 2026 10:58

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

Plugins#4341 returned 404, so the replacement files, consumer adaptations, and required merge into Plugins main remain unverified.

No open issues 🎉

What changed in this PR

This PR removes the memex test-container library and voice gateway from core as the deletion half of their move to MeshWeaver.Plugins. It keeps the Python SDK and platform extension points in core where existing consumers still need them.

Changes:

  • Removes MeshWeaver.Testcontainers, its solution entry, and the two Testcontainers package pins.
  • Removes the voice gateway’s implementation, tests, packaging, and wake-word tooling.
  • Updates documentation and comments to describe the new ownership; workflow and acceptance-script behavior is unchanged.
File Description
test/​Directory.Packages.props Removes the PostgreSQL Testcontainers pin.
src/​MeshWeaver.Testcontainers/​README.md Removes the library guide from core.
src/​MeshWeaver.Testcontainers/​MeshWeaver.Testcontainers.csproj Removes the test-support project.
src/​MeshWeaver.Testcontainers/​MemexReadiness.cs Removes the portal-readiness helper.
src/​MeshWeaver.Testcontainers/​MemexContainer.cs Removes the container builder and configuration.
src/​MeshWeaver.Documentation/​Data/​Architecture/​VoiceModelDistribution.md Identifies the gateway’s new repository.
src/​MeshWeaver.Documentation/​Data/​Architecture/​InstanceIdentityAndSetup.md Updates test-container ownership.
src/​MeshWeaver.Documentation/​Data/​Architecture/​FirstRunSetup.md Names the library’s Plugins location.
src/​MeshWeaver.Documentation/​Data/​Architecture/​DocsFollowTheFunctionality.md Records the gateway move and destination tests.
src/​MeshWeaver.Documentation/​Data/​Architecture/​DockerHubInCi.md Notes that the gateway left core.
src/​MeshWeaver.Documentation/​Data/​Architecture/​CarvingProjectsOutOfCore.md Documents moved components and retained dependencies.
MeshWeaver.slnx Removes the Testcontainers project entry.
Directory.Packages.props Removes the Testcontainers package pin.
clients/​voice-gateway/​wakeword/​setup-hey-memex.sh Removes wake-word setup tooling.
clients/​voice-gateway/​wakeword/​README.md Removes the wake-word guide.
clients/​voice-gateway/​wakeword/​phase2_train.sh Removes the training script.
clients/​voice-gateway/​wakeword/​phase2_data.py Removes training-data preparation.
clients/​voice-gateway/​wakeword/​hey_memex.json Removes the wake-word manifest.
clients/​voice-gateway/​tests/​test_vad.py Removes endpoint-detection tests.
clients/​voice-gateway/​tests/​test_threads.py Removes thread-client tests.
clients/​voice-gateway/​tests/​test_stt.py Removes audio-wrapper tests.
clients/​voice-gateway/​tests/​test_streaming.py Removes streaming tests.
clients/​voice-gateway/​tests/​test_router.py Removes routing and music-command tests.
clients/​voice-gateway/​tests/​test_pipeline.py Removes voice-pipeline tests.
clients/​voice-gateway/​tests/​test_ollama.py Removes local-model integration tests.
clients/​voice-gateway/​tests/​test_context.py Removes session and conversation-context tests.
clients/​voice-gateway/​run-local.sh Removes the local launch script.
clients/​voice-gateway/​README.md Removes the gateway guide.
clients/​voice-gateway/​pyproject.toml Removes Python packaging and test configuration.
clients/​voice-gateway/​memex_voice_gateway/​vad.py Removes utterance endpoint detection.
clients/​voice-gateway/​memex_voice_gateway/​tts.py Removes speech synthesis and audio serving.
clients/​voice-gateway/​memex_voice_gateway/​threads.py Removes the MCP thread client.
clients/​voice-gateway/​memex_voice_gateway/​stt.py Removes speech-transcription integration.
clients/​voice-gateway/​memex_voice_gateway/​session.py Removes spoken-session persistence.
clients/​voice-gateway/​memex_voice_gateway/​satellite.py Removes ESPHome satellite integration.
clients/​voice-gateway/​memex_voice_gateway/​pipeline.py Removes voice-round orchestration.
clients/​voice-gateway/​memex_voice_gateway/​musicassistant.py Removes Music Assistant integration.
clients/​voice-gateway/​memex_voice_gateway/​homeassistant.py Removes Home Assistant integration.
clients/​voice-gateway/​memex_voice_gateway/​config.py Removes gateway configuration and phrases.
clients/​voice-gateway/​memex_voice_gateway/​__main__.py Removes application wiring and entry point.
clients/​voice-gateway/​memex_voice_gateway/​__init__.py Removes package metadata.
clients/​voice-gateway/​entrypoint.sh Removes container startup tooling.
clients/​voice-gateway/​Dockerfile Removes the gateway image definition.
clients/​voice-gateway/​docker-compose.yml Removes local container orchestration.
clients/​voice-gateway/​.gitignore Removes gateway-specific ignore rules.
clients/​README.md Describes the remaining Python SDK and relocated clients.
.github/​workflows/​dotnet-test.yml Updates a comment about Testcontainers ownership.
.github/​workflows/​clients.yml Updates comments about client locations and coverage.
.github/​scripts/​control-image-acceptance.sh Updates the builder location in a comment.
.claude/​skills/​i18n/​SKILL.md Updates the description of core’s remaining clients.

Review effort: Balanced

@rbuergi
rbuergi merged commit 8559717 into main Oct 27, 2026
37 checks passed
@rbuergi
rbuergi deleted the move/core-free-carve branch October 31, 2026 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants