# 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"))); }