--- the condition chain
18:import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
50:  public OutboxProperties outboxProperties() {
62:  public OutboxRetryScheduler outboxRetryScheduler(OutboxProperties properties) {
81:  @ConditionalOnBean({OutboxRepository.class, OutboxEnvelopeFactory.class})
83:  public OutboxRelay outboxRelay(
106:  @ConditionalOnBean(OutboxRelay.class)
108:  public OutboxRelayWorker outboxRelayWorker(OutboxRelay relay, OutboxRetryScheduler scheduler) {
123:  @ConditionalOnBean(OutboxRelayWorker.class)
125:  public MessagingOutboxRelayLifecycle outboxRelayLifecycle(
138:  @ConditionalOnBean(OutboxRepository.class)
140:  public OutboxCleanupJob outboxCleanupJob(OutboxRepository outbox, OutboxProperties properties) {
155:  public InboxRetentionPolicy inboxRetentionPolicy() {
167:  @ConditionalOnBean(InboxRepository.class)
169:  public InboxCleanupJob inboxCleanupJob(InboxRepository inbox, InboxRetentionPolicy policy) {

--- main references to the only implementations of the two root ports
$n                       mainRefs=$(grep -rlw $n --include=*.java src/*/src/main src/*/*/src/main src/messaging/*/src/main 2>/dev/null | grep -v /$n[.]java$ | wc -l)
$n                       mainRefs=$(grep -rlw $n --include=*.java src/*/src/main src/*/*/src/main src/messaging/*/src/main 2>/dev/null | grep -v /$n[.]java$ | wc -l)

--- the same starter DOES provide a default for another port
360:  @ConditionalOnMissingBean(dev.caskeleton.messaging.schema.MessageCodecRegistry.class)
361-  public dev.caskeleton.messaging.runtime.RegisteredMessageCodecs messagingCodecs(
362-      ObjectProvider<MessageContracts> contracts) {
363-    return dev.caskeleton.messaging.runtime.RegisteredMessageCodecs.of(
364-        dev.caskeleton.messaging.schema.json.JacksonMessageCodec.of(
