Repository navigation
Memex.Portal.Shared stops composing Postgres, gRPC, SignalR and InstanceSync; mesh.proto moves to Mesh.Contract - #2479
Conversation
…nceSync; mesh.proto moves to Mesh.Contract The storage/transport/sync carve-out, step 1 of the core side. No code in Memex.Portal.Shared named a MeshWeaver.Hosting.PostgreSql or .Hosting.Grpc type — both references were ships-the-bits only — and the InstanceSync + SignalR mesh registrations plus the /connect/instance endpoints now live in the portal composition in MeshWeaver.Plugins (Plugins#737), where the hosts are. So the four ProjectReferences, the two registrations and the endpoint file go; the projects themselves follow into that repo next. The gRPC wire contract (meshweaver.v1.Mesh) is the platform's, not the server's: mesh.proto now lives in MeshWeaver.Mesh.Contract/Protos and is packed with it; Hosting.Grpc compiles from there, the python client and the clients workflow read it from there. The old path keeps a byte-identical transition copy (header note) until the JS clients in MeshWeaver.Plugins resolve the new one; it is deleted with the Hosting.Grpc project. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X8RtDNQGywnbbY2T5j5T28
There was a problem hiding this comment.
Pull request overview
This PR is the core-side step of the storage/transport/sync carve-out by removing Memex.Portal.Shared’s direct composition of Postgres/gRPC/SignalR/InstanceSync, and by relocating the canonical gRPC wire contract (mesh.proto) into MeshWeaver.Mesh.Contract so all SDKs and hosts generate from one source of truth.
Changes:
- Move the canonical
mesh.prototosrc/MeshWeaver.Mesh.Contract/Protosand update packaging + client generation paths to reference it. - Update
MeshWeaver.Hosting.Grpcto compile stubs from the contract proto via a linked include. - Remove InstanceSync/SignalR endpoint wiring and project references from
Memex.Portal.Shared(with composition expected to live in MeshWeaver.Plugins per the PR description).
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| src/MeshWeaver.Mesh.Contract/Protos/mesh.proto | Adds the canonical gRPC framing contract for mesh participant connections. |
| src/MeshWeaver.Mesh.Contract/MeshWeaver.Mesh.Contract.csproj | Packs mesh.proto into the Mesh.Contract NuGet so downstream generators can consume it. |
| src/MeshWeaver.Hosting.Grpc/Protos/mesh.proto | Keeps a transition copy with an explicit header pointing to the canonical location. |
| src/MeshWeaver.Hosting.Grpc/MeshWeaver.Hosting.Grpc.csproj | Switches protobuf compilation to the canonical contract proto via Include=../MeshWeaver.Mesh.Contract/... + Link. |
| memex/Memex.Portal.Shared/Social/InstanceConnectEndpoints.cs | Removes the instance-connect OAuth endpoints from Memex.Portal.Shared (composition moved elsewhere). |
| memex/Memex.Portal.Shared/MemexConfiguration.cs | Drops InstanceSync/SignalR composition calls and updates related commentary. |
| memex/Memex.Portal.Shared/Memex.Portal.Shared.csproj | Removes ProjectReferences to Hosting.PostgreSql/Grpc/SignalR and InstanceSync to support the carve-out. |
| clients/python/scripts/gen_proto.sh | Updates Python stub generation to use the canonical contract proto path. |
| clients/python/README.md | Updates the documented proto generation path (and should align wording with the new ownership). |
| .github/workflows/clients.yml | Updates the client CI triggers/comments to watch the new canonical proto path. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
…TestBase OrleansTestBase, the test cluster + backing store, the disposal drain, the shutdown-race suppressor, grain-directory sizing, the shared fixture and the test seed/identity helpers move out of the Orleans test project into a shipped project — the Orleans counterpart of MeshWeaver.Hosting.Monolith.TestBase. The storage (PostgreSql, Cosmos, Snowflake) and transport (gRPC) suites that run over an Orleans cluster are leaving for MeshWeaver.Plugins with their projects, and a test project in another repository can build on a src project but not on a test project. The namespace stays MeshWeaver.Hosting.Orleans.Test on purpose: the machinery moved, not its identity, and no test file changed a using. The xunit collection DEFINITION stays in the test assembly (xunit resolves [Collection] against the declaring assembly); TestClusterSizingGuard scans both homes so the cluster builder itself stays guarded; Microsoft.Orleans.TestingHost is pinned in the root package list because a src project ships it. Also the three review nits: the Instance Sync comment and the python README now name where the composition / the proto live. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01X8RtDNQGywnbbY2T5j5T28
|
Second commit e150fa3: promotes the Orleans test machinery to |
What
Step 1 (core side) of the storage / transport / sync carve-out — the projects leaving core are
MeshWeaver.Hosting.{PostgreSql,Sqlite,Cosmos,Snowflake,Grpc,SignalR},MeshWeaver.Connection.SignalR,MeshWeaver.InstanceSync,Memex.Database.Migration,Memex.LocalMeshand the PostgreSqlImport tool; they move to MeshWeaver.Plugins where the hosts already live.Memex.Portal.Shareddrops itsProjectReferences to Hosting.PostgreSql, Hosting.Grpc, Hosting.SignalR and InstanceSync. The first two were ships-the-bits only (zero symbol uses); the InstanceSync + SignalR mesh registrations and the/connect/instanceendpoints now live in the portal composition in MeshWeaver.Plugins (Plugins#737 — merge that first; this PR must land after it).mesh.protobecomes the platform contract: canonical copy inMeshWeaver.Mesh.Contract/Protos(packed),Hosting.Grpccompiles from there,clients/python+clients.ymlread it from there. A byte-identical transition copy stays at the old path (with a header note) until the Plugins-side JS clients resolve the new path; it is deleted with the project.Verification
Hosting.Grpc,Memex.Portal.Shared,Memex.Portal.Shared.Test,Hosting.Monolith.Testbuild-c Release -p:CIRun=true -warnaserror(0 errors).Memex.Portal.Shared.Test: 371/371 passed.Memex.Portal.Gui/Distributed/Monolithat Plugins#737) build against this branch (0 errors).No What's New entry: no user-visible change.
🤖 Generated with Claude Code
https://claude.ai/code/session_01X8RtDNQGywnbbY2T5j5T28