# revision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 # search root: src, excluding src/messaging/messaging-core-api # tool: git grep -n -w -- src ':!src/messaging/messaging-core-api' ## A. public types with ZERO references outside the owning leaf (production AND test) MessageHandler exit=1 BatchMessageHandler exit=1 BatchMessageDelivery exit=1 ManualMessageHandler exit=1 PauseResumeController exit=1 ProcessingGuarantee exit=1 DelayedMessagePublisher exit=1 CapabilityRegistry exit=1 WireSafeText exit=1 ## B. exception subclasses with ZERO references outside the owning leaf MessageAuthenticationException exit=1 MessageBrokerUnavailableException exit=1 MessageConsumerException exit=1 MessageDeadLetterException exit=1 MessageHandlerTimeoutException exit=1 MessageHeaderRejectedException exit=1 MessagePublishAmbiguousException exit=1 MessagePublishRejectedException exit=1 MessageRedriveException exit=1 MessageRetryExhaustedException exit=1 MessageRoutingException exit=1 MessageSettlementUnknownException exit=1 # exit=1 means git grep found no match. exit=0 means at least one match. ## C. DeliveryContext: test-only outside the leaf src/messaging/messaging-kafka/src/test/java/dev/caskeleton/messaging/kafka/KafkaContractHarness.java:7:import dev.caskeleton.messaging.api.delivery.DeliveryContext; src/messaging/messaging-kafka/src/test/java/dev/caskeleton/messaging/kafka/KafkaContractHarness.java:216: new DeliveryContext(Instant.parse("2026-08-10T09:15:30Z"), false, "order-projection")); src/messaging/messaging-policy/src/test/java/dev/caskeleton/messaging/policy/DeadLetterOrchestratorTest.java:12:import dev.caskeleton.messaging.api.delivery.DeliveryContext; src/messaging/messaging-policy/src/test/java/dev/caskeleton/messaging/policy/DeadLetterOrchestratorTest.java:226: new DeliveryContext(Instant.parse("2026-08-10T09:15:35Z"), false, "order-projection")); exit=0 ## D. the three competing handler contracts src/messaging/messaging-core-api/src/main/java/dev/caskeleton/messaging/api/delivery/BatchMessageHandler.java:15:public interface BatchMessageHandler { src/messaging/messaging-core-api/src/main/java/dev/caskeleton/messaging/api/delivery/MessageHandler.java:14:public interface MessageHandler { src/messaging/messaging-core-api/src/main/java/dev/caskeleton/messaging/api/settlement/ManualMessageHandler.java:15:public interface ManualMessageHandler { src/messaging/messaging-reliability-api/src/main/java/dev/caskeleton/messaging/reliability/IdempotentMessageHandler.java:21:public interface IdempotentMessageHandler { --- what the only wired delivery processor actually accepts --- 40: private final Function, HandleResult> handler; 47: Function, HandleResult> handler, ## E. batch metadata is built, the batch delivery it describes is never assembled src/messaging/messaging-kafka/src/main/java/dev/caskeleton/messaging/kafka/KafkaBatchConsumerRegistrar.java:104: return new BatchDeliveryMetadata( src/messaging/messaging-rabbit/src/main/java/dev/caskeleton/messaging/rabbit/RabbitBatchConsumerRegistrar.java:139: new BatchDeliveryMetadata( --- javadoc claiming a handoff --- src/messaging/messaging-kafka/src/main/java/dev/caskeleton/messaging/kafka/KafkaBatchConsumerRegistrar.java:118: * @param metadata the batch-wide metadata handed to the handler src/messaging/messaging-rabbit/src/main/java/dev/caskeleton/messaging/rabbit/RabbitBatchConsumerRegistrar.java:153: * @param metadata the batch-wide metadata handed to the handler --- any construction of BatchMessageDelivery anywhere --- exit=1 ## F. leaf has no framework dependency (12.2 sibling comparison is not applicable) spring annotations in leaf: exit=1 non-java imports in leaf main: (empty above means: JDK plus own package only) build.gradle dependencies block: apply plugin: 'java-library' dependencies { }