# revision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916

## A. six public types, references outside the owning leaf
MessagingBindingBridge                 0
SpringCloudStreamPublisherBridge       0
SpringCloudStreamConsumerBridge        0
BindingProfileValidator                0
StreamBridgePolicyGuard                0
BindingCapabilityReport                0
--- registry membership
 deps       : ['messaging-core-api', 'messaging-policy', 'messaging-transport-spi']
 memberships: []

## B. what the leaf declares versus what it imports
--- declared
4:    api project(':messaging:messaging-core-api')
5:    api project(':messaging:messaging-policy')
6:    api project(':messaging:messaging-transport-spi')
8:    implementation 'org.springframework:spring-context'
--- every non-JDK import in main
dev.caskeleton.messaging.api.destination.DestinationName
dev.caskeleton.messaging.api.error.MessagingConfigurationException
dev.caskeleton.messaging.api.publish.ConfirmationLevel
dev.caskeleton.messaging.api.publish.PublishCompletion
dev.caskeleton.messaging.api.publish.PublishEvidence
dev.caskeleton.messaging.api.publish.PublishResult
dev.caskeleton.messaging.api.publish.RoutingOutcome
dev.caskeleton.messaging.api.publish.TransmissionEvidence
dev.caskeleton.messaging.policy.DestinationProfile
--- so: messaging-transport-spi and spring-context are declared and never named
exit=1  (1 = neither is imported)

## C. the bridge interface is implemented by the publisher half only
src/messaging/messaging-spring-cloud-stream-bridge/src/main/java/dev/caskeleton/messaging/streambridge/SpringCloudStreamPublisherBridge.java:29:public final class SpringCloudStreamPublisherBridge implements MessagingBindingBridge {
--- and the consumer half implements nothing
20:public final class SpringCloudStreamConsumerBridge {

## D. nativeAdapter() is called only by a test
src/messaging/messaging-spring-cloud-stream-bridge/src/test/java/dev/caskeleton/messaging/streambridge/BindingProfileValidatorTest.java:160:            BindingProfileValidator.nativeAdapter(new DestinationName("orders.v1"), "orders-out")

## E. what the bridge reports for an accepted send
  private static PublishResult acceptedByBinder() {
    return new PublishResult(
        // The binder accepted it; no broker has confirmed anything. AMBIGUOUS is the only honest
        // answer, and it is what makes the bridge's weaker guarantee visible to the caller.
        PublishCompletion.AMBIGUOUS,
        new PublishEvidence(
            true, TransmissionEvidence.MAY_HAVE_BEEN_TRANSMITTED, false, ConfirmationLevel.NONE),
        RoutingOutcome.UNKNOWN,
        Optional.empty(),
        1,
        Duration.ZERO,
        Optional.of(
            dev.caskeleton.messaging.api.error.FailureDescriptor.of(
                dev.caskeleton.messaging.api.error.FailureCategory.AMBIGUOUS,
                "STREAM_BRIDGE_NO_BROKER_EVIDENCE",
                "the Stream binder accepted the message; no broker confirmation is available")));
  }
