# 이 카드의 상태와 생산자 태스크
72:    "jpa-flyway-migration": {
73-      "state": "selected",
74-      "schema-stream": "owned",
75-      "prerequisites": ["jpa-observability-lifecycle", "jpa-security-baseline"],
76-      "readiness-task": ":adapter:outbound:persistence-jpa:postgresqlMigrationIntegrationTest",
77-      "required-evidence": [
78-        "real-postgresql",

# 이 카드를 선행 조건으로 두는 카드 전수
#   jpa-aggregate-store                selected
#   jpa-query-model                    selected
#   jpa-primary-foundation             selected
#   jpa-idempotency-owner-safe-v2      implemented-candidate
#   jpa-outbox-storage-v2              implemented-candidate
#   jpa-outbox-polling-delivery-v2     implemented-candidate
#   jpa-inbox-same-store-v1            implemented-candidate
#   jpa-fileserver-metadata-v1         implemented-candidate
#   jpa-notification-platform-v4       implemented-candidate
#   jpa-primary-replica                not-implemented
#   jpa-jdbc-efficiency-coordination   not-implemented
#   집계 게이트 jpa-primary-foundation 의 선행 조건:
#     jpa-observability-lifecycle
#     jpa-security-baseline
#     jpa-flyway-migration
#     jpa-transaction-runtime
#     jpa-aggregate-store
#     jpa-query-model

# 집계 게이트는 카드 id 를 이름으로 요구한다
891:                'jpa-flyway-migration',

# 그 태스크가 고정한 적용 집합 셋
47:        .containsExactly("1", "3", "4", "5", "6");
62:    assertThat(appliedVersions(postgres, "flyway_jpa_core_history")).containsExactly("0", "1");
89:      assertThat(appliedVersions(fresh, "flyway_jpa_core_history")).containsExactly("1");
123:      assertThat(appliedVersions(interrupted, "flyway_readiness_interrupted")).containsExactly("1");

# 두 스트림의 실제 마이그레이션
#   postgresql : V1 V3 V4 V5 V6 V9 V10 V11 V12 
#   jpa/core   : V1 V2 

# 단언이 마지막으로 갱신된 시점과 그 뒤 들어온 마이그레이션
#   2026-07-31  7eb6af5d  PostgreSqlMigrationIntegrationTest.java
#   2026-08-15  2f5d2fc2  V2__widen_capability_schema_stream.sql
#   2026-08-15  2f5d2fc2  V9__widen_capability_schema_stream.sql
#   2026-08-18  e98b56eb  V10__idempotency_request_hash_varchar.sql
#   2026-08-28  a24ece9c  V11__durable_operation.sql
#   2026-08-28  a24ece9c  V12__live_event_log.sql

# 같은 소스 세트가 이 실패 유형을 주석으로 적어 두었다
        // This list is the stream's contract, not a note about its length: the lifecycle below
        // disables, re-enables and interrupts the stream and asserts the applied set is unchanged
        // each time. So a migration added to the stream belongs here, and the version that landed
        // without being added is why the lane failed the first time anybody ran it.
        List.of("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10"),
