Adds change tracking to mocha#9599
Merged
PascalSenn merged 22 commits intomainfrom Apr 28, 2026
Merged
Conversation
Phase A of the resource change-source plan: - Add Mocha.Resources.Abstractions with MochaResource (abstract Kind/Id/Write), MochaResourceDefinition, MochaResourceSource (abstract Resources/GetChangeToken), IMochaResourceDefinitionCatalog and MochaUrn helper. Public surface only; concrete subclasses live elsewhere as internal types per package. - Add Mocha.Resources with CompositeMochaResourceSource (modelled on the BCL CompositeEndpointDataSource: lazy init, swap-before-cancel ordering, per-child ChangeToken.OnChange registrations rebuilt only on collection change), StaticMochaResourceSource for immutable snapshots, and a default MochaResourceDefinitionCatalog. - Add DispatchEndpointAdded event + DispatchEndpointAddedEventArgs to IEndpointRouter, raised from EndpointRouter outside the internal lock so handlers can call back into the router without re-entrancy deadlocks. AddOrUpdateInternal now returns whether the endpoint was newly added so the event only fires once per endpoint. - Add MessagingTransport.ContributeMochaResources virtual whose default implementation projects the existing Describe() result into generic internal MochaTransportResource / MochaReceiveEndpointResource / MochaDispatchEndpointResource / MochaTopologyEntityResource subclasses. These default subclasses live as internal types inside Mocha core so the core only depends on Mocha.Resources.Abstractions; transport-specific packages are free to override and contribute richer resources in later phases. - Centralize Microsoft.Extensions.Primitives versions in Directory.Packages.props and add the two new projects to Mocha.slnx.
…ibutors Phase B of the Mocha resources plan. - Adds the per-kind MochaResource subclasses (mocha.service, mocha.message_type, mocha.handler, mocha.inbound_route, mocha.outbound_route, mocha.saga, mocha.saga.state, mocha.saga.transition) in Mocha core, plus the shared transport kinds (mocha.queue, mocha.exchange, mocha.topic, mocha.binding) in Mocha.Resources/MessageBus so InMemory, RabbitMQ, and Postgres can all reuse them. Each subclass is internal where appropriate and writes its own JSON members directly via Write(Utf8JsonWriter). - Introduces MochaMessageBusResourceSource that walks MessagingRuntime through MessageBusDescriptionVisitor (no traversal duplication), subscribes to IEndpointRouter.DispatchEndpointAdded for lazy endpoint observability, and uses the BCL swap-before-cancel ordering modelled on CompositeMochaResourceSource. - Overrides MessagingTransport.ContributeMochaResources in the InMemory, RabbitMQ, and Postgres transports. Each transport contributes its concrete topology (queues, exchanges, topics, bindings/subscriptions) with deterministic URNs that include the transport system. Reply queues surface as mocha.queue with "temporary": true. No connection strings or credentials ever flow into a Write payload. - Adds AddMochaResources / AddMochaResourceSource / AddMochaMessageBusResources ServiceCollection extensions plus a MochaResourceDefinitionCatalog populated with the built-in kinds, so consumers can resolve the composite MochaResourceSource directly from DI. - Adds Mocha.Resources.Tests covering per-kind JSON snapshots, composite change-token semantics, lazy dispatch endpoint observability, swap-before- cancel ordering, and disposal cleanup. 31 tests pass on net8.0/net9.0/net10.0.
Wires up the deprecated MapMessageBusDeveloperTopology bridge through MochaMessageBusResourceSource so the source becomes the single intermediate, exposes a new MapMochaResourceEndpoint helper in Mocha.Resources.AspNetCore, deletes JsonTopologyPrinter, and migrates all in-repo examples to the new resource source pattern. Adds byte-equivalence tests asserting the legacy DiagramData JSON is unchanged across the visitor-only and source-routed code paths for a fixed test app.
- Move MochaMessageBusResourceSource and 12 internal subclasses out of Mocha core into Mocha.Resources/MessageBus so the core package no longer depends on Mocha.Resources or Microsoft.Extensions.Primitives. - Mocha.Resources now references Mocha; Mocha.Hosting picks up a reference to Mocha.Resources for the deprecated bridge only. - Internalize MochaMessageBusResourceSource.Description and grant Mocha.Hosting access via InternalsVisibleTo so the bridge can keep using the cached description tree. - Disambiguate mocha.queue dual-schema collision: the fallback emits the new mocha.topology_entity kind for unknown entity kinds; known kinds (queue/exchange/topic) are mapped onto the dedicated typed resource so per-kind attribute schemas stay stable. - Document why MochaQueue/Exchange/Topic/Binding resources are public (cross-package transport contributor reuse). - Restore publish/send arrays in MochaSagaTransitionResource to avoid silent fidelity loss vs. the legacy JSON shape. - Replace the tautological byte-equivalence test with a frozen, canonicalised JSON snapshot of the deprecated bridge for a fixed test app; arrays are sorted before snapshot match so ImmutableHashSet iteration order can not destabilise the assertion. - Add Mocha.Resources.AspNetCore.Tests covering happy path, 304 short circuit, change visibility, anonymous-by-default authorization, and per-resource attribute opacity. - Add a re-entrancy integration test that wires a DispatchEndpointAdded handler that reads the router under its own lock to guard against a future regression that re-enters the lock from inside.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces a new Mocha.Resources abstraction layer for representing runtime topology/artifacts as typed resources, adds DI + ASP.NET Core endpoint support for exposing those resources, and updates transports/examples while preserving the legacy topology bridge shape via a compatibility path.
Changes:
- Add
MochaResource/MochaResourceSourceabstractions plus composite + definition catalog inMocha.Resources*. - Add message-bus resource projection + transport contributors and a new
DispatchEndpointAddedrouter event for live updates. - Add
MapMochaResourceEndpointHTTP endpoint and migrate examples; add snapshot/tests and legacy bridge byte-equivalence coverage.
Reviewed changes
Copilot reviewed 125 out of 125 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_TransportResource.snap | New transport JSON snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_TopologyEntityResource.snap | New topology entity snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_TopicResource.snap | New topic snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_ServiceResource.snap | New service snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_SagaTransitionResourceHasPublishAndSend.snap | Saga transition publish/send snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_SagaTransitionResource.snap | Saga transition snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_SagaStateResource.snap | Saga state snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_SagaResource.snap | Saga snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_ReceiveEndpointResource.snap | Receive endpoint snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_QueueResourceIsTemporary.snap | Temporary queue snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_QueueResource.snap | Queue snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_OutboundRouteResource.snap | Outbound route snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_MessageTypeResource.snap | Message type snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_InboundRouteResource.snap | Inbound route snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_HandlerResource.snap | Handler snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_ExchangeResource.snap | Exchange snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_DispatchEndpointResource.snap | Dispatch endpoint snapshot |
| src/Mocha/test/Mocha.Resources.Tests/snapshots/MochaResourceSnapshotTests.Serialize_Should_MatchSnapshot_When_BindingResource.snap | Binding snapshot |
| src/Mocha/test/Mocha.Resources.Tests/MochaResourcesServiceCollectionExtensionsTests.cs | DI extension tests |
| src/Mocha/test/Mocha.Resources.Tests/MochaResourceSnapshotTests.cs | Resource serialization snapshots |
| src/Mocha/test/Mocha.Resources.Tests/MochaResourceJsonWriter.cs | Snapshot JSON helper |
| src/Mocha/test/Mocha.Resources.Tests/MochaMessageBusResourceSourceTests.cs | Message bus source tests |
| src/Mocha/test/Mocha.Resources.Tests/Mocha.Resources.Tests.csproj | New test project refs |
| src/Mocha/test/Mocha.Resources.Tests/CompositeMochaResourceSourceTests.cs | Composite source change-token tests |
| src/Mocha/test/Mocha.Resources.AspNetCore.Tests/MochaResourceEndpointRouteBuilderExtensionsTests.cs | ASP.NET Core endpoint tests |
| src/Mocha/test/Mocha.Resources.AspNetCore.Tests/Mocha.Resources.AspNetCore.Tests.csproj | New ASP.NET Core test project |
| src/Mocha/test/Mocha.Hosting.Tests/Topology/snapshots/MessageBusDeveloperTopologyByteEquivalenceTests.LegacyBridge_Should_ReturnFrozenJson_When_FixedTestApp.snap | Frozen legacy JSON snapshot |
| src/Mocha/test/Mocha.Hosting.Tests/Topology/MessageBusEndpointRouteBuilderExtensionsTests.cs | Suppress obsolete warnings in tests |
| src/Mocha/test/Mocha.Hosting.Tests/Topology/MessageBusDeveloperTopologyByteEquivalenceTests.cs | Legacy bridge byte-equivalence tests |
| src/Mocha/test/Mocha.Hosting.Tests/Mocha.Hosting.Tests.csproj | Add resource projects + snapshots tooling |
| src/Mocha/src/Mocha/Transport/MessagingTransport.cs | Add ContributeMochaResources hook |
| src/Mocha/src/Mocha/Mocha.csproj | Reference resources abstractions |
| src/Mocha/src/Mocha/Endpoints/IEndpointRouter.cs | Add DispatchEndpointAdded event contract |
| src/Mocha/src/Mocha/Endpoints/EndpointRouter.cs | Raise endpoint-added event outside lock |
| src/Mocha/src/Mocha/Endpoints/DispatchEndpointAddedEventArgs.cs | New event args type |
| src/Mocha/src/Mocha/Descriptions/MessageBusDescriptionBuilder.cs | Docs on legacy-bridge support |
| src/Mocha/src/Mocha/Descriptions/MessageBusDescription.cs | Docs on legacy-bridge support |
| src/Mocha/src/Mocha/Assembly.cs | Expose internals to resources tests |
| src/Mocha/src/Mocha.Transport.RabbitMQ/RabbitMQMessagingTransport.cs | Contribute RabbitMQ resources |
| src/Mocha/src/Mocha.Transport.RabbitMQ/Mocha.Transport.RabbitMQ.csproj | Reference Mocha.Resources |
| src/Mocha/src/Mocha.Transport.Postgres/PostgresMessagingTransport.cs | Contribute Postgres resources |
| src/Mocha/src/Mocha.Transport.Postgres/Mocha.Transport.Postgres.csproj | Reference Mocha.Resources |
| src/Mocha/src/Mocha.Transport.InMemory/Mocha.Transport.InMemory.csproj | Reference Mocha.Resources |
| src/Mocha/src/Mocha.Transport.InMemory/InMemoryMessagingTransport.cs | Contribute in-memory resources |
| src/Mocha/src/Mocha.Resources/StaticMochaResourceSource.cs | Static resource source implementation |
| src/Mocha/src/Mocha.Resources/NullChangeToken.cs | Non-firing change token |
| src/Mocha/src/Mocha.Resources/MochaResourcesServiceCollectionExtensions.cs | DI registration for resources/composite |
| src/Mocha/src/Mocha.Resources/MochaResourceDefinitionCatalog.cs | Definition catalog implementation |
| src/Mocha/src/Mocha.Resources/Mocha.Resources.csproj | New Mocha.Resources project |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaTransportResource.cs | Transport resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaTopologyEntityResource.cs | Generic topology entity resource |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaTopicResource.cs | Topic resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaServiceResource.cs | Service resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaSagaTransitionResource.cs | Saga transition resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaSagaStateResource.cs | Saga state resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaSagaResource.cs | Saga resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaReceiveEndpointResource.cs | Receive endpoint resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaQueueResource.cs | Queue resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaOutboundRouteResource.cs | Outbound route resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaMessageTypeResource.cs | Message type resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaMessageBusResourcesServiceCollectionExtensions.cs | DI registration for message-bus resources |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaMessageBusResourceSource.cs | Runtime-to-resources projection source |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaInboundRouteResource.cs | Inbound route resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaHandlerResource.cs | Handler resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaExchangeResource.cs | Exchange resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaDispatchEndpointResource.cs | Dispatch endpoint resource type |
| src/Mocha/src/Mocha.Resources/MessageBus/MochaBindingResource.cs | Binding resource type |
| src/Mocha/src/Mocha.Resources/IMochaResourceSourceContributor.cs | Contributor marker + wrapper |
| src/Mocha/src/Mocha.Resources/CompositeMochaResourceSource.cs | Composite resource source implementation |
| src/Mocha/src/Mocha.Resources/Assembly.cs | InternalsVisibleTo declarations |
| src/Mocha/src/Mocha.Resources.AspNetCore/MochaResourceEndpointRouteBuilderExtensions.cs | HTTP endpoint exposing resources |
| src/Mocha/src/Mocha.Resources.AspNetCore/Mocha.Resources.AspNetCore.csproj | New ASP.NET Core adapter project |
| src/Mocha/src/Mocha.Resources.Abstractions/MochaUrn.cs | Deterministic URN helper |
| src/Mocha/src/Mocha.Resources.Abstractions/MochaResourceSource.cs | Resource source base abstraction |
| src/Mocha/src/Mocha.Resources.Abstractions/MochaResourceDefinition.cs | Resource definition record |
| src/Mocha/src/Mocha.Resources.Abstractions/MochaResource.cs | Resource base type |
| src/Mocha/src/Mocha.Resources.Abstractions/Mocha.Resources.Abstractions.csproj | New abstractions project |
| src/Mocha/src/Mocha.Resources.Abstractions/IMochaResourceDefinitionCatalog.cs | Definition catalog interface |
| src/Mocha/src/Mocha.Resources.Abstractions/Assembly.cs | InternalsVisibleTo declarations |
| src/Mocha/src/Mocha.Hosting/Topology/MessageBusEndpointRouteBuilderExtensions.cs | Legacy bridge routes via resource source |
| src/Mocha/src/Mocha.Hosting/Mocha.Hosting.csproj | Reference Mocha.Resources |
| src/Mocha/src/Examples/Transports/RabbitMQ/RabbitMQ.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/Transports/RabbitMQ/RabbitMQ.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/Transports/MultiTransport/MultiTransport.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/Transports/MultiTransport/MultiTransport.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/Sagas/ParallelSaga/ParallelSaga.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/Sagas/ParallelSaga/ParallelSaga.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/Sagas/BasicSaga/BasicSaga.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/Sagas/BasicSaga/BasicSaga.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/Reliability/OutboxInbox/OutboxInbox.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/Reliability/OutboxInbox/OutboxInbox.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/Reliability/CircuitBreaker/CircuitBreaker.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/Reliability/CircuitBreaker/CircuitBreaker.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/QuickStart/QuickStart.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/QuickStart/QuickStart.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/Observability/OpenTelemetry/OpenTelemetryExample.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/Observability/OpenTelemetry/OpenTelemetryExample.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/Middleware/UnitOfWork/UnitOfWork.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/Middleware/UnitOfWork/UnitOfWork.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/Middleware/CustomMiddleware/CustomMiddleware.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/Middleware/CustomMiddleware/CustomMiddleware.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/MessagingPatterns/SendFireAndForget/SendFireAndForget.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/MessagingPatterns/SendFireAndForget/SendFireAndForget.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/MessagingPatterns/RequestReply/RequestReply.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/MessagingPatterns/RequestReply/RequestReply.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/MessagingPatterns/EventPubSub/EventPubSub.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/MessagingPatterns/EventPubSub/EventPubSub.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/HandlersAndConsumers/LowLevelConsumer/LowLevelConsumer.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/HandlersAndConsumers/LowLevelConsumer/LowLevelConsumer.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/HandlersAndConsumers/CustomConsumer/CustomConsumer.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/HandlersAndConsumers/CustomConsumer/CustomConsumer.cs | Use resources endpoint + register source |
| src/Mocha/src/Examples/HandlersAndConsumers/BatchHandler/BatchHandler.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/src/Examples/HandlersAndConsumers/BatchHandler/BatchHandler.cs | Use resources endpoint + register source |
| src/Mocha/examples/PostgresTransport/PostgresTransport.ShippingService/Program.cs | Migrate to resources endpoint |
| src/Mocha/examples/PostgresTransport/PostgresTransport.ShippingService/PostgresTransport.ShippingService.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/examples/PostgresTransport/PostgresTransport.OrderService/Program.cs | Migrate to resources endpoint |
| src/Mocha/examples/PostgresTransport/PostgresTransport.OrderService/PostgresTransport.OrderService.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/examples/PostgresTransport/PostgresTransport.NotificationService/Program.cs | Migrate to resources endpoint |
| src/Mocha/examples/PostgresTransport/PostgresTransport.NotificationService/PostgresTransport.NotificationService.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/examples/Demo/Demo.slnx | Include new resources projects |
| src/Mocha/examples/Demo/Demo.Catalog/Program.cs | Migrate demo to resources endpoint |
| src/Mocha/examples/Demo/Demo.Catalog/JsonTopologyPrinter.cs | Remove legacy topology printer |
| src/Mocha/examples/Demo/Demo.Catalog/Demo.Catalog.csproj | Add resources ASP.NET Core adapter |
| src/Mocha/Mocha.slnx | Include resources projects + tests |
| src/Directory.Packages.props | Add Microsoft.Extensions.Primitives versions |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
… package Wire MochaMessageBusResourceSource and the composite source into the core AddMessageBus(...) registration so resource sources are always present. Move the message-bus resource subclasses into Mocha (flipping the project dependency) and inline the built-in MochaResourceDefinition catalog into the core registration. Delete Mocha.Resources.AspNetCore and its test project entirely; the HTTP shape moves to cloud-bugfix as a separate concern. Drop AddMochaMessageBusResources and MapMochaResourceEndpoint calls from every example. Simplify the legacy MapMessageBusDeveloperTopology bridge now that the source is always registered.
…gy bridge Drop the deprecated developer-topology endpoint and related deprecation/bridge plumbing: - delete MapMessageBusDeveloperTopology and its DiagramData payload types - delete the byte-equivalence tests and snapshot guarding the old shape - remove MochaMessageBusResourceSource.Description and the cached field - internalize the *Description record tree, MessageBusDescriptionVisitor, MessagingVisitor, VisitorAction, and the matching Describe() methods on Consumer, Saga, MessageType, InboundRoute, OutboundRoute, ReceiveEndpoint, DispatchEndpoint, MessagingTransport (incl. transport overrides) - drop Mocha.Hosting -> Mocha.Resources project reference and the Mocha -> Mocha.Hosting InternalsVisibleTo - add Mocha.Transport.InMemory.Tests / Mocha.Transport.Postgres.Tests to Mocha's InternalsVisibleTo so they can keep using the now-internal description APIs - internalize the test-only RecordingVisitor/TopologySnapshotHelper that re-exposed the visitor/description types - remove the Hosting docs section that described the deleted endpoint
…ch endpoint retrieval
…geBusTopology constructor
… for improved safety
This was referenced May 1, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.