# Tier 열거값 셋과 EXTENSION 의 뜻
  CompatibilityMatrix.java:23   public enum Tier {
  CompatibilityMatrix.java:24     /** Passes the shared adapter contract unchanged. */
  CompatibilityMatrix.java:25     STABLE,
  CompatibilityMatrix.java:26 
  CompatibilityMatrix.java:27     /** Contract coverage is still being proven; disabled by default. */
  CompatibilityMatrix.java:28     EXPERIMENTAL,
  CompatibilityMatrix.java:29 
  CompatibilityMatrix.java:30     /** Adapter SPI only; outside the supported set. */
  CompatibilityMatrix.java:31     EXTENSION
  CompatibilityMatrix.java:32   }

# 표 밖에 있는 bridge leaf
  messaging-spring-cloud-stream-bridge       main 6 파일 · 507 줄
  modules.json  messaging-spring-cloud-stream-bridge  runtime_memberships=[]
  ENTRIES 에 bridge 이름이 있는가 : 0

# Entry 가 요구하는 것 — bridge 가 이 표의 행이 될 수 있는가
  CompatibilityMatrix.java:66       Objects.requireNonNull(brokerVersions, "brokerVersions must not be null");
  CompatibilityMatrix.java:67       if (adapter == null || adapter.isBlank()) {
  CompatibilityMatrix.java:68         throw new IllegalArgumentException("adapter must not be blank");
  CompatibilityMatrix.java:69       }
  CompatibilityMatrix.java:70       if (brokerVersions.isEmpty()) {
  CompatibilityMatrix.java:71         throw new IllegalArgumentException("an adapter must certify at least one broker version");
  CompatibilityMatrix.java:72       }
  CompatibilityMatrix.java:73       brokerVersions = List.copyOf(brokerVersions);
  CompatibilityMatrix.java:74     }
  CompatibilityMatrix.java:60  public boolean hasLiveBrokerCertification() {

# 미등록 이름을 조용히 지원으로 두지 않는 장치
  CompatibilityMatrix.java:68  throw new IllegalArgumentException("adapter must not be blank");
  CompatibilityMatrix.java:71  throw new IllegalArgumentException("an adapter must certify at least one broker version");
  CompatibilityMatrix.java:126  public static Entry of(String adapter) {
  CompatibilityMatrix.java:129  throw new IllegalArgumentException("adapter is not in the compatibility matrix: " + adapter);
  test · CompatibilityMatrixTest.java:83   void anUnknownAdapterIsNotSilentlyTreatedAsSupported() {
  그 시험이 미등록 이름의 예로 쓰는 것, 그리고 of 를 부르는 main 코드 :
  test · CompatibilityMatrixTest.java:84     assertThatThrownBy(() -> CompatibilityMatrix.of("messaging-artemis"))
  test · CompatibilityMatrixTest.java:122             "messaging-artemis", List.of("2.42"), CompatibilityMatrix.Tier.STABLE, true, false);
  test · CrossBrokerContractSuite.java:118     assertThat(matrix.coverageOf("messaging-artemis", NetworkFaultScenario.CONFIRM_TIMEOUT))
    CompatibilityMatrix 를 자기 파일 밖에서 쓰는 main 코드 : 0 건

# ENTRIES 다섯 항목이 각각 어떤 Tier 인가
  CompatibilityMatrix.java:85  new Entry("messaging-kafka", List.of("4.1"), Tier.STABLE, true, true),
  CompatibilityMatrix.java:92  new Entry("messaging-rabbit", List.of("4.3"), Tier.EXPERIMENTAL, true, false),
  CompatibilityMatrix.java:97  Tier.EXPERIMENTAL,
  CompatibilityMatrix.java:104  Tier.EXPERIMENTAL,
  CompatibilityMatrix.java:109  "messaging-nats-experimental", List.of("2.14"), Tier.EXPERIMENTAL, false, false));
  ENTRIES 안에서 Tier.STABLE 를 쓴 횟수 : 1
  ENTRIES 안에서 Tier.EXPERIMENTAL 를 쓴 횟수 : 4
  ENTRIES 안에서 Tier.EXTENSION 를 쓴 횟수 : 0

# 운영자용 문서에는 등급 표가 둘이다
  docs/messaging/support-matrix.md:29:## 브로커 등급
  docs/messaging/support-matrix.md:66:## 기능 등급
  브로커 등급 표의 Extension 행 :
  docs/messaging/support-matrix.md:37:| Artemis/JMS | Extension | 범위 밖 | adapter SPI만 | 별도 ADR + Contract Suite 통과 필요 |
  그 문서가 이 leaf 를 언급하는 줄 (대소문자·구분자 무관) :
    docs/messaging/support-matrix.md:78:| Spring Cloud Stream bridge | Optional |

# bridge 가 무엇이라고 스스로 적는가
  MessagingBindingBridge.java:8  * <p>The bridge is an interoperability seam, not a second messaging API. Its whole reason to exist
  StreamBridgePolicyGuard.java:17  * must go through the native adapter, where those are actually enforced.
  StreamBridgePolicyGuard.java:30  if (!enabled) {
  StreamBridgePolicyGuard.java:32  "STREAM_BRIDGE_DISABLED",
  StreamBridgePolicyGuard.java:36  if (profile.isOrdered()) {
  StreamBridgePolicyGuard.java:38  "STREAM_BRIDGE_ORDERING_UNSUPPORTED",
  StreamBridgePolicyGuard.java:39  "an ordered destination must use the native adapter: " + profile.name().value());
  StreamBridgePolicyGuard.java:41  if (profile.retry().mode() != dev.caskeleton.messaging.policy.RetryMode.NONE) {
  StreamBridgePolicyGuard.java:43  "STREAM_BRIDGE_RETRY_UNSUPPORTED",
  StreamBridgePolicyGuard.java:44  "the bridge does not apply the platform retry policy: " + profile.name().value());
  StreamBridgePolicyGuard.java:46  if (profile.deadLetter().enabled()) {
  StreamBridgePolicyGuard.java:48  "STREAM_BRIDGE_DLQ_UNSUPPORTED",
  StreamBridgePolicyGuard.java:49  "the bridge does not apply confirmed dead lettering: " + profile.name().value());
