Skip to content

Adds change tracking to mocha#9599

Merged
PascalSenn merged 22 commits intomainfrom
feat/mocha-resources-foundation
Apr 28, 2026
Merged

Adds change tracking to mocha#9599
PascalSenn merged 22 commits intomainfrom
feat/mocha-resources-foundation

Conversation

@PascalSenn
Copy link
Copy Markdown
Member

@PascalSenn PascalSenn commented Apr 25, 2026

No description provided.

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.
Copilot AI review requested due to automatic review settings April 25, 2026 14:31
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

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 / MochaResourceSource abstractions plus composite + definition catalog in Mocha.Resources*.
  • Add message-bus resource projection + transport contributors and a new DispatchEndpointAdded router event for live updates.
  • Add MapMochaResourceEndpoint HTTP 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.

Comment thread src/Mocha/src/Mocha.Resources/Mocha.Resources.csproj Outdated
Comment thread src/Mocha/src/Mocha.Resources/CompositeMochaResourceSource.cs Outdated
Comment thread src/Mocha/src/Mocha/Endpoints/IEndpointRouter.cs Outdated
Comment thread src/Mocha/src/Mocha.Resources/MochaResourcesServiceCollectionExtensions.cs Outdated
Comment thread src/Mocha/src/Mocha.Resources.Abstractions/Mocha.Resources.Abstractions.csproj Outdated
Comment thread src/Mocha/src/Mocha.Resources/CompositeMochaResourceSource.cs Outdated
Comment thread src/Mocha/src/Mocha/Resources/MochaMessageBusResourceSource.cs Outdated
… 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
@github-actions github-actions Bot added the 📚 documentation This issue is about working on our documentation. label Apr 26, 2026
@PascalSenn PascalSenn changed the title Adds resource abstractions to mocha Adds change tracking to mocha Apr 28, 2026
@PascalSenn PascalSenn merged commit db92b3a into main Apr 28, 2026
136 of 137 checks passed
@PascalSenn PascalSenn deleted the feat/mocha-resources-foundation branch April 28, 2026 23:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

📚 documentation This issue is about working on our documentation. 🌶️ mocha

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants