Repository navigation
Speech.Contract and the log watcher leave core (#2276) - #2547
Conversation
MeshWeaver.Plugins#767 moved them in — verbatim, with every plugins-side
consumer now pointing at the local siblings — so core drops its copies:
- src/MeshWeaver.Speech.Contract: core's only user was the endpoint file
below (verified: no other `using MeshWeaver.Speech` anywhere in src/,
memex/, test/ or tools/).
- tools/MeshWeaver.LogWatcher: zero core consumers, and its own tests already
lived in the plugins repo.
- memex/Memex.Portal.Shared/Api/{Speech,LogIncident}Endpoints.cs: the
composition that maps them moved to the plugins portal host with #737's
shape, so core carried the files with no caller.
Neither contract is in ContentSurfaceAssemblies, so this has no framework
identity consequence — and with core's copies gone, the plugins builds become
the ones that ship (MSBuild had been collapsing the two same-named references
onto core's build while both existed).
🚨 MeshWeaver.Observability.Contract deliberately STAYS for now: core's
test/MeshWeaver.Graph.Test/CompileFailureReportOrderTest.cs uses
BurstAggregator.Aggregate to assert compile-failure report ordering. That
test's subject is the observability aggregation of compile failures, so it
travels with the contract — a follow-up moves it, and the contract leaves in
the same change. Deleting the contract now would only break a real test.
CI-parity solution build (-c Release -warnaserror) green: 0 Error(s).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Tz1i2fFcJhvR1Eje8yFH5F
There was a problem hiding this comment.
Pull request overview
Removes the in-core copies of MeshWeaver.Speech.Contract, the mw-log-watcher tool, and the old Memex.Portal.Shared minimal-API endpoints, after their verbatim equivalents and callers were moved to MeshWeaver.Plugins.
Changes:
- Deleted
src/MeshWeaver.Speech.Contract(contract types) from core. - Deleted
tools/MeshWeaver.LogWatcher(mw-log-watcher) from core. - Removed
Memex.Portal.Shared’s speech/log-incident endpoints and the speech contract reference; updatedMeshWeaver.slnxaccordingly.
Reviewed changes
Copilot reviewed 15 out of 15 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/MeshWeaver.LogWatcher/WatcherState.cs | Removes the watcher's persisted cursor + pending-queue state implementation (tool moved out of core). |
| tools/MeshWeaver.LogWatcher/Program.cs | Removes the log-watcher host wiring/entrypoint from core. |
| tools/MeshWeaver.LogWatcher/MeshWeaver.LogWatcher.csproj | Removes the mw-log-watcher worker project from core. |
| tools/MeshWeaver.LogWatcher/LokiClient.cs | Removes Loki query client used by the watcher. |
| tools/MeshWeaver.LogWatcher/LogWatchWorker.cs | Removes the polling/aggregation loop for red-log detection. |
| tools/MeshWeaver.LogWatcher/LogWatcherOptions.cs | Removes watcher configuration options type. |
| tools/MeshWeaver.LogWatcher/LogPipelineGap.cs | Removes pipeline-gap detection/report generation logic. |
| tools/MeshWeaver.LogWatcher/IncidentReporter.cs | Removes portal incident-reporting HTTP client. |
| src/MeshWeaver.Speech.Contract/README.md | Removes contract README from core. |
| src/MeshWeaver.Speech.Contract/MeshWeaver.Speech.Contract.csproj | Removes the speech contract project from core. |
| src/MeshWeaver.Speech.Contract/ISpeechTranscriber.cs | Removes the speech contract interface/types from core. |
| MeshWeaver.slnx | Drops the Speech.Contract and LogWatcher projects from the solution. |
| memex/Memex.Portal.Shared/Memex.Portal.Shared.csproj | Removes the Speech.Contract project reference from the shared portal assembly. |
| memex/Memex.Portal.Shared/Api/SpeechEndpoints.cs | Removes the /api/speech/transcribe endpoint implementation from core. |
| memex/Memex.Portal.Shared/Api/LogIncidentEndpoints.cs | Removes the /api/log-incidents ingest endpoint implementation from core. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| <!-- SpeechEndpoints resolves ISpeechTranscriber OPTIONALLY (503 when absent), so the portal needs | ||
| the CONTRACT only — the Whisper client arrives as a module. --> |
| <Folder Name="/tools/"> | ||
| <Project Path="tools/MeshWeaver.ComboAssembler/MeshWeaver.ComboAssembler.csproj" /> | ||
| <Project Path="tools/MeshWeaver.ComboVerifier/MeshWeaver.ComboVerifier.csproj" /> | ||
| <Project Path="tools/MeshWeaver.LogWatcher/MeshWeaver.LogWatcher.csproj" /> | ||
| <Project Path="tools/MeshWeaver.PluginTester/MeshWeaver.PluginTester.csproj" /> | ||
| <Project Path="tools/MeshWeaver.ThumbnailGenerator/MeshWeaver.ThumbnailGenerator.csproj" /> |
Test Results (shard 2)1 088 tests 896 ✅ 4m 54s ⏱️ Results for commit 1628368. |
Test Results (shard 3)1 113 tests 1 113 ✅ 11m 37s ⏱️ Results for commit 1628368. |
Test Results (shard 5)1 601 tests 1 600 ✅ 9m 39s ⏱️ Results for commit 1628368. |
Test Results (shard 4) 8 files 8 suites 11m 32s ⏱️ Results for commit 1628368. |
Test Results (shard 0)1 312 tests 1 312 ✅ 6m 11s ⏱️ Results for commit 1628368. |
Test Results (shard 1)739 tests 735 ✅ 7m 22s ⏱️ Results for commit 1628368. |
Test Results 44 files 44 suites 51m 18s ⏱️ Results for commit 1628368. |
Summary
The deletion half of MeshWeaver.Plugins#767, which moved these in verbatim and re-pointed every plugins-side consumer at the local siblings.
Removed from core:
src/MeshWeaver.Speech.Contractusing MeshWeaver.Speechinsrc/,memex/,test/,tools/tools/MeshWeaver.LogWatchermemex/…/Api/SpeechEndpoints.cs,…/Api/LogIncidentEndpoints.csNeither contract is in
FrameworkBuildIdentity.ContentSurfaceAssemblies, so no identity flip and no rebake. A transition detail worth recording: while both copies existed, MSBuild collapsed the two same-named references onto core's build, so this deletion is what actually flips the shipped bits to the plugins copies.What deliberately stays
MeshWeaver.Observability.Contract. Core'stest/MeshWeaver.Graph.Test/CompileFailureReportOrderTest.csusesBurstAggregator.Aggregateto assert compile-failure report ordering. That test's subject is the observability aggregation of compile failures, so it should travel with the contract — a follow-up moves the test and deletes the contract together. Removing the contract now would break a real test, which is not a trade worth making for one project.Verification
CI-parity solution build,
-c Release -warnaserror: 0 Error(s).🤖 Generated with Claude Code
https://claude.ai/code/session_01Tz1i2fFcJhvR1Eje8yFH5F