Skip to content

Speech.Contract and the log watcher leave core (#2276) - #2547

Merged
rbuergi merged 1 commit into
mainfrom
chore/2276-speech-observability-leave-core
Aug 27, 2026
Merged

rbuergi merged 1 commit into
mainfrom
chore/2276-speech-observability-leave-core

Conversation

@rbuergi

@rbuergi rbuergi commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

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:

path why it can go
src/MeshWeaver.Speech.Contract core's only user was the endpoint file below — verified no other using MeshWeaver.Speech in src/, memex/, test/, tools/
tools/MeshWeaver.LogWatcher zero core consumers; its tests already lived in the plugins repo
memex/…/Api/SpeechEndpoints.cs, …/Api/LogIncidentEndpoints.cs the composition that maps them moved to the plugins portal host (#737's shape), so core carried them with no caller

Neither 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'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 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

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
Copilot AI lite review requested due to automatic review settings August 27, 2026 20:38

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.

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; updated MeshWeaver.slnx accordingly.

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.

Comment on lines 71 to 72
<!-- SpeechEndpoints resolves ISpeechTranscriber OPTIONALLY (503 when absent), so the portal needs
the CONTRACT only — the Whisper client arrives as a module. -->
Comment thread MeshWeaver.slnx
Comment on lines 127 to 131
<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" />
@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 2)

1 088 tests   896 ✅  4m 54s ⏱️
    6 suites  192 💤
    6 files      0 ❌

Results for commit 1628368.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 3)

1 113 tests   1 113 ✅  11m 37s ⏱️
    7 suites      0 💤
    7 files        0 ❌

Results for commit 1628368.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 5)

1 601 tests   1 600 ✅  9m 39s ⏱️
    9 suites      1 💤
    9 files        0 ❌

Results for commit 1628368.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 4)

    8 files      8 suites   11m 32s ⏱️
4 412 tests 4 409 ✅ 3 💤 0 ❌
5 016 runs  5 013 ✅ 3 💤 0 ❌

Results for commit 1628368.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 0)

1 312 tests   1 312 ✅  6m 11s ⏱️
    6 suites      0 💤
    6 files        0 ❌

Results for commit 1628368.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results (shard 1)

739 tests   735 ✅  7m 22s ⏱️
  8 suites    4 💤
  8 files      0 ❌

Results for commit 1628368.

@github-actions

Copy link
Copy Markdown
Contributor

Test Results

    44 files      44 suites   51m 18s ⏱️
10 263 tests 10 063 ✅ 200 💤 0 ❌
10 869 runs  10 669 ✅ 200 💤 0 ❌

Results for commit 1628368.

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