{ "schemaVersion": 1, "project": "clean-architecture-backend-template", "generatedAt": "2026-08-31T02:22:23.332251+00:00", "sourceManifest": "root-tree-source-manifest.json", "candidates": [ { "id": "A01-F001", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/01-domain-core.md#L202" ], "sourceHeading": "P1 — UUIDv7 계약과 실제 validation의 불일치 확인/정렬", "summary": "UUIDv7 계약과 실제 validation의 불일치 확인/정렬", "disposition": "MERGED", "target": "case:documented-uuidv7-generates-v4", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A01-F002", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/01-domain-core.md#L216" ], "sourceHeading": "P3 — `IdFactory.newId()`의 “never-before-used” 문구 정밀화", "summary": "`IdFactory.newId()`의 “never-before-used” 문구 정밀화", "disposition": "EMITTED", "target": "case:a01-f002-idfactory-newid", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A02-F001", "kindCandidate": "OPEN_QUESTION", "priority": "P1", "sourceRefs": [ "analysis/02-shared-contract.md#L155" ], "sourceHeading": "P1 — response/LRO invariant enforcement boundary", "summary": "response/LRO invariant enforcement boundary", "disposition": "EMITTED", "target": "open-question:a02-f001-lro", "reason": null, "topic": "contract-domain-and-bounds", "classificationCorrection": "analysis-authored unresolved/kind hint applied during recall-gate review" }, { "id": "A02-F002", "kindCandidate": "OPEN_QUESTION", "priority": "P1", "sourceRefs": [ "analysis/02-shared-contract.md#L159" ], "sourceHeading": "P1 — DomainContextKey same-name different-type collision", "summary": "DomainContextKey same-name different-type collision", "disposition": "EMITTED", "target": "open-question:a02-f002-domaincontextkey", "reason": null, "topic": "contract-domain-and-bounds", "classificationCorrection": "analysis-authored unresolved/kind hint applied during recall-gate review" }, { "id": "A02-F003", "kindCandidate": "OPEN_QUESTION", "priority": "P2", "sourceRefs": [ "analysis/02-shared-contract.md#L163" ], "sourceHeading": "P2 — bounded operational record identifiers", "summary": "bounded operational record identifiers", "disposition": "EMITTED", "target": "open-question:analysis-finding-a02-f003", "reason": null, "topic": "contract-domain-and-bounds", "classificationCorrection": "analysis-authored unresolved/kind hint applied during recall-gate review" }, { "id": "A02-F004", "kindCandidate": "OPEN_QUESTION", "priority": "P2", "sourceRefs": [ "analysis/02-shared-contract.md#L167" ], "sourceHeading": "P2 — permission component grammar", "summary": "permission component grammar", "disposition": "EMITTED", "target": "open-question:analysis-finding-a02-f004", "reason": null, "topic": "security-policy-enforcement", "classificationCorrection": "analysis-authored unresolved/kind hint applied during recall-gate review" }, { "id": "A02-F005", "kindCandidate": "OPEN_QUESTION", "priority": "P2", "sourceRefs": [ "analysis/02-shared-contract.md#L171" ], "sourceHeading": "P2 — messaging schema qualification boundary", "summary": "messaging schema qualification boundary", "disposition": "EMITTED", "target": "open-question:analysis-finding-a02-f005", "reason": null, "topic": "schema-and-data-contracts", "classificationCorrection": "analysis-authored unresolved/kind hint applied during recall-gate review" }, { "id": "A03-F001", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/03-application-core.md#L344" ], "sourceHeading": "P1 — notification admin atomic claim contract가 service에서 사용되지 않음", "summary": "notification admin atomic claim contract가 service에서 사용되지 않음", "disposition": "EMITTED", "target": "case:analysis-finding-a03-f001", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A03-F002", "kindCandidate": "OPEN_QUESTION", "priority": "P2", "sourceRefs": [ "analysis/03-application-core.md#L352" ], "sourceHeading": "P2 — notification derived idempotency key가 32-bit hash", "summary": "notification derived idempotency key가 32-bit hash", "disposition": "EMITTED", "target": "open-question:analysis-finding-a03-f002", "reason": null, "topic": "state-ownership-and-concurrency", "classificationCorrection": "analysis-authored unresolved/kind hint applied during recall-gate review" }, { "id": "A03-F003", "kindCandidate": "REFERENCE", "priority": "P2", "sourceRefs": [ "analysis/03-application-core.md#L360" ], "sourceHeading": "P2 — legacy storage/notification compatibility surface의 제거 조건 추적", "summary": "legacy storage/notification compatibility surface의 제거 조건 추적", "disposition": "EMITTED", "target": "reference:analysis-finding-a03-f003", "reason": null, "topic": "runtime-contract-correctness", "classificationCorrection": "analysis-authored unresolved/kind hint applied during recall-gate review" }, { "id": "A03-F004", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/03-application-core.md#L367" ], "sourceHeading": "P3 — isolation vocabulary와 legacy routing capability의 시차", "summary": "isolation vocabulary와 legacy routing capability의 시차", "disposition": "EMITTED", "target": "open-question:analysis-finding-a03-f004", "reason": null, "topic": "runtime-contract-correctness", "classificationCorrection": "analysis-authored unresolved/kind hint applied during recall-gate review" }, { "id": "A04-F001", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L156" ], "sourceHeading": "4. Confirmed P1 — `cause.getMessage()` 때문에 PII-safe logging 계약이 성립하지 않는다", "summary": "`cause.getMessage()` 때문에 PII-safe logging 계약이 성립하지 않는다", "disposition": "MERGED", "target": "case:pii-through-an-exception-message", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A04-F002", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L232" ], "sourceHeading": "5. Confirmed P1 — notification consumer는 diagnostic failure를 authoritative failure로 바꿀 수 있다", "summary": "notification consumer는 diagnostic failure를 authoritative failure로 바꿀 수 있다", "disposition": "EMITTED", "target": "case:analysis-finding-a04-f002", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A04-F003", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L575" ], "sourceHeading": "P1 — arbitrary exception message가 PII-safe logging boundary를 우회한다", "summary": "arbitrary exception message가 PII-safe logging boundary를 우회한다", "disposition": "MERGED", "target": "case:pii-through-an-exception-message", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A04-F004", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L585" ], "sourceHeading": "P1 — notification fail-open consumer가 logger failure를 격리하지 않는다", "summary": "notification fail-open consumer가 logger failure를 격리하지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a04-f004", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A04-F005", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L595" ], "sourceHeading": "P3 — support README가 current architecture registry/history와 drift", "summary": "support README가 current architecture registry/history와 drift", "disposition": "EMITTED", "target": "case:analysis-finding-a04-f005", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A04-F006", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L603" ], "sourceHeading": "P3 — cache-redis/httpclient의 support project dependency 필요성 재검증", "summary": "cache-redis/httpclient의 support project dependency 필요성 재검증", "disposition": "EMITTED", "target": "open-question:analysis-finding-a04-f006", "reason": null, "topic": "verification-path-coverage", "classificationCorrection": "analysis-authored unresolved/kind hint applied during recall-gate review" }, { "id": "A05-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L382" ], "sourceHeading": "6.2 Confirmed P2 — encode가 발급한 2046~2048-byte cursor를 decode가 거부한다", "summary": "encode가 발급한 2046~2048-byte cursor를 decode가 거부한다", "disposition": "EMITTED", "target": "case:analysis-finding-a05-f001", "reason": null, "topic": "contract-domain-and-bounds" }, { "id": "A05-F002", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L651" ], "sourceHeading": "P2 — `SignedJsonCursorCodec` accepted encode domain과 decode domain 불일치", "summary": "`SignedJsonCursorCodec` accepted encode domain과 decode domain 불일치", "disposition": "MERGED", "target": "case:analysis-finding-a05-f001", "reason": "A05-F001와 같은 분석 사건을 후속 sub-scope/pass에서 다시 기록한 중복 finding이다. 별도 Case를 만들지 않고 primary candidate에 병합한다." }, { "id": "A05-F003", "kindCandidate": "OPEN_QUESTION", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L661" ], "sourceHeading": "P2 — `CapabilitySupport.constraints`의 bounded/report-safe 계약이 타입에서 강제되지 않음", "summary": "`CapabilitySupport.constraints`의 bounded/report-safe 계약이 타입에서 강제되지 않음", "disposition": "EMITTED", "target": "open-question:a05-f003-capabilitysupport-constraints", "reason": null, "topic": "contract-domain-and-bounds", "classificationCorrection": "analysis-authored unresolved/kind hint applied during recall-gate review" }, { "id": "A05-F004", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L670" ], "sourceHeading": "P3 — `RetryDecision.reason`의 “bounded” 설명과 constructor contract 불일치", "summary": "`RetryDecision.reason`의 “bounded” 설명과 constructor contract 불일치", "disposition": "EMITTED", "target": "case:a05-f004-retrydecision-reason", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A05-F005", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L991" ], "sourceHeading": "20. Confirmed P2 — application-supplied `JpaRetryPolicy`가 valid execution에서 무시된다", "summary": "application-supplied `JpaRetryPolicy`가 valid execution에서 무시된다", "disposition": "EMITTED", "target": "case:a05-f005-jparetrypolicy", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A05-F006", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1122" ], "sourceHeading": "23. Confirmed P1 — Stable completion-evidence capability가 shipped composition에 설치되지 않는다", "summary": "Stable completion-evidence capability가 shipped composition에 설치되지 않는다", "disposition": "EMITTED", "target": "case:a05-f006-stable", "reason": null, "topic": "verification-path-coverage" }, { "id": "A05-F007", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1304" ], "sourceHeading": "25. P3 — `TransactionProfileRegistry`는 declarative retry 제거 후 legacy residue 후보", "summary": "`TransactionProfileRegistry`는 declarative retry 제거 후 legacy residue 후보", "disposition": "EMITTED", "target": "case:a05-f007-transactionprofileregistry", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A05-F008", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1524" ], "sourceHeading": "P1 — completion-evidence Stable contract가 actual composition에 연결되지 않음", "summary": "completion-evidence Stable contract가 actual composition에 연결되지 않음", "disposition": "MERGED", "target": "case:a05-f006-stable", "reason": "A05-F006와 같은 분석 사건을 후속 sub-scope/pass에서 다시 기록한 중복 finding이다. 별도 Case를 만들지 않고 primary candidate에 병합한다." }, { "id": "A05-F009", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1534" ], "sourceHeading": "P2 — custom `JpaRetryPolicy`가 silently ignored", "summary": "custom `JpaRetryPolicy`가 silently ignored", "disposition": "MERGED", "target": "case:a05-f005-jparetrypolicy", "reason": "A05-F005와 같은 분석 사건을 후속 sub-scope/pass에서 다시 기록한 중복 finding이다. 별도 Case를 만들지 않고 primary candidate에 병합한다." }, { "id": "A05-F010", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1542" ], "sourceHeading": "P2 — canonical transaction boundary documentation과 실제 dual stack 불일치", "summary": "canonical transaction boundary documentation과 실제 dual stack 불일치", "disposition": "EMITTED", "target": "case:analysis-finding-a05-f010", "reason": null, "topic": "contract-domain-and-bounds" }, { "id": "A05-F011", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1549" ], "sourceHeading": "P3 — TransactionProfileRegistry legacy residue", "summary": "TransactionProfileRegistry legacy residue", "disposition": "MERGED", "target": "case:a05-f007-transactionprofileregistry", "reason": "A05-F007와 같은 분석 사건을 후속 sub-scope/pass에서 다시 기록한 중복 finding이다. 별도 Case를 만들지 않고 primary candidate에 병합한다." }, { "id": "A05-F012", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1731" ], "sourceHeading": "38. Confirmed P2 — property-access `IDENTITY` entity가 batch guard를 우회한다", "summary": "property-access `IDENTITY` entity가 batch guard를 우회한다", "disposition": "EMITTED", "target": "case:a05-f012-identity", "reason": null, "topic": "security-policy-enforcement" }, { "id": "A05-F013", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2021" ], "sourceHeading": "47. Confirmed P2 — `SpecificationPolicy`는 `Specification.unrestricted()`를 bounded로 오인한다", "summary": "`SpecificationPolicy`는 `Specification.unrestricted()`를 bounded로 오인한다", "disposition": "EMITTED", "target": "case:a05-f013-specificationpolicy-specification-unrestricted", "reason": null, "topic": "contract-domain-and-bounds" }, { "id": "A05-F014", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2257" ], "sourceHeading": "52. Confirmed P1 — `collection-fetch-pagination` blocking release gate가 실제 위험을 증명하지 않는다", "summary": "`collection-fetch-pagination` blocking release gate가 실제 위험을 증명하지 않는다", "disposition": "EMITTED", "target": "case:a05-f014-collection-fetch-pagination", "reason": null, "topic": "verification-path-coverage" }, { "id": "A05-F015", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2531" ], "sourceHeading": "P1 — blocking `collection-fetch-pagination` release gate false evidence", "summary": "blocking `collection-fetch-pagination` release gate false evidence", "disposition": "MERGED", "target": "case:a05-f014-collection-fetch-pagination", "reason": "A05-F014와 같은 분석 사건을 후속 sub-scope/pass에서 다시 기록한 중복 finding이다. 별도 Case를 만들지 않고 primary candidate에 병합한다." }, { "id": "A05-F016", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2540" ], "sourceHeading": "P2 — property-access IDENTITY가 batching-required guard를 우회", "summary": "property-access IDENTITY가 batching-required guard를 우회", "disposition": "MERGED", "target": "case:a05-f012-identity", "reason": "A05-F012와 같은 분석 사건을 후속 sub-scope/pass에서 다시 기록한 중복 finding이다. 별도 Case를 만들지 않고 primary candidate에 병합한다." }, { "id": "A05-F017", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2548" ], "sourceHeading": "P2 — `SpecificationPolicy`가 unrestricted non-null Specification을 허용", "summary": "`SpecificationPolicy`가 unrestricted non-null Specification을 허용", "disposition": "MERGED", "target": "case:a05-f013-specificationpolicy-specification-unrestricted", "reason": "A05-F013와 같은 분석 사건을 후속 sub-scope/pass에서 다시 기록한 중복 finding이다. 별도 Case를 만들지 않고 primary candidate에 병합한다." }, { "id": "A05-F018", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2556" ], "sourceHeading": "Cross-scope P1/P2 — query SQL naming/observability composition 부재", "summary": "query SQL naming/observability composition 부재", "disposition": "EMITTED", "target": "case:a05-f018-sql", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A05-F019", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2562" ], "sourceHeading": "P2/P3 — export surface split SSOT", "summary": "export surface split SSOT", "disposition": "EMITTED", "target": "case:a05-f019-ssot", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A05-F020", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2675" ], "sourceHeading": "59.1 P1 — `inspect()`와 `claim()`이 만료된 COMPLETED row를 동시에 다른 상태로 해석한다", "summary": "`inspect()`와 `claim()`이 만료된 COMPLETED row를 동시에 다른 상태로 해석한다", "disposition": "EMITTED", "target": "case:a05-f020-inspect-claim", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A05-F021", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2704" ], "sourceHeading": "59.2 P2 — `complete()`의 replay 판정이 `replayTtl` 변경을 무시한다", "summary": "`complete()`의 replay 판정이 `replayTtl` 변경을 무시한다", "disposition": "EMITTED", "target": "case:a05-f021-complete-replayttl", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A05-F022", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2991" ], "sourceHeading": "69. P1 — Stable runtime-role verification이 startup에서 실제 policy를 적용하지 않는다", "summary": "Stable runtime-role verification이 startup에서 실제 policy를 적용하지 않는다", "disposition": "EMITTED", "target": "case:a05-f022-stable", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A05-F023", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3177" ], "sourceHeading": "78. P1 — persistent byte quota가 실제 admission에서 집행되지 않는다", "summary": "persistent byte quota가 실제 admission에서 집행되지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a05-f023", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A05-F024", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3246" ], "sourceHeading": "80. P2 — quota reclaim은 최대 64개 committed row만 처리하고 남은 byte를 조용히 버린다", "summary": "quota reclaim은 최대 64개 committed row만 처리하고 남은 byte를 조용히 버린다", "disposition": "EMITTED", "target": "case:analysis-finding-a05-f024", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A05-F025", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3266" ], "sourceHeading": "81. P2 — direct `FileQuotaService.commit()`은 만료 reservation을 commit한다", "summary": "direct `FileQuotaService.commit()`은 만료 reservation을 commit한다", "disposition": "EMITTED", "target": "case:a05-f025-filequotaservice-commit", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A05-F026", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3287" ], "sourceHeading": "82. P2 — recovery queue의 `enqueue()`는 concurrent upsert가 아니다", "summary": "recovery queue의 `enqueue()`는 concurrent upsert가 아니다", "disposition": "EMITTED", "target": "case:a05-f026-enqueue", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A05-F027", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3316" ], "sourceHeading": "82.1. P2 — cleanup crash-reclaim은 `MAXIMUM_ATTEMPTS`를 우회해 poison item을 무한 재시도할 수 있다", "summary": "cleanup crash-reclaim은 `MAXIMUM_ATTEMPTS`를 우회해 poison item을 무한 재시도할 수 있다", "disposition": "EMITTED", "target": "case:a05-f027-maximum-attempts", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A05-F028", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3460" ], "sourceHeading": "89. P1 — provider 호출 뒤 recipient projection write가 lease fencing을 우회한다", "summary": "provider 호출 뒤 recipient projection write가 lease fencing을 우회한다", "disposition": "EMITTED", "target": "case:analysis-finding-a05-f028", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A05-F029", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3494" ], "sourceHeading": "90. P2 — reconciliation `FOR UPDATE SKIP LOCKED`는 worker 처리 구간을 claim하지 않는다", "summary": "reconciliation `FOR UPDATE SKIP LOCKED`는 worker 처리 구간을 claim하지 않는다", "disposition": "EMITTED", "target": "case:a05-f029-for-update-skip-locked", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A05-F030", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3525" ], "sourceHeading": "91. P2 — V8 atomic admin claim은 production service에 연결되지 않았고 completion 모델도 미완성이다", "summary": "V8 atomic admin claim은 production service에 연결되지 않았고 completion 모델도 미완성이다", "disposition": "EMITTED", "target": "case:analysis-finding-a05-f030", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A05-F031", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L4089" ], "sourceHeading": "116. Confirmed P2 — vendor selector의 fail-fast 계약이 shipped composition에 설치돼 있지 않다", "summary": "vendor selector의 fail-fast 계약이 shipped composition에 설치돼 있지 않다", "disposition": "EMITTED", "target": "case:analysis-finding-a05-f031", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A05-F032", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L4273" ], "sourceHeading": "125. Confirmed P2 — nightly workflow가 광고하는 세 가지 중 하나를 lane이 실제로 관측하지 않는다", "summary": "nightly workflow가 광고하는 세 가지 중 하나를 lane이 실제로 관측하지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a05-f032", "reason": null, "topic": "verification-path-coverage" }, { "id": "A05-F033", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L4391" ], "sourceHeading": "132. Confirmed P1 — selected base card `jpa-flyway-migration`의 producer가 현재 revision에서 실패한다", "summary": "selected base card `jpa-flyway-migration`의 producer가 현재 revision에서 실패한다", "disposition": "EMITTED", "target": "case:a05-f033-jpa-flyway-migration", "reason": null, "topic": "verification-path-coverage" }, { "id": "A05-F034", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L4462" ], "sourceHeading": "133. Confirmed P2 — selected base card 3개의 evidence tag가 production code 없는 fixture로 충족된다", "summary": "selected base card 3개의 evidence tag가 production code 없는 fixture로 충족된다", "disposition": "EMITTED", "target": "case:analysis-finding-a05-f034", "reason": null, "topic": "verification-path-coverage" }, { "id": "A06-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L113" ], "sourceHeading": "4. Confirmed P2 — README가 제시하는 활성화 recipe를 그대로 따르면 애플리케이션이 시작되지 않는다", "summary": "README가 제시하는 활성화 recipe를 그대로 따르면 애플리케이션이 시작되지 않는다", "disposition": "MERGED", "target": "case:the-readme-recipe-does-not-start", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A06-F002", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L132" ], "sourceHeading": "5. Confirmed P3 — 폐기된 namespace guard의 탐색 domain이 operator가 읽는 두 문서를 덮지 않는다", "summary": "폐기된 namespace guard의 탐색 domain이 operator가 읽는 두 문서를 덮지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f002", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A06-F003", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L156" ], "sourceHeading": "6. Confirmed P3 — `change-streams=true`는 거부되지 않고 조용히 버려지며, 그 결과 startup validator의 한 분기가 production에서 도달 불가다", "summary": "`change-streams=true`는 거부되지 않고 조용히 버려지며, 그 결과 startup validator의 한 분기가 production에서 도달 불가다", "disposition": "EMITTED", "target": "case:a06-f003-change-streams-true", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A06-F004", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L332" ], "sourceHeading": "16. Confirmed P2 — schema version 실패는 두 경로 중 어느 쪽도 온전하지 않다", "summary": "schema version 실패는 두 경로 중 어느 쪽도 온전하지 않다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f004", "reason": null, "topic": "schema-and-data-contracts" }, { "id": "A06-F005", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L347" ], "sourceHeading": "17. Confirmed P3 — 예외 계층의 \"cause를 붙이지 않는다\" 규칙에 문서화되지 않은 예외가 하나 있다", "summary": "예외 계층의 \"cause를 붙이지 않는다\" 규칙에 문서화되지 않은 예외가 하나 있다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f005", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A06-F006", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L447" ], "sourceHeading": "23. Confirmed P1 — shipped default 조합이 첫 write에서 예외를 던진다", "summary": "shipped default 조합이 첫 write에서 예외를 던진다", "disposition": "MERGED", "target": "case:mongo-default-throws-on-first-write", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A06-F007", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L505" ], "sourceHeading": "25. Confirmed P2 — D3 gateway가 문서화한 검사 순서에 존재하지 않는 단계가 있다", "summary": "D3 gateway가 문서화한 검사 순서에 존재하지 않는 단계가 있다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f007", "reason": null, "topic": "verification-path-coverage" }, { "id": "A06-F008", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L600" ], "sourceHeading": "32. Confirmed P2 — 서버 측 deadline이 경로마다 다르게 적용되고, 문서가 지목한 메커니즘은 production 호출자가 0이다", "summary": "서버 측 deadline이 경로마다 다르게 적용되고, 문서가 지목한 메커니즘은 production 호출자가 0이다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f008", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A06-F009", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L622" ], "sourceHeading": "33. P3 — timeout 초과 경로가 한 observation에 success와 failure를 모두 기록한다", "summary": "timeout 초과 경로가 한 observation에 success와 failure를 모두 기록한다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f009", "reason": null, "topic": "transport-and-provider-semantics" }, { "id": "A06-F010", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L717" ], "sourceHeading": "42. P2 — collection 이름 불변식이 aggregation executor의 서명에서 깨진다", "summary": "collection 이름 불변식이 aggregation executor의 서명에서 깨진다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f010", "reason": null, "topic": "schema-and-data-contracts" }, { "id": "A06-F011", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L740" ], "sourceHeading": "43. P3 — `MongoRegexPolicy.forbidden()`은 금지하지 않는다", "summary": "`MongoRegexPolicy.forbidden()`은 금지하지 않는다", "disposition": "EMITTED", "target": "case:a06-f011-mongoregexpolicy-forbidden", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A06-F012", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L809" ], "sourceHeading": "49. Confirmed P2 — 이 subsystem 전체가 배선돼 있지 않은데, 그것을 켜는 flag는 startup 검사를 수행한다", "summary": "이 subsystem 전체가 배선돼 있지 않은데, 그것을 켜는 flag는 startup 검사를 수행한다", "disposition": "MERGED", "target": "case:a-flag-that-validates-an-unwired-subsystem", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A06-F013", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L884" ], "sourceHeading": "56. P2 — `recordApplied`는 문서화된 fence 계약을 구현하지 않고, 보호를 역전시킨다", "summary": "`recordApplied`는 문서화된 fence 계약을 구현하지 않고, 보호를 역전시킨다", "disposition": "EMITTED", "target": "case:a06-f013-recordapplied", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A06-F014", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L910" ], "sourceHeading": "57. P2 — index diff가 실제로 비교하는 것은 두 필드뿐이다", "summary": "index diff가 실제로 비교하는 것은 두 필드뿐이다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f014", "reason": null, "topic": "schema-and-data-contracts" }, { "id": "A06-F015", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L927" ], "sourceHeading": "58. P3 — TTL이 두 곳에 선언되고, 규칙을 가진 쪽은 아무도 쓰지 않는다", "summary": "TTL이 두 곳에 선언되고, 규칙을 가진 쪽은 아무도 쓰지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f015", "reason": null, "topic": "schema-and-data-contracts" }, { "id": "A06-F016", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L942" ], "sourceHeading": "59. P3 — Flamingock lease로는 어떤 migration도 실행할 수 없고, javadoc은 다르게 적는다", "summary": "Flamingock lease로는 어떤 migration도 실행할 수 없고, javadoc은 다르게 적는다", "disposition": "EMITTED", "target": "case:a06-f016-flamingock", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A06-F017", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1041" ], "sourceHeading": "67. P1 — high-water mark가 재전달된 이벤트를 삼켜, failover 중이던 변경이 조용히 영구 소실된다", "summary": "high-water mark가 재전달된 이벤트를 삼켜, failover 중이던 변경이 조용히 영구 소실된다", "disposition": "MERGED", "target": "case:high-water-mark-swallowed-a-redelivered-change", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A06-F018", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1069" ], "sourceHeading": "68. P2 — `changeStreams` flag는 `false`로 고정돼 있는데, 소비자 bean은 그것과 무관하게 조립된다", "summary": "`changeStreams` flag는 `false`로 고정돼 있는데, 소비자 bean은 그것과 무관하게 조립된다", "disposition": "EMITTED", "target": "case:a06-f018-changestreams-false", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A06-F019", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1088" ], "sourceHeading": "69. P3 — recovery package에 쓰이는 어휘와 쓰이지 않는 어휘가 나란히 있다", "summary": "recovery package에 쓰이는 어휘와 쓰이지 않는 어휘가 나란히 있다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f019", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A06-F020", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1161" ], "sourceHeading": "75. P1 — 프로파일의 TLS·타임아웃·풀·Stable API가 driver에 도달하지 않는다", "summary": "프로파일의 TLS·타임아웃·풀·Stable API가 driver에 도달하지 않는다", "disposition": "EMITTED", "target": "case:a06-f020-tls-stable", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A06-F021", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1189" ], "sourceHeading": "76. P3 — admin gateway의 두 audit 경로 중 하나만 fail-closed다", "summary": "admin gateway의 두 audit 경로 중 하나만 fail-closed다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f021", "reason": null, "topic": "verification-path-coverage" }, { "id": "A06-F022", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1195" ], "sourceHeading": "77. P3 — 태그 allowlist는 규약이지 강제가 아니다", "summary": "태그 allowlist는 규약이지 강제가 아니다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f022", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A06-F023", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1281" ], "sourceHeading": "85. P2 — sharding admin gateway의 네 작업 중 셋은 어떤 입력으로도 완료될 수 없다", "summary": "sharding admin gateway의 네 작업 중 셋은 어떤 입력으로도 완료될 수 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f023", "reason": null, "topic": "verification-path-coverage" }, { "id": "A06-F024", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1305" ], "sourceHeading": "86. P3 — promotion 증거 어휘가 둘이고, gate는 하나만 검사한다", "summary": "promotion 증거 어휘가 둘이고, gate는 하나만 검사한다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f024", "reason": null, "topic": "verification-path-coverage" }, { "id": "A06-F025", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1324" ], "sourceHeading": "88. P3 — 구현 없는 4개의 계약 중 셋은 그 사실을 적고, 하나는 적지 않는다", "summary": "구현 없는 4개의 계약 중 셋은 그 사실을 적고, 하나는 적지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f025", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A06-F026", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1383" ], "sourceHeading": "94. P2 — 커버리지 gate 둘이 나란히 있고, 하나는 발화할 수 없다", "summary": "커버리지 gate 둘이 나란히 있고, 하나는 발화할 수 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f026", "reason": null, "topic": "verification-path-coverage" }, { "id": "A06-F027", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1410" ], "sourceHeading": "95. P2 — release gate가 실제로 차단하는 것은 hermetic test 3개이고, mongo용 CI workflow는 없다", "summary": "release gate가 실제로 차단하는 것은 hermetic test 3개이고, mongo용 CI workflow는 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f027", "reason": null, "topic": "verification-path-coverage" }, { "id": "A06-F028", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1433" ], "sourceHeading": "96. P3 — 소비자가 없는 fixture 셋", "summary": "소비자가 없는 fixture 셋", "disposition": "EMITTED", "target": "case:analysis-finding-a06-f028", "reason": null, "topic": "verification-path-coverage" }, { "id": "A07-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/07-adapter-outbound-identifier.md#L73" ], "sourceHeading": "3. P2 — 모듈의 존재 논거인 `UuidCodec`에 production 소비자가 없다", "summary": "모듈의 존재 논거인 `UuidCodec`에 production 소비자가 없다", "disposition": "EMITTED", "target": "case:a07-f001-uuidcodec", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A07-F002", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/07-adapter-outbound-identifier.md#L89" ], "sourceHeading": "4. P2 — `normalize`는 canonical이 아닌 입력을 받아 다른 UUID로 조용히 바꾼다", "summary": "`normalize`는 canonical이 아닌 입력을 받아 다른 UUID로 조용히 바꾼다", "disposition": "EMITTED", "target": "case:a07-f002-normalize", "reason": null, "topic": "contract-domain-and-bounds" }, { "id": "A07-F003", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/07-adapter-outbound-identifier.md#L113" ], "sourceHeading": "5. P2 — 문서는 UUIDv7이라고 말하고, 생성되는 것은 v4다", "summary": "문서는 UUIDv7이라고 말하고, 생성되는 것은 v4다", "disposition": "MERGED", "target": "case:documented-uuidv7-generates-v4", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A07-F004", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/07-adapter-outbound-identifier.md#L131" ], "sourceHeading": "6. P3 — CLAUDE.md의 의존성 서술이 세 항목 모두 틀렸다", "summary": "CLAUDE.md의 의존성 서술이 세 항목 모두 틀렸다", "disposition": "EMITTED", "target": "case:a07-f004-claude", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A07-F005", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/07-adapter-outbound-identifier.md#L150" ], "sourceHeading": "7. P3 — README의 세 가지 사실 오류", "summary": "README의 세 가지 사실 오류", "disposition": "EMITTED", "target": "case:analysis-finding-a07-f005", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A07-F006", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/07-adapter-outbound-identifier.md#L160" ], "sourceHeading": "8. P3 — CLAUDE.md가 대는 두 가드 중 하나는 저장소에 없다", "summary": "CLAUDE.md가 대는 두 가드 중 하나는 저장소에 없다", "disposition": "EMITTED", "target": "case:a07-f006-claude", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A08-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L87" ], "sourceHeading": "4. P2 — README가 \"노출된 setting도 bean도 없다\"고 적은 능력들에 production bean이 있다", "summary": "README가 \"노출된 setting도 bean도 없다\"고 적은 능력들에 production bean이 있다", "disposition": "MERGED", "target": "case:readme-said-no-beans-there-are-eight", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A08-F002", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L108" ], "sourceHeading": "5. P3 — R1과 R2의 설정 취급이 비대칭이고, 검증된 쪽은 하나뿐이다", "summary": "R1과 R2의 설정 취급이 비대칭이고, 검증된 쪽은 하나뿐이다", "disposition": "EMITTED", "target": "case:analysis-finding-a08-f002", "reason": null, "topic": "verification-path-coverage" }, { "id": "A08-F003", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L122" ], "sourceHeading": "6. P3 — 문서가 지목한 기본값 위치와 test 목록이 실제와 다르다", "summary": "문서가 지목한 기본값 위치와 test 목록이 실제와 다르다", "disposition": "EMITTED", "target": "case:analysis-finding-a08-f003", "reason": null, "topic": "verification-path-coverage" }, { "id": "A08-F004", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L376" ], "sourceHeading": "32. P3 — 발행 rename만 경로 기반이고, 그것을 지키는 것은 이 모듈이 \"근사에 불과하다\"고 적은 사전검사다", "summary": "발행 rename만 경로 기반이고, 그것을 지키는 것은 이 모듈이 \"근사에 불과하다\"고 적은 사전검사다", "disposition": "EMITTED", "target": "case:analysis-finding-a08-f004", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A08-F005", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L410" ], "sourceHeading": "34. P3 — `TransferBufferPool.maxBorrowedBytes()`가 자기 회귀 test를 지목하는데 그 test가 읽지 않는다", "summary": "`TransferBufferPool.maxBorrowedBytes()`가 자기 회귀 test를 지목하는데 그 test가 읽지 않는다", "disposition": "EMITTED", "target": "case:a08-f005-transferbufferpool-maxborrowedbytes", "reason": null, "topic": "verification-path-coverage" }, { "id": "A08-F006", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L469" ], "sourceHeading": "40. P2 — scriptable 콘텐츠 탐지가 접두사 **시작**에만 고정돼 있어 BOM·NUL·주석으로 우회된다", "summary": "scriptable 콘텐츠 탐지가 접두사 **시작**에만 고정돼 있어 BOM·NUL·주석으로 우회된다", "disposition": "MERGED", "target": "case:scriptable-detection-bypassed-by-a-bom", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A09-F001", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L106" ], "sourceHeading": "5. P3 — production 판정이 두 개의 리터럴 프로파일 이름에 걸려 있다", "summary": "production 판정이 두 개의 리터럴 프로파일 이름에 걸려 있다", "disposition": "EMITTED", "target": "case:analysis-finding-a09-f001", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A09-F002", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L432" ], "sourceHeading": "38. P2 — 직접 multipart의 마지막 part는 grant를 받을 수 없다", "summary": "직접 multipart의 마지막 part는 grant를 받을 수 없다", "disposition": "MERGED", "target": "case:the-last-part-cannot-get-a-grant", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A09-F003", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L455" ], "sourceHeading": "39. P2 — 서명된 grant의 endpoint 검증이 upload 경로에만 있다", "summary": "서명된 grant의 endpoint 검증이 upload 경로에만 있다", "disposition": "MERGED", "target": "case:endpoint-check-only-on-upload", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A09-F004", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L485" ], "sourceHeading": "41. P2 — 그러나 R0 경계가 문서에만 있고 compile 경로에서 닫히지 않는다", "summary": "그러나 R0 경계가 문서에만 있고 compile 경로에서 닫히지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a09-f004", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A09-F005", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L568" ], "sourceHeading": "49. P2 — APPLY를 켜는 설정은 있고, 승인을 검증하는 bean은 없다", "summary": "APPLY를 켜는 설정은 있고, 승인을 검증하는 bean은 없다", "disposition": "MERGED", "target": "case:apply-is-a-setting-approval-is-not", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A09-F006", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L589" ], "sourceHeading": "50. P3 — nonce replay 경계가 결과를 읽고 버린다", "summary": "nonce replay 경계가 결과를 읽고 버린다", "disposition": "EMITTED", "target": "case:analysis-finding-a09-f006", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A10-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L121" ], "sourceHeading": "5. P2 — README readiness 표와 build.gradle 주석이 실제 소스와 어긋난다", "summary": "README readiness 표와 build.gradle 주석이 실제 소스와 어긋난다", "disposition": "EMITTED", "target": "case:a10-f001-readme", "reason": null, "topic": "verification-path-coverage" }, { "id": "A10-F002", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L152" ], "sourceHeading": "6. P2 — startup probe가 production에서 한 번도 실행되지 않는다", "summary": "startup probe가 production에서 한 번도 실행되지 않는다", "disposition": "MERGED", "target": "case:a-startup-probe-that-never-runs", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A10-F003", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L251" ], "sourceHeading": "15. P2 — SDK가 선언한 두 진입점에 구현이 없다", "summary": "SDK가 선언한 두 진입점에 구현이 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a10-f003", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A10-F004", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L263" ], "sourceHeading": "16. P3 — Pub/Sub 채널만 렌더 크기 검증을 받지 않는다", "summary": "Pub/Sub 채널만 렌더 크기 검증을 받지 않는다", "disposition": "EMITTED", "target": "case:a10-f004-pub-sub", "reason": null, "topic": "verification-path-coverage" }, { "id": "A10-F005", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L277" ], "sourceHeading": "17. P3 — 다중 키 fan-in 중 HyperLogLog `merge`만 budget이 없다", "summary": "다중 키 fan-in 중 HyperLogLog `merge`만 budget이 없다", "disposition": "EMITTED", "target": "case:a10-f005-hyperloglog-merge", "reason": null, "topic": "contract-domain-and-bounds" }, { "id": "A10-F006", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L375" ], "sourceHeading": "26. P3 — `requireIdentifier`의 다섯 검사 중 둘은 도달할 수 없다", "summary": "`requireIdentifier`의 다섯 검사 중 둘은 도달할 수 없다", "disposition": "EMITTED", "target": "case:a10-f006-requireidentifier", "reason": null, "topic": "contract-domain-and-bounds" }, { "id": "A10-F007", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L485" ], "sourceHeading": "36. P3 — 패턴 구독의 R2 승인만 호출자가 아니라 배포에 대해 이루어진다", "summary": "패턴 구독의 R2 승인만 호출자가 아니라 배포에 대해 이루어진다", "disposition": "EMITTED", "target": "case:analysis-finding-a10-f007", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A10-F008", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L502" ], "sourceHeading": "37. P3 — permit 정책 이름이 세 곳에 문자열로 존재하고 교차 검사가 없다", "summary": "permit 정책 이름이 세 곳에 문자열로 존재하고 교차 검사가 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a10-f008", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A10-F009", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L615" ], "sourceHeading": "47. P2 — \"build gate\"라고 불리는 catalog drift 검사가 어디에서도 실행되지 않는다", "summary": "\"build gate\"라고 불리는 catalog drift 검사가 어디에서도 실행되지 않는다", "disposition": "MERGED", "target": "case:a-build-gate-that-is-not-in-the-build", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A10-F010", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L713" ], "sourceHeading": "56. P3 — NOSCRIPT 복구가 다섯 벌로 구현돼 있고 넷은 스크립트 레지스트리를 지나지 않는다", "summary": "NOSCRIPT 복구가 다섯 벌로 구현돼 있고 넷은 스크립트 레지스트리를 지나지 않는다", "disposition": "MERGED", "target": "case:five-copies-of-noscript-recovery", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A10-F011", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L811" ], "sourceHeading": "64. P2 — 의미 어댑터 다섯이 `CommandPolicyGuard`를 지나지 않는다", "summary": "의미 어댑터 다섯이 `CommandPolicyGuard`를 지나지 않는다", "disposition": "MERGED", "target": "case:five-adapters-bypass-the-single-admission-point", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A11-F001", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L121" ], "sourceHeading": "4. P3 — `close()`가 실패하면 drain 스케줄러 스레드가 남는다", "summary": "`close()`가 실패하면 drain 스케줄러 스레드가 남는다", "disposition": "EMITTED", "target": "case:a11-f001-close", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A11-F002", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L146" ], "sourceHeading": "5. P3 — `POOL_ROUTE_EXCEEDS_TOTAL` 위반 코드는 발화할 수 없다", "summary": "`POOL_ROUTE_EXCEEDS_TOTAL` 위반 코드는 발화할 수 없다", "disposition": "EMITTED", "target": "case:a11-f002-pool-route-exceeds-total", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A11-F003", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L164" ], "sourceHeading": "6. P3 — 위반 코드 34종 중 22종이 어떤 test에서도 이름으로 확인되지 않는다", "summary": "위반 코드 34종 중 22종이 어떤 test에서도 이름으로 확인되지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a11-f003", "reason": null, "topic": "verification-path-coverage" }, { "id": "A11-F004", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L249" ], "sourceHeading": "14. P3 — `Number`가 허용 목록에 있어 가변 숫자 타입이 REPLAYABLE로 인증된다", "summary": "`Number`가 허용 목록에 있어 가변 숫자 타입이 REPLAYABLE로 인증된다", "disposition": "EMITTED", "target": "case:a11-f004-number", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A11-F005", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L336" ], "sourceHeading": "22. P2 — 로컬 거부 경로에서 회로 브레이커 permission이 반환되지 않는다", "summary": "로컬 거부 경로에서 회로 브레이커 permission이 반환되지 않는다", "disposition": "MERGED", "target": "case:a-circuit-breaker-permit-that-leaks-on-local-rejection", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A11-F006", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L424" ], "sourceHeading": "30. P3 — `BoundedDataBufferFlux`의 두 연산자가 이름만 있고 아무것도 하지 않는다", "summary": "`BoundedDataBufferFlux`의 두 연산자가 이름만 있고 아무것도 하지 않는다", "disposition": "EMITTED", "target": "case:a11-f006-boundeddatabufferflux", "reason": null, "topic": "contract-domain-and-bounds" }, { "id": "A11-F007", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L583" ], "sourceHeading": "47. P3 — 동적 대상 DNS 핀 능력 검사가 블로킹 오버로드에만 있다", "summary": "동적 대상 DNS 핀 능력 검사가 블로킹 오버로드에만 있다", "disposition": "EMITTED", "target": "case:a11-f007-dns", "reason": null, "topic": "transport-and-provider-semantics" }, { "id": "A11-F008", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L627" ], "sourceHeading": "51. 교정 — 영구 TLS 실패의 `CONNECT` 분류는 분류기 결함이 아니라 픽스처의 듀얼스택 호스트명이다", "summary": "영구 TLS 실패의 CONNECT 분류는 제품 결함이 아니라 픽스처의 듀얼스택 호스트명이다 (사이클 1의 P1 판정 철회, EVD-332)", "disposition": "MERGED", "target": "case:a-red-test-misread-as-a-product-defect", "reason": "사이클 2에서 판정 철회. root-tree 노드도 함께 교체되었다." }, { "id": "A12-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/12-adapter-outbound-messaging.md#L82" ], "sourceHeading": "3. P2 — `check`에 붙은 `verifyJsonSchemaRuntimeGraph`가 실행되면 실패한다", "summary": "`check`에 붙은 `verifyJsonSchemaRuntimeGraph`가 실행되면 실패한다", "disposition": "EMITTED", "target": "case:a12-f001-check-verifyjsonschemaruntimegraph", "reason": null, "topic": "schema-and-data-contracts" }, { "id": "A12-F002", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/12-adapter-outbound-messaging.md#L118" ], "sourceHeading": "4. P3 — README의 `jackson-databind` 부재 주장이 현재 상태와 어긋난다", "summary": "README의 `jackson-databind` 부재 주장이 현재 상태와 어긋난다", "disposition": "EMITTED", "target": "case:a12-f002-jackson-databind", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A13-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L176" ], "sourceHeading": "P2 — `SINGLE` 전용 가드가 먼저 던져 다중 타깃 검증 전체가 도달 불가이고, 그것을 검증한다는 테스트는 다른 가드에 걸려 통과한다", "summary": "`SINGLE` 전용 가드가 먼저 던져 다중 타깃 검증 전체가 도달 불가이고, 그것을 검증한다는 테스트는 다른 가드에 걸려 통과한다", "disposition": "MERGED", "target": "case:a-test-that-passed-on-the-wrong-guard", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A13-F002", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L320" ], "sourceHeading": "P2 — `AUTHENTICATION_FAILED`를 지우지 않는다는 `resumeHealthy`의 보장이, 관리자 평면에 노출된 2단계 시퀀스로 우회된다", "summary": "`AUTHENTICATION_FAILED`를 지우지 않는다는 `resumeHealthy`의 보장이, 관리자 평면에 노출된 2단계 시퀀스로 우회된다", "disposition": "EMITTED", "target": "case:a13-f002-authentication-failed-resumehealthy", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A13-F003", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L430" ], "sourceHeading": "17.1 P2 — \"모든 reveal은 감사된다\"고 선언한 `AccessContext`를 읽는 코드가 저장소에 하나도 없다", "summary": "\"모든 reveal은 감사된다\"고 선언한 `AccessContext`를 읽는 코드가 저장소에 하나도 없다", "disposition": "EMITTED", "target": "case:a13-f003-accesscontext", "reason": null, "topic": "security-policy-enforcement" }, { "id": "A13-F004", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L476" ], "sourceHeading": "17.2 P2 — Thymeleaf 예외 메시지 삭제 가드가 프로덕션이 타지 않는 오버로드에만 있다", "summary": "Thymeleaf 예외 메시지 삭제 가드가 프로덕션이 타지 않는 오버로드에만 있다", "disposition": "EMITTED", "target": "case:a13-f004-thymeleaf", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A13-F005", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L636" ], "sourceHeading": "21.1 P3 — 음수 `Retry-After` 헤더가 throttle 결과 대신 `IllegalArgumentException`을 만든다", "summary": "음수 `Retry-After` 헤더가 throttle 결과 대신 `IllegalArgumentException`을 만든다", "disposition": "EMITTED", "target": "case:a13-f005-retry-after-illegalargumentexception", "reason": null, "topic": "schema-and-data-contracts" }, { "id": "A13-F006", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L741" ], "sourceHeading": "25.1 P2 — 클라이언트가 제공하는 Web Push 엔드포인트가 SSRF 가드를 지나지 않는다 (모듈 내 최고 영향도)", "summary": "클라이언트가 제공하는 Web Push 엔드포인트가 SSRF 가드를 지나지 않는다 (모듈 내 최고 영향도)", "disposition": "MERGED", "target": "case:a-weaker-private-copy-on-the-wired-path", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A13-F007", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L795" ], "sourceHeading": "25.2 P2 — \"상한을 두고 읽는다\"는 본문 핸들러가 전부 읽은 뒤에 자른다", "summary": "\"상한을 두고 읽는다\"는 본문 핸들러가 전부 읽은 뒤에 자른다", "disposition": "EMITTED", "target": "case:analysis-finding-a13-f007", "reason": null, "topic": "contract-domain-and-bounds" }, { "id": "A13-F008", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L831" ], "sourceHeading": "25.3 P3 — SigV4가 서명한 `host`에 포트가 없어, 기본 포트가 아닌 엔드포인트에서 서명이 어긋난다", "summary": "SigV4가 서명한 `host`에 포트가 없어, 기본 포트가 아닌 엔드포인트에서 서명이 어긋난다", "disposition": "EMITTED", "target": "case:a13-f008-host", "reason": null, "topic": "transport-and-provider-semantics" }, { "id": "A13-F009", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L844" ], "sourceHeading": "25.4 P3 — SigV4 서명 키 파생이 비밀을 지울 수 없는 `String`으로 승격시킨다", "summary": "SigV4 서명 키 파생이 비밀을 지울 수 없는 `String`으로 승격시킨다", "disposition": "EMITTED", "target": "case:a13-f009-sigv4-string", "reason": null, "topic": "transport-and-provider-semantics" }, { "id": "A13-F010", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L957" ], "sourceHeading": "29.1 P2 — FCM만 \"커밋 후 응답 손실 = ambiguous\" 규칙 밖에 있고, 그 FCM이 두 계약 집합 어디에도 없다", "summary": "FCM만 \"커밋 후 응답 손실 = ambiguous\" 규칙 밖에 있고, 그 FCM이 두 계약 집합 어디에도 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a13-f010", "reason": null, "topic": "transport-and-provider-semantics" }, { "id": "A13-F011", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L990" ], "sourceHeading": "29.2 P3 — 공유 provider 계약이 8종 중 3종에서만 상속되고, 강제 장치가 없다", "summary": "공유 provider 계약이 8종 중 3종에서만 상속되고, 강제 장치가 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a13-f011", "reason": null, "topic": "transport-and-provider-semantics" }, { "id": "A14-F001", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L305" ], "sourceHeading": "8.1 P1 — RFC 9457 계약 23개 파일이 출하 애플리케이션에 등록되지 않는다. 두 플랫폼 자동설정은 협력자 빈만 소유하고, 스캔에서 제외된 여섯 컴포넌트는 소유하지 않는다", "summary": "RFC 9457 계약 23개 파일이 출하 애플리케이션에 등록되지 않는다. 두 플랫폼 자동설정은 협력자 빈만 소유하고, 스캔에서 제외된 여섯 컴포넌트는 소유하지 않는다", "disposition": "MERGED", "target": "case:scan-exclusion-without-an-owner", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A14-F002", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L380" ], "sourceHeading": "8.2 P3 — `WebProblemSanitizer.alreadySafe`가 죽은 메서드이고 그 안의 조건도 죽어 있다", "summary": "`WebProblemSanitizer.alreadySafe`가 죽은 메서드이고 그 안의 조건도 죽어 있다", "disposition": "EMITTED", "target": "case:a14-f002-webproblemsanitizer-alreadysafe", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A14-F003", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L503" ], "sourceHeading": "12.1 P1 — 플랫폼 요청 컨텍스트가 서블릿에는 생산자가 없고, 리액티브에는 익명 액터로 고정되어 있다", "summary": "플랫폼 요청 컨텍스트가 서블릿에는 생산자가 없고, 리액티브에는 익명 액터로 고정되어 있다", "disposition": "EMITTED", "target": "case:analysis-finding-a14-f003", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A14-F004", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L562" ], "sourceHeading": "12.2 P2 — 프레임워크 자유 신원 모델과 교차 테넌트 가드가 프로덕션에서 한 번도 참조되지 않는다", "summary": "프레임워크 자유 신원 모델과 교차 테넌트 가드가 프로덕션에서 한 번도 참조되지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a14-f004", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A14-F005", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L582" ], "sourceHeading": "12.3 P3 — `publicPaths`가 `RestrictedPathRule`보다 먼저 등록되어, 넓은 공개 경로 하나가 관리 평면 규칙을 조용히 덮는다", "summary": "`publicPaths`가 `RestrictedPathRule`보다 먼저 등록되어, 넓은 공개 경로 하나가 관리 평면 규칙을 조용히 덮는다", "disposition": "EMITTED", "target": "case:a14-f005-publicpaths-restrictedpathrule", "reason": null, "topic": "security-policy-enforcement" }, { "id": "A14-F006", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L677" ], "sourceHeading": "16.1 P1 — 용량 보호 계층 전체(41 main files)가 자기 테스트 픽스처 안에서만 실행된다", "summary": "용량 보호 계층 전체(41 main files)가 자기 테스트 픽스처 안에서만 실행된다", "disposition": "EMITTED", "target": "case:analysis-finding-a14-f006", "reason": null, "topic": "verification-path-coverage" }, { "id": "A14-F007", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L701" ], "sourceHeading": "16.2 P2 — 리액티브 전송에는 속도 제한 경로가 하나도 없다", "summary": "리액티브 전송에는 속도 제한 경로가 하나도 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a14-f007", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A14-F008", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L793" ], "sourceHeading": "20.1 P1 — 멱등 실행 계층과 durable-operation 표면이 픽스처에서만 조립된다", "summary": "멱등 실행 계층과 durable-operation 표면이 픽스처에서만 조립된다", "disposition": "EMITTED", "target": "case:analysis-finding-a14-f008", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A14-F009", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L807" ], "sourceHeading": "20.3 P3 — 의미 지문이 길이 프레이밍 없이 구분자로 만들어진다", "summary": "의미 지문이 길이 프레이밍 없이 구분자로 만들어진다", "disposition": "EMITTED", "target": "case:analysis-finding-a14-f009", "reason": null, "topic": "contract-domain-and-bounds" }, { "id": "A14-F010", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L899" ], "sourceHeading": "24.1 P2 — 배선된 캐시 필터의 `no-store`가 배선된 조건부 읽기 경로를 무력화하고, 둘을 조정하려고 만든 패키지는 참조 0이다", "summary": "배선된 캐시 필터의 `no-store`가 배선된 조건부 읽기 경로를 무력화하고, 둘을 조정하려고 만든 패키지는 참조 0이다", "disposition": "EMITTED", "target": "case:a14-f010-no-store", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A14-F011", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1006" ], "sourceHeading": "28.1 P2 — `maxArrayElements`가 선언만 되고 강제되지 않으며, 바이트 예산 백스톱도 없다", "summary": "`maxArrayElements`가 선언만 되고 강제되지 않으며, 바이트 예산 백스톱도 없다", "disposition": "EMITTED", "target": "case:a14-f011-maxarrayelements", "reason": null, "topic": "contract-domain-and-bounds" }, { "id": "A14-F012", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1137" ], "sourceHeading": "32.1 P2 — 요청 식별자를 클라이언트가 고를 수 없다는 정책이, 뒤에 도는 다른 배선 필터에 의해 뒤집힌다", "summary": "요청 식별자를 클라이언트가 고를 수 없다는 정책이, 뒤에 도는 다른 배선 필터에 의해 뒤집힌다", "disposition": "MERGED", "target": "case:a-policy-reversed-by-a-later-filter", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A14-F013", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1153" ], "sourceHeading": "32.2 P2 — forwarded 헤더 신뢰 판정이 Nginx 설정에만 있고, 그것을 위해 쓴 Java 정책 421 LOC은 배선되지 않는다", "summary": "forwarded 헤더 신뢰 판정이 Nginx 설정에만 있고, 그것을 위해 쓴 Java 정책 421 LOC은 배선되지 않는다", "disposition": "MERGED", "target": "case:trust-policy-lives-in-nginx-not-in-the-code", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A14-F014", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1267" ], "sourceHeading": "36.1 P2 — 선언된 Advanced 능력 11개 중 9개는 켜는 방법이 없다", "summary": "선언된 Advanced 능력 11개 중 9개는 켜는 방법이 없다", "disposition": "EMITTED", "target": "case:a14-f014-advanced", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A14-F015", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1279" ], "sourceHeading": "36.2 P3 — `VirtualThreadProfile.propertyName()`이 아무것도 게이트하지 않는 이름을 반환한다", "summary": "`VirtualThreadProfile.propertyName()`이 아무것도 게이트하지 않는 이름을 반환한다", "disposition": "EMITTED", "target": "case:a14-f015-virtualthreadprofile-propertyname", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A14-F016", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1378" ], "sourceHeading": "40.1 P1 — 이 leaf의 리액티브 절반 29개 파일은 어떤 출하 배포에서도 활성화될 수 없다", "summary": "이 leaf의 리액티브 절반 29개 파일은 어떤 출하 배포에서도 활성화될 수 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a14-f016", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A14-F017", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1494" ], "sourceHeading": "44.1 P3 — `SpringMvcRouteInventoryCollector` 138줄에 참조가 하나도 없다", "summary": "`SpringMvcRouteInventoryCollector` 138줄에 참조가 하나도 없다", "disposition": "EMITTED", "target": "case:a14-f017-springmvcrouteinventorycollector", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A14-F018", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1500" ], "sourceHeading": "44.2 P3 — `WebPlatformStartupValidator`가 시작 시 실행되지 않는다", "summary": "`WebPlatformStartupValidator`가 시작 시 실행되지 않는다", "disposition": "EMITTED", "target": "case:a14-f018-webplatformstartupvalidator", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A14-F019", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1575" ], "sourceHeading": "48.1 P1 — 크로스 스택 게이트가 검증하는 조립은 픽스처의 조립이고, 플랫폼의 조립이 아니다", "summary": "크로스 스택 게이트가 검증하는 조립은 픽스처의 조립이고, 플랫폼의 조립이 아니다", "disposition": "EMITTED", "target": "case:analysis-finding-a14-f019", "reason": null, "topic": "verification-path-coverage" }, { "id": "A15-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/15-adapter-inbound-grpc.md#L171" ], "sourceHeading": "4.1 P2 — 원인 사슬 순회가 2-순환에서 무한 루프에 빠지고, 저장소는 이미 그 사례를 이름으로 적어 두었다", "summary": "원인 사슬 순회가 2-순환에서 무한 루프에 빠지고, 저장소는 이미 그 사례를 이름으로 적어 두었다", "disposition": "EMITTED", "target": "case:analysis-finding-a15-f001", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A15-F002", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/15-adapter-inbound-grpc.md#L187" ], "sourceHeading": "4.2 P3 — 설정 바인딩이 마스터 스위치 밖에서 일어난다. 컴포지션 루트의 자기 규칙과 어긋난다", "summary": "설정 바인딩이 마스터 스위치 밖에서 일어난다. 컴포지션 루트의 자기 규칙과 어긋난다", "disposition": "EMITTED", "target": "case:analysis-finding-a15-f002", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A16-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L258" ], "sourceHeading": "8.1 P2 — 스키마 조립·계약 정체성·해시 사슬이 통째로 미배선이고, 그것을 발행할 액추에이터 엔드포인트도 등록되지 않는다", "summary": "스키마 조립·계약 정체성·해시 사슬이 통째로 미배선이고, 그것을 발행할 액추에이터 엔드포인트도 등록되지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a16-f001", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A16-F002", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L281" ], "sourceHeading": "8.2 P3 — `@oneOf` 게이트와 런타임 검증기가 미배선이고, \"플랫폼이 강제한다\"는 서술이 그것을 넘어선다", "summary": "`@oneOf` 게이트와 런타임 검증기가 미배선이고, \"플랫폼이 강제한다\"는 서술이 그것을 넘어선다", "disposition": "EMITTED", "target": "case:a16-f002-oneof", "reason": null, "topic": "verification-path-coverage" }, { "id": "A16-F003", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L382" ], "sourceHeading": "12.1 P2 — 5계층 예산 모델에서 요청 계층만 강제되고, 나머지 파생이 전부 미배선이다", "summary": "5계층 예산 모델에서 요청 계층만 강제되고, 나머지 파생이 전부 미배선이다", "disposition": "EMITTED", "target": "case:analysis-finding-a16-f003", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A16-F004", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L403" ], "sourceHeading": "12.2 P3 — 연산 이름 정책의 두 구현 중 하나만 배선되고, 미배선 쪽만 `GraphQlOperationNamePolicy`를 쓴다", "summary": "연산 이름 정책의 두 구현 중 하나만 배선되고, 미배선 쪽만 `GraphQlOperationNamePolicy`를 쓴다", "disposition": "EMITTED", "target": "case:a16-f004-graphqloperationnamepolicy", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A16-F005", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L511" ], "sourceHeading": "16.1 P2 — 설정으로 정한 파서 한계가 graphql-java에 설치되지 않는다", "summary": "설정으로 정한 파서 한계가 graphql-java에 설치되지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a16-f005", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A16-F006", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L525" ], "sourceHeading": "16.2 P2 — 프로파일별 정책 매니페스트가 미배선이라, 자격에서 해석된 프로파일이 아무 예산도 선택하지 않는다", "summary": "프로파일별 정책 매니페스트가 미배선이라, 자격에서 해석된 프로파일이 아무 예산도 선택하지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a16-f006", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A16-F007", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L618" ], "sourceHeading": "20.1 P2 — `http/`가 등급표에서 `wired`로 선언돼 있으나 그 등급의 정의를 만족하지 않는다", "summary": "`http/`가 등급표에서 `wired`로 선언돼 있으나 그 등급의 정의를 만족하지 않는다", "disposition": "MERGED", "target": "case:seven-rows-downgraded-by-the-family-itself", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A16-F008", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L680" ], "sourceHeading": "20.2 P3 — 파싱·검증 실패에 플랫폼 매퍼가 없다", "summary": "파싱·검증 실패에 플랫폼 매퍼가 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a16-f008", "reason": null, "topic": "verification-path-coverage" }, { "id": "A16-F009", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L766" ], "sourceHeading": "24.1 P2 — 시작 검증기가 제공되지 않는 보안 성질을 요구한다", "summary": "시작 검증기가 제공되지 않는 보안 성질을 요구한다", "disposition": "MERGED", "target": "case:a-startup-validator-that-requires-a-key-nothing-signs-with", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A16-F010", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L885" ], "sourceHeading": "29.1 P2 — `http/` 행이 등급표의 자기 규칙을 어긴다 (§20.1 참조)", "summary": "`http/` 행이 등급표의 자기 규칙을 어긴다 (§20.1 참조)", "disposition": "MERGED", "target": "case:seven-rows-downgraded-by-the-family-itself", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A16-F011", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L889" ], "sourceHeading": "29.2 P3 — 기계가 읽는 능력 매니페스트와 사람이 읽는 등급표가 커서 서명에 대해 다르게 답한다", "summary": "기계가 읽는 능력 매니페스트와 사람이 읽는 등급표가 커서 서명에 대해 다르게 답한다", "disposition": "EMITTED", "target": "case:analysis-finding-a16-f011", "reason": null, "topic": "contract-domain-and-bounds" }, { "id": "A16-F012", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L1002" ], "sourceHeading": "39.1 P3 — \"기본 비활성\"은 존재하지 않는 스위치의 기본값을 서술한다", "summary": "\"기본 비활성\"은 존재하지 않는 스위치의 기본값을 서술한다", "disposition": "EMITTED", "target": "case:analysis-finding-a16-f012", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A17-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/17-adapter-inbound-websocket.md#L133" ], "sourceHeading": "4.1 P2 — `backend.websocket` 플랫폼(약 90개 main 파일)에 조립 지점이 없고, 모듈 SSOT 문서에 존재하지 않는다", "summary": "`backend.websocket` 플랫폼(약 90개 main 파일)에 조립 지점이 없고, 모듈 SSOT 문서에 존재하지 않는다", "disposition": "MERGED", "target": "case:build-only-exempts-ninety-files-from-todays-incident", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A17-F002", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/17-adapter-inbound-websocket.md#L273" ], "sourceHeading": "13.1 P2 — 연결 티켓·origin 정책·메시지 권한·연결 예산이 요청 경로 밖이고, 그중 일부는 STOMP 어댑터가 다른 방식으로 대체한다", "summary": "연결 티켓·origin 정책·메시지 권한·연결 예산이 요청 경로 밖이고, 그중 일부는 STOMP 어댑터가 다른 방식으로 대체한다", "disposition": "EMITTED", "target": "case:a17-f002-stomp", "reason": null, "topic": "security-policy-enforcement" }, { "id": "A17-F003", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/17-adapter-inbound-websocket.md#L426" ], "sourceHeading": "22.1 P3 — 능력 프로퍼티 이름을 만드는 코드와 실제 게이트가 다른 접두사를 쓴다", "summary": "능력 프로퍼티 이름을 만드는 코드와 실제 게이트가 다른 접두사를 쓴다", "disposition": "EMITTED", "target": "case:analysis-finding-a17-f003", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A18-F001", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/18-app-bootstrap.md#L214" ], "sourceHeading": "4.1b P3 — 출하되는 web 어댑터의 스위치가 활성화 모델 밖에 있다", "summary": "출하되는 web 어댑터의 스위치가 활성화 모델 밖에 있다", "disposition": "EMITTED", "target": "case:analysis-finding-a18-f001", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A18-F002", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/18-app-bootstrap.md#L549" ], "sourceHeading": "26.1 P3 — 실패는 환경 원인이며, 그 테스트의 도구 가드가 불완전하다", "summary": "실패는 환경 원인이며, 그 테스트의 도구 가드가 불완전하다", "disposition": "EMITTED", "target": "case:analysis-finding-a18-f002", "reason": null, "topic": "verification-path-coverage" }, { "id": "A19-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L231" ], "sourceHeading": "3.4 P2 — capability 12개 중 main 코드가 읽는 것은 3개, 거부하는 것은 1개", "summary": "capability 12개 중 main 코드가 읽는 것은 3개, 거부하는 것은 1개", "disposition": "EMITTED", "target": "case:analysis-finding-a19-f001", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A19-F002", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L288" ], "sourceHeading": "3.5 P2 — 8개 profile validator 중 조립에서 실행되는 것은 3개", "summary": "8개 profile validator 중 조립에서 실행되는 것은 3개", "disposition": "EMITTED", "target": "case:analysis-finding-a19-f002", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A19-F003", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/19-messaging-platform.md#L325" ], "sourceHeading": "3.6 P3 — `messaging-reliability-api`는 main 13파일 · 817 LOC에 테스트가 0개다", "summary": "`messaging-reliability-api`는 main 13파일 · 817 LOC에 테스트가 0개다", "disposition": "EMITTED", "target": "case:a19-f003-messaging-reliability-api", "reason": null, "topic": "verification-path-coverage" }, { "id": "A19-F004", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L390" ], "sourceHeading": "4.3 P2 — 스키마 호환성 검증기는 출하 leaf에 있고, main 코드에서 호출되지 않는다", "summary": "스키마 호환성 검증기는 출하 leaf에 있고, main 코드에서 호출되지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a19-f004", "reason": null, "topic": "verification-path-coverage" }, { "id": "A19-F005", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L415" ], "sourceHeading": "4.4 P2 — 호환성 게이트를 가진 두 포맷은 build-only이고, 출하되는 유일한 코덱에는 게이트가 없다", "summary": "호환성 게이트를 가진 두 포맷은 build-only이고, 출하되는 유일한 코덱에는 게이트가 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a19-f005", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A19-F006", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L431" ], "sourceHeading": "4.5 P2 — `messaging-cloudevents`는 출하 leaf이고 starter의 의존이며 소비자가 없다", "summary": "`messaging-cloudevents`는 출하 leaf이고 starter의 의존이며 소비자가 없다", "disposition": "EMITTED", "target": "case:a19-f006-messaging-cloudevents", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A19-F007", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L456" ], "sourceHeading": "5.1 P2 — 출하되는 publish 경로는 관측을 하나도 기록하지 않는다", "summary": "출하되는 publish 경로는 관측을 하나도 기록하지 않는다", "disposition": "MERGED", "target": "case:observation-downgraded-by-the-composition", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A19-F008", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L495" ], "sourceHeading": "5.2 P2 — 브로커 ACL 매니페스트의 자기 점검이 존재하지 않는다", "summary": "브로커 ACL 매니페스트의 자기 점검이 존재하지 않는다", "disposition": "EMITTED", "target": "case:a19-f008-acl", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A19-F009", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/19-messaging-platform.md#L511" ], "sourceHeading": "5.3 P3 — 접근 검사가 두 갈래로 존재하고, 조립된 쪽이 진단이 약한 쪽이다 (§8.3)", "summary": "접근 검사가 두 갈래로 존재하고, 조립된 쪽이 진단이 약한 쪽이다 (§8.3)", "disposition": "EMITTED", "target": "case:analysis-finding-a19-f009", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A19-F010", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/19-messaging-platform.md#L543" ], "sourceHeading": "5.4 P3 — 자격 증명 회전 개념이 두 번 표현되고, 하나만 살아 있다 (§8.3)", "summary": "자격 증명 회전 개념이 두 번 표현되고, 하나만 살아 있다 (§8.3)", "disposition": "MERGED", "target": "case:the-same-rotation-defect-closed-once-and-reproduced", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A19-F011", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L609" ], "sourceHeading": "6.2 P2 — `messaging-rabbit`은 출하되지만 선택할 수 없고, 운영 문서는 그것을 말하지 않는다", "summary": "`messaging-rabbit`은 출하되지만 선택할 수 없고, 운영 문서는 그것을 말하지 않는다", "disposition": "MERGED", "target": "case:an-unselectable-broker-listed-with-features", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A19-F012", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/19-messaging-platform.md#L639" ], "sourceHeading": "6.3 P1 — 지원 매트릭스가 Kafka의 `deduplicatedPublish`를 `O`로 적고, 코드는 `false`이며, 그 차이가 정확히 코드가 경고한 피해다", "summary": "지원 매트릭스가 Kafka의 `deduplicatedPublish`를 `O`로 적고, 코드는 `false`이며, 그 차이가 정확히 코드가 경고한 피해다", "disposition": "MERGED", "target": "case:support-matrix-said-the-opposite-of-the-code", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A19-F013", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L682" ], "sourceHeading": "6.4 P2 — 지원 매트릭스가 \"모든 messaging leaf는 build-only\"라고 적고, 가족 권위 문서는 그 문장이 틀렸다고 이미 기록했다", "summary": "지원 매트릭스가 \"모든 messaging leaf는 build-only\"라고 적고, 가족 권위 문서는 그 문장이 틀렸다고 이미 기록했다", "disposition": "EMITTED", "target": "case:analysis-finding-a19-f013", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A19-F014", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L698" ], "sourceHeading": "6.5 P2 — 한 아티팩트 안의 서로 모르는 Kafka 스택 두 개 (MSG-015, 가족 문서가 미해결로 표시)", "summary": "한 아티팩트 안의 서로 모르는 Kafka 스택 두 개 (MSG-015, 가족 문서가 미해결로 표시)", "disposition": "EMITTED", "target": "case:a19-f014-kafka-msg", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A19-F015", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/19-messaging-platform.md#L757" ], "sourceHeading": "6.7 P3 — `CompatibilityMatrix`에 `EXTENSION` 등급이 있고 항목이 없으며, bridge leaf가 표 밖에 있다", "summary": "`CompatibilityMatrix`에 `EXTENSION` 등급이 있고 항목이 없으며, bridge leaf가 표 밖에 있다", "disposition": "EMITTED", "target": "case:a19-f015-compatibilitymatrix-extension", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A19-F016", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L811" ], "sourceHeading": "7.1 P2 — outbox/inbox 체인 전체가 만족되지 않는 `@ConditionalOnBean` 뒤에 있다", "summary": "outbox/inbox 체인 전체가 만족되지 않는 `@ConditionalOnBean` 뒤에 있다", "disposition": "MERGED", "target": "case:outbox-chain-behind-an-unsatisfiable-condition", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A19-F017", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L845" ], "sourceHeading": "7.2 P2 — messaging 마이그레이션 스트림을 적용하는 곳이 없고, 적용하려는 순간 버전이 충돌한다", "summary": "messaging 마이그레이션 스트림을 적용하는 곳이 없고, 적용하려는 순간 버전이 충돌한다", "disposition": "MERGED", "target": "case:messaging-migrations-collide-at-v2", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A19-F018", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/19-messaging-platform.md#L911" ], "sourceHeading": "7.4 P3 — claim-check는 starter에 배선 코드가 한 줄도 없다", "summary": "claim-check는 starter에 배선 코드가 한 줄도 없다", "disposition": "EMITTED", "target": "case:analysis-finding-a19-f018", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A19-F019", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L960" ], "sourceHeading": "8.2 P2 — admin 스위치가 가드를 켜고 서비스는 켜지 않는다", "summary": "admin 스위치가 가드를 켜고 서비스는 켜지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a19-f019", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A19-F020", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/19-messaging-platform.md#L982" ], "sourceHeading": "8.3 P3 — `messaging-admin-api`는 main 25파일 · 1,613 LOC에 테스트 파일이 1개다", "summary": "`messaging-admin-api`는 main 25파일 · 1,613 LOC에 테스트 파일이 1개다", "disposition": "EMITTED", "target": "case:a19-f020-messaging-admin-api", "reason": null, "topic": "verification-path-coverage" }, { "id": "A19-F021", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L1049" ], "sourceHeading": "9.3 P2 — 문서 계약 테스트가 존재하고, 그 커버리지 경계가 §6.3·§6.4의 드리프트 위치를 정확히 예측한다", "summary": "문서 계약 테스트가 존재하고, 그 커버리지 경계가 §6.3·§6.4의 드리프트 위치를 정확히 예측한다", "disposition": "MERGED", "target": "case:doc-contract-test-boundary-predicted-the-drift", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A19-F022", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/19-messaging-platform.md#L1099" ], "sourceHeading": "9.5 P3 — `MessagingPublicSurfaceContractTest`가 가족 밖(app-bootstrap)에 있다", "summary": "`MessagingPublicSurfaceContractTest`가 가족 밖(app-bootstrap)에 있다", "disposition": "EMITTED", "target": "case:a19-f022-messagingpublicsurfacecontracttest", "reason": null, "topic": "verification-path-coverage" }, { "id": "A20-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/20-grpc-platform.md#L173" ], "sourceHeading": "3.1 P2 — `GrpcPlatformStartupValidator`가 조립에서 호출되지 않는다", "summary": "`GrpcPlatformStartupValidator`가 조립에서 호출되지 않는다", "disposition": "MERGED", "target": "case:thirteen-startup-rules-never-run", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A20-F002", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/20-grpc-platform.md#L219" ], "sourceHeading": "3.2 P2 — 릴리스 게이트가 스스로 증거를 읽지 않는다. messaging이 이미 고친 모양을 되풀이한다", "summary": "릴리스 게이트가 스스로 증거를 읽지 않는다. messaging이 이미 고친 모양을 되풀이한다", "disposition": "MERGED", "target": "case:a-release-gate-with-no-evidence-producer", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A20-F003", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/20-grpc-platform.md#L260" ], "sourceHeading": "3.3 P2 — 증거 등급 모델 전체가 자동 실행 경로 밖에 있고, CLAUDE.md는 현재 시제로 서술한다", "summary": "증거 등급 모델 전체가 자동 실행 경로 밖에 있고, CLAUDE.md는 현재 시제로 서술한다", "disposition": "EMITTED", "target": "case:a20-f003-claude", "reason": null, "topic": "declaration-and-document-drift" }, { "id": "A20-F004", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/20-grpc-platform.md#L298" ], "sourceHeading": "3.4 P2 — 조립 경계가 정책 객체 9개를 만들고 서버를 만들지 않는다", "summary": "조립 경계가 정책 객체 9개를 만들고 서버를 만들지 않는다", "disposition": "EMITTED", "target": "case:analysis-finding-a20-f004", "reason": null, "topic": "runtime-reachability-and-composition" }, { "id": "A20-F005", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/20-grpc-platform.md#L321" ], "sourceHeading": "3.5 P3 — 저장소 어디에도 참조가 없는 타입 3개", "summary": "저장소 어디에도 참조가 없는 타입 3개", "disposition": "EMITTED", "target": "case:analysis-finding-a20-f005", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A20-F006", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/20-grpc-platform.md#L518" ], "sourceHeading": "7.1 P2 — `GrpcAdmissionController.tryAdmit()`의 동시성 경계가 동시성 아래에서 성립하지 않는다", "summary": "`GrpcAdmissionController.tryAdmit()`의 동시성 경계가 동시성 아래에서 성립하지 않는다", "disposition": "EMITTED", "target": "case:a20-f006-grpcadmissioncontroller-tryadmit", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A20-F007", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/20-grpc-platform.md#L572" ], "sourceHeading": "7.2 P2 — `GrpcStreamAdmission`도 같은 형태이고, per-caller 맵이 줄지 않는다", "summary": "`GrpcStreamAdmission`도 같은 형태이고, per-caller 맵이 줄지 않는다", "disposition": "EMITTED", "target": "case:a20-f007-grpcstreamadmission", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A20-F008", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/20-grpc-platform.md#L595" ], "sourceHeading": "7.3 P2 — `GrpcSerializedStreamWriter`의 `DROP_OLDEST`가 잘못된 메시지의 바이트를 뺀다", "summary": "`GrpcSerializedStreamWriter`의 `DROP_OLDEST`가 잘못된 메시지의 바이트를 뺀다", "disposition": "EMITTED", "target": "case:a20-f008-grpcserializedstreamwriter-drop-oldest", "reason": null, "topic": "runtime-contract-correctness" }, { "id": "A20-F009", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/20-grpc-platform.md#L634" ], "sourceHeading": "7.4 P2 — `GrpcCredentialRotationManager`가 CAS 없이 read-then-write 한다. messaging이 고친 결함의 재현이다", "summary": "`GrpcCredentialRotationManager`가 CAS 없이 read-then-write 한다. messaging이 고친 결함의 재현이다", "disposition": "MERGED", "target": "case:the-same-rotation-defect-closed-once-and-reproduced", "reason": "기존 Root Tree Case가 이 finding의 동일 사건과 검증 단위를 명시적으로 포함한다. 관련 Topic/Reference가 아니라 사건 자체가 같은 경우에만 병합했다." }, { "id": "A20-F010", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/20-grpc-platform.md#L664" ], "sourceHeading": "7.5 P2 — `GrpcOutcomeReplay`가 제거 경로 없는 인메모리 저장소다", "summary": "`GrpcOutcomeReplay`가 제거 경로 없는 인메모리 저장소다", "disposition": "EMITTED", "target": "case:a20-f010-grpcoutcomereplay", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "A20-F011", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/20-grpc-platform.md#L678" ], "sourceHeading": "7.6 P2 — `GrpcCompletionReconciler`가 요청 경로에서 동기화 없는 `ArrayList`를 변경한다", "summary": "`GrpcCompletionReconciler`가 요청 경로에서 동기화 없는 `ArrayList`를 변경한다", "disposition": "EMITTED", "target": "case:a20-f011-grpccompletionreconciler-arraylist", "reason": null, "topic": "state-ownership-and-concurrency" }, { "id": "BASE-case-a-catalog-nine-entries-short", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §1" ], "summary": "패키지 카탈로그가 트리보다 아홉 개 적어서 사이클이 통과했다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:a-catalog-nine-entries-short", "reason": null }, { "id": "BASE-case-a-certifying-lane-that-compared-nothing", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#6-6` · `analysis/05` §15.3" ], "summary": "\"certified\"라 불리던 레인이 threshold를 하나도 비교하지 않고 있었다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:a-certifying-lane-that-compared-nothing", "reason": null }, { "id": "BASE-case-a-cleanup-claim-without-fencing", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/08` §V3" ], "summary": "claim이 소유자·토큰·만료를 기록하지 않아 죽은 worker의 항목이 영영 남았다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:a-cleanup-claim-without-fencing", "reason": null }, { "id": "BASE-case-a-customizer-that-discarded-the-bound-property", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §7.7" ], "summary": "Flyway location customizer가 운영자가 바인딩한 값을 덮어썼다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:a-customizer-that-discarded-the-bound-property", "reason": null }, { "id": "BASE-case-a-digest-that-covered-who-but-not-what", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §10.1" ], "summary": "transition digest가 \"누가·언제\"만 덮고 \"무엇\"을 덮지 않아 다른 전이를 같다고 보고했다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:a-digest-that-covered-who-but-not-what", "reason": null }, { "id": "BASE-case-a-five-second-string-that-broke-every-prod-deploy", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §14.6" ], "summary": "`connection-timeout: 5s`가 모든 prod 배포를 시작 실패시켰고 local만 통과했다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:a-five-second-string-that-broke-every-prod-deploy", "reason": null }, { "id": "BASE-case-a-lease-without-an-owner", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-3` · `analysis/19` §7.3 · `analysis/08` §V3" ], "summary": "lease가 만료 시각만 기록하고 소유자를 기록하지 않아 terminal state가 되돌려졌다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:a-lease-without-an-owner", "reason": null }, { "id": "BASE-case-a-read-then-delete-race-on-the-upload-lease", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/08` §V4" ], "summary": "cleanup이 읽은 lease와 삭제 사이에 writer가 그 lease를 얻을 수 있었다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:a-read-then-delete-race-on-the-upload-lease", "reason": null }, { "id": "BASE-case-a-report-that-cannot-carry-a-datasource", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §2.5, §12.1" ], "summary": "진단 리포트가 살아 있는 리소스를 담지 않도록 값 타입을 좁혔다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:a-report-that-cannot-carry-a-datasource", "reason": null }, { "id": "BASE-case-a-retry-implementation-nobody-calls", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#8-2` 항목 7 · `analysis/05` §17 P1" ], "summary": "재시도 구현이 둘이고 정교한 쪽을 아무도 호출하지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:a-retry-implementation-nobody-calls", "reason": null }, { "id": "BASE-case-a-validator-checking-the-wrong-datasource", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §14.5" ], "summary": "validator가 요청을 서비스하지 않는 datasource를 검증하고 있었다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:a-validator-checking-the-wrong-datasource", "reason": null }, { "id": "BASE-case-an-active-transaction-check-that-asked-the-wrong-question", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §10.1" ], "summary": "활성 트랜잭션 검사가 data source를 묻지 않아 다른 커넥션에서 커밋됐다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:an-active-transaction-check-that-asked-the-wrong-question", "reason": null }, { "id": "BASE-case-autoconfiguration-in-name-only", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §14.4" ], "summary": "이름만 AutoConfiguration이던 세 클래스가 capability 리포트에 Stable로 올라 있었다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:autoconfiguration-in-name-only", "reason": null }, { "id": "BASE-case-commit-ambiguity-is-not-only-sqlstate-08", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §3.5" ], "summary": "`pg_terminate_backend`가 `57P01`로 도착하고 커밋 레코드는 이미 WAL에 있었다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:commit-ambiguity-is-not-only-sqlstate-08", "reason": null }, { "id": "BASE-case-conditionalonbean-evaluated-at-parse-time", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §14.4" ], "summary": "`@ConditionalOnBean(DataSource.class)`가 클래스 파싱 시점에 평가되어 여덟 빈이 사라졌다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:conditionalonbean-evaluated-at-parse-time", "reason": null }, { "id": "BASE-case-cursor-verification-order", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §2.4" ], "summary": "커서 서명 검증이 길이·상수시간·순서를 전부 지켜야 했던 이유", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:cursor-verification-order", "reason": null }, { "id": "BASE-case-expired-claim-versus-expired-execution", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §10.1, §10.4" ], "summary": "만료된 CLAIMED는 takeover하고 만료된 EXECUTING은 조정을 요구하도록 갈랐다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:expired-claim-versus-expired-execution", "reason": null }, { "id": "BASE-case-five-documents-say-nineteen-leaves", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#7-4` · `analysis/05` §17 P3" ], "summary": "다섯 문서가 \"exactly 19 leaf\"라고 적고 레지스트리는 62다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:five-documents-say-nineteen-leaves", "reason": null }, { "id": "BASE-case-h2-hid-a-column-type-mismatch", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §8.5" ], "summary": "`char(64)`와 `varchar(64)` 불일치를 H2가 가리고 있었다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:h2-hid-a-column-type-mismatch", "reason": null }, { "id": "BASE-case-jpa-platform-capabilities-have-no-consumer", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#8-2` 항목 8 · `analysis/05` §17 P8, §11.0" ], "summary": "JPA 플랫폼 capability 대부분에 production 소비자가 없다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:jpa-platform-capabilities-have-no-consumer", "reason": null }, { "id": "BASE-case-narrowing-the-scan-orphaned-eight-components", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §14.2" ], "summary": "넓은 스캔을 좁히자 여덟 컴포넌트에 아무것도 도달하지 않았다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:narrowing-the-scan-orphaned-eight-components", "reason": null }, { "id": "BASE-case-native-claim-did-not-bump-the-version", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §11.2" ], "summary": "native claim이 `@Version`을 올리지 않아 충돌을 보고하지 않는 낙관적 잠금이 됐다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:native-claim-did-not-bump-the-version", "reason": null }, { "id": "BASE-case-registry-column-too-short-for-its-own-path", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §8.4" ], "summary": "레지스트리 컬럼이 38자 경로에서 짧아 \"더 짧은 경로를 적는\" 우회를 유혹했다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:registry-column-too-short-for-its-own-path", "reason": null }, { "id": "BASE-case-requires-new-pins-the-outer-connection", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#3-2` · `analysis/05` §3.1" ], "summary": "`REQUIRES_NEW`가 바깥 커넥션을 핀한 채 새 커넥션을 딴다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:requires-new-pins-the-outer-connection", "reason": null }, { "id": "BASE-case-search-path-survived-the-return-to-the-pool", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §13.2" ], "summary": "`search_path`가 풀로 돌아간 커넥션에 남아 다음 tenant가 상속한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:search-path-survived-the-return-to-the-pool", "reason": null }, { "id": "BASE-case-tenant-pools-summed-past-the-server-ceiling", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §13.2" ], "summary": "tenant별 풀이 개별적으로 합리적이고 그 합이 서버 상한을 넘긴다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:tenant-pools-summed-past-the-server-ceiling", "reason": null }, { "id": "BASE-case-the-second-platform-carried-the-design-not-the-wiring", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#7-6` · `analysis/20` §2, §3 · `analysis/99` §7.6" ], "summary": "두 번째 플랫폼이 첫 번째의 bridge 부재는 막고 게이트 배선은 옮기지 않았다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:the-second-platform-carried-the-design-not-the-wiring", "reason": null }, { "id": "BASE-case-three-versions-declared-one-executed", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §15.4" ], "summary": "릴리스 레인이 매트릭스 세 버전 중 첫 번째만 돌리고 세 개를 커버로 기록했다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:three-versions-declared-one-executed", "reason": null }, { "id": "BASE-case-three-ways-rls-does-nothing", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §13.1, §17 P8" ], "summary": "RLS가 아무것도 하지 않는 세 가지 방법", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:three-ways-rls-does-nothing", "reason": null }, { "id": "BASE-case-two-owners-popped-the-evidence-frame", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §3.4" ], "summary": "커밋 증거 프레임을 두 주인이 pop해서 바깥 트랜잭션의 실패가 익명이 됐다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:two-owners-popped-the-evidence-frame", "reason": null }, { "id": "BASE-case-two-trees-both-numbered-from-v1", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §8.3" ], "summary": "두 트리가 다 V1부터 번호를 매겨 공유 history가 하나를 건너뛸 수 있었다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:two-trees-both-numbered-from-v1", "reason": null }, { "id": "BASE-case-untranslated-contention-bypassed-the-retry-catch", "kindCandidate": "CASE", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §3.6" ], "summary": "번역되지 않은 경합 예외가 재시도 코디네이터의 catch를 통째로 비껴갔다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "case:untranslated-contention-bypassed-the-retry-catch", "reason": null }, { "id": "BASE-concept-capability-schema-registry", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §8.4, §11.3" ], "summary": "capability_schema_registry — 스키마 적용과 사용 승인의 분리", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:capability-schema-registry", "reason": null }, { "id": "BASE-concept-cardinality-bounds-as-types", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1`, `#5-2` · `analysis/05` §2.1, §12.2 · `analysis/02`" ], "summary": "카디널리티 경계를 타입으로 표현하기", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:cardinality-bounds-as-types", "reason": null }, { "id": "BASE-concept-cas-tuple-and-update-count", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §10.1, §10.3" ], "summary": "CAS 튜플과 update count가 답이 되는 구조", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:cas-tuple-and-update-count", "reason": null }, { "id": "BASE-concept-commit-evidence-phases", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#3-2` · `analysis/05` §3.4, §2.3" ], "summary": "커밋 증거 단계 — NOT_STARTED에서 UNKNOWN까지", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:commit-evidence-phases", "reason": null }, { "id": "BASE-concept-deadline-propagation", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#3-2` · `analysis/05` §3.3" ], "summary": "호출 예산에서 DB 로컬 타임아웃까지의 데드라인 전파", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:deadline-propagation", "reason": null }, { "id": "BASE-concept-evidence-grades-and-provenance", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#6-5` · `analysis/05` §15.6" ], "summary": "증거 등급과 provenance — R1과 R2를 가르는 것", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:evidence-grades-and-provenance", "reason": null }, { "id": "BASE-concept-fenced-lease", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1`, `#4-3` · `analysis/05` §10 · `analysis/19` §7.3" ], "summary": "fenced lease — 만료 시각만으로는 부족한 이유", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:fenced-lease", "reason": null }, { "id": "BASE-concept-file-state-machine-and-ready", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-4` · `analysis/08` §V1" ], "summary": "파일 상태 기계와 READY가 뜻하는 것", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:file-state-machine-and-ready", "reason": null }, { "id": "BASE-concept-four-grade-disclosure", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#7-5` · `analysis/16` §45.2, §45.3" ], "summary": "네 단계 공시 등급 — modelled에서 production-verified까지", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:four-grade-disclosure", "reason": null }, { "id": "BASE-concept-four-multitenancy-strategies", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`analysis/05` §13.2" ], "summary": "네 가지 멀티테넌시 전략과 각각의 격리 경계", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:four-multitenancy-strategies", "reason": null }, { "id": "BASE-concept-independent-flyway-streams", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §8.3" ], "summary": "독립 Flyway 스트림과 baseline version 0", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:independent-flyway-streams", "reason": null }, { "id": "BASE-concept-redis-admission-stages", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-4` · `analysis/10` §64" ], "summary": "명령 카탈로그와 admission 아홉 단계", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:redis-admission-stages", "reason": null }, { "id": "BASE-concept-requires-new-connection-cost", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#3-2` · `analysis/05` §3.1, §13.2" ], "summary": "`REQUIRES_NEW`의 커넥션 비용과 풀 사이징 제약", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:requires-new-connection-cost", "reason": null }, { "id": "BASE-concept-rls-three-preconditions", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §13.1" ], "summary": "RLS가 성립하기 위한 세 전제", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:rls-three-preconditions", "reason": null }, { "id": "BASE-concept-signed-cursor-structure", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-4` · `analysis/05` §2.4 · `analysis/19` §4.x" ], "summary": "서명된 커서의 구조와 검증 순서", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:signed-cursor-structure", "reason": null }, { "id": "BASE-concept-staged-lifecycle-and-signed-grants", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-4` · `analysis/09` · `analysis/03` §10" ], "summary": "staged lifecycle과 서명된 grant", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:staged-lifecycle-and-signed-grants", "reason": null }, { "id": "BASE-concept-strict-test-lane", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#6-3` · `analysis/05` §15.1 · `analysis/19` §2.3 · `analysis/20` §2.5" ], "summary": "strict test lane — 발견하지 못하면 실패하는 레인", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:strict-test-lane", "reason": null }, { "id": "BASE-concept-three-assembly-paths", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#1-4`, `#7-1` · `analysis/18` · `analysis/14` §7.1" ], "summary": "Spring 조립의 세 경로와 각각이 결정하는 것", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:three-assembly-paths", "reason": null }, { "id": "BASE-concept-transaction-result-algebra", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#3-2` · `analysis/05` §3.2" ], "summary": "트랜잭션 결과 대수 — 다섯 변형이 각각 답하는 질문", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:transaction-result-algebra", "reason": null }, { "id": "BASE-concept-transport-failure-stage-and-category", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`final/document.md#8-1` · `analysis/11` §51" ], "summary": "전송 실패의 단계와 범주 — `AttemptStage`와 `FailureCategory`", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:transport-failure-stage-and-category", "reason": null }, { "id": "BASE-concept-when-conditions-are-evaluated", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "`analysis/05` §14.4" ], "summary": "조건부 빈의 평가 시점 — 파싱 시점과 등록 시점", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "concept:when-conditions-are-evaluated", "reason": null }, { "id": "BASE-decision-candidate-evidence-stays-at-r1", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#6-5` · `analysis/05` §15.6" ], "summary": "후보 증거는 통과해도 R1에 머무르고 R2는 별도 게이트가 판정한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:candidate-evidence-stays-at-r1", "reason": null }, { "id": "BASE-decision-capability-grade-is-declared-not-inferred", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-5` · `analysis/05` §2.5 · `analysis/19` §6.6 · `analysis/20` §2.6" ], "summary": "지원 등급은 추론이 아니라 선언이고 증거 없이는 올라가지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:capability-grade-is-declared-not-inferred", "reason": null }, { "id": "BASE-decision-capability-separates-installation-from-activation", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1` · `analysis/05` §8.4, §11.3" ], "summary": "capability는 스키마 적용과 사용 승인을 분리한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:capability-separates-installation-from-activation", "reason": null }, { "id": "BASE-decision-classpath-presence-is-not-consent", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-3` · `analysis/05` §13" ], "summary": "클래스패스에 있는 것은 실행 동의가 아니다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:classpath-presence-is-not-consent", "reason": null }, { "id": "BASE-decision-completion-unknown-is-never-retried", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-2` · `analysis/05` §2.2, §3.5" ], "summary": "completion-unknown은 자동으로도 수동으로도 재시도하지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:completion-unknown-is-never-retried", "reason": null }, { "id": "BASE-decision-cursors-are-signed-for-integrity", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-4` · `analysis/05` §2.4" ], "summary": "커서에 서명하는 이유는 기밀성이 아니라 무결성이다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:cursors-are-signed-for-integrity", "reason": null }, { "id": "BASE-decision-flyway-owns-the-schema", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#4-1`, `#10-3` · `analysis/05` §8.1, §12.1" ], "summary": "Flyway가 스키마를 소유하고 런타임 롤은 DDL 권한을 갖지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:flyway-owns-the-schema", "reason": null }, { "id": "BASE-decision-grades-derive-from-executed-evidence", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-5` · `analysis/19` §6.6 · `analysis/16` §45.3" ], "summary": "능력 등급은 코드가 아니라 실행된 증거에서 파생한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:grades-derive-from-executed-evidence", "reason": null }, { "id": "BASE-decision-grpc-stays-build-only-until-the-bridge-is-decided", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#2-3` · `analysis/20` §2.3, §2.6" ], "summary": "gRPC 플랫폼은 build-only로 두고 애플리케이션 도달 경로를 먼저 정한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:grpc-stays-build-only-until-the-bridge-is-decided", "reason": null }, { "id": "BASE-decision-in-root-write-fails-fast", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#3-2` · `analysis/05` §3.1" ], "summary": "`inRootWrite`는 suspend하지 않고 fail-fast한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:in-root-write-fails-fast", "reason": null }, { "id": "BASE-decision-legacy-adoption-requires-two-approvers", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`analysis/09` §49" ], "summary": "legacy 채택은 서로 다른 두 승인자의 서명을 요구한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:legacy-adoption-requires-two-approvers", "reason": null }, { "id": "BASE-decision-no-physical-paths-in-metadata", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`analysis/08` §V1" ], "summary": "물리 경로와 원본 파일명을 저장하지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:no-physical-paths-in-metadata", "reason": null }, { "id": "BASE-decision-one-audit-mechanism-per-entity", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`analysis/05` §12.5" ], "summary": "감사 메커니즘은 엔티티당 정확히 하나여야 한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:one-audit-mechanism-per-entity", "reason": null }, { "id": "BASE-decision-one-root-owns-the-master-switch", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-3` · `analysis/19` §6.1 · `analysis/05` §14.1" ], "summary": "마스터 스위치는 루트 하나가 소유하고 자식 설정은 조건을 갖지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:one-root-owns-the-master-switch", "reason": null }, { "id": "BASE-decision-only-the-certification-lane-carries-no-docker-guard", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#6-4` · `analysis/19` §2.3" ], "summary": "인증 레인만 Docker 가드를 달지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:only-the-certification-lane-carries-no-docker-guard", "reason": null }, { "id": "BASE-decision-performance-measurement-is-not-a-release-gate", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-5` · `analysis/20` §2.5 · `analysis/05` §15.3" ], "summary": "성능 측정은 릴리스 게이트에 넣지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:performance-measurement-is-not-a-release-gate", "reason": null }, { "id": "BASE-decision-pool-need-is-a-capability-question", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-3` · `analysis/05` §14.1" ], "summary": "풀이 필요한지는 \"JPA가 켜졌나\"가 아니라 \"커넥션이 필요한 capability가 있나\"로 묻는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:pool-need-is-a-capability-question", "reason": null }, { "id": "BASE-decision-repair-is-not-a-mode", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`analysis/05` §8.1" ], "summary": "Repair는 모드가 아니라 운영자가 호출하는 작업이다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:repair-is-not-a-mode", "reason": null }, { "id": "BASE-decision-retry-safety-is-decided-by-evidence", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-2` · `analysis/11` §51 · `analysis/20` §2.4" ], "summary": "재시도 안전성은 증거에 기반해 판정한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:retry-safety-is-decided-by-evidence", "reason": null }, { "id": "BASE-decision-retry-unit-is-the-use-case", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`analysis/05` §3.6" ], "summary": "재시도 단위는 statement가 아니라 유스케이스 전체다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:retry-unit-is-the-use-case", "reason": null }, { "id": "BASE-decision-state-machines-carry-no-stereotype", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`analysis/05` §10" ], "summary": "상태 기계 구현은 Spring stereotype을 갖지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:state-machines-carry-no-stereotype", "reason": null }, { "id": "BASE-decision-templates-are-built-once-per-mode", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#3-2` · `analysis/05` §3.1" ], "summary": "트랜잭션 템플릿은 모드별로 미리 만들어 둔다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:templates-are-built-once-per-mode", "reason": null }, { "id": "BASE-decision-tenant-id-is-never-a-metric-tag", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-4` · `analysis/05` §13.2 · `analysis/02`" ], "summary": "tenant id는 메트릭 태그가 되지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:tenant-id-is-never-a-metric-tag", "reason": null }, { "id": "BASE-decision-three-axes-of-evidence", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-5` · `analysis/20` §2.4" ], "summary": "전송·업무·스트림 증거는 세 축이고 서로를 함의하지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:three-axes-of-evidence", "reason": null }, { "id": "BASE-decision-unclassified-commands-are-refused", "kindCandidate": "DECISION", "priority": "NONE", "sourceRefs": [ "`analysis/10` §47" ], "summary": "분류되지 않은 명령은 fail-closed로 거부한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "decision:unclassified-commands-are-refused", "reason": null }, { "id": "BASE-decision-widen-doc-contract-assertions", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "final/document.md", "analysis/19-messaging-platform.md#L1064" ], "summary": "문서 계약 테스트의 단언 범위를 capability 표까지 넓힐 것인가", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "open-question:widen-doc-contract-assertions", "reason": null, "note": "DECISION 에서 OPEN QUESTION 으로 정정. 노드 자신이 decision-status NOT_DECIDED 이고 채택 근거가 없다 — 프로젝트가 선택한 방향이 아니라 아직 닫히지 않은 선택이다." }, { "id": "BASE-open-question-commit-ambiguity-lane-not-executed", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "`final/document.md#6-2` · `analysis/05` §3.5, §15" ], "summary": "커밋 모호성 계약 레인이 이 리비전에서 통과하는지 실행으로 확인되지 않았다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "open-question:commit-ambiguity-lane-not-executed", "reason": null }, { "id": "BASE-open-question-conditional-evaluation-order-unverified", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "`final/document.md#11` 항목 4 · `analysis/05` §14.4" ], "summary": "`@ConditionalOnBean` 사슬의 실제 평가 순서를 확인하지 않았다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "open-question:conditional-evaluation-order-unverified", "reason": null }, { "id": "BASE-open-question-container-lanes-not-executed", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "`final/document.md#6-2` · `#11` 항목 1" ], "summary": "컨테이너가 필요한 레인의 실제 결과를 실행으로 확인하지 않았다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "open-question:container-lanes-not-executed", "reason": null }, { "id": "BASE-open-question-one-boot-would-settle-two-findings", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "`final/document.md#11` 항목 3 · `analysis/19` §5.1, §7.1" ], "summary": "부팅 한 번으로 확증 가능한 두 건이 아직 정적 추론으로만 남아 있다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "open-question:one-boot-would-settle-two-findings", "reason": null }, { "id": "BASE-open-question-pool-contract-lane-not-executed", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "`final/document.md#6-2` · `analysis/05` §15.3" ], "summary": "풀 계약 레인이 실행되지 않아 포화 동작이 확인되지 않았다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "open-question:pool-contract-lane-not-executed", "reason": null }, { "id": "BASE-open-question-redis-topology-lane-not-executed", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "`final/document.md#6-2` · `analysis/10` §0, §47" ], "summary": "Redis 토폴로지 레인이 실행되지 않아 key spec 드리프트가 확인되지 않았다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "open-question:redis-topology-lane-not-executed", "reason": null }, { "id": "BASE-open-question-v2-state-machine-lanes-not-executed", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "`final/document.md#6-2` · `analysis/05` §15.5" ], "summary": "V2 상태 기계 넷의 컨테이너 레인이 실행되지 않았다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "open-question:v2-state-machine-lanes-not-executed", "reason": null }, { "id": "BASE-reference-a-bean-is-not-composition-evidence", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 2·3 · `analysis/99` §2" ], "summary": "`@Bean`이 있다는 것은 조립 증거가 아니다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:a-bean-is-not-composition-evidence", "reason": null }, { "id": "BASE-reference-a-binary-approval-codec-must-round-trip", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/09` §49" ], "summary": "이진 승인 코덱은 decode 후 재인코딩이 원본과 같아야 한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:a-binary-approval-codec-must-round-trip", "reason": null }, { "id": "BASE-reference-a-contract-test-must-run-the-adapters-statement", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 19 · `analysis/05` §11.2, §17 P2" ], "summary": "계약 테스트는 어댑터가 실제로 돌리는 statement를 실행해야 한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:a-contract-test-must-run-the-adapters-statement", "reason": null }, { "id": "BASE-reference-a-gate-nobody-runs-reports-the-last-run", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 6 · `analysis/18` §4.1c · `analysis/20` §3.3" ], "summary": "아무도 돌리지 않는 레인의 게이트는 마지막으로 돌린 사람이 본 것을 보고한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:a-gate-nobody-runs-reports-the-last-run", "reason": null }, { "id": "BASE-reference-a-lane-that-discovers-nothing-must-fail", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#6-3` · `analysis/05` §15.1" ], "summary": "아무것도 발견하지 못한 레인은 성공이 아니라 실패여야 한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:a-lane-that-discovers-nothing-must-fail", "reason": null }, { "id": "BASE-reference-a-publicly-readable-state-must-be-complete-by-constraint", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/08` §V1" ], "summary": "공개 읽기 가능한 상태는 완전한 identity를 DB 제약으로 요구한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:a-publicly-readable-state-must-be-complete-by-constraint", "reason": null }, { "id": "BASE-reference-a-single-admission-point-must-count-its-bypasses", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/10` §64" ], "summary": "단일 admission point는 우회 경로를 세어야 성립한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:a-single-admission-point-must-count-its-bypasses", "reason": null }, { "id": "BASE-reference-agreement-between-documents-proves-nothing", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 5 · `analysis/19` §6.6" ], "summary": "문서와 상수가 서로 일치하는 것으로는 아무것도 증명되지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:agreement-between-documents-proves-nothing", "reason": null }, { "id": "BASE-reference-ambiguity-rule-hurts-both-ways", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §3.5 · `docs/adr/ADR-JPA-003-completion-unknown.md`" ], "summary": "커밋 모호성 판정은 넓혀도 좁혀도 해롭다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:ambiguity-rule-hurts-both-ways", "reason": null }, { "id": "BASE-reference-an-applied-checksum-is-a-promise", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §8.1, §8.5" ], "summary": "적용된 마이그레이션의 checksum은 그것을 돌린 모든 배포에 대한 약속이다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:an-applied-checksum-is-a-promise", "reason": null }, { "id": "BASE-reference-atomic-type-is-not-atomicity", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#5-5` · `analysis/20` §7" ], "summary": "`Atomic*` 타입의 존재는 원자성의 증거가 아니다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:atomic-type-is-not-atomicity", "reason": null }, { "id": "BASE-reference-cas-tuple-in-the-where-clause", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 17 · `analysis/05` §10, §16" ], "summary": "CAS 튜플을 where 절에 전부 반복하고 update count를 답으로 쓴다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:cas-tuple-in-the-where-clause", "reason": null }, { "id": "BASE-reference-check-which-duplicate-is-wired", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#7-3` · `analysis/99` §4" ], "summary": "중복 장치를 찾으면 어느 쪽이 조립됐는지 먼저 확인한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:check-which-duplicate-is-wired", "reason": null }, { "id": "BASE-reference-claim-with-a-conditional-update-not-a-read", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/08` §V4 · `analysis/05` §10" ], "summary": "조건부 update로 행을 claim하고 읽은 값으로 판단하지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:claim-with-a-conditional-update-not-a-read", "reason": null }, { "id": "BASE-reference-conditionalonbean-must-be-satisfiable", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 4 · `analysis/19` §7.1" ], "summary": "`@ConditionalOnBean`은 조건이 만족될 수 있는지까지 확인해야 한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:conditionalonbean-must-be-satisfiable", "reason": null }, { "id": "BASE-reference-count-the-frameworks-own-autoconfigurations", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §14.1" ], "summary": "프레임워크가 기여하는 자동설정까지 세지 않으면 스위치가 아니다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:count-the-frameworks-own-autoconfigurations", "reason": null }, { "id": "BASE-reference-deadline-narrows-in-three-stages", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §3.3" ], "summary": "데드라인은 호출 예산에서 시작해 세 단계로 좁힌다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:deadline-narrows-in-three-stages", "reason": null }, { "id": "BASE-reference-digest-must-be-length-framed-and-versioned", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §10.1" ], "summary": "digest는 길이 프레이밍하고 버전을 붙인다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:digest-must-be-length-framed-and-versioned", "reason": null }, { "id": "BASE-reference-each-stream-owns-its-history-table", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §8.3" ], "summary": "마이그레이션 스트림은 자기 history 테이블을 갖는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:each-stream-owns-its-history-table", "reason": null }, { "id": "BASE-reference-expired-claim-and-expired-execution-differ", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §10.1, §10.4" ], "summary": "만료된 claim과 만료된 실행은 다르게 다뤄야 한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:expired-claim-and-expired-execution-differ", "reason": null }, { "id": "BASE-reference-fix-overstatement-before-understatement", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#7-4` · `analysis/19` §6.3" ], "summary": "과대 진술 문서를 과소보다 먼저 고친다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:fix-overstatement-before-understatement", "reason": null }, { "id": "BASE-reference-grades-may-understate-never-overstate", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#7-5` · `analysis/16` §45.3 · `analysis/20` §2.6" ], "summary": "등급은 네 단계로 나누고 관측보다 높게 적지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:grades-may-understate-never-overstate", "reason": null }, { "id": "BASE-reference-hibernate-filter-is-not-a-security-boundary", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §13.2" ], "summary": "Hibernate filter는 보안 경계가 아니다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:hibernate-filter-is-not-a-security-boundary", "reason": null }, { "id": "BASE-reference-isolation-settings-must-be-transaction-local", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §13.1, §13.2" ], "summary": "격리 설정은 트랜잭션 로컬이어야 한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:isolation-settings-must-be-transaction-local", "reason": null }, { "id": "BASE-reference-local-with-a-different-db-is-a-different-system", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 18 · `analysis/05` §8.5" ], "summary": "로컬이 다른 DB면 로컬 테스트는 다른 시스템에 대한 진술이다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:local-with-a-different-db-is-a-different-system", "reason": null }, { "id": "BASE-reference-make-the-unsafe-state-unrepresentable", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 14 · `analysis/05` §2.2 · `analysis/19` §3.2" ], "summary": "위험한 조합은 정책이 아니라 생성자가 거부하게 만든다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:make-the-unsafe-state-unrepresentable", "reason": null }, { "id": "BASE-reference-names-are-registry-keys-not-values", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 15 · `analysis/05` §2.1, §5, §7" ], "summary": "이름은 값이 아니라 registry key다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:names-are-registry-keys-not-values", "reason": null }, { "id": "BASE-reference-numbers-in-docs-should-be-derived", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/19` §6.4 · `analysis/05` §17 P3" ], "summary": "문서의 수치는 세지 말고 파생하거나 게이트로 붙든다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:numbers-in-docs-should-be-derived", "reason": null }, { "id": "BASE-reference-off-must-be-structural", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#10-3` · `analysis/05` §14.1 · `analysis/19` §6.1" ], "summary": "\"꺼짐\"은 조건의 반복이 아니라 구조여야 한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:off-must-be-structural", "reason": null }, { "id": "BASE-reference-omission-that-passes-is-not-a-gate", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 12 · `analysis/05` §1, §16" ], "summary": "빠뜨림이 통과가 되는 게이트는 게이트가 아니다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:omission-that-passes-is-not-a-gate", "reason": null }, { "id": "BASE-reference-prefix-matching-fits-signatures-not-sniffing", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/08` §40" ], "summary": "접두사 시작 매칭은 시그니처에는 맞고 스니핑 패턴에는 맞지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:prefix-matching-fits-signatures-not-sniffing", "reason": null }, { "id": "BASE-reference-read-the-assembling-side-first", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#13` 항목 5 · `analysis/99` §8" ], "summary": "조립 결함을 판정하려면 조립하는 쪽을 먼저 읽어야 한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:read-the-assembling-side-first", "reason": null }, { "id": "BASE-reference-read-the-clock-after-the-lock", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 17 · `analysis/05` §10, §16" ], "summary": "시간은 DB에서, 그리고 행을 잠근 다음에 읽는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:read-the-clock-after-the-lock", "reason": null }, { "id": "BASE-reference-register-paths-bind-values", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 16 · `analysis/05` §7.5" ], "summary": "path·identifier는 등록하고 value는 바인딩한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:register-paths-bind-values", "reason": null }, { "id": "BASE-reference-registry-rules-transfer-ci-rules-do-not", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#7-6` · `analysis/99` §7.6" ], "summary": "레지스트리로 표현된 규칙은 전이되고 CI로 표현된 규칙은 전이되지 않는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:registry-rules-transfer-ci-rules-do-not", "reason": null }, { "id": "BASE-reference-reject-rather-than-sanitize", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §12.2" ], "summary": "sanitize가 아니라 reject가 기본이다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:reject-rather-than-sanitize", "reason": null }, { "id": "BASE-reference-retryability-needs-both-idempotency-and-category", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/11` §51 · `analysis/05` §3.6" ], "summary": "재시도 가능성은 멱등성과 실패 범주를 함께 봐야 정해진다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:retryability-needs-both-idempotency-and-category", "reason": null }, { "id": "BASE-reference-runtime-membership-decides-severity", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 1 · `analysis/17` §26.6 · `analysis/19` §1.1 · `analysis/20` §1.1" ], "summary": "`runtime_memberships`를 먼저 읽고 심각도를 정한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:runtime-membership-decides-severity", "reason": null }, { "id": "BASE-reference-server-metadata-defines-the-command", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/10` §47" ], "summary": "서버 메타데이터가 명령의 정의이고 정책 파일은 허용 범위다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:server-metadata-defines-the-command", "reason": null }, { "id": "BASE-reference-session-scoped-settings-outlive-the-transaction", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §3.3, §13.2" ], "summary": "세션 스코프 설정은 풀로 돌아간 커넥션에 남는다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:session-scoped-settings-outlive-the-transaction", "reason": null }, { "id": "BASE-reference-telemetry-can-be-more-dangerous-than-its-subject", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#5-2` · `analysis/05` §12.2 · `analysis/02`" ], "summary": "관측을 위해 수집한 데이터가 관측 대상보다 위험할 수 있다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:telemetry-can-be-more-dangerous-than-its-subject", "reason": null }, { "id": "BASE-reference-tenant-column-belongs-in-every-unique-constraint", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §13.1" ], "summary": "tenant 컬럼이 있는 테이블의 모든 unique 제약에 그 컬럼이 들어가야 한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:tenant-column-belongs-in-every-unique-constraint", "reason": null }, { "id": "BASE-reference-the-powerful-half-must-not-be-one-setting-away", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/09` §49" ], "summary": "권한이 센 절반이 설정 한 줄로 켜지면 안 된다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:the-powerful-half-must-not-be-one-setting-away", "reason": null }, { "id": "BASE-reference-the-startup-validator-follows-the-autoconfiguration-root", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#5-3` · `analysis/18` (SRC-158)" ], "summary": "시작 검증기가 도는지는 그 능력에 자동설정 루트가 있는지와 일치한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:the-startup-validator-follows-the-autoconfiguration-root", "reason": null }, { "id": "BASE-reference-translation-chain-order-is-a-contract", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §3.6" ], "summary": "실패 번역 사슬의 순서는 계약이다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:translation-chain-order-is-a-contract", "reason": null }, { "id": "BASE-reference-two-vocabularies-for-one-concept", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/19` §5.4 · `analysis/06` §58, §69 · `analysis/05` §12.5" ], "summary": "같은 개념의 두 어휘가 공존하면 하나를 죽은 것으로 표시한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:two-vocabularies-for-one-concept", "reason": null }, { "id": "BASE-reference-unknown-is-a-third-result", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`final/document.md#9` 규칙 13 · `analysis/05` §16 · `analysis/19` §3.2" ], "summary": "모르는 것은 성공도 실패도 아닌 세 번째 결과여야 한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:unknown-is-a-third-result", "reason": null }, { "id": "BASE-reference-walk-the-cause-chain-most-specific-wins", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/11` §51" ], "summary": "원인 사슬은 가장 구체적인 분류가 이기도록 순회한다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:walk-the-cause-chain-most-specific-wins", "reason": null }, { "id": "BASE-reference-write-transactions-need-a-finite-timeout", "kindCandidate": "REFERENCE", "priority": "NONE", "sourceRefs": [ "`analysis/05` §2.3" ], "summary": "쓰기 트랜잭션에는 유한 타임아웃이 필수다", "origin": "PRE_COVERAGE_ROOT_TREE_BASELINE", "disposition": "EMITTED", "target": "reference:write-transactions-need-a-finite-timeout", "reason": null }, { "id": "X99-Q001", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "analysis/99-cross-scope.md#L244" ], "sourceHeading": "남은 질문 1 — 컨테이너·브로커·DB가 필요한 레인의 실제 결과", "summary": "컨테이너·브로커·DB가 필요한 레인의 실제 결과", "disposition": "MERGED", "target": "open-question:container-lanes-not-executed", "reason": "기존 Open Question이 동일한 미실행 container/broker/DB 레인의 실제 결과를 이미 질문 단위로 포괄한다." }, { "id": "X99-Q002", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "analysis/99-cross-scope.md#L252" ], "sourceHeading": "남은 질문 2 — sample-portfolio 내부", "summary": "sample-portfolio 내부와 두 번째 runtime membership에서 달라질 수 있는 판정", "disposition": "BLOCKED", "target": null, "reason": "sample-portfolio는 사용자 지시로 분석 대상에서 명시적으로 제외됐다. 분석 없이 질문 record를 생성하면 근거 범위를 넘어가므로 scope가 다시 열리기 전까지 BLOCKED다." }, { "id": "X99-Q003", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "analysis/99-cross-scope.md#L258" ], "sourceHeading": "남은 질문 3 — 런타임 관측", "summary": "정적 분석 판정을 실제 부팅 로그·액추에이터·메트릭으로 확증하지 않았다", "disposition": "MERGED", "target": "open-question:one-boot-would-settle-two-findings", "reason": "기존 Open Question이 messaging metrics와 ConditionEvaluationReport를 실제 부팅으로 확증하는 동일 검증 단위를 가진다." }, { "id": "X99-Q004", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "analysis/99-cross-scope.md#L264" ], "sourceHeading": "남은 질문 4 — @ConditionalOnBean 실제 평가 순서", "summary": "@ConditionalOnBean 사슬의 실제 평가 순서", "disposition": "MERGED", "target": "open-question:conditional-evaluation-order-unverified", "reason": "기존 Open Question이 ConditionEvaluationReport로 현재 리비전의 실제 조건 평가 사유를 확인하는 동일 질문이다." }, { "id": "X99-Q005", "kindCandidate": "OPEN_QUESTION", "priority": "NONE", "sourceRefs": [ "analysis/99-cross-scope.md#L270" ], "sourceHeading": "남은 질문 5 — 성능·용량 주장", "summary": "실제 성능·용량 특성을 어떤 모듈에서도 측정하지 않았다", "disposition": "EMITTED", "target": "open-question:performance-and-capacity-unmeasured", "reason": null, "topic": "verification-path-coverage" }, { "id": "C2-F001", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-operation-ledger-jpa.md#L133" ], "sourceHeading": "P2 — insert-first 주장이 Spring Data 의 save 계약과 어긋난다. 그리고 테스트 이중이 그 차이를 가린다", "summary": "insert-first 주장이 Spring Data 의 save 계약과 어긋난다. 그리고 테스트 이중이 그 차이를 가린다", "disposition": "EMITTED", "target": "case:assigned-id-turns-claim-into-upsert", "reason": "사이클 2 전수 통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 낸다.", "cycle": 2 }, { "id": "C2-F002", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-policy.md#L158" ], "sourceHeading": "P2 — 자격증명 회전이 비교 후 교체가 아니고, 배수 완료가 진행 중인 회전을 되돌릴 수 있다", "summary": "자격증명 회전이 비교 후 교체가 아니고, 배수 완료가 진행 중인 회전을 되돌릴 수 있다", "disposition": "EMITTED", "target": "case:complete-drain-rolls-back-a-rotation", "reason": "사이클 2 전수 통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 낸다.", "cycle": 2 }, { "id": "C2-F003", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-spring-boot-starter.md#L139" ], "sourceHeading": "P2 — 시작 검증기가 시작 시 실행되지 않는다", "summary": "시작 검증기가 시작 시 실행되지 않는다", "disposition": "EMITTED", "target": "case:startup-validator-is-the-only-reader-of-four-keys", "reason": "사이클 2 전수 통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 낸다.", "cycle": 2 }, { "id": "C2-F004", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-spring-boot-starter.md#L148" ], "sourceHeading": "P2 — 같은 자동 설정 안에서 검증기 하나만 감싸이지 않는다", "summary": "같은 자동 설정 안에서 검증기 하나만 감싸이지 않는다", "disposition": "EMITTED", "target": "case:validator-declared-and-never-injected", "reason": "사이클 2 전수 통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 낸다.", "cycle": 2 }, { "id": "C2-F005", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-nats-experimental.md#L111" ], "sourceHeading": "P2 — deduplicatedPublish 를 무조건 참으로 선언하는데 실제 중복 제거는 프로파일에 창이 있을 때만 일어난다", "summary": "deduplicatedPublish 를 무조건 참으로 선언하는데 실제 중복 제거는 프로파일에 창이 있을 때만 일어난다", "disposition": "EMITTED", "target": "case:capability-constant-outlives-its-condition", "reason": "사이클 2 전수 통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 낸다.", "cycle": 2 }, { "id": "C2-F006", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-advanced-diagnostics.md#L123" ], "sourceHeading": "P2 — 마스킹이 IPv4 만 알고, 그 결과 마스킹되지 않은 주소 검사가 나머지 형태를 전부 통과시킨다", "summary": "마스킹이 IPv4 만 알고, 그 결과 마스킹되지 않은 주소 검사가 나머지 형태를 전부 통과시킨다", "disposition": "EMITTED", "target": "case:ipv4-only-mask-passes-every-other-form", "reason": "사이클 2 전수 통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 낸다.", "cycle": 2 }, { "id": "C2-F007", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-spring-boot-starter.md#L148" ], "sourceHeading": "규칙 — 검증기는 발행이 아니라 주입이 강제다", "summary": "검증기는 발행이 아니라 주입이 강제다", "disposition": "EMITTED", "target": "reference:a-validator-is-enforced-by-injection", "reason": "사이클 2 전수 통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 낸다.", "cycle": 2 }, { "id": "A24-F001", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/messaging/messaging-spring-boot-starter.md#L218" ], "sourceHeading": "운영 프로파일에 TLS·인증을 요구하고 그 둘이 없는 Kafka 생산자를 만든다", "summary": "운영 프로파일에 TLS·인증을 요구하고 그 둘이 없는 Kafka 생산자를 만든다", "disposition": "EMITTED", "target": "case:a-validator-that-demands-tls-and-an-assembly-that-omits-it", "reason": "23개 리프 재통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 냈다." }, { "id": "A24-F002", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-proto-contract.md#L221" ], "sourceHeading": "두 파일이 같은 검증기를 빌드 게이트라고 적고 어떤 빌드도 부르지 않는다", "summary": "두 파일이 같은 검증기를 빌드 게이트라고 적고 어떤 빌드도 부르지 않는다", "disposition": "EMITTED", "target": "case:two-files-name-a-build-gate-that-no-build-runs", "reason": "23개 리프 재통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 냈다." }, { "id": "A24-F003", "kindCandidate": "REFERENCE", "priority": "P2", "sourceRefs": [ "analysis/99-cross-scope.md#3-5" ], "sourceHeading": "산문이 선언한 게이트는 빌드에 있는 게이트가 아니다", "summary": "산문이 선언한 게이트는 빌드에 있는 게이트가 아니다", "disposition": "EMITTED", "target": "reference:a-gate-declared-in-prose-is-not-in-the-build", "reason": "23개 리프 재통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 냈다." }, { "id": "A24-F004", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-pulsar-experimental.md#L222" ], "sourceHeading": "이름이 검사한다고 말하는 것을 본문이 검사하지 않는 테스트 다섯", "summary": "이름이 검사한다고 말하는 것을 본문이 검사하지 않는 테스트 다섯", "disposition": "EMITTED", "target": "case:test-names-that-assert-what-their-bodies-do-not", "reason": "23개 리프 재통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 냈다." }, { "id": "A24-F005", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-codegen.md#L259" ], "sourceHeading": "결정을 그 결정이 판정한 대상에 묶는 것 — 같은 저장소의 맞는 판본과 틀린 판본", "summary": "결정을 그 결정이 판정한 대상에 묶는 것 — 같은 저장소의 맞는 판본과 틀린 판본", "disposition": "EMITTED", "target": "case:the-same-repository-bound-a-decision-once-and-not-the-other-time", "reason": "23개 리프 재통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 냈다." }, { "id": "A24-F006", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-advanced-bootstrap.md#L219" ], "sourceHeading": "담금 임계값이 열거형에 없는 등급을 위해 쓰여 중간 등급이 상위 등급보다 어려워졌다", "summary": "담금 임계값이 열거형에 없는 등급을 위해 쓰여 중간 등급이 상위 등급보다 어려워졌다", "disposition": "EMITTED", "target": "case:a-soak-threshold-written-for-a-grade-that-does-not-exist", "reason": "23개 리프 재통독에서 처음 나온 finding. 기존 노드가 같은 사건을 담지 않아 새 노드로 냈다." }, { "id": "A25-F001", "kindCandidate": "CONCEPT", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-core-api.md", "analysis/99-cross-scope.md" ], "sourceHeading": "능력 선언의 세 출처와 그것이 파생되지 않을 때", "summary": "능력 선언의 세 출처와 그것이 파생되지 않을 때", "disposition": "EMITTED", "target": "concept:three-sources-of-a-capability-answer", "topic": "capability-declaration-vs-proof", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F002", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-kafka.md#L239", "analysis/messaging/messaging-spring-boot-starter.md" ], "sourceHeading": "브로커 트랜잭션을 무조건 참으로 선언하고, 그 조건을 검사하는 검증기는 기동 시 돌지 않는다", "summary": "브로커 트랜잭션을 무조건 참으로 선언하고, 그 조건을 검사하는 검증기는 기동 시 돌지 않는다", "disposition": "EMITTED", "target": "case:a-transaction-capability-true-and-its-validator-never-run", "topic": "capability-declaration-vs-proof", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F003", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-rabbit.md" ], "sourceHeading": "지연 배달을 참으로 선언하는데 그 지연을 제공할 토폴로지가 조립되지 않는다", "summary": "지연 배달을 참으로 선언하는데 그 지연을 제공할 토폴로지가 조립되지 않는다", "disposition": "EMITTED", "target": "case:a-delayed-delivery-flag-without-the-topology-that-delivers-it", "topic": "capability-declaration-vs-proof", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F004", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-pulsar-experimental.md#L156" ], "sourceHeading": "같은 어댑터의 능력을 전송과 검증기가 다르게 답하고, 런타임이 쓰는 쪽이 record 의 의미와 어긋난다", "summary": "같은 어댑터의 능력을 전송과 검증기가 다르게 답하고, 런타임이 쓰는 쪽이 record 의 의미와 어긋난다", "disposition": "EMITTED", "target": "case:the-transport-and-the-validator-answer-differently", "topic": "capability-declaration-vs-proof", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F005", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L853" ], "sourceHeading": "운영자용 지원 매트릭스가 런타임 편입을 반대로 적고, 틀린 쪽이 옳은 쪽을 권위로 지목한다", "summary": "운영자용 지원 매트릭스가 런타임 편입을 반대로 적고, 틀린 쪽이 옳은 쪽을 권위로 지목한다", "disposition": "EMITTED", "target": "case:the-support-matrix-says-nothing-is-deployed-and-eighteen-are", "topic": "capability-declaration-vs-proof", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F006", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/99-cross-scope.md", "analysis/messaging/messaging-nats-experimental.md" ], "sourceHeading": "능력 선언은 프로파일에서 파생되어야 하고 상수는 그것을 할 수 없다", "summary": "능력 선언은 프로파일에서 파생되어야 하고 상수는 그것을 할 수 없다", "disposition": "EMITTED", "target": "reference:a-capability-constant-must-derive-from-the-profile", "topic": "capability-declaration-vs-proof", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F007", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-nats-experimental.md", "analysis/messaging/messaging-pulsar-experimental.md" ], "sourceHeading": "능력 플래그의 무게는 그것을 읽는 코드가 정한다", "summary": "능력 플래그의 무게는 그것을 읽는 코드가 정한다", "disposition": "EMITTED", "target": "reference:the-weight-of-a-flag-is-set-by-the-code-that-reads-it", "topic": "capability-declaration-vs-proof", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F008", "kindCandidate": "CONCEPT", "priority": "P3", "sourceRefs": [ "analysis/99-cross-scope.md", "analysis/grpc/grpc-policy.md" ], "sourceHeading": "원자 타입 위의 검사 후 실행과 비교 후 교체 루프", "summary": "원자 타입 위의 검사 후 실행과 비교 후 교체 루프", "disposition": "EMITTED", "target": "concept:check-then-act-on-atomic-types", "topic": "non-atomic-check-then-act", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F009", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-client.md" ], "sourceHeading": "회전이 비교 후 교체가 아니라 덮어쓰기이고, 세대 계수기는 음수가 되면 회수되지 않는다", "summary": "회전이 비교 후 교체가 아니라 덮어쓰기이고, 세대 계수기는 음수가 되면 회수되지 않는다", "disposition": "EMITTED", "target": "case:a-rotation-that-overwrites-and-a-generation-that-cannot-be-reclaimed", "topic": "non-atomic-check-then-act", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F010", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-server.md", "analysis/grpc/grpc-policy.md" ], "sourceHeading": "승인 경계가 동시성 아래에서 새고, 큐 계수기를 되돌리는 경로가 없다", "summary": "승인 경계가 동시성 아래에서 새고, 큐 계수기를 되돌리는 경로가 없다", "disposition": "EMITTED", "target": "case:an-admission-boundary-that-leaks-and-a-counter-that-cannot-return", "topic": "non-atomic-check-then-act", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F011", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-admin.md#L191" ], "sourceHeading": "배수를 시작한 뒤에도 한 서비스가 다시 SERVING 이 될 수 있다", "summary": "배수를 시작한 뒤에도 한 서비스가 다시 SERVING 이 될 수 있다", "disposition": "EMITTED", "target": "case:draining-began-and-a-service-came-back-serving", "topic": "non-atomic-check-then-act", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F012", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-admin.md", "analysis/grpc/grpc-policy.md" ], "sourceHeading": "전이를 시작하는 쓰기와 그 전이가 덮는 집합은 한 연산이어야 한다", "summary": "전이를 시작하는 쓰기와 그 전이가 덮는 집합은 한 연산이어야 한다", "disposition": "EMITTED", "target": "reference:beginning-a-transition-and-the-set-it-covers-are-one-operation", "topic": "non-atomic-check-then-act", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F013", "kindCandidate": "CONCEPT", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md", "analysis/messaging/messaging-inbox-jdbc-postgresql.md" ], "sourceHeading": "bounded 와 unbounded 오버로드를 나란히 둔 포트", "summary": "bounded 와 unbounded 오버로드를 나란히 둔 포트", "disposition": "EMITTED", "target": "concept:bounded-and-unbounded-side-by-side", "topic": "retention-and-unbounded-growth", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F014", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md", "analysis/messaging/messaging-outbox-jdbc-postgresql.md" ], "sourceHeading": "cleanup 이 스스로 막겠다고 적은 장애를 일으키는 형태로 호출된다", "summary": "cleanup 이 스스로 막겠다고 적은 장애를 일으키는 형태로 호출된다", "disposition": "EMITTED", "target": "case:the-cleanup-that-causes-the-outage-it-prevents", "topic": "retention-and-unbounded-growth", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F015", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-policy.md#L233", "analysis/grpc/grpc-advanced-streaming.md" ], "sourceHeading": "재생 저장소와 중복 제거 맵에 제거 경로가 없다", "summary": "재생 저장소와 중복 제거 맵에 제거 경로가 없다", "disposition": "EMITTED", "target": "case:a-replay-store-with-no-eviction-path", "topic": "retention-and-unbounded-growth", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F016", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md", "analysis/99-cross-scope.md" ], "sourceHeading": "두 형태를 나란히 내놓는 포트는 이미 안전하지 않은 쪽을 고른 것이다", "summary": "두 형태를 나란히 내놓는 포트는 이미 안전하지 않은 쪽을 고른 것이다", "disposition": "EMITTED", "target": "reference:a-port-that-offers-both-forms-has-chosen-the-unsafe-one", "topic": "retention-and-unbounded-growth", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F017", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md", "analysis/messaging/messaging-transport-spi.md" ], "sourceHeading": "같은 안전 규칙은 하나의 공식과 하나의 강제 시점을 갖는다", "summary": "같은 안전 규칙은 하나의 공식과 하나의 강제 시점을 갖는다", "disposition": "EMITTED", "target": "reference:one-formula-and-one-enforcement-point-per-safety-rule", "topic": "retention-and-unbounded-growth", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F018", "kindCandidate": "CONCEPT", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md" ], "sourceHeading": "8단계 종료 순서 계약과 실제 종료 경로", "summary": "8단계 종료 순서 계약과 실제 종료 경로", "disposition": "EMITTED", "target": "concept:the-eight-phase-shutdown-contract", "topic": "drain-and-shutdown-ordering", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F019", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md#L647" ], "sourceHeading": "순서 계약을 구현하는 것이 없고, 그것을 검증한다는 테스트는 enum 선언 순서만 본다", "summary": "순서 계약을 구현하는 것이 없고, 그것을 검증한다는 테스트는 enum 선언 순서만 본다", "disposition": "EMITTED", "target": "case:an-order-contract-with-no-implementation", "topic": "drain-and-shutdown-ordering", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F020", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-admin.md" ], "sourceHeading": "새 승인을 거절한다는 메서드가 단계만 기록하고 아무것도 거절하지 않는다", "summary": "새 승인을 거절한다는 메서드가 단계만 기록하고 아무것도 거절하지 않는다", "disposition": "EMITTED", "target": "case:reject-new-admission-that-rejects-nothing", "topic": "drain-and-shutdown-ordering", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F021", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-security.md" ], "sourceHeading": "비밀을 힙에서 지우는 마지막 단계가 종료 경로에 연결되지 않았다", "summary": "비밀을 힙에서 지우는 마지막 단계가 종료 경로에 연결되지 않았다", "disposition": "EMITTED", "target": "case:the-last-step-of-secret-erasure-is-not-wired", "topic": "drain-and-shutdown-ordering", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F022", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md" ], "sourceHeading": "선언 순서를 단언하는 테스트는 그 순서를 읽는 코드가 있을 때만 게이트다", "summary": "선언 순서를 단언하는 테스트는 그 순서를 읽는 코드가 있을 때만 게이트다", "disposition": "EMITTED", "target": "reference:a-declaration-order-test-is-a-gate-only-if-something-reads-that-order", "topic": "drain-and-shutdown-ordering", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F023", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md", "analysis/messaging/messaging-admin-runtime.md" ], "sourceHeading": "그 속성을 보일 수 없는 대역 위에서 통과한 테스트는 증인이 아니다", "summary": "그 속성을 보일 수 없는 대역 위에서 통과한 테스트는 증인이 아니다", "disposition": "EMITTED", "target": "reference:a-fake-that-cannot-show-the-property-is-not-a-witness", "topic": "drain-and-shutdown-ordering", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F024", "kindCandidate": "CONCEPT", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md" ], "sourceHeading": "승인·검증·실행의 분리와 그것을 타입으로 표현하기", "summary": "승인·검증·실행의 분리와 그것을 타입으로 표현하기", "disposition": "EMITTED", "target": "concept:approval-verification-execution", "topic": "operator-approval-and-destructive-operations", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F025", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L862" ], "sourceHeading": "재개된 리드라이브가 옮기지 못한 메시지를 영구히 건너뛴다", "summary": "재개된 리드라이브가 옮기지 못한 메시지를 영구히 건너뛴다", "disposition": "EMITTED", "target": "case:a-resumed-redrive-skips-what-it-could-not-move", "topic": "operator-approval-and-destructive-operations", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F026", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md", "analysis/messaging/messaging-admin-api.md" ], "sourceHeading": "위조 가능한 승인이 하필 되돌릴 수 없는 작업 쪽에만 남았다", "summary": "위조 가능한 승인이 하필 되돌릴 수 없는 작업 쪽에만 남았다", "disposition": "EMITTED", "target": "case:the-forgeable-approval-survived-on-the-irreversible-half", "topic": "operator-approval-and-destructive-operations", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F027", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L905" ], "sourceHeading": "BLOCKING 이면 기동이 실패한다는 보장이 어떤 배선에서도 실행되지 않는다", "summary": "BLOCKING 이면 기동이 실패한다는 보장이 어떤 배선에서도 실행되지 않는다", "disposition": "EMITTED", "target": "case:blocking-means-startup-fails-and-nothing-runs-it", "topic": "operator-approval-and-destructive-operations", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F028", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L925" ], "sourceHeading": "서명 능력과 검증 능력은 같은 객체에 두지 않는다", "summary": "서명 능력과 검증 능력은 같은 객체에 두지 않는다", "disposition": "EMITTED", "target": "reference:signing-and-verifying-do-not-share-an-object", "topic": "operator-approval-and-destructive-operations", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F029", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md" ], "sourceHeading": "재개는 인덱스가 아니라 신원으로 한다", "summary": "재개는 인덱스가 아니라 신원으로 한다", "disposition": "EMITTED", "target": "reference:resume-by-identity-not-by-index", "topic": "operator-approval-and-destructive-operations", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F030", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-security.md" ], "sourceHeading": "권한 거부가 보안이 아니라 구성 오류로 기록된다", "summary": "권한 거부가 보안이 아니라 구성 오류로 기록된다", "disposition": "EMITTED", "target": "case:an-authorization-denial-recorded-as-a-configuration-error", "topic": "failure-category-across-adapters", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F031", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-nats-experimental.md", "analysis/messaging/messaging-pulsar-experimental.md" ], "sourceHeading": "종료 중이라는 사정이 업무의 영구 실패로 분류된다", "summary": "종료 중이라는 사정이 업무의 영구 실패로 분류된다", "disposition": "EMITTED", "target": "case:a-closing-transport-reported-as-a-permanent-business-failure", "topic": "failure-category-across-adapters", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F032", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-core-api.md", "analysis/messaging/messaging-security.md" ], "sourceHeading": "실패 범주는 재시도·DLQ·대시보드 사이의 계약이다", "summary": "실패 범주는 재시도·DLQ·대시보드 사이의 계약이다", "disposition": "EMITTED", "target": "reference:a-category-is-a-contract-between-retry-dlq-and-dashboard", "topic": "failure-category-across-adapters", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "A25-F033", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-nats-experimental.md", "analysis/messaging/messaging-pulsar-experimental.md" ], "sourceHeading": "이 세대의 사정은 업무의 영구 실패가 아니다", "summary": "이 세대의 사정은 업무의 영구 실패가 아니다", "disposition": "EMITTED", "target": "reference:this-generations-circumstance-is-not-a-permanent-failure", "topic": "failure-category-across-adapters", "reason": "43개 리프 SSOT 재분해에서 나온 노드. 기존 Topic 이 담지 않는 문제 공간이라 새 Topic 으로 냈다." }, { "id": "R3-GRPC_ADMIN-L131", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-admin.md#L131" ], "sourceHeading": "`rejectNewAdmission()` 이 단계만 기록하고 아무것도 거절하지 않는다", "summary": "`rejectNewAdmission()` 이 단계만 기록하고 아무것도 거절하지 않는다", "disposition": "EMITTED", "target": "case:grpc-admin-f01", "module": "grpc-admin", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADMIN-L162", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-admin.md#L162" ], "sourceHeading": "비밀 필드 검사가 스냅숏의 네 구획 중 하나에만 적용된다", "summary": "비밀 필드 검사가 스냅숏의 네 구획 중 하나에만 적용된다", "disposition": "EMITTED", "target": "case:grpc-admin-f02", "module": "grpc-admin", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADMIN-L181", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-admin.md#L181" ], "sourceHeading": "배수 조정자가 가변이고 동기화가 없다", "summary": "배수 조정자가 가변이고 동기화가 없다", "disposition": "EMITTED", "target": "case:grpc-admin-f03", "module": "grpc-admin", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_BOOTSTRAP-L153", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-bootstrap.md#L153" ], "sourceHeading": "등급 재정의에 하한이 없어 \"켤 수 없다\" 는 등급이 켜질 수 있다", "summary": "등급 재정의에 하한이 없어 \"켤 수 없다\" 는 등급이 켜질 수 있다", "disposition": "EMITTED", "target": "case:grpc-advanced-bootstrap-f01", "module": "grpc-advanced-bootstrap", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_BOOTSTRAP-L182", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-bootstrap.md#L182" ], "sourceHeading": "승격 게이트가 하향 전이도 승격 규칙으로 판정하고, javadoc 이 약속한 거부는 없다", "summary": "승격 게이트가 하향 전이도 승격 규칙으로 판정하고, javadoc 이 약속한 거부는 없다", "disposition": "EMITTED", "target": "case:grpc-advanced-bootstrap-f02", "module": "grpc-advanced-bootstrap", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_BOOTSTRAP-L209", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-bootstrap.md#L209" ], "sourceHeading": "깃발 홀더가 가변이고 동기화가 없다", "summary": "깃발 홀더가 가변이고 동기화가 없다", "disposition": "EMITTED", "target": "case:grpc-advanced-bootstrap-f03", "module": "grpc-advanced-bootstrap", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_BOOTSTRAP-L286", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-bootstrap.md#L286" ], "sourceHeading": "`capabilitiesDraggedAlong` 은 독립성을 증명하지 않는다. 상수를 상수와 비교한다", "summary": "`capabilitiesDraggedAlong` 은 독립성을 증명하지 않는다. 상수를 상수와 비교한다", "disposition": "EMITTED", "target": "case:grpc-advanced-bootstrap-f04", "module": "grpc-advanced-bootstrap", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_BOOTSTRAP-L312", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-bootstrap.md#L312" ], "sourceHeading": "예외가 들고 있는 능력이 `transient` 라 역직렬화 뒤 사라진다", "summary": "예외가 들고 있는 능력이 `transient` 라 역직렬화 뒤 사라진다", "disposition": "EMITTED", "target": "case:grpc-advanced-bootstrap-f05", "module": "grpc-advanced-bootstrap", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_COMPAT-L120", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-compat.md#L120" ], "sourceHeading": "통합 다리의 메타데이터 조립이 메타데이터 예산을 검사하지 않는다", "summary": "통합 다리의 메타데이터 조립이 메타데이터 예산을 검사하지 않는다", "disposition": "EMITTED", "target": "case:grpc-advanced-compat-f01", "module": "grpc-advanced-compat", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_COMPAT-L149", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-compat.md#L149" ], "sourceHeading": "반응형 표면 두 타입은 테스트조차 없다", "summary": "반응형 표면 두 타입은 테스트조차 없다", "disposition": "EMITTED", "target": "case:grpc-advanced-compat-f02", "module": "grpc-advanced-compat", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_COMPAT-L162", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-compat.md#L162" ], "sourceHeading": "저장소가 참조 프록시 설정을 갖고 있는데, 그것을 판정할 코드에 넣지 않는다", "summary": "저장소가 참조 프록시 설정을 갖고 있는데, 그것을 판정할 코드에 넣지 않는다", "disposition": "EMITTED", "target": "case:grpc-advanced-compat-f03", "module": "grpc-advanced-compat", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_DIAGNOSTICS-L167", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-advanced-diagnostics.md#L167" ], "sourceHeading": "마스킹이 IPv4 만 알고, 그 결과 \"마스킹되지 않은 주소\" 검사가 나머지 형태를 전부 통과시킨다", "summary": "마스킹이 IPv4 만 알고, 그 결과 \"마스킹되지 않은 주소\" 검사가 나머지 형태를 전부 통과시킨다", "disposition": "EMITTED", "target": "case:grpc-advanced-diagnostics-f01", "module": "grpc-advanced-diagnostics", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_DIAGNOSTICS-L206", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-diagnostics.md#L206" ], "sourceHeading": "금지 필드 검사가 키에만 적용되고 값에는 적용되지 않는다", "summary": "금지 필드 검사가 키에만 적용되고 값에는 적용되지 않는다", "disposition": "EMITTED", "target": "case:grpc-advanced-diagnostics-f02", "module": "grpc-advanced-diagnostics", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_DIAGNOSTICS-L218", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-diagnostics.md#L218" ], "sourceHeading": "\"실환경 증거\" 가 두 리프에 반씩 있고 서로 만나지 않는다", "summary": "\"실환경 증거\" 가 두 리프에 반씩 있고 서로 만나지 않는다", "disposition": "EMITTED", "target": "case:grpc-advanced-diagnostics-f03", "module": "grpc-advanced-diagnostics", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_EDITION-L180", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-advanced-edition.md#L180" ], "sourceHeading": "비교 픽스처에 비교 대상이 없다", "summary": "비교 픽스처에 비교 대상이 없다", "disposition": "EMITTED", "target": "case:grpc-advanced-edition-f01", "module": "grpc-advanced-edition", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_EDITION-L206", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-edition.md#L206" ], "sourceHeading": "승격 차단 목록에 담금 기간과 실환경 항목이 없다", "summary": "승격 차단 목록에 담금 기간과 실환경 항목이 없다", "disposition": "EMITTED", "target": "case:grpc-advanced-edition-f02", "module": "grpc-advanced-edition", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_EDITION-L216", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-edition.md#L216" ], "sourceHeading": "정책의 자바독이 하지 않는 거부를 한다고 적고, 승격 승인이 두 곳에 따로 있다", "summary": "정책의 자바독이 하지 않는 거부를 한다고 적고, 승격 승인이 두 곳에 따로 있다", "disposition": "EMITTED", "target": "case:grpc-advanced-edition-f03", "module": "grpc-advanced-edition", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_RESILIENCE-L136", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-resilience.md#L136" ], "sourceHeading": "부트스트랩 대조가 문서 어디든의 부분 문자열을 본다", "summary": "부트스트랩 대조가 문서 어디든의 부분 문자열을 본다", "disposition": "EMITTED", "target": "case:grpc-advanced-resilience-f01", "module": "grpc-advanced-resilience", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_RESILIENCE-L155", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-resilience.md#L155" ], "sourceHeading": "대체 선택기는 사용자 정의 선택기가 받는 보호를 받지 않는다", "summary": "대체 선택기는 사용자 정의 선택기가 받는 보호를 받지 않는다", "disposition": "EMITTED", "target": "case:grpc-advanced-resilience-f02", "module": "grpc-advanced-resilience", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_RESILIENCE-L176", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-advanced-resilience.md#L176" ], "sourceHeading": "리졸버의 개정 가드가 비교 후 교체가 아니다", "summary": "리졸버의 개정 가드가 비교 후 교체가 아니다", "disposition": "EMITTED", "target": "case:grpc-advanced-resilience-f03", "module": "grpc-advanced-resilience", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_STREAMING-L125", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-streaming.md#L125" ], "sourceHeading": "클래스가 비판한 무제한 증가를 형제 맵이 그대로 한다", "summary": "클래스가 비판한 무제한 증가를 형제 맵이 그대로 한다", "disposition": "EMITTED", "target": "case:grpc-advanced-streaming-f01", "module": "grpc-advanced-streaming", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_STREAMING-L159", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-streaming.md#L159" ], "sourceHeading": "클라이언트 스트림 정책의 네 상한 중 둘은 읽는 코드가 없다", "summary": "클라이언트 스트림 정책의 네 상한 중 둘은 읽는 코드가 없다", "disposition": "EMITTED", "target": "case:grpc-advanced-streaming-f02", "module": "grpc-advanced-streaming", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_ADVANCED_STREAMING-L180", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-advanced-streaming.md#L180" ], "sourceHeading": "체크포인트 전진이 `ConcurrentMap` 위의 확인 후 쓰기다", "summary": "체크포인트 전진이 `ConcurrentMap` 위의 확인 후 쓰기다", "disposition": "EMITTED", "target": "case:grpc-advanced-streaming-f03", "module": "grpc-advanced-streaming", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CLIENT-L120", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-client.md#L120" ], "sourceHeading": "`rotate` 가 비교 후 교체가 아니라 덮어쓰기다", "summary": "`rotate` 가 비교 후 교체가 아니라 덮어쓰기다", "disposition": "EMITTED", "target": "case:grpc-client-f01", "module": "grpc-client", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CLIENT-L149", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-client.md#L149" ], "sourceHeading": "비원자적 감소가 세대를 영구히 회수 불가로 만든다", "summary": "비원자적 감소가 세대를 영구히 회수 불가로 만든다", "disposition": "EMITTED", "target": "case:grpc-client-f02", "module": "grpc-client", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CLIENT-L176", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-client.md#L176" ], "sourceHeading": "배수 목록의 순회가 동기화 밖에서 일어난다", "summary": "배수 목록의 순회가 동기화 밖에서 일어난다", "disposition": "EMITTED", "target": "case:grpc-client-f03", "module": "grpc-client", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CLIENT-L199", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-client.md#L199" ], "sourceHeading": "프로파일 검증기가 javadoc 이 든 두 실수 중 하나만 검사한다", "summary": "프로파일 검증기가 javadoc 이 든 두 실수 중 하나만 검사한다", "disposition": "EMITTED", "target": "case:grpc-client-f04", "module": "grpc-client", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CODEGEN-L190", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-codegen.md#L190" ], "sourceHeading": "Buf 수명주기 태스크 목록이 빌드와 대조되지 않는다. 테스트는 목록을 자기 자신과 비교한다", "summary": "Buf 수명주기 태스크 목록이 빌드와 대조되지 않는다. 테스트는 목록을 자기 자신과 비교한다", "disposition": "EMITTED", "target": "case:grpc-codegen-f01", "module": "grpc-codegen", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CODEGEN-L220", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-codegen.md#L220" ], "sourceHeading": "릴리스 버전 불변성이 프로세스 안에서만 성립한다", "summary": "릴리스 버전 불변성이 프로세스 안에서만 성립한다", "disposition": "EMITTED", "target": "case:grpc-codegen-f02", "module": "grpc-codegen", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CODEGEN-L239", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-codegen.md#L239" ], "sourceHeading": "픽스처의 메서드 경로가 서비스 × 메서드 교차곱이다", "summary": "픽스처의 메서드 경로가 서비스 × 메서드 교차곱이다", "disposition": "EMITTED", "target": "case:grpc-codegen-f03", "module": "grpc-codegen", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CODEGEN-L287", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-codegen.md#L287" ], "sourceHeading": "`sha256:` 검사가 길이 15자 이상만 요구한다. 저장소 자신의 테스트가 32자 해시를 통과시킨다", "summary": "`sha256:` 검사가 길이 15자 이상만 요구한다. 저장소 자신의 테스트가 32자 해시를 통과시킨다", "disposition": "EMITTED", "target": "case:grpc-codegen-f04", "module": "grpc-codegen", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CORE_API-L140", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-core-api.md#L140" ], "sourceHeading": "정책 목록의 가장 강한 성질을 이 저장소에서는 쓸 수 없다", "summary": "정책 목록의 가장 강한 성질을 이 저장소에서는 쓸 수 없다", "disposition": "EMITTED", "target": "case:grpc-core-api-f01", "module": "grpc-core-api", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CORE_API-L157", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-core-api.md#L157" ], "sourceHeading": "모듈 목록 테스트가 레지스트리와 목록을 붙들지 않는다", "summary": "모듈 목록 테스트가 레지스트리와 목록을 붙들지 않는다", "disposition": "EMITTED", "target": "case:grpc-core-api-f02", "module": "grpc-core-api", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CORE_API-L180", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-core-api.md#L180" ], "sourceHeading": "`RESOURCE_EXHAUSTED` 매핑이 그 상태의 두 출처 중 하나만 가정한다", "summary": "`RESOURCE_EXHAUSTED` 매핑이 그 상태의 두 출처 중 하나만 가정한다", "disposition": "EMITTED", "target": "case:grpc-core-api-f03", "module": "grpc-core-api", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CORE_API-L200", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-core-api.md#L200" ], "sourceHeading": "하나의 상태 코드가 같은 메서드 안에서 두 답을 갖는다", "summary": "하나의 상태 코드가 같은 메서드 안에서 두 답을 갖는다", "disposition": "EMITTED", "target": "case:grpc-core-api-f04", "module": "grpc-core-api", "topic": "runtime-contract-correctness", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CORE_API-L219", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-core-api.md#L219" ], "sourceHeading": "메타데이터 예산의 두 성분 중 하나는 강제되지 않고, 나머지 하나는 바이트가 아니라 문자를 센다", "summary": "메타데이터 예산의 두 성분 중 하나는 강제되지 않고, 나머지 하나는 바이트가 아니라 문자를 센다", "disposition": "EMITTED", "target": "case:grpc-core-api-f05", "module": "grpc-core-api", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_CORE_API-L241", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-core-api.md#L241" ], "sourceHeading": "직렬화 가능하다고 선언한 예외가 자기 내용을 직렬화하지 않는다", "summary": "직렬화 가능하다고 선언한 예외가 자기 내용을 직렬화하지 않는다", "disposition": "EMITTED", "target": "case:grpc-core-api-f06", "module": "grpc-core-api", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_DISCOVERY-L152", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-discovery.md#L152" ], "sourceHeading": "프로파일이 스트림 재접속 예산을 선언하는데 그것이 함의하는 DNS 갱신 주기를 정하지 않는다", "summary": "프로파일이 스트림 재접속 예산을 선언하는데 그것이 함의하는 DNS 갱신 주기를 정하지 않는다", "disposition": "EMITTED", "target": "case:grpc-discovery-f01", "module": "grpc-discovery", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_DISCOVERY-L177", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-discovery.md#L177" ], "sourceHeading": "리졸버 검증기의 규칙이 하나뿐인데 javadoc 은 복수형으로 서술한다", "summary": "리졸버 검증기의 규칙이 하나뿐인데 javadoc 은 복수형으로 서술한다", "disposition": "EMITTED", "target": "case:grpc-discovery-f02", "module": "grpc-discovery", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_DISCOVERY-L187", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-discovery.md#L187" ], "sourceHeading": "목록으로 보고하는 검증기가 주소 수 0 에서 던진다", "summary": "목록으로 보고하는 검증기가 주소 수 0 에서 던진다", "disposition": "EMITTED", "target": "case:grpc-discovery-f03", "module": "grpc-discovery", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_OBSERVABILITY-L197", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-observability.md#L197" ], "sourceHeading": "`queueHighWatermark` 는 요구되고 검증되지만 아무도 읽지 않는다", "summary": "`queueHighWatermark` 는 요구되고 검증되지만 아무도 읽지 않는다", "disposition": "EMITTED", "target": "case:grpc-observability-f01", "module": "grpc-observability", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_OBSERVABILITY-L213", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-observability.md#L213" ], "sourceHeading": "`deadlineRemaining` 도 meter 가 없다. javadoc 은 그것이 기록된다고 말한다", "summary": "`deadlineRemaining` 도 meter 가 없다. javadoc 은 그것이 기록된다고 말한다", "disposition": "EMITTED", "target": "case:grpc-observability-f02", "module": "grpc-observability", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_OBSERVABILITY-L238", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-observability.md#L238" ], "sourceHeading": "허용 태그 8개 중 둘은 값이 자유 문자열이고, 그중 하나는 bounded 열거형이 이미 존재한다", "summary": "허용 태그 8개 중 둘은 값이 자유 문자열이고, 그중 하나는 bounded 열거형이 이미 존재한다", "disposition": "EMITTED", "target": "case:grpc-observability-f03", "module": "grpc-observability", "topic": "runtime-contract-correctness", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_OPERATION_LEDGER_JPA-L184", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-operation-ledger-jpa.md#L184" ], "sourceHeading": "낙관적 잠금 컬럼이 없어 전이 가드가 메모리 안에만 있다", "summary": "낙관적 잠금 컬럼이 없어 전이 가드가 메모리 안에만 있다", "disposition": "EMITTED", "target": "case:grpc-operation-ledger-jpa-f01", "module": "grpc-operation-ledger-jpa", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_OPERATION_LEDGER_JPA-L192", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-operation-ledger-jpa.md#L192" ], "sourceHeading": "`markCommitted` 는 던지고 `markFailed` 는 조용히 넘어간다", "summary": "`markCommitted` 는 던지고 `markFailed` 는 조용히 넘어간다", "disposition": "EMITTED", "target": "case:grpc-operation-ledger-jpa-f02", "module": "grpc-operation-ledger-jpa", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_POLICY-L184", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-policy.md#L184" ], "sourceHeading": "스트림 승인의 경계가 동시성 아래에서 새고, caller별 맵이 줄지 않는다", "summary": "스트림 승인의 경계가 동시성 아래에서 새고, caller별 맵이 줄지 않는다", "disposition": "EMITTED", "target": "case:grpc-policy-f01", "module": "grpc-policy", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_POLICY-L204", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-policy.md#L204" ], "sourceHeading": "자격증명 회전이 비교 후 교체가 아니고, 배수 완료가 진행 중인 회전을 되돌릴 수 있다", "summary": "자격증명 회전이 비교 후 교체가 아니고, 배수 완료가 진행 중인 회전을 되돌릴 수 있다", "disposition": "EMITTED", "target": "case:grpc-policy-f02", "module": "grpc-policy", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_POLICY-L249", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-policy.md#L249" ], "sourceHeading": "직렬 스트림 기록기의 가장 오래된 것 버리기가 잘못된 메시지의 바이트를 뺀다", "summary": "직렬 스트림 기록기의 가장 오래된 것 버리기가 잘못된 메시지의 바이트를 뺀다", "disposition": "EMITTED", "target": "case:grpc-policy-f03", "module": "grpc-policy", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_POLICY-L271", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-policy.md#L271" ], "sourceHeading": "완료 조정자가 요청 경로에서 동기화 없는 가변 리스트를 변경한다", "summary": "완료 조정자가 요청 경로에서 동기화 없는 가변 리스트를 변경한다", "disposition": "EMITTED", "target": "case:grpc-policy-f04", "module": "grpc-policy", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_POLICY-L285", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-policy.md#L285" ], "sourceHeading": "스트림 수명 조정자의 배수 신호가 스레드를 건너면서 `volatile` 이 아니다", "summary": "스트림 수명 조정자의 배수 신호가 스레드를 건너면서 `volatile` 이 아니다", "disposition": "EMITTED", "target": "case:grpc-policy-f05", "module": "grpc-policy", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_POLICY-L305", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-policy.md#L305" ], "sourceHeading": "오류 노출 거부 목록의 \"호스트와 포트\" 규칙이 IPv4 점표기만 본다", "summary": "오류 노출 거부 목록의 \"호스트와 포트\" 규칙이 IPv4 점표기만 본다", "disposition": "EMITTED", "target": "case:grpc-policy-f06", "module": "grpc-policy", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_POLICY-L324", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-policy.md#L324" ], "sourceHeading": "`clearAfterTask` 는 합법 값이 하나뿐인 성분이고, 아무도 읽지 않는다", "summary": "`clearAfterTask` 는 합법 값이 하나뿐인 성분이고, 아무도 읽지 않는다", "disposition": "EMITTED", "target": "case:grpc-policy-f07", "module": "grpc-policy", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_PROTO_CONTRACT-L175", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-proto-contract.md#L175" ], "sourceHeading": "`reserved 2 to 5;` 범위가 개별 숫자로만 수집되어 `RESERVED_HISTORY` 오탐이 된다", "summary": "`reserved 2 to 5;` 범위가 개별 숫자로만 수집되어 `RESERVED_HISTORY` 오탐이 된다", "disposition": "EMITTED", "target": "case:grpc-proto-contract-f01", "module": "grpc-proto-contract", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_PROTO_CONTRACT-L191", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-proto-contract.md#L191" ], "sourceHeading": "반환 목록이 자바독이 약속한 source order 가 아니다", "summary": "반환 목록이 자바독이 약속한 source order 가 아니다", "disposition": "EMITTED", "target": "case:grpc-proto-contract-f02", "module": "grpc-proto-contract", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_PROTO_CONTRACT-L203", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-proto-contract.md#L203" ], "sourceHeading": "커밋 스키마 게이트가 파일 목록을 하드코딩한다", "summary": "커밋 스키마 게이트가 파일 목록을 하드코딩한다", "disposition": "EMITTED", "target": "case:grpc-proto-contract-f03", "module": "grpc-proto-contract", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_PROTO_CONTRACT-L265", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-proto-contract.md#L265" ], "sourceHeading": "열거형 안의 `reserved` 는 수집되지 않는다", "summary": "열거형 안의 `reserved` 는 수집되지 않는다", "disposition": "EMITTED", "target": "case:grpc-proto-contract-f04", "module": "grpc-proto-contract", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_SERVER-L140", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-server.md#L140" ], "sourceHeading": "두 아키텍처 규칙이 저장소 소스에 적용되지 않는다", "summary": "두 아키텍처 규칙이 저장소 소스에 적용되지 않는다", "disposition": "EMITTED", "target": "case:grpc-server-f01", "module": "grpc-server", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_SERVER-L167", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-server.md#L167" ], "sourceHeading": "원시 API 규칙이 import 문만 보므로 완전 수식 사용과 와일드카드를 놓친다", "summary": "원시 API 규칙이 import 문만 보므로 완전 수식 사용과 와일드카드를 놓친다", "disposition": "EMITTED", "target": "case:grpc-server-f02", "module": "grpc-server", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_SERVER-L196", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-server.md#L196" ], "sourceHeading": "빌더 경로에서 순서 규칙 넷 중 셋이 발화할 수 없다", "summary": "빌더 경로에서 순서 규칙 넷 중 셋이 발화할 수 없다", "disposition": "EMITTED", "target": "case:grpc-server-f03", "module": "grpc-server", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_SERVER-L211", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-server.md#L211" ], "sourceHeading": "승인 제어기의 세 메서드가 원자적이지 않고, 큐 계수기를 되돌리는 경로가 없다", "summary": "승인 제어기의 세 메서드가 원자적이지 않고, 큐 계수기를 되돌리는 경로가 없다", "disposition": "EMITTED", "target": "case:grpc-server-f04", "module": "grpc-server", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_SPRING_BOOT_STARTER-L183", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-spring-boot-starter.md#L183" ], "sourceHeading": "시작 검증기가 시작 시 실행되지 않는다", "summary": "시작 검증기가 시작 시 실행되지 않는다", "disposition": "EMITTED", "target": "case:grpc-spring-boot-starter-f01", "module": "grpc-spring-boot-starter", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_SPRING_BOOT_STARTER-L221", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-spring-boot-starter.md#L221" ], "sourceHeading": "자동 설정이 `transport` 를 읽지 않고 전송을 하드코딩한다", "summary": "자동 설정이 `transport` 를 읽지 않고 전송을 하드코딩한다", "disposition": "EMITTED", "target": "case:grpc-spring-boot-starter-f02", "module": "grpc-spring-boot-starter", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_SPRING_BOOT_STARTER-L236", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-spring-boot-starter.md#L236" ], "sourceHeading": "`default-unary-deadline` 은 읽는 코드가 저장소에 없다", "summary": "`default-unary-deadline` 은 읽는 코드가 저장소에 없다", "disposition": "EMITTED", "target": "case:grpc-spring-boot-starter-f03", "module": "grpc-spring-boot-starter", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_SPRING_BOOT_STARTER-L249", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-spring-boot-starter.md#L249" ], "sourceHeading": "반사 모드를 명시하면 서비스·역할 허용 목록이 조용히 하드코딩으로 바뀐다", "summary": "반사 모드를 명시하면 서비스·역할 허용 목록이 조용히 하드코딩으로 바뀐다", "disposition": "EMITTED", "target": "case:grpc-spring-boot-starter-f04", "module": "grpc-spring-boot-starter", "topic": "runtime-contract-correctness", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_TESTKIT-L153", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-testkit.md#L153" ], "sourceHeading": "네 레인이 `check` 에 붙지 않고, 이 가족을 이름으로 부르는 워크플로가 없다", "summary": "네 레인이 `check` 에 붙지 않고, 이 가족을 이름으로 부르는 워크플로가 없다", "disposition": "EMITTED", "target": "case:grpc-testkit-f01", "module": "grpc-testkit", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_TESTKIT-L172", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-testkit.md#L172" ], "sourceHeading": "릴리스 게이트의 입력이 전부 호출자가 손으로 만드는 값이다", "summary": "릴리스 게이트의 입력이 전부 호출자가 손으로 만드는 값이다", "disposition": "EMITTED", "target": "case:grpc-testkit-f02", "module": "grpc-testkit", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_TESTKIT-L187", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/grpc/grpc-testkit.md#L187" ], "sourceHeading": "고장 레인의 유일한 실소켓 시험이 자기가 관측한 것을 버리고 리터럴로 증거를 만든다", "summary": "고장 레인의 유일한 실소켓 시험이 자기가 관측한 것을 버리고 리터럴로 증거를 만든다", "disposition": "EMITTED", "target": "case:grpc-testkit-f03", "module": "grpc-testkit", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_TESTKIT-L233", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-testkit.md#L233" ], "sourceHeading": "호환성 표의 레인 이름과 빌드의 레인 이름이 서로 다른 집합이다", "summary": "호환성 표의 레인 이름과 빌드의 레인 이름이 서로 다른 집합이다", "disposition": "EMITTED", "target": "case:grpc-testkit-f04", "module": "grpc-testkit", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_TESTKIT-L245", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-testkit.md#L245" ], "sourceHeading": "계약 스위트 둘이 결과를 만드는 코드를 갖지 않는다", "summary": "계약 스위트 둘이 결과를 만드는 코드를 갖지 않는다", "disposition": "EMITTED", "target": "case:grpc-testkit-f05", "module": "grpc-testkit", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-GRPC_TESTKIT-L262", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/grpc/grpc-testkit.md#L262" ], "sourceHeading": "던져 버릴 비밀번호를 만들어 놓고 외부 프로세스의 명령줄에 싣는다", "summary": "던져 버릴 비밀번호를 만들어 놓고 외부 프로세스의 명령줄에 싣는다", "disposition": "EMITTED", "target": "case:grpc-testkit-f06", "module": "grpc-testkit", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_API-L915", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L915" ], "sourceHeading": "`DestructiveOperationGuard` 의 두 분기가 문서에도 없고 테스트에도 없다", "summary": "`DestructiveOperationGuard` 의 두 분기가 문서에도 없고 테스트에도 없다", "disposition": "EMITTED", "target": "case:messaging-admin-api-f01", "module": "messaging-admin-api", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_API-L944", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L944" ], "sourceHeading": "계획 다이제스트가 승인 정규 형식과 다른 인코딩을 쓴다", "summary": "계획 다이제스트가 승인 정규 형식과 다른 인코딩을 쓴다", "disposition": "EMITTED", "target": "case:messaging-admin-api-f02", "module": "messaging-admin-api", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_API-L952", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L952" ], "sourceHeading": "`TopologyManagementMode` 가 어디에도 연결되어 있지 않다", "summary": "`TopologyManagementMode` 가 어디에도 연결되어 있지 않다", "disposition": "EMITTED", "target": "case:messaging-admin-api-f03", "module": "messaging-admin-api", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_API-L956", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L956" ], "sourceHeading": "운영자용 표면 전체에 프로덕션 소비자가 없다", "summary": "운영자용 표면 전체에 프로덕션 소비자가 없다", "disposition": "EMITTED", "target": "case:messaging-admin-api-f04", "module": "messaging-admin-api", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_API-L962", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L962" ], "sourceHeading": "`VerifiedApproval` 의 위조 방지가 package-private 에만 의존한다", "summary": "`VerifiedApproval` 의 위조 방지가 package-private 에만 의존한다", "disposition": "EMITTED", "target": "case:messaging-admin-api-f05", "module": "messaging-admin-api", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_API-L968", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L968" ], "sourceHeading": "`messaging-policy` 의존이 import 0건이다", "summary": "`messaging-policy` 의존이 import 0건이다", "disposition": "EMITTED", "target": "case:messaging-admin-api-f06", "module": "messaging-admin-api", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_API-L972", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L972" ], "sourceHeading": "같은 인가 실패 코드가 세 파일에 문자열 리터럴로 흩어져 있다", "summary": "같은 인가 실패 코드가 세 파일에 문자열 리터럴로 흩어져 있다", "disposition": "EMITTED", "target": "case:messaging-admin-api-f07", "module": "messaging-admin-api", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_RUNTIME-L883", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L883" ], "sourceHeading": "파괴적 작업의 승인만 위조 가능한 형태로 남아 있다", "summary": "파괴적 작업의 승인만 위조 가능한 형태로 남아 있다", "disposition": "EMITTED", "target": "case:messaging-admin-runtime-f01", "module": "messaging-admin-runtime", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_RUNTIME-L910", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L910" ], "sourceHeading": "토폴로지 검증 스택이 두 벌이고 판정이 어긋난다", "summary": "토폴로지 검증 스택이 두 벌이고 판정이 어긋난다", "disposition": "EMITTED", "target": "case:messaging-admin-runtime-f02", "module": "messaging-admin-runtime", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_RUNTIME-L918", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L918" ], "sourceHeading": "오케스트레이터가 어디에서도 실행되지 않는다", "summary": "오케스트레이터가 어디에서도 실행되지 않는다", "disposition": "EMITTED", "target": "case:messaging-admin-runtime-f03", "module": "messaging-admin-runtime", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_RUNTIME-L924", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L924" ], "sourceHeading": "public 인터페이스를 패키지 밖에서 구현할 수 없다", "summary": "public 인터페이스를 패키지 밖에서 구현할 수 없다", "disposition": "EMITTED", "target": "case:messaging-admin-runtime-f04", "module": "messaging-admin-runtime", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_RUNTIME-L930", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L930" ], "sourceHeading": "감사 싱크가 중복 선언되어 있고 레닥션 계약이 유실된다", "summary": "감사 싱크가 중복 선언되어 있고 레닥션 계약이 유실된다", "disposition": "EMITTED", "target": "case:messaging-admin-runtime-f05", "module": "messaging-admin-runtime", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_RUNTIME-L936", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L936" ], "sourceHeading": "저널의 `itemsCompleted` 단조성이 인터페이스 계약에 없다", "summary": "저널의 `itemsCompleted` 단조성이 인터페이스 계약에 없다", "disposition": "EMITTED", "target": "case:messaging-admin-runtime-f06", "module": "messaging-admin-runtime", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_RUNTIME-L942", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L942" ], "sourceHeading": "리플레이가 리스를 받지만 재개하지 않는다", "summary": "리플레이가 리스를 받지만 재개하지 않는다", "disposition": "EMITTED", "target": "case:messaging-admin-runtime-f07", "module": "messaging-admin-runtime", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_RUNTIME-L948", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L948" ], "sourceHeading": "격리 리플레이의 guard 우회가 `dryRun` 파라미터로 표현된다", "summary": "격리 리플레이의 guard 우회가 `dryRun` 파라미터로 표현된다", "disposition": "EMITTED", "target": "case:messaging-admin-runtime-f08", "module": "messaging-admin-runtime", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_RUNTIME-L957", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L957" ], "sourceHeading": "선언된 의존 6개 중 3개가 import 0건", "summary": "선언된 의존 6개 중 3개가 import 0건", "disposition": "EMITTED", "target": "case:messaging-admin-runtime-f09", "module": "messaging-admin-runtime", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_ADMIN_RUNTIME-L961", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L961" ], "sourceHeading": "실패한 리드라이브 항목의 사유가 어디에도 남지 않는다", "summary": "실패한 리드라이브 항목의 사유가 어디에도 남지 않는다", "disposition": "EMITTED", "target": "case:messaging-admin-runtime-f10", "module": "messaging-admin-runtime", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_CLAIM_CHECK-L507", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L507" ], "sourceHeading": "배포 아티팩트가 싣지만 아무도 부르지 않고, 다른 곳의 에러 메시지가 이 경로를 권한다", "summary": "배포 아티팩트가 싣지만 아무도 부르지 않고, 다른 곳의 에러 메시지가 이 경로를 권한다", "disposition": "EMITTED", "target": "case:messaging-claim-check-f01", "module": "messaging-claim-check", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_CLAIM_CHECK-L516", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L516" ], "sourceHeading": "claim check 문턱이 두 곳에서 독립적으로 정해진다", "summary": "같은 튜닝 값이 두 계층에 있으면 어느 쪽이 이기는지 정한다", "disposition": "EMITTED", "target": "reference:messaging-claim-check-f02", "module": "messaging-claim-check", "topic": "state-ownership-and-concurrency", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_CLAIM_CHECK-L525", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L525" ], "sourceHeading": "예외 승격이 에러 코드 문자열 접미사에 의존한다", "summary": "예외 승격이 에러 코드 문자열 접미사에 의존한다", "disposition": "EMITTED", "target": "case:messaging-claim-check-f03", "module": "messaging-claim-check", "topic": "runtime-contract-correctness", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_CLAIM_CHECK-L534", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L534" ], "sourceHeading": "`ClaimCheckPublisher`가 이 leaf의 테스트에 등장하지 않는다", "summary": "leaf의 각 public 클래스는 자기 레인에 테스트를 갖는다", "disposition": "EMITTED", "target": "reference:messaging-claim-check-f04", "module": "messaging-claim-check", "topic": "runtime-reachability-and-composition", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_CLAIM_CHECK-L543", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L543" ], "sourceHeading": "보존 sweep이 없다", "summary": "보존 sweep이 없다", "disposition": "EMITTED", "target": "open-question:messaging-claim-check-f05", "module": "messaging-claim-check", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_CLOUDEVENTS-L518", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L518" ], "sourceHeading": "상호운용을 위한 매퍼가 명세 준수 이벤트를 분류되지 않은 예외로 거절한다", "summary": "상호운용을 위한 매퍼가 명세 준수 이벤트를 분류되지 않은 예외로 거절한다", "disposition": "EMITTED", "target": "case:messaging-cloudevents-f01", "module": "messaging-cloudevents", "topic": "verification-path-coverage", "reason": "SSOT 의 `다음 단계` 가 CASE 후보라고 명시한다. 같은 줄 뒤의 DECISION 언급은 선택지 (b) 에 대한 것이고 SSOT 스스로 `NEEDS_DECISION` 이라고 적었으므로 emit 대상이 아니다." }, { "id": "R3-MESSAGING_CLOUDEVENTS-L529", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L529" ], "sourceHeading": "배포 아티팩트가 싣지만 아무도 부르지 않는다", "summary": "배포 아티팩트가 싣지만 아무도 부르지 않는다", "disposition": "EMITTED", "target": "case:messaging-cloudevents-f02", "module": "messaging-cloudevents", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_CLOUDEVENTS-L538", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L538" ], "sourceHeading": "왕복이 다섯 필드를 버리고, 테스트가 그 필드를 비교하지 않는다", "summary": "왕복이라 부르는 테스트는 무엇을 보존하지 않는지도 적는다", "disposition": "EMITTED", "target": "reference:messaging-cloudevents-f03", "module": "messaging-cloudevents", "topic": "verification-path-coverage", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_CLOUDEVENTS-L547", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L547" ], "sourceHeading": "`dataschema`가 채워질 경로가 없다", "summary": "`dataschema`가 채워질 경로가 없다", "disposition": "EMITTED", "target": "open-question:messaging-cloudevents-f04", "module": "messaging-cloudevents", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_CLOUDEVENTS-L556", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L556" ], "sourceHeading": "`CloudEventMapper` javadoc의 범위 제한이 강제되지 않는다", "summary": "문서가 범위를 제한하면 그 제한을 누가 강제하는지 같이 적는다", "disposition": "EMITTED", "target": "reference:messaging-cloudevents-f05", "module": "messaging-cloudevents", "topic": "declaration-and-document-drift", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_CORE_API-L835", "kindCandidate": "OPEN_QUESTION", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L835" ], "sourceHeading": "선언된 핸들러 계약이 배선된 것과 다르다", "summary": "선언된 핸들러 계약이 배선된 것과 다르다", "disposition": "EMITTED", "target": "open-question:messaging-core-api-f01", "module": "messaging-core-api", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_CORE_API-L844", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L844" ], "sourceHeading": "배치 metadata를 만들고 넘길 곳이 없다", "summary": "배치 metadata를 만들고 넘길 곳이 없다", "disposition": "EMITTED", "target": "case:messaging-core-api-f02", "module": "messaging-core-api", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_CORE_API-L862", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L862" ], "sourceHeading": "12개 예외가 선언만 되어 있다", "summary": "12개 예외가 선언만 되어 있다", "disposition": "EMITTED", "target": "open-question:messaging-core-api-f03", "module": "messaging-core-api", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_CORE_API-L871", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L871" ], "sourceHeading": "`MessagingRedactor`가 상수 대신 문자열 리터럴을 쓴다", "summary": "`MessagingRedactor`가 상수 대신 문자열 리터럴을 쓴다", "disposition": "EMITTED", "target": "case:messaging-core-api-f04", "module": "messaging-core-api", "topic": "runtime-contract-correctness", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_CORE_API-L880", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L880" ], "sourceHeading": "`WireSafeText`의 규칙이 leaf 경계에서 멈춘다", "summary": "`WireSafeText`의 규칙이 leaf 경계에서 멈춘다", "disposition": "EMITTED", "target": "case:messaging-core-api-f05", "module": "messaging-core-api", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_INBOX_JDBC_POSTGRESQL-L647", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L647" ], "sourceHeading": "bounded purge가 구현돼 있고 호출되지 않아, cleanup이 스스로 막겠다고 한 장애를 일으킨다", "summary": "bounded purge가 구현돼 있고 호출되지 않아, cleanup이 스스로 막겠다고 한 장애를 일으킨다", "disposition": "EMITTED", "target": "case:messaging-inbox-jdbc-postgresql-f01", "module": "messaging-inbox-jdbc-postgresql", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_INBOX_JDBC_POSTGRESQL-L657", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L657" ], "sourceHeading": "속성을 이름으로 주장하는 테스트가 그 속성을 보일 수 없는 fake 위에서 통과한다", "summary": "속성을 이름으로 주장하는 테스트가 그 속성을 보일 수 없는 fake 위에서 통과한다", "disposition": "EMITTED", "target": "case:messaging-inbox-jdbc-postgresql-f02", "module": "messaging-inbox-jdbc-postgresql", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_INBOX_JDBC_POSTGRESQL-L666", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L666" ], "sourceHeading": "SQL 실패가 재시도 불가로 분류된다", "summary": "SQL 실패가 재시도 불가로 분류된다", "disposition": "EMITTED", "target": "case:messaging-inbox-jdbc-postgresql-f03", "module": "messaging-inbox-jdbc-postgresql", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_INBOX_JDBC_POSTGRESQL-L675", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L675" ], "sourceHeading": "세 갈래 판정이 포트의 `boolean`에서 두 갈래로 접힌다", "summary": "세 갈래 판정이 포트의 `boolean`에서 두 갈래로 접힌다", "disposition": "EMITTED", "target": "open-question:messaging-inbox-jdbc-postgresql-f04", "module": "messaging-inbox-jdbc-postgresql", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_INBOX_JDBC_POSTGRESQL-L684", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L684" ], "sourceHeading": "`consumer_id` 길이 제약이 애플리케이션 층에 없다", "summary": "컬럼 폭은 애플리케이션 검증과 짝을 이룬다", "disposition": "EMITTED", "target": "reference:messaging-inbox-jdbc-postgresql-f05", "module": "messaging-inbox-jdbc-postgresql", "topic": "contract-domain-and-bounds", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_INBOX_JDBC_POSTGRESQL-L693", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L693" ], "sourceHeading": "보존 규칙이 세 곳에 있고 공식이 다르다", "summary": "같은 안전 규칙은 한 공식과 한 강제 시점을 갖는다", "disposition": "EMITTED", "target": "reference:messaging-inbox-jdbc-postgresql-f06", "module": "messaging-inbox-jdbc-postgresql", "topic": "contract-domain-and-bounds", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_KAFKA-L208", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/messaging/messaging-kafka.md#L208" ], "sourceHeading": "지원 문서가 `deduplicatedPublish` 를 지원으로 적고, 코드는 거짓이며, 그 차이가 정확히 코드가 경고한 피해다", "summary": "지원 문서가 `deduplicatedPublish` 를 지원으로 적고, 코드는 거짓이며, 그 차이가 정확히 코드가 경고한 피해다", "disposition": "EMITTED", "target": "case:messaging-kafka-f01", "module": "messaging-kafka", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_KAFKA-L265", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-kafka.md#L265" ], "sourceHeading": "천장에 닿아 일시정지된 파티션을 재개하는 경로가 없다", "summary": "천장에 닿아 일시정지된 파티션을 재개하는 경로가 없다", "disposition": "EMITTED", "target": "case:messaging-kafka-f02", "module": "messaging-kafka", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_KAFKA-L301", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-kafka.md#L301" ], "sourceHeading": "오염된 재시도 헤더가 격리되지 않고 무한 pause-and-seek 을 만든다", "summary": "오염된 재시도 헤더가 격리되지 않고 무한 pause-and-seek 을 만든다", "disposition": "EMITTED", "target": "case:messaging-kafka-f03", "module": "messaging-kafka", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_KAFKA-L342", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-kafka.md#L342" ], "sourceHeading": "시계를 주입받는 클래스가 한 곳에서만 벽시계를 읽는다", "summary": "시계를 주입받는 클래스가 한 곳에서만 벽시계를 읽는다", "disposition": "EMITTED", "target": "case:messaging-kafka-f04", "module": "messaging-kafka", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_KAFKA-L362", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-kafka.md#L362" ], "sourceHeading": "결함으로 판정된 메서드가 남아 있고, 실브로커 증명이 그것 위에서 돈다", "summary": "결함으로 판정된 메서드가 남아 있고, 실브로커 증명이 그것 위에서 돈다", "disposition": "EMITTED", "target": "case:messaging-kafka-f05", "module": "messaging-kafka", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L467", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L467" ], "sourceHeading": "\"등록\"이 아무것도 등록하지 않고 성공을 반환한다", "summary": "\"등록\"이 아무것도 등록하지 않고 성공을 반환한다", "disposition": "EMITTED", "target": "case:messaging-kafka-share-experimental-f01", "module": "messaging-kafka-share-experimental", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L476", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L476" ], "sourceHeading": "선언된 의존 셋이 사용되지 않는다", "summary": "허용 의존 목록은 상한이므로 미사용을 잡지 않는다 — 그것을 잡으려면 별도 검사가 필요하다", "disposition": "EMITTED", "target": "reference:messaging-kafka-share-experimental-f02", "module": "messaging-kafka-share-experimental", "topic": "runtime-reachability-and-composition", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L485", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L485" ], "sourceHeading": "형제 어댑터 넷이 구현하는 SPI를 이 leaf만 구현하지 않는다", "summary": "형제 어댑터 넷이 구현하는 SPI를 이 leaf만 구현하지 않는다", "disposition": "EMITTED", "target": "open-question:messaging-kafka-share-experimental-f03", "module": "messaging-kafka-share-experimental", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L494", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L494" ], "sourceHeading": "두 거절이 다른 예외 계층을 쓴다", "summary": "구성 오류는 한 예외 타입과 안정 코드로 보고한다", "disposition": "EMITTED", "target": "reference:messaging-kafka-share-experimental-f04", "module": "messaging-kafka-share-experimental", "topic": "runtime-contract-correctness", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L503", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L503" ], "sourceHeading": "네 타입 중 하나만 테스트된다", "summary": "leaf의 각 public 클래스는 자기 레인에 테스트를 갖는다", "disposition": "EMITTED", "target": "reference:messaging-kafka-share-experimental-f05", "module": "messaging-kafka-share-experimental", "topic": "verification-path-coverage", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L512", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L512" ], "sourceHeading": "활성화 프로퍼티 키가 에러 메시지에만 존재한다", "summary": "에러 메시지가 지시하는 설정은 그 설정을 읽는 코드와 함께 존재해야 한다", "disposition": "EMITTED", "target": "reference:messaging-kafka-share-experimental-f06", "module": "messaging-kafka-share-experimental", "topic": "transport-and-provider-semantics", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_NATS_EXPERIMENTAL-L146", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-nats-experimental.md#L146" ], "sourceHeading": "`deduplicatedPublish` 를 무조건 참으로 선언하는데 실제 중복 제거는 프로파일에 창이 있을 때만 일어난다", "summary": "`deduplicatedPublish` 를 무조건 참으로 선언하는데 실제 중복 제거는 프로파일에 창이 있을 때만 일어난다", "disposition": "EMITTED", "target": "case:messaging-nats-experimental-f01", "module": "messaging-nats-experimental", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_NATS_EXPERIMENTAL-L209", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-nats-experimental.md#L209" ], "sourceHeading": "닫힌 전송의 거절이 영구 업무 실패로 분류된다", "summary": "닫힌 전송의 거절이 영구 업무 실패로 분류된다", "disposition": "EMITTED", "target": "case:messaging-nats-experimental-f02", "module": "messaging-nats-experimental", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_NATS_EXPERIMENTAL-L217", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-nats-experimental.md#L217" ], "sourceHeading": "`NatsJetStreamProfileValidator` 를 호출하는 곳이 저장소에 없다. javadoc 링크 하나가 유일한 흔적이다", "summary": "`NatsJetStreamProfileValidator` 를 호출하는 곳이 저장소에 없다. javadoc 링크 하나가 유일한 흔적이다", "disposition": "EMITTED", "target": "case:messaging-nats-experimental-f03", "module": "messaging-nats-experimental", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_NATS_EXPERIMENTAL-L238", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-nats-experimental.md#L238" ], "sourceHeading": "경과 시간 회귀를 막으려는 어셈블이 항상 참이다", "summary": "경과 시간 회귀를 막으려는 어셈블이 항상 참이다", "disposition": "EMITTED", "target": "case:messaging-nats-experimental-f04", "module": "messaging-nats-experimental", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OBSERVABILITY-L673", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L673" ], "sourceHeading": "태그 어휘가 존재하고 유일한 호출부가 우회해, 실패 분류가 기록되지 않는다", "summary": "태그 어휘가 존재하고 유일한 호출부가 우회해, 실패 분류가 기록되지 않는다", "disposition": "EMITTED", "target": "case:messaging-observability-f01", "module": "messaging-observability", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OBSERVABILITY-L682", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L682" ], "sourceHeading": "관측 구현이 조립되지 않고, 그 재료 둘만 bean으로 존재한다", "summary": "관측 구현이 조립되지 않고, 그 재료 둘만 bean으로 존재한다", "disposition": "EMITTED", "target": "case:messaging-observability-f02", "module": "messaging-observability", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OBSERVABILITY-L690", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L690" ], "sourceHeading": "브로커 홉 추적기가 소비자를 갖지 않는다", "summary": "브로커 홉 추적기가 소비자를 갖지 않는다", "disposition": "EMITTED", "target": "open-question:messaging-observability-f03", "module": "messaging-observability", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OBSERVABILITY-L699", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L699" ], "sourceHeading": "감사 sink 인터페이스가 사용처에서 다시 선언된다", "summary": "감사 sink 인터페이스가 사용처에서 다시 선언된다", "disposition": "EMITTED", "target": "case:messaging-observability-f04", "module": "messaging-observability", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OBSERVABILITY-L708", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L708" ], "sourceHeading": "자격증명 판정이 core-api보다 약하다", "summary": "자격증명 판정이 core-api보다 약하다", "disposition": "EMITTED", "target": "case:messaging-observability-f05", "module": "messaging-observability", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OBSERVABILITY-L717", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L717" ], "sourceHeading": "감사 이벤트가 redaction을 강제하지 않는다", "summary": "타입이 문서화한 불변식은 타입이 강제한다", "disposition": "EMITTED", "target": "reference:messaging-observability-f06", "module": "messaging-observability", "topic": "declaration-and-document-drift", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_OBSERVABILITY-L726", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L726" ], "sourceHeading": "`extract`가 손상된 추적 헤더에 분류되지 않은 예외를 던진다", "summary": "`extract`가 손상된 추적 헤더에 분류되지 않은 예외를 던진다", "disposition": "EMITTED", "target": "case:messaging-observability-f07", "module": "messaging-observability", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L876", "kindCandidate": "CASE", "priority": "P1", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L876" ], "sourceHeading": "정리 작업이 무제한 DELETE 를 쏘고, 그것을 막는 오버로드는 호출되지 않는다", "summary": "정리 작업이 무제한 DELETE 를 쏘고, 그것을 막는 오버로드는 호출되지 않는다", "disposition": "EMITTED", "target": "case:messaging-outbox-jdbc-postgresql-f01", "module": "messaging-outbox-jdbc-postgresql", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L888", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L888" ], "sourceHeading": "배포되는 Debezium 설정이 수정 이전 버전이다", "summary": "배포되는 Debezium 설정이 수정 이전 버전이다", "disposition": "EMITTED", "target": "case:messaging-outbox-jdbc-postgresql-f02", "module": "messaging-outbox-jdbc-postgresql", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L899", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L899" ], "sourceHeading": "역슬래시로 끝나는 헤더 값이 헤더 맵을 깨뜨린다", "summary": "역슬래시로 끝나는 헤더 값이 헤더 맵을 깨뜨린다", "disposition": "EMITTED", "target": "case:messaging-outbox-jdbc-postgresql-f03", "module": "messaging-outbox-jdbc-postgresql", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L909", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L909" ], "sourceHeading": "두 릴레이 상호배제가 기동에서 강제되지 않는다", "summary": "두 릴레이 상호배제가 기동에서 강제되지 않는다", "disposition": "EMITTED", "target": "case:messaging-outbox-jdbc-postgresql-f04", "module": "messaging-outbox-jdbc-postgresql", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L917", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L917" ], "sourceHeading": "구세대 전이 메서드가 신세대와 다른 행 상태를 남긴다", "summary": "구세대 전이 메서드가 신세대와 다른 행 상태를 남긴다", "disposition": "EMITTED", "target": "case:messaging-outbox-jdbc-postgresql-f05", "module": "messaging-outbox-jdbc-postgresql", "topic": "runtime-contract-correctness", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L923", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L923" ], "sourceHeading": "백오프 지터가 인스턴스를 분산시키지 못한다", "summary": "백오프 지터가 인스턴스를 분산시키지 못한다", "disposition": "EMITTED", "target": "case:messaging-outbox-jdbc-postgresql-f06", "module": "messaging-outbox-jdbc-postgresql", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L929", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L929" ], "sourceHeading": "커넥션 획득 방식이 리프 안에서 갈린다", "summary": "커넥션 획득 방식이 리프 안에서 갈린다", "disposition": "EMITTED", "target": "case:messaging-outbox-jdbc-postgresql-f07", "module": "messaging-outbox-jdbc-postgresql", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L935", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L935" ], "sourceHeading": "`maxBatches` 가 하드코딩이고 현재는 의미가 없다", "summary": "`maxBatches` 가 하드코딩이고 현재는 의미가 없다", "disposition": "EMITTED", "target": "case:messaging-outbox-jdbc-postgresql-f08", "module": "messaging-outbox-jdbc-postgresql", "topic": "runtime-contract-correctness", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_POLICY-L781", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L781" ], "sourceHeading": "재시도 엔진과 DLQ 조정자가 bean으로 만들어지고 주입되는 곳이 없다", "summary": "재시도 엔진과 DLQ 조정자가 bean으로 만들어지고 주입되는 곳이 없다", "disposition": "EMITTED", "target": "case:messaging-policy-f01", "module": "messaging-policy", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_POLICY-L790", "kindCandidate": "OPEN_QUESTION", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L790" ], "sourceHeading": "출하 컨텍스트가 발행은 하고 소비는 하지 못한다", "summary": "출하 컨텍스트가 발행은 하고 소비는 하지 못한다", "disposition": "EMITTED", "target": "open-question:messaging-policy-f02", "module": "messaging-policy", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_POLICY-L799", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L799" ], "sourceHeading": "재시도와 DLQ 각각에 두 개의 구현이 있고 정본이 표시되지 않았다", "summary": "재시도와 DLQ 각각에 두 개의 구현이 있고 정본이 표시되지 않았다", "disposition": "EMITTED", "target": "case:messaging-policy-f03", "module": "messaging-policy", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_POLICY-L808", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L808" ], "sourceHeading": "DLQ 메타데이터의 두 시각이 항상 같다", "summary": "DLQ 메타데이터의 두 시각이 항상 같다", "disposition": "EMITTED", "target": "case:messaging-policy-f04", "module": "messaging-policy", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_POLICY-L817", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L817" ], "sourceHeading": "사이클 검사가 경로마다 집합을 복사한다", "summary": "부팅 경로의 알고리즘 복잡도는 문서화한다", "disposition": "EMITTED", "target": "reference:messaging-policy-f05", "module": "messaging-policy", "topic": "runtime-contract-correctness", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_POLICY-L826", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L826" ], "sourceHeading": "프로파일 검증 실패가 플랫폼 예외 계층 밖이다", "summary": "구성 오류는 한 예외 타입과 안정 코드로 보고한다", "disposition": "EMITTED", "target": "reference:messaging-policy-f06", "module": "messaging-policy", "topic": "declaration-and-document-drift", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_POLICY-L835", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L835" ], "sourceHeading": "javadoc이 해소되지 않는 설계 문서를 인용한다", "summary": "저장소 밖 문서를 절 번호로 인용하지 않는다", "disposition": "EMITTED", "target": "reference:messaging-policy-f07", "module": "messaging-policy", "topic": "declaration-and-document-drift", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_PULSAR_EXPERIMENTAL-L196", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-pulsar-experimental.md#L196" ], "sourceHeading": "닫힌 전송의 거절이 영구 업무 실패로 분류된다", "summary": "닫힌 전송의 거절이 영구 업무 실패로 분류된다", "disposition": "EMITTED", "target": "case:messaging-pulsar-experimental-f01", "module": "messaging-pulsar-experimental", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RABBIT-L210", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-rabbit.md#L210" ], "sourceHeading": "확인 등급이 요구에서 파생되고, 그 요구를 뒷받침하는 강제는 목적지 종류 하나에만 걸린다", "summary": "확인 등급이 요구에서 파생되고, 그 요구를 뒷받침하는 강제는 목적지 종류 하나에만 걸린다", "disposition": "EMITTED", "target": "case:messaging-rabbit-f01", "module": "messaging-rabbit", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RABBIT-L238", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-rabbit.md#L238" ], "sourceHeading": "반환을 순번에 맞추는 조각이 production 에 없고, 시험이 그 자리를 스스로 메운다", "summary": "반환을 순번에 맞추는 조각이 production 에 없고, 시험이 그 자리를 스스로 메운다", "disposition": "EMITTED", "target": "case:messaging-rabbit-f02", "module": "messaging-rabbit", "topic": "state-ownership-and-concurrency", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RABBIT-L274", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-rabbit.md#L274" ], "sourceHeading": "SCRAM 자격을 RabbitMQ 의 데모 기구로 조용히 매핑한다", "summary": "SCRAM 자격을 RabbitMQ 의 데모 기구로 조용히 매핑한다", "disposition": "EMITTED", "target": "case:messaging-rabbit-f03", "module": "messaging-rabbit", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RABBIT-L307", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-rabbit.md#L307" ], "sourceHeading": "능력 상수의 `delayedDelivery` 가 무조건 참이고, 그 지연을 제공할 토폴로지는 조립되지 않는다", "summary": "능력 상수의 `delayedDelivery` 가 무조건 참이고, 그 지연을 제공할 토폴로지는 조립되지 않는다", "disposition": "EMITTED", "target": "case:messaging-rabbit-f04", "module": "messaging-rabbit", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RABBIT-L335", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-rabbit.md#L335" ], "sourceHeading": "`pause` 의 의미가 SPI 하나 뒤에서 두 브로커에 다르게 구현된다", "summary": "`pause` 의 의미가 SPI 하나 뒤에서 두 브로커에 다르게 구현된다", "disposition": "EMITTED", "target": "case:messaging-rabbit-f05", "module": "messaging-rabbit", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RELIABILITY_API-L689", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L689" ], "sourceHeading": "한 인터페이스가 같은 전이의 두 세대를 갖고, 안전하지 않은 쪽에 `@Deprecated`가 없다", "summary": "한 인터페이스가 같은 전이의 두 세대를 갖고, 안전하지 않은 쪽에 `@Deprecated`가 없다", "disposition": "EMITTED", "target": "case:messaging-reliability-api-f01", "module": "messaging-reliability-api", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RELIABILITY_API-L698", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L698" ], "sourceHeading": "fencing token 경로가 실제 데이터베이스에 대해 실행되지 않는다", "summary": "fencing token 경로가 실제 데이터베이스에 대해 실행되지 않는다", "disposition": "EMITTED", "target": "case:messaging-reliability-api-f02", "module": "messaging-reliability-api", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RELIABILITY_API-L707", "kindCandidate": "OPEN_QUESTION", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L707" ], "sourceHeading": "dual-write의 답이라고 선언한 진입점에 구현이 없다", "summary": "dual-write의 답이라고 선언한 진입점에 구현이 없다", "disposition": "EMITTED", "target": "open-question:messaging-reliability-api-f03", "module": "messaging-reliability-api", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RELIABILITY_API-L716", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L716" ], "sourceHeading": "이 leaf에 테스트가 없다", "summary": "계약만 담는 leaf도 계약의 거절 조건은 자기 레인에서 검증한다", "disposition": "EMITTED", "target": "reference:messaging-reliability-api-f04", "module": "messaging-reliability-api", "topic": "verification-path-coverage", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_RELIABILITY_API-L725", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L725" ], "sourceHeading": "inbox 보존 규칙이 문서로만 있다", "summary": "inbox 보존 규칙이 문서로만 있다", "disposition": "EMITTED", "target": "case:messaging-reliability-api-f05", "module": "messaging-reliability-api", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RELIABILITY_API-L734", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L734" ], "sourceHeading": "트랜잭션 계약 셋이 타입으로 강제되지 않는다", "summary": "호출 컨텍스트가 계약이면 그 컨텍스트를 검증할 수단을 함께 정한다", "disposition": "EMITTED", "target": "reference:messaging-reliability-api-f06", "module": "messaging-reliability-api", "topic": "declaration-and-document-drift", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_RELIABILITY_API-L743", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L743" ], "sourceHeading": "`OutboxRecord.equals`가 다섯 필드만 비교하고 이유가 없다", "summary": "record의 `equals`를 좁히면 이유를 적는다", "disposition": "EMITTED", "target": "reference:messaging-reliability-api-f07", "module": "messaging-reliability-api", "topic": "verification-path-coverage", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_RELIABILITY_API-L752", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L752" ], "sourceHeading": "포트가 bounded/unbounded purge 두 오버로드를 나란히 노출하고, 호출자가 무제한 쪽을 고른다", "summary": "포트가 bounded/unbounded purge 두 오버로드를 나란히 노출하고, 호출자가 무제한 쪽을 고른다", "disposition": "EMITTED", "target": "case:messaging-reliability-api-f08", "module": "messaging-reliability-api", "topic": "contract-domain-and-bounds", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RUNTIME_CORE-L710", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L710" ], "sourceHeading": "관측이 구현·호출부·주입 자리를 모두 갖추고도 출하에서 no-op이다", "summary": "관측이 구현·호출부·주입 자리를 모두 갖추고도 출하에서 no-op이다", "disposition": "EMITTED", "target": "case:messaging-runtime-core-f01", "module": "messaging-runtime-core", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RUNTIME_CORE-L719", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L719" ], "sourceHeading": "소비 오케스트레이터가 조립되지 않는다", "summary": "소비 오케스트레이터가 조립되지 않는다", "disposition": "EMITTED", "target": "case:messaging-runtime-core-f02", "module": "messaging-runtime-core", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RUNTIME_CORE-L727", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L727" ], "sourceHeading": "선언된 content type과 실제 인코딩이 조용히 갈라질 수 있다", "summary": "선언된 content type과 실제 인코딩이 조용히 갈라질 수 있다", "disposition": "EMITTED", "target": "case:messaging-runtime-core-f03", "module": "messaging-runtime-core", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_RUNTIME_CORE-L736", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L736" ], "sourceHeading": "같은 실패 코드가 두 completion에 쓰인다", "summary": "안정 코드는 운영자의 행동이 갈리는 지점마다 나눈다", "disposition": "EMITTED", "target": "reference:messaging-runtime-core-f04", "module": "messaging-runtime-core", "topic": "transport-and-provider-semantics", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_RUNTIME_CORE-L745", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L745" ], "sourceHeading": "admission 실패만 예외로 전파된다", "summary": "`CompletionStage`를 반환하는 메서드는 동기적으로 던지지 않는다", "disposition": "EMITTED", "target": "reference:messaging-runtime-core-f05", "module": "messaging-runtime-core", "topic": "runtime-contract-correctness", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_RUNTIME_CORE-L754", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L754" ], "sourceHeading": "`generation`이 항상 1이다", "summary": "증가한다고 문서화한 값이 리터럴이면 그 사실을 적는다", "disposition": "EMITTED", "target": "reference:messaging-runtime-core-f06", "module": "messaging-runtime-core", "topic": "verification-path-coverage", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_RUNTIME_CORE-L763", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L763" ], "sourceHeading": "`missingResult()`가 아무 데도 쓰이지 않는다", "summary": "만들어 두고 흘리지 않는 진단값은 진단이 아니다", "disposition": "EMITTED", "target": "reference:messaging-runtime-core-f07", "module": "messaging-runtime-core", "topic": "runtime-reachability-and-composition", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SCHEMA_API-L494", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-schema-api.md#L494" ], "sourceHeading": "포맷 독립 진화 규칙이 호출되지 않고, 그것이 막으려던 중복이 실제로 생겼다", "summary": "포맷 독립 진화 규칙이 호출되지 않고, 그것이 막으려던 중복이 실제로 생겼다", "disposition": "EMITTED", "target": "case:messaging-schema-api-f01", "module": "messaging-schema-api", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SCHEMA_API-L503", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-schema-api.md#L503" ], "sourceHeading": "port 구현의 스레드 안전성 요구가 문서화되어 있지 않다", "summary": "port 계약은 동시성 요구를 적는다", "disposition": "EMITTED", "target": "reference:messaging-schema-api-f02", "module": "messaging-schema-api", "topic": "declaration-and-document-drift", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SCHEMA_API-L512", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-schema-api.md#L512" ], "sourceHeading": "`SchemaRegistry`라는 이름이 저장소에서 두 가지를 가리킨다", "summary": "도달성 판정은 단어가 아니라 import로 확인한다", "disposition": "EMITTED", "target": "reference:messaging-schema-api-f03", "module": "messaging-schema-api", "topic": "declaration-and-document-drift", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SCHEMA_AVRO-L524", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L524" ], "sourceHeading": "CI에서 돈다고 선언한 게이트를 부르는 CI가 없다", "summary": "CI에서 돈다고 선언한 게이트를 부르는 CI가 없다", "disposition": "EMITTED", "target": "case:messaging-schema-avro-f01", "module": "messaging-schema-avro", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SCHEMA_AVRO-L533", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L533" ], "sourceHeading": "진화 판단이 두 곳에 있고 형태가 반대다", "summary": "진화 판단이 두 곳에 있고 형태가 반대다", "disposition": "EMITTED", "target": "case:messaging-schema-avro-f02", "module": "messaging-schema-avro", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SCHEMA_AVRO-L542", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L542" ], "sourceHeading": "`history` 순서 계약이 port와 게이트에서 반대다", "summary": "컬렉션 순서가 계약이면 양쪽에서 같은 방향으로 적는다", "disposition": "EMITTED", "target": "reference:messaging-schema-avro-f03", "module": "messaging-schema-avro", "topic": "schema-and-data-contracts", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SCHEMA_AVRO-L551", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L551" ], "sourceHeading": "transitive 분기가 테스트되지 않는다", "summary": "모드 enum을 분기 조건으로 쓰면 각 분기에 테스트를 둔다", "disposition": "EMITTED", "target": "reference:messaging-schema-avro-f04", "module": "messaging-schema-avro", "topic": "verification-path-coverage", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SCHEMA_AVRO-L560", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L560" ], "sourceHeading": "에러 코드 어휘가 형제 codec과 갈라진다", "summary": "안정 코드는 판단 단위로 정하고 구현 단위로 정하지 않는다", "disposition": "EMITTED", "target": "reference:messaging-schema-avro-f05", "module": "messaging-schema-avro", "topic": "schema-and-data-contracts", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SCHEMA_JSON-L463", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-schema-json.md#L463" ], "sourceHeading": "포맷 중립 payload 정책이, 자기 상수를 두고 JSON codec의 상수를 참조한다", "summary": "포맷 중립 payload 정책이, 자기 상수를 두고 JSON codec의 상수를 참조한다", "disposition": "EMITTED", "target": "case:messaging-schema-json-f01", "module": "messaging-schema-json", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SCHEMA_JSON-L472", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-schema-json.md#L472" ], "sourceHeading": "파서 방어 여섯 갈래가 하나의 실패 코드로 접힌다", "summary": "실패 코드는 운영자의 다음 행동이 갈리는 지점마다 나눈다", "disposition": "EMITTED", "target": "reference:messaging-schema-json-f02", "module": "messaging-schema-json", "topic": "transport-and-provider-semantics", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SCHEMA_JSON-L481", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-schema-json.md#L481" ], "sourceHeading": "빈 registry로 조립되면 모든 메시지가 거절된다", "summary": "빈 registry로 조립되면 모든 메시지가 거절된다", "disposition": "EMITTED", "target": "open-question:messaging-schema-json-f03", "module": "messaging-schema-json", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SCHEMA_PROTOBUF-L527", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-schema-protobuf.md#L527" ], "sourceHeading": "`.proto` fixture와 테스트 descriptor의 일치를 아무도 강제하지 않는다", "summary": "검증되지 않는 스키마 파일은 문서임을 파일 안에 적는다", "disposition": "EMITTED", "target": "reference:messaging-schema-protobuf-f01", "module": "messaging-schema-protobuf", "topic": "verification-path-coverage", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SCHEMA_PROTOBUF-L536", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-schema-protobuf.md#L536" ], "sourceHeading": "디코딩 상한 분기가 테스트되지 않는다", "summary": "신뢰할 수 없는 입력 쪽 경계를 먼저 테스트한다", "disposition": "EMITTED", "target": "reference:messaging-schema-protobuf-f02", "module": "messaging-schema-protobuf", "topic": "verification-path-coverage", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SCHEMA_PROTOBUF-L545", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-schema-protobuf.md#L545" ], "sourceHeading": "protobuf-java 버전이 저장소에 셋이고 전역 정책이 없다", "summary": "protobuf-java 버전이 저장소에 셋이고 전역 정책이 없다", "disposition": "EMITTED", "target": "open-question:messaging-schema-protobuf-f03", "module": "messaging-schema-protobuf", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SCHEMA_PROTOBUF-L554", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-schema-protobuf.md#L554" ], "sourceHeading": "registry 조회 로직이 세 codec에 복제돼 있다", "summary": "registry 조회 로직이 세 codec에 복제돼 있다", "disposition": "EMITTED", "target": "case:messaging-schema-protobuf-f04", "module": "messaging-schema-protobuf", "topic": "schema-and-data-contracts", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SECURITY-L634", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-security.md#L634" ], "sourceHeading": "같은 TLS posture를 두 클래스가 다른 엄격도로 검사한다", "summary": "같은 TLS posture를 두 클래스가 다른 엄격도로 검사한다", "disposition": "EMITTED", "target": "case:messaging-security-f01", "module": "messaging-security", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SECURITY-L643", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-security.md#L643" ], "sourceHeading": "권한 거부가 `AUTHORIZATION`이 아니라 `CONFIGURATION`으로 기록된다", "summary": "권한 거부가 `AUTHORIZATION`이 아니라 `CONFIGURATION`으로 기록된다", "disposition": "EMITTED", "target": "case:messaging-security-f02", "module": "messaging-security", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SECURITY-L652", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-security.md#L652" ], "sourceHeading": "ACL 매니페스트 전체가 쓰이지 않는다", "summary": "ACL 매니페스트 전체가 쓰이지 않는다", "disposition": "EMITTED", "target": "open-question:messaging-security-f03", "module": "messaging-security", "topic": "security-policy-enforcement", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SECURITY-L661", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-security.md#L661" ], "sourceHeading": "종료 시 자격증명 소거가 호출되지 않는다", "summary": "종료 시 자격증명 소거가 호출되지 않는다", "disposition": "EMITTED", "target": "case:messaging-security-f04", "module": "messaging-security", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SECURITY-L670", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-security.md#L670" ], "sourceHeading": "회전 술어가 두 번 구현돼 있고, 쓰이지 않는 쪽이 테스트된다", "summary": "같은 술어가 두 타입에 있으면 하나가 다른 하나를 부른다", "disposition": "EMITTED", "target": "reference:messaging-security-f05", "module": "messaging-security", "topic": "verification-path-coverage", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SECURITY-L679", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-security.md#L679" ], "sourceHeading": "자격증명 해석이 맵 bin 락 안에서 외부 I/O를 한다", "summary": "맵 갱신 함수 안에서 I/O를 하면 그 지연이 락 범위가 된다", "disposition": "EMITTED", "target": "reference:messaging-security-f06", "module": "messaging-security", "topic": "security-policy-enforcement", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SECURITY-L688", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-security.md#L688" ], "sourceHeading": "다섯 타입이 이 leaf의 테스트에 등장하지 않는다", "summary": "배선된 게이트는 자기 leaf 레인에서 검증한다", "disposition": "EMITTED", "target": "reference:messaging-security-f07", "module": "messaging-security", "topic": "runtime-reachability-and-composition", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SECURITY-L697", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-security.md#L697" ], "sourceHeading": "`CredentialRuntime.material`이 동기화되지 않는다", "summary": "가변 필드로 상태 전이를 표현하면 가시성을 함께 정한다", "disposition": "EMITTED", "target": "reference:messaging-security-f08", "module": "messaging-security", "topic": "state-ownership-and-concurrency", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SPRING_BOOT_STARTER-L281", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-spring-boot-starter.md#L281" ], "sourceHeading": "같은 자동 설정 안에서 검증기 하나만 감싸이지 않는다", "summary": "같은 자동 설정 안에서 검증기 하나만 감싸이지 않는다", "disposition": "EMITTED", "target": "case:messaging-spring-boot-starter-f01", "module": "messaging-spring-boot-starter", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SPRING_BOOT_STARTER-L300", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-spring-boot-starter.md#L300" ], "sourceHeading": "출고되는 신뢰성 체인 전체가 아무도 공급하지 않는 빈 뒤에 있고, 그 사슬이 자기 클래스 안을 가리킨다", "summary": "출고되는 신뢰성 체인 전체가 아무도 공급하지 않는 빈 뒤에 있고, 그 사슬이 자기 클래스 안을 가리킨다", "disposition": "EMITTED", "target": "case:messaging-spring-boot-starter-f02", "module": "messaging-spring-boot-starter", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SPRING_BOOT_STARTER-L319", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-spring-boot-starter.md#L319" ], "sourceHeading": "죽은 매개변수 하나가 유일한 비기본값에서 NPE 를 낳는다", "summary": "죽은 매개변수 하나가 유일한 비기본값에서 NPE 를 낳는다", "disposition": "EMITTED", "target": "case:messaging-spring-boot-starter-f03", "module": "messaging-spring-boot-starter", "topic": "runtime-contract-correctness", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SPRING_BOOT_STARTER-L342", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-spring-boot-starter.md#L342" ], "sourceHeading": "설정 경로의 재시도가 예외 분류를 표현할 수 없다", "summary": "설정 경로의 재시도가 예외 분류를 표현할 수 없다", "disposition": "EMITTED", "target": "case:messaging-spring-boot-starter-f04", "module": "messaging-spring-boot-starter", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SPRING_BOOT_STARTER-L367", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-spring-boot-starter.md#L367" ], "sourceHeading": "배치 발행자가 `CompletionStage` 를 돌려주면서 동기 예외를 던진다", "summary": "배치 발행자가 `CompletionStage` 를 돌려주면서 동기 예외를 던진다", "disposition": "EMITTED", "target": "case:messaging-spring-boot-starter-f05", "module": "messaging-spring-boot-starter", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L552", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L552" ], "sourceHeading": "선언된 의존 둘이 사용되지 않는다", "summary": "허용 의존 목록은 상한이므로 미사용을 잡지 않는다", "disposition": "EMITTED", "target": "reference:messaging-spring-cloud-stream-bridge-f01", "module": "messaging-spring-cloud-stream-bridge", "topic": "runtime-reachability-and-composition", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L561", "kindCandidate": "OPEN_QUESTION", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L561" ], "sourceHeading": "브리지의 바인더 쪽 절반이 없다", "summary": "브리지의 바인더 쪽 절반이 없다", "disposition": "EMITTED", "target": "open-question:messaging-spring-cloud-stream-bridge-f02", "module": "messaging-spring-cloud-stream-bridge", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L570", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L570" ], "sourceHeading": "인터페이스를 publisher만 구현하고 두 클래스가 같은 바인딩에 각자 상태를 갖는다", "summary": "한 개념의 등록 상태를 두 객체가 나눠 갖지 않는다", "disposition": "EMITTED", "target": "reference:messaging-spring-cloud-stream-bridge-f03", "module": "messaging-spring-cloud-stream-bridge", "topic": "declaration-and-document-drift", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L579", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L579" ], "sourceHeading": "두 맵 갱신이 원자적이지 않다", "summary": "함께 읽히는 두 맵은 한 값으로 묶는다", "disposition": "EMITTED", "target": "reference:messaging-spring-cloud-stream-bridge-f04", "module": "messaging-spring-cloud-stream-bridge", "topic": "state-ownership-and-concurrency", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L588", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L588" ], "sourceHeading": "등록 해제 경로가 없다", "summary": "등록을 받는 컴포넌트는 해제도 제공한다", "disposition": "EMITTED", "target": "reference:messaging-spring-cloud-stream-bridge-f05", "module": "messaging-spring-cloud-stream-bridge", "topic": "runtime-reachability-and-composition", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L597", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L597" ], "sourceHeading": "활성화 프로퍼티 키가 에러 메시지에만 존재한다", "summary": "에러 메시지가 지시하는 설정은 그 설정을 읽는 코드와 함께 존재해야 한다", "disposition": "EMITTED", "target": "reference:messaging-spring-cloud-stream-bridge-f06", "module": "messaging-spring-cloud-stream-bridge", "topic": "state-ownership-and-concurrency", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_TESTKIT-L940", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L940" ], "sourceHeading": "`FaultController` 의 5개 중 2개가 구현만 3벌 있고 호출부가 0건이다", "summary": "`FaultController` 의 5개 중 2개가 구현만 3벌 있고 호출부가 0건이다", "disposition": "EMITTED", "target": "case:messaging-testkit-f01", "module": "messaging-testkit", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_TESTKIT-L950", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L950" ], "sourceHeading": "클래스 javadoc 이 강제되지 않는 규칙을 강제된다고 말한다", "summary": "클래스 javadoc 이 강제되지 않는 규칙을 강제된다고 말한다", "disposition": "EMITTED", "target": "case:messaging-testkit-f02", "module": "messaging-testkit", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_TESTKIT-L960", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L960" ], "sourceHeading": "`Faults` 내부클래스 57줄이 3개 모듈에 바이트 단위로 복제되어 있다", "summary": "`Faults` 내부클래스 57줄이 3개 모듈에 바이트 단위로 복제되어 있다", "disposition": "EMITTED", "target": "case:messaging-testkit-f03", "module": "messaging-testkit", "topic": "transport-and-provider-semantics", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_TESTKIT-L966", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L966" ], "sourceHeading": "1 MiB 한도가 `PayloadPolicy` 를 두고 리터럴로 재선언된다", "summary": "1 MiB 한도가 `PayloadPolicy` 를 두고 리터럴로 재선언된다", "disposition": "EMITTED", "target": "case:messaging-testkit-f04", "module": "messaging-testkit", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_TESTKIT-L972", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L972" ], "sourceHeading": "`messaging-transport-spi` 의존이 import 0건이다", "summary": "`messaging-transport-spi` 의존이 import 0건이다", "disposition": "EMITTED", "target": "case:messaging-testkit-f05", "module": "messaging-testkit", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_TESTKIT-L976", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L976" ], "sourceHeading": "`BrokerFailureMatrix.adapters()` 는 호출부가 0건이다", "summary": "`BrokerFailureMatrix.adapters()` 는 호출부가 0건이다", "disposition": "EMITTED", "target": "case:messaging-testkit-f06", "module": "messaging-testkit", "topic": "runtime-reachability-and-composition", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_TESTKIT-L980", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L980" ], "sourceHeading": "항등식을 단언하는 테스트가 하나 있다", "summary": "항등식을 단언하는 테스트가 하나 있다", "disposition": "EMITTED", "target": "case:messaging-testkit-f07", "module": "messaging-testkit", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_TESTKIT-L984", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L984" ], "sourceHeading": "`gitCommit` 은 기록되지만 읽혀 판정되지 않는다", "summary": "`gitCommit` 은 기록되지만 읽혀 판정되지 않는다", "disposition": "EMITTED", "target": "case:messaging-testkit-f08", "module": "messaging-testkit", "topic": "declaration-and-document-drift", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_TRANSPORT_SPI-L659", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md#L659" ], "sourceHeading": "드레인 마감 30초가 세 곳에서 독립적으로 결정된다", "summary": "드레인 마감 30초가 세 곳에서 독립적으로 결정된다", "disposition": "EMITTED", "target": "case:messaging-transport-spi-f01", "module": "messaging-transport-spi", "topic": "verification-path-coverage", "reason": "61개 canonical SSOT 전수 recall. 독립 causal/semantic/verification unit 이라 기존 노드와 병합하지 않았다." }, { "id": "R3-MESSAGING_TRANSPORT_SPI-L668", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md#L668" ], "sourceHeading": "종료 중 `install`이 닫히지 않는 창", "summary": "멱등 종료를 보장하는 컴포넌트는 종료 이후의 등록도 정의한다", "disposition": "EMITTED", "target": "reference:messaging-transport-spi-f02", "module": "messaging-transport-spi", "topic": "transport-and-provider-semantics", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-MESSAGING_TRANSPORT_SPI-L677", "kindCandidate": "REFERENCE", "priority": "P3", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md#L677" ], "sourceHeading": "pause scope sentinel이 두 인터페이스에서 다르다", "summary": "같은 개념의 sentinel은 계층을 넘어 하나로 정한다", "disposition": "EMITTED", "target": "reference:messaging-transport-spi-f03", "module": "messaging-transport-spi", "topic": "transport-and-provider-semantics", "reason": "REFERENCE semantic audit — SSOT 가 괄호로 적은 재사용 규칙을 rule/scope/exceptions 형태로 다시 썼다. 구체 사건은 source finding 이 소유한다." }, { "id": "R3-FAM19-L860", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L860" ], "sourceHeading": "messaging 마이그레이션 스트림을 적용하는 곳이 없고, 적용하려는 순간 버전이 충돌한다", "summary": "messaging 마이그레이션 스트림을 적용하는 곳이 없고, 적용하려는 순간 버전이 충돌한다", "disposition": "EMITTED", "target": "case:messaging-migration-stream-has-no-applier-and-collides-on-adoption", "module": "integration/19-messaging-platform", "topic": "cross-leaf-integration-facts", "reason": "cross-leaf integration 에서만 성립하는 사실이라 leaf candidate 로 환원되지 않는다." }, { "id": "R3-FAM19-L926", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/19-messaging-platform.md#L926" ], "sourceHeading": "claim-check는 starter에 배선 코드가 한 줄도 없다", "summary": "claim-check는 starter에 배선 코드가 한 줄도 없다", "disposition": "EMITTED", "target": "case:claim-check-has-no-wiring-line-in-the-starter", "module": "integration/19-messaging-platform", "topic": "cross-leaf-integration-facts", "reason": "cross-leaf integration 에서만 성립하는 사실이라 leaf candidate 로 환원되지 않는다." }, { "id": "R3-FAM19-L975", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L975" ], "sourceHeading": "admin 스위치가 가드를 켜고 서비스는 켜지 않는다", "summary": "admin 스위치가 가드를 켜고 서비스는 켜지 않는다", "disposition": "EMITTED", "target": "case:the-admin-switch-turns-on-the-guard-and-not-the-service", "module": "integration/19-messaging-platform", "topic": "cross-leaf-integration-facts", "reason": "cross-leaf integration 에서만 성립하는 사실이라 leaf candidate 로 환원되지 않는다." }, { "id": "R3-FAM19-L997", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/19-messaging-platform.md#L997" ], "sourceHeading": "`messaging-admin-api`는 main 25파일 · 1,613 LOC에 테스트 파일이 1개다", "summary": "`messaging-admin-api`는 main 25파일 · 1,613 LOC에 테스트 파일이 1개다", "disposition": "EMITTED", "target": "case:twenty-five-main-files-and-one-test-file", "module": "integration/19-messaging-platform", "topic": "cross-leaf-integration-facts", "reason": "cross-leaf integration 에서만 성립하는 사실이라 leaf candidate 로 환원되지 않는다." }, { "id": "R3-FAM19-L1064", "kindCandidate": "CASE", "priority": "P2", "sourceRefs": [ "analysis/19-messaging-platform.md#L1064" ], "sourceHeading": "문서 계약 테스트가 존재하고, 그 커버리지 경계가 §6.3·§6.4의 드리프트 위치를 정확히 예측한다", "summary": "문서 계약 테스트가 존재하고, 그 커버리지 경계가 §6.3·§6.4의 드리프트 위치를 정확히 예측한다", "disposition": "MERGED", "target": "case:doc-contract-test-boundary-predicted-the-drift", "module": "integration/19-messaging-platform", "topic": "what-a-gate-does-not-prove", "reason": "기존 CASE 와 같은 사건·같은 검증 단위다 — 문서 계약 테스트의 단언 경계가 발견된 드리프트 위치를 예측한다는 동일 관측이고, 가족 문서는 그것을 요약한다." }, { "id": "R3-FAM19-L1114", "kindCandidate": "CASE", "priority": "P3", "sourceRefs": [ "analysis/19-messaging-platform.md#L1114" ], "sourceHeading": "`MessagingPublicSurfaceContractTest`가 가족 밖(app-bootstrap)에 있다", "summary": "`MessagingPublicSurfaceContractTest`가 가족 밖(app-bootstrap)에 있다", "disposition": "EMITTED", "target": "case:the-public-surface-contract-test-lives-outside-the-family", "module": "integration/19-messaging-platform", "topic": "cross-leaf-integration-facts", "reason": "cross-leaf integration 에서만 성립하는 사실이라 leaf candidate 로 환원되지 않는다." }, { "id": "C2-XS-CLASSIFIER", "kindCandidate": "REFERENCE", "priority": "P2", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L1", "analysis/99-cross-scope.md#L1" ], "sourceHeading": "분류기는 엔진이 남긴 것만 볼 수 있다", "summary": "분류기는 엔진이 남긴 것만 볼 수 있다", "disposition": "EMITTED", "target": "reference:a-classifier-sees-only-what-the-engine-kept", "module": "adapter-outbound-httpclient", "topic": "http-failure-classification", "reason": "사이클 2 의 판정 번복(EVD-332)에서 추출한 재사용 기준. `analysis/11` §51.3-51.4 와 cross-scope §5 가 근거다." }, { "id": "C2-XS-RUNTIME-SHAPE", "kindCandidate": "REFERENCE", "priority": "P2", "sourceRefs": [ "analysis/99-cross-scope.md#L1" ], "sourceHeading": "런타임의 모양에 대한 주장은 런타임에서 확인한다", "summary": "런타임의 모양에 대한 주장은 런타임에서 확인한다", "disposition": "EMITTED", "target": "reference:verify-runtime-shape-at-runtime", "module": "cross-scope", "topic": "http-failure-classification", "reason": "cross-scope §5 가 사이클 2 의 번복 1건과 자기 교정 3건에서 뽑은 측정 규칙이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L130", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L130" ], "sourceHeading": "(8.2) 조건 형제 비교 — off 계약의 두 절반", "summary": "(8.2) 조건 형제 비교 — off 계약의 두 절반", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c01", "module": "adapter-inbound-graphql", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L221", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L221" ], "sourceHeading": "(8.2) 조건 형제 비교 — 스키마 해시의 생산자와 소비자", "summary": "(8.2) 조건 형제 비교 — 스키마 해시의 생산자와 소비자", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c02", "module": "adapter-inbound-graphql", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L336", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L336" ], "sourceHeading": "(8.2) 조건 형제 비교 — 연산 정체성을 정하는 두 구현", "summary": "(8.2) 조건 형제 비교 — 연산 정체성을 정하는 두 구현", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c03", "module": "adapter-inbound-graphql", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L354", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L354" ], "sourceHeading": "(8.3) 중복 메커니즘 — 예산 계층", "summary": "(8.3) 중복 메커니즘 — 예산 계층", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c04", "module": "adapter-inbound-graphql", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L376", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L376" ], "sourceHeading": "(8.4) 문서/구현 드리프트 — 취소 경로", "summary": "(8.4) 문서/구현 드리프트 — 취소 경로", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c05", "module": "adapter-inbound-graphql", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L471", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L471" ], "sourceHeading": "(8.2) 조건 형제 비교 — 클라이언트 정책이 어떻게 정해지는가", "summary": "(8.2) 조건 형제 비교 — 클라이언트 정책이 어떻게 정해지는가", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c06", "module": "adapter-inbound-graphql", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L604", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L604" ], "sourceHeading": "(8.3) 중복 메커니즘 — 실행 전 실패의 매퍼", "summary": "(8.3) 중복 메커니즘 — 실행 전 실패의 매퍼", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c07", "module": "adapter-inbound-graphql", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L612", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L612" ], "sourceHeading": "(8.4) 문서/구현 드리프트 — 보고되는 HTTP 프로파일", "summary": "(8.4) 문서/구현 드리프트 — 보고되는 HTTP 프로파일", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c08", "module": "adapter-inbound-graphql", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L660", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L660" ], "sourceHeading": "b 그 결과 — HTTP 전송 계약 계층이 미배선이고 실제 전송은 프레임워크가 정한다", "summary": "b 그 결과 — HTTP 전송 계약 계층이 미배선이고 실제 전송은 프레임워크가 정한다", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c09", "module": "adapter-inbound-graphql", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L719", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L719" ], "sourceHeading": "(8.1) 도달성 — 네 패키지의 배선 상태", "summary": "(8.1) 도달성 — 네 패키지의 배선 상태", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c10", "module": "adapter-inbound-graphql", "topic": "query-and-pagination-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L725", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L725" ], "sourceHeading": "(8.2) 조건 형제 비교 — 커서 서명 키의 두 소비처", "summary": "(8.2) 조건 형제 비교 — 커서 서명 키의 두 소비처", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c11", "module": "adapter-inbound-graphql", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L867", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L867" ], "sourceHeading": "(8.2) 조건 형제 비교 — 두 능력 목록이 커서에 대해 다르게 답한다", "summary": "(8.2) 조건 형제 비교 — 두 능력 목록이 커서에 대해 다르게 답한다", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c12", "module": "adapter-inbound-graphql", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRAPHQL-L873", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/16-adapter-inbound-graphql.md#L873" ], "sourceHeading": "(8.1) 도달성 — 릴리스 게이트 자체", "summary": "(8.1) 도달성 — 릴리스 게이트 자체", "disposition": "EMITTED", "target": "concept:adapter-inbound-graphql-c13", "module": "adapter-inbound-graphql", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_GRPC-L140", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/15-adapter-inbound-grpc.md#L140" ], "sourceHeading": "(8.3) 중복 메커니즘 — 인증과 예외 처리의 인터셉터 순서", "summary": "(8.3) 중복 메커니즘 — 인증과 예외 처리의 인터셉터 순서", "disposition": "EMITTED", "target": "concept:adapter-inbound-grpc-c01", "module": "adapter-inbound-grpc", "topic": "result-and-failure-algebra", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L116", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L116" ], "sourceHeading": "(8.2) 조건 형제 비교 — 두 자동설정의 게이트", "summary": "(8.2) 조건 형제 비교 — 두 자동설정의 게이트", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c01", "module": "adapter-inbound-web", "topic": "capability-and-disclosure-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L140", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L140" ], "sourceHeading": "(8.4) 문서/구현 드리프트 — 모듈 경계 선언과 실제 트리", "summary": "(8.4) 문서/구현 드리프트 — 모듈 경계 선언과 실제 트리", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c02", "module": "adapter-inbound-web", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L426", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L426" ], "sourceHeading": "(8.1) 도달성 — 신원 모델의 프로덕션 참조 수", "summary": "(8.1) 도달성 — 신원 모델의 프로덕션 참조 수", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c03", "module": "adapter-inbound-web", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L473", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L473" ], "sourceHeading": "(8.3) 필터 체인 순서 — `publicPaths` 대 `RestrictedPathRule`", "summary": "(8.3) 필터 체인 순서 — `publicPaths` 대 `RestrictedPathRule`", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c04", "module": "adapter-inbound-web", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L666", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L666" ], "sourceHeading": "(8.4) 게이트 프로퍼티가 존재하는가", "summary": "(8.4) 게이트 프로퍼티가 존재하는가", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c05", "module": "adapter-inbound-web", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L762", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L762" ], "sourceHeading": "(8.2) durable-operation HTTP 표면의 두 게이트", "summary": "(8.2) durable-operation HTTP 표면의 두 게이트", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c06", "module": "adapter-inbound-web", "topic": "query-and-pagination-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L785", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L785" ], "sourceHeading": "(8.4) 지문 정규화가 길이 프레이밍인가", "summary": "(8.4) 지문 정규화가 길이 프레이밍인가", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c07", "module": "adapter-inbound-web", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L843", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L843" ], "sourceHeading": "(8.1) 도달성 — 라이브러리 타입의 소비자", "summary": "(8.1) 도달성 — 라이브러리 타입의 소비자", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c08", "module": "adapter-inbound-web", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L864", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L864" ], "sourceHeading": "(8.2) 조건 형제 비교 — 캐시 정책이 두 벌이다", "summary": "(8.2) 조건 형제 비교 — 캐시 정책이 두 벌이다", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c09", "module": "adapter-inbound-web", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L889", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L889" ], "sourceHeading": "(8.3) 중복 메커니즘 — 커서 코덱도 두 벌", "summary": "(8.3) 중복 메커니즘 — 커서 코덱도 두 벌", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c10", "module": "adapter-inbound-web", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L978", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L978" ], "sourceHeading": "(8.2) 조건 형제 비교 — `OpenApiCustomizer` 가 두 개다", "summary": "(8.2) 조건 형제 비교 — `OpenApiCustomizer` 가 두 개다", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c11", "module": "adapter-inbound-web", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L986", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L986" ], "sourceHeading": "(8.3) XML/CBOR 표현의 런타임 배선", "summary": "(8.3) XML/CBOR 표현의 런타임 배선", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c12", "module": "adapter-inbound-web", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L1071", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1071" ], "sourceHeading": "(8.2) 조건 형제 비교 — `X-Request-Id`에 대해 배선된 두 필터가 반대 정책을 쓴다", "summary": "(8.2) 조건 형제 비교 — `X-Request-Id`에 대해 배선된 두 필터가 반대 정책을 쓴다", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c13", "module": "adapter-inbound-web", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L1098", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1098" ], "sourceHeading": "(8.1) 도달성 — forwarded 헤더 신뢰 정책", "summary": "(8.1) 도달성 — forwarded 헤더 신뢰 정책", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c14", "module": "adapter-inbound-web", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L1108", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1108" ], "sourceHeading": "(8.3) 중복 메커니즘 — 상관 식별자가 세 벌이다", "summary": "(8.3) 중복 메커니즘 — 상관 식별자가 세 벌이다", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c15", "module": "adapter-inbound-web", "topic": "observability-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L1217", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1217" ], "sourceHeading": "(8.4) 카운트 드리프트 — 선언된 능력 11개, 활성화 게이트 2개", "summary": "(8.4) 카운트 드리프트 — 선언된 능력 11개, 활성화 게이트 2개", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c16", "module": "adapter-inbound-web", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L1255", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1255" ], "sourceHeading": "(8.3) 중복 메커니즘 — 하나의 스위치가 두 능력을 켠다", "summary": "(8.3) 중복 메커니즘 — 하나의 스위치가 두 능력을 켠다", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c17", "module": "adapter-inbound-web", "topic": "capability-and-disclosure-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L1336", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1336" ], "sourceHeading": "(8.1) 도달성 — 시작 검증과 조립", "summary": "(8.1) 도달성 — 시작 검증과 조립", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c18", "module": "adapter-inbound-web", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEB-L1555", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/14-adapter-inbound-web.md#L1555" ], "sourceHeading": "(8.2) 조건 형제 비교 — 두 개의 계약 강제 형태", "summary": "(8.2) 조건 형제 비교 — 두 개의 계약 강제 형태", "disposition": "EMITTED", "target": "concept:adapter-inbound-web-c19", "module": "adapter-inbound-web", "topic": "identity-and-value-contracts", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEBSOCKET-L24", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/17-adapter-inbound-websocket.md#L24" ], "sourceHeading": "이 모듈의 형태 — 하나의 leaf, 세 개의 설정 네임스페이스", "summary": "이 모듈의 형태 — 하나의 leaf, 세 개의 설정 네임스페이스", "disposition": "EMITTED", "target": "concept:adapter-inbound-websocket-c01", "module": "adapter-inbound-websocket", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEBSOCKET-L251", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/17-adapter-inbound-websocket.md#L251" ], "sourceHeading": "(8.1) 도달성 — 정책의 실제 적용 지점", "summary": "(8.1) 도달성 — 정책의 실제 적용 지점", "disposition": "EMITTED", "target": "concept:adapter-inbound-websocket-c02", "module": "adapter-inbound-websocket", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEBSOCKET-L267", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/17-adapter-inbound-websocket.md#L267" ], "sourceHeading": "(8.4) 카운트 — `WebSocketFailureCategory`", "summary": "(8.4) 카운트 — `WebSocketFailureCategory`", "disposition": "EMITTED", "target": "concept:adapter-inbound-websocket-c03", "module": "adapter-inbound-websocket", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEBSOCKET-L381", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/17-adapter-inbound-websocket.md#L381" ], "sourceHeading": "(8.2) 조건 형제 비교 — 재개 토큰 서명", "summary": "(8.2) 조건 형제 비교 — 재개 토큰 서명", "disposition": "EMITTED", "target": "concept:adapter-inbound-websocket-c04", "module": "adapter-inbound-websocket", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_INBOUND_WEBSOCKET-L420", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/17-adapter-inbound-websocket.md#L420" ], "sourceHeading": "(8.3) 중복 메커니즘 — 승격 게이트", "summary": "(8.3) 중복 메커니즘 — 승격 게이트", "disposition": "EMITTED", "target": "concept:adapter-inbound-websocket-c05", "module": "adapter-inbound-websocket", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L85", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L85" ], "sourceHeading": "조립의 순서가 클래스 하나에 고정돼 있다", "summary": "조립의 순서가 클래스 하나에 고정돼 있다", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c01", "module": "adapter-outbound-cache-redis", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L107", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L107" ], "sourceHeading": "Confirmed — raw allowlist 기본값은 없는 리소스를 가리키고, 그것이 의도다", "summary": "Confirmed — raw allowlist 기본값은 없는 리소스를 가리키고, 그것이 의도다", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c02", "module": "adapter-outbound-cache-redis", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L235", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L235" ], "sourceHeading": "Confirmed — \"설계상 부재\" 주장 6건이 구현·정책 계층까지 일치한다", "summary": "Confirmed — \"설계상 부재\" 주장 6건이 구현·정책 계층까지 일치한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c03", "module": "adapter-outbound-cache-redis", "topic": "identity-and-value-contracts", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L245", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L245" ], "sourceHeading": "Confirmed — 두 프로그래밍 모델의 대칭이 기계 검사되고, 검사기 자신도 검사된다", "summary": "Confirmed — 두 프로그래밍 모델의 대칭이 기계 검사되고, 검사기 자신도 검사된다", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c04", "module": "adapter-outbound-cache-redis", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L324", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L324" ], "sourceHeading": "키: 렌더된 문자열을 받는 API가 존재하지 않는다", "summary": "키: 렌더된 문자열을 받는 API가 존재하지 않는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c05", "module": "adapter-outbound-cache-redis", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L332", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L332" ], "sourceHeading": "실패: 재시도 가능성과 모호성이 배타로 강제된다", "summary": "실패: 재시도 가능성과 모호성이 배타로 강제된다", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c06", "module": "adapter-outbound-cache-redis", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L350", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L350" ], "sourceHeading": "명령 기술: 정책 파일과 서버 메타데이터의 접합점", "summary": "명령 기술: 정책 파일과 서버 메타데이터의 접합점", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c07", "module": "adapter-outbound-cache-redis", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L456", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L456" ], "sourceHeading": "Confirmed — 두 프로그래밍 모델이 같은 request builder를 공유한다", "summary": "Confirmed — 두 프로그래밍 모델이 같은 request builder를 공유한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c08", "module": "adapter-outbound-cache-redis", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L477", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L477" ], "sourceHeading": "Confirmed — guard를 지나지 않는 경로가 하나 있고, 그것이 선언돼 있다", "summary": "Confirmed — guard를 지나지 않는 경로가 하나 있고, 그것이 선언돼 있다", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c09", "module": "adapter-outbound-cache-redis", "topic": "result-and-failure-algebra", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L560", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L560" ], "sourceHeading": "`CommandPolicyGuard` — 순서가 고정된 단일 입장 지점", "summary": "`CommandPolicyGuard` — 순서가 고정된 단일 입장 지점", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c10", "module": "adapter-outbound-cache-redis", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L579", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L579" ], "sourceHeading": "정책 문서를 일반 YAML 파서로 읽지 않는다", "summary": "정책 문서를 일반 YAML 파서로 읽지 않는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c11", "module": "adapter-outbound-cache-redis", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L684", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L684" ], "sourceHeading": "raw gateway — \"escape hatch\"가 두 겹의 사전 승인으로 닫혀 있다", "summary": "raw gateway — \"escape hatch\"가 두 겹의 사전 승인으로 닫혀 있다", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c12", "module": "adapter-outbound-cache-redis", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_CACHE_REDIS-L701", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/10-adapter-outbound-cache-redis.md#L701" ], "sourceHeading": "스크립트와 트랜잭션 — 등록이 배포 단계이고, 창(window)은 노드에 고정된다", "summary": "스크립트와 트랜잭션 — 등록이 배포 단계이고, 창(window)은 노드에 고정된다", "disposition": "EMITTED", "target": "concept:adapter-outbound-cache-redis-c13", "module": "adapter-outbound-cache-redis", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_FILESERVER-L127", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L127" ], "sourceHeading": "Confirmed — 적재 경로는 auto-configuration이 아니라 명시적 component scan이다", "summary": "Confirmed — 적재 경로는 auto-configuration이 아니라 명시적 component scan이다", "disposition": "EMITTED", "target": "concept:adapter-outbound-fileserver-c01", "module": "adapter-outbound-fileserver", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_FILESERVER-L168", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L168" ], "sourceHeading": "Confirmed — codec이 \"canonical\"을 왕복으로 강제한다", "summary": "Confirmed — codec이 \"canonical\"을 왕복으로 강제한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-fileserver-c02", "module": "adapter-outbound-fileserver", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_FILESERVER-L184", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L184" ], "sourceHeading": "Confirmed — 상태 전이가 인접 행렬이고 terminal이 진짜 terminal이다", "summary": "Confirmed — 상태 전이가 인접 행렬이고 terminal이 진짜 terminal이다", "disposition": "EMITTED", "target": "concept:adapter-outbound-fileserver-c03", "module": "adapter-outbound-fileserver", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_FILESERVER-L192", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L192" ], "sourceHeading": "Confirmed — 두 개의 락 형태가 각자의 쓰기 원시연산에 맞춰져 있다", "summary": "Confirmed — 두 개의 락 형태가 각자의 쓰기 원시연산에 맞춰져 있다", "disposition": "EMITTED", "target": "concept:adapter-outbound-fileserver-c04", "module": "adapter-outbound-fileserver", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_FILESERVER-L300", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L300" ], "sourceHeading": "Confirmed — canonical digest가 길이 프레이밍이고, route token 충돌을 명시적으로 검사한다", "summary": "Confirmed — canonical digest가 길이 프레이밍이고, route token 충돌을 명시적으로 검사한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-fileserver-c05", "module": "adapter-outbound-fileserver", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_FILESERVER-L507", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L507" ], "sourceHeading": "Confirmed — 인가와 감사가 정보를 흘리지 않는다", "summary": "Confirmed — 인가와 감사가 정보를 흘리지 않는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-fileserver-c06", "module": "adapter-outbound-fileserver", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_FILESERVER-L517", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L517" ], "sourceHeading": "Confirmed — 실패를 \"재시도 안전한가\"로 분류한다", "summary": "Confirmed — 실패를 \"재시도 안전한가\"로 분류한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-fileserver-c07", "module": "adapter-outbound-fileserver", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_FILESERVER-L558", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/08-adapter-outbound-fileserver.md#L558" ], "sourceHeading": "Confirmed — payload 계층이 자신의 잔여 위험을 먼저 선언한다", "summary": "Confirmed — payload 계층이 자신의 잔여 위험을 먼저 선언한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-fileserver-c08", "module": "adapter-outbound-fileserver", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_HTTPCLIENT-L90", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L90" ], "sourceHeading": "`ClientProfileValidator` — 34개 위반 코드가 각각 과거 사고를 적는다", "summary": "`ClientProfileValidator` — 34개 위반 코드가 각각 과거 사고를 적는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-httpclient-c01", "module": "adapter-outbound-httpclient", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_HTTPCLIENT-L112", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L112" ], "sourceHeading": "`ClientRuntimeRegistry` — 세대 교체가 틈으로 관측되지 않는다", "summary": "`ClientRuntimeRegistry` — 세대 교체가 틈으로 관측되지 않는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-httpclient-c02", "module": "adapter-outbound-httpclient", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_HTTPCLIENT-L237", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L237" ], "sourceHeading": "`ObjectBody`의 재생 가능성 판정 — 값의 성질이지 코덱의 성질이 아니다", "summary": "`ObjectBody`의 재생 가능성 판정 — 값의 성질이지 코덱의 성질이 아니다", "disposition": "EMITTED", "target": "concept:adapter-outbound-httpclient-c03", "module": "adapter-outbound-httpclient", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_HTTPCLIENT-L305", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L305" ], "sourceHeading": "재시도 결정표가 순서로 표현돼 있다", "summary": "재시도 결정표가 순서로 표현돼 있다", "disposition": "EMITTED", "target": "concept:adapter-outbound-httpclient-c04", "module": "adapter-outbound-httpclient", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_HTTPCLIENT-L323", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L323" ], "sourceHeading": "가드 순서와 그 근거", "summary": "가드 순서와 그 근거", "disposition": "EMITTED", "target": "concept:adapter-outbound-httpclient-c05", "module": "adapter-outbound-httpclient", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_HTTPCLIENT-L403", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L403" ], "sourceHeading": "두 예산, 두 계층, 그리고 읽는 도중의 강제", "summary": "두 예산, 두 계층, 그리고 읽는 도중의 강제", "disposition": "EMITTED", "target": "concept:adapter-outbound-httpclient-c06", "module": "adapter-outbound-httpclient", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_HTTPCLIENT-L474", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L474" ], "sourceHeading": "목적지 정책 — 절대 URI를 정화하지 않고 거부한다", "summary": "목적지 정책 — 절대 URI를 정화하지 않고 거부한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-httpclient-c07", "module": "adapter-outbound-httpclient", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_HTTPCLIENT-L573", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L573" ], "sourceHeading": "전송은 능력을 선언하고, 프로파일보다 약하면 startup이 실패한다", "summary": "전송은 능력을 선언하고, 프로파일보다 약하면 startup이 실패한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-httpclient-c08", "module": "adapter-outbound-httpclient", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_HTTPCLIENT-L627", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/11-adapter-outbound-httpclient.md#L627" ], "sourceHeading": "교정 — 영구 TLS 실패의 `CONNECT` 분류는 분류기 결함이 아니라 픽스처의 듀얼스택 호스트명이다", "summary": "교정 — 영구 TLS 실패의 `CONNECT` 분류는 분류기 결함이 아니라 픽스처의 듀얼스택 호스트명이다", "disposition": "EMITTED", "target": "concept:adapter-outbound-httpclient-c09", "module": "adapter-outbound-httpclient", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_MESSAGING-L174", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/12-adapter-outbound-messaging.md#L174" ], "sourceHeading": "레지스트리가 \"닫혀 있다\"는 것의 의미", "summary": "레지스트리가 \"닫혀 있다\"는 것의 의미", "disposition": "EMITTED", "target": "concept:adapter-outbound-messaging-c01", "module": "adapter-outbound-messaging", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_MESSAGING-L189", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/12-adapter-outbound-messaging.md#L189" ], "sourceHeading": "봉투 작성이 파서를 거치지 않는다", "summary": "봉투 작성이 파서를 거치지 않는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-messaging-c02", "module": "adapter-outbound-messaging", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_MESSAGING-L237", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/12-adapter-outbound-messaging.md#L237" ], "sourceHeading": "계약이 컴파일되어 닫힌다", "summary": "계약이 컴파일되어 닫힌다", "disposition": "EMITTED", "target": "concept:adapter-outbound-messaging-c03", "module": "adapter-outbound-messaging", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_MESSAGING-L284", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/12-adapter-outbound-messaging.md#L284" ], "sourceHeading": "두 발행 경로의 실패 정책이 정반대이고 그 이유가 적혀 있다", "summary": "두 발행 경로의 실패 정책이 정반대이고 그 이유가 적혀 있다", "disposition": "EMITTED", "target": "concept:adapter-outbound-messaging-c04", "module": "adapter-outbound-messaging", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_NOTIFICATION-L84", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L84" ], "sourceHeading": "\"이름 없는 상태\"를 없애는 것이 이 sub-scope의 주제다", "summary": "\"이름 없는 상태\"를 없애는 것이 이 sub-scope의 주제다", "disposition": "EMITTED", "target": "concept:adapter-outbound-notification-c01", "module": "adapter-outbound-notification", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_NOTIFICATION-L306", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L306" ], "sourceHeading": "(8.3) 중복 메커니즘 — 종료 경로", "summary": "(8.3) 중복 메커니즘 — 종료 경로", "disposition": "EMITTED", "target": "concept:adapter-outbound-notification-c02", "module": "adapter-outbound-notification", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_NOTIFICATION-L582", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L582" ], "sourceHeading": "(8.1) 도달성 — provider가 준 `Retry-After`는 실제로 쓰이는가", "summary": "(8.1) 도달성 — provider가 준 `Retry-After`는 실제로 쓰이는가", "disposition": "EMITTED", "target": "concept:adapter-outbound-notification-c03", "module": "adapter-outbound-notification", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_NOTIFICATION-L619", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L619" ], "sourceHeading": "(8.4) 문서/카운트 드리프트 — 어떤 상태가 unhealthy인가", "summary": "(8.4) 문서/카운트 드리프트 — 어떤 상태가 unhealthy인가", "disposition": "EMITTED", "target": "concept:adapter-outbound-notification-c04", "module": "adapter-outbound-notification", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_NOTIFICATION-L703", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L703" ], "sourceHeading": "(8.1) 도달성 — SSRF 가드가 도달하는 호출처 전수", "summary": "(8.1) 도달성 — SSRF 가드가 도달하는 호출처 전수", "disposition": "EMITTED", "target": "concept:adapter-outbound-notification-c05", "module": "adapter-outbound-notification", "topic": "identity-and-value-contracts", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_NOTIFICATION-L913", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/13-adapter-outbound-notification.md#L913" ], "sourceHeading": "(8.1) 도달성 — 공유 계약을 실제로 상속하는 어댑터", "summary": "(8.1) 도달성 — 공유 계약을 실제로 상속하는 어댑터", "disposition": "EMITTED", "target": "concept:adapter-outbound-notification-c06", "module": "adapter-outbound-notification", "topic": "identity-and-value-contracts", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_OBJECTSTORAGE-L63", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L63" ], "sourceHeading": "Confirmed — \"컴파일이 먼저, 생성은 나중\"이 실제 순서다", "summary": "Confirmed — \"컴파일이 먼저, 생성은 나중\"이 실제 순서다", "disposition": "EMITTED", "target": "concept:adapter-outbound-objectstorage-c01", "module": "adapter-outbound-objectstorage", "topic": "capability-and-disclosure-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_OBJECTSTORAGE-L92", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L92" ], "sourceHeading": "Confirmed — legacy가 세 겹으로 격리돼 있다", "summary": "Confirmed — legacy가 세 겹으로 격리돼 있다", "disposition": "EMITTED", "target": "concept:adapter-outbound-objectstorage-c02", "module": "adapter-outbound-objectstorage", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_OBJECTSTORAGE-L135", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L135" ], "sourceHeading": "Confirmed — 후보로 본 unguarded split은 값 타입이 막고 있다", "summary": "Confirmed — 후보로 본 unguarded split은 값 타입이 막고 있다", "disposition": "EMITTED", "target": "concept:adapter-outbound-objectstorage-c03", "module": "adapter-outbound-objectstorage", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_OBJECTSTORAGE-L173", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L173" ], "sourceHeading": "Confirmed — 계열이 닫혀 있고 스키마가 fail-closed다", "summary": "Confirmed — 계열이 닫혀 있고 스키마가 fail-closed다", "disposition": "EMITTED", "target": "concept:adapter-outbound-objectstorage-c04", "module": "adapter-outbound-objectstorage", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_OBJECTSTORAGE-L244", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L244" ], "sourceHeading": "Confirmed — 다섯 개의 닫힌 전이표가 있고 terminal이 진짜 terminal이다", "summary": "Confirmed — 다섯 개의 닫힌 전이표가 있고 terminal이 진짜 terminal이다", "disposition": "EMITTED", "target": "concept:adapter-outbound-objectstorage-c05", "module": "adapter-outbound-objectstorage", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_OBJECTSTORAGE-L273", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L273" ], "sourceHeading": "Confirmed — 모든 키가 단일 인코더에서 나오고 route를 벗어날 수 없다", "summary": "Confirmed — 모든 키가 단일 인코더에서 나오고 route를 벗어날 수 없다", "disposition": "EMITTED", "target": "concept:adapter-outbound-objectstorage-c06", "module": "adapter-outbound-objectstorage", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_OBJECTSTORAGE-L420", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L420" ], "sourceHeading": "이 sub-scope의 설계 — 비밀은 durable하지 않고, 승인은 명시적으로 닫힌다", "summary": "이 sub-scope의 설계 — 비밀은 durable하지 않고, 승인은 명시적으로 닫힌다", "disposition": "EMITTED", "target": "concept:adapter-outbound-objectstorage-c07", "module": "adapter-outbound-objectstorage", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_OBJECTSTORAGE-L560", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L560" ], "sourceHeading": "§41 보강 — 레지스트리는 문서 주장을 얼어붙히지만 런타임 설정 경로는 덮지 않는다", "summary": "§41 보강 — 레지스트리는 문서 주장을 얼어붙히지만 런타임 설정 경로는 덮지 않는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-objectstorage-c08", "module": "adapter-outbound-objectstorage", "topic": "capability-and-disclosure-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_OBJECTSTORAGE-L601", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/09-adapter-outbound-objectstorage.md#L601" ], "sourceHeading": "Confirmed — local-dev provider의 경로 방어와 publication", "summary": "Confirmed — local-dev provider의 경로 방어와 publication", "disposition": "EMITTED", "target": "concept:adapter-outbound-objectstorage-c09", "module": "adapter-outbound-objectstorage", "topic": "identity-and-value-contracts", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L70", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L70" ], "sourceHeading": "Sub-scope 02 — API contracts (`api/**`)", "summary": "Sub-scope 02 — API contracts (`api/**`)", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c01", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L126", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L126" ], "sourceHeading": "Capability API — 실행 기능과 지원 등급을 reportable contract로 분리", "summary": "Capability API — 실행 기능과 지원 등급을 reportable contract로 분리", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c02", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L208", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L208" ], "sourceHeading": "Error API — provider exception을 stable failure algebra로 변환", "summary": "Error API — provider exception을 stable failure algebra로 변환", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c03", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L302", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L302" ], "sourceHeading": "Query API — pagination 비용과 trust boundary를 type shape로 제한", "summary": "Query API — pagination 비용과 trust boundary를 type shape로 제한", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c04", "module": "adapter-outbound-persistence-jpa", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L358", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L358" ], "sourceHeading": "`SignedJsonCursorCodec`: 좋은 trust-boundary 설계와 경계값 결함이 동시에 존재", "summary": "`SignedJsonCursorCodec`: 좋은 trust-boundary 설계와 경계값 결함이 동시에 존재", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c05", "module": "adapter-outbound-persistence-jpa", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L462", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L462" ], "sourceHeading": "Transaction API — 실행체보다 먼저 retry 가능 상태를 제한한다", "summary": "Transaction API — 실행체보다 먼저 retry 가능 상태를 제한한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c06", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L639", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L639" ], "sourceHeading": "API surface verification", "summary": "API surface verification", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c07", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L721", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L721" ], "sourceHeading": "Sub-scope 03 — transaction + persistence failure", "summary": "Sub-scope 03 — transaction + persistence failure", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c08", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L737", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L737" ], "sourceHeading": "같은 leaf 안에 두 개의 transaction model이 존재한다", "summary": "같은 leaf 안에 두 개의 transaction model이 존재한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c09", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L763", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L763" ], "sourceHeading": "B. persistence-jpa public API boundary", "summary": "B. persistence-jpa public API boundary", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c10", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L788", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L788" ], "sourceHeading": "`SpringTransactionPort`: application-core의 실제 Spring 구현", "summary": "`SpringTransactionPort`: application-core의 실제 Spring 구현", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c11", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L832", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L832" ], "sourceHeading": "`SpringPolicyTransactionPort`: transaction result를 boolean 성공/실패보다 세밀하게 표현", "summary": "`SpringPolicyTransactionPort`: transaction result를 boolean 성공/실패보다 세밀하게 표현", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c12", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L879", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L879" ], "sourceHeading": "CallBudget를 transaction timeout보다 먼저 적용한다", "summary": "CallBudget를 transaction timeout보다 먼저 적용한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c13", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L938", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L938" ], "sourceHeading": "retry classification은 structured state로 제한한다", "summary": "retry classification은 structured state로 제한한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c14", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L953", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L953" ], "sourceHeading": "public JPA path: `SpringJpaTransactionExecutor`", "summary": "public JPA path: `SpringJpaTransactionExecutor`", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c15", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L974", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L974" ], "sourceHeading": "`FullTransactionRetryCoordinator`: whole-use-case retry 의도", "summary": "`FullTransactionRetryCoordinator`: whole-use-case retry 의도", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c16", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1074", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1074" ], "sourceHeading": "`CommitFailureClassifier`", "summary": "`CommitFailureClassifier`", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c17", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1184", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1184" ], "sourceHeading": "reconciliation record production path = 0", "summary": "reconciliation record production path = 0", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c18", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1210", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1210" ], "sourceHeading": "completion-unknown metric도 현재 transaction path에서 호출되지 않는다", "summary": "completion-unknown metric도 현재 transaction path에서 호출되지 않는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c19", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1334", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1334" ], "sourceHeading": "zero-reference지만 dead가 아닌 `JpaTransactionConfig`", "summary": "zero-reference지만 dead가 아닌 `JpaTransactionConfig`", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c20", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1358", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1358" ], "sourceHeading": "두 failure translator 계열은 현재 역할이 다르다", "summary": "두 failure translator 계열은 현재 역할이 다르다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c21", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1384", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1384" ], "sourceHeading": "`failure.PersistenceExceptionTranslator`", "summary": "`failure.PersistenceExceptionTranslator`", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c22", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1416", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1416" ], "sourceHeading": "runtime bean-factory-owned", "summary": "runtime bean-factory-owned", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c23", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1610", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1610" ], "sourceHeading": "이 sub-scope는 하나의 query framework가 아니라 세 단계의 정책층이다", "summary": "이 sub-scope는 하나의 query framework가 아니라 세 단계의 정책층이다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c24", "module": "adapter-outbound-persistence-jpa", "topic": "capability-and-disclosure-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1643", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1643" ], "sourceHeading": "Hibernate provider policy는 declared baseline과 실제 runtime을 분리한다", "summary": "Hibernate provider policy는 declared baseline과 실제 runtime을 분리한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c25", "module": "adapter-outbound-persistence-jpa", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1819", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1819" ], "sourceHeading": "bulk DML과 StatelessSession은 일반 repository path와 다른 비용 모델을 명시한다", "summary": "bulk DML과 StatelessSession은 일반 repository path와 다른 비용 모델을 명시한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c26", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1860", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1860" ], "sourceHeading": "Spring Data repository support는 generic CRUD보다 query execution policy에 가깝다", "summary": "Spring Data repository support는 generic CRUD보다 query execution policy에 가깝다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c27", "module": "adapter-outbound-persistence-jpa", "topic": "query-and-pagination-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1933", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1933" ], "sourceHeading": "keyset predicate는 mixed type / mixed direction을 표현하도록 진화했다", "summary": "keyset predicate는 mixed type / mixed direction을 표현하도록 진화했다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c28", "module": "adapter-outbound-persistence-jpa", "topic": "query-and-pagination-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L1973", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L1973" ], "sourceHeading": "keyset execution은 `size + 1`로 hasNext를 판정하고 count query를 제거한다", "summary": "keyset execution은 `size + 1`로 hasNext를 판정하고 count query를 제거한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c29", "module": "adapter-outbound-persistence-jpa", "topic": "query-and-pagination-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2087", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2087" ], "sourceHeading": "Querydsl integration은 production runtime classpath를 강제로 오염시키지 않는다", "summary": "Querydsl integration은 production runtime classpath를 강제로 오염시키지 않는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c30", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2151", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2151" ], "sourceHeading": "대부분의 optimization helper가 production에서 직접 소비되지 않는다는 사실은 이미 repository가 알고 있다", "summary": "대부분의 optimization helper가 production에서 직접 소비되지 않는다는 사실은 이미 repository가 알고 있다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c31", "module": "adapter-outbound-persistence-jpa", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2217", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2217" ], "sourceHeading": "실제 app-bootstrap consumer rule은 별도 allowlist를 다시 가진다", "summary": "실제 app-bootstrap consumer rule은 별도 allowlist를 다시 가진다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c32", "module": "adapter-outbound-persistence-jpa", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2230", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2230" ], "sourceHeading": "leaf list 자체는 outside consumer를 검사하지 않는다", "summary": "leaf list 자체는 outside consumer를 검사하지 않는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c33", "module": "adapter-outbound-persistence-jpa", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2523", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2523" ], "sourceHeading": "release-task existence validator", "summary": "release-task existence validator", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c34", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2632", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2632" ], "sourceHeading": "PostgreSQL failure translation: SQLSTATE 분류는 맞지만 `40003` 의미가 translator에서 소실된다", "summary": "PostgreSQL failure translation: SQLSTATE 분류는 맞지만 `40003` 의미가 translator에서 소실된다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c35", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2669", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2669" ], "sourceHeading": "PostgreSQL Idempotency V2: owner/CAS 구조는 강하지만 replay 경계가 두 군데 어긋난다", "summary": "PostgreSQL Idempotency V2: owner/CAS 구조는 강하지만 replay 경계가 두 군데 어긋난다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c36", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2734", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2734" ], "sourceHeading": "Same-store inbox / polling outbox: 구현 계약은 강하지만 현재 미조립 candidate에 replay holes가 있다", "summary": "Same-store inbox / polling outbox: 구현 계약은 강하지만 현재 미조립 candidate에 replay holes가 있다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c37", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2780", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2780" ], "sourceHeading": "확인된 안전 경계", "summary": "확인된 안전 경계", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c38", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2805", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2805" ], "sourceHeading": "Vendor migrations", "summary": "Vendor migrations", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c39", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2883", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2883" ], "sourceHeading": "Idempotency real-PostgreSQL TTL boundaries", "summary": "Idempotency real-PostgreSQL TTL boundaries", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c40", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2913", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2913" ], "sourceHeading": "이번 scope에서 finding으로 승격하지 않은 항목", "summary": "이번 scope에서 finding으로 승격하지 않은 항목", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c41", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L2971", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L2971" ], "sourceHeading": "Baseline composition을 먼저 분리해야 하는 이유", "summary": "Baseline composition을 먼저 분리해야 하는 이유", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c42", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L3119", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3119" ], "sourceHeading": "H2 idempotency와 V2 owner 필드", "summary": "H2 idempotency와 V2 owner 필드", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c43", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L3123", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3123" ], "sourceHeading": "`audit`와 `auditing` 두 경로", "summary": "`audit`와 `auditing` 두 경로", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c44", "module": "adapter-outbound-persistence-jpa", "topic": "observability-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L3166", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3166" ], "sourceHeading": "Fileserver composition과 schema lifecycle", "summary": "Fileserver composition과 schema lifecycle", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c45", "module": "adapter-outbound-persistence-jpa", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L3350", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3350" ], "sourceHeading": "quota FIFO settlement 자체", "summary": "quota FIFO settlement 자체", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c46", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L3354", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3354" ], "sourceHeading": "cleanup fenced lease의 expiry-after / takeover-before window", "summary": "cleanup fenced lease의 expiry-after / takeover-before window", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c47", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L3401", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3401" ], "sourceHeading": "Notification composition과 schema lifecycle", "summary": "Notification composition과 schema lifecycle", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c48", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L3561", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3561" ], "sourceHeading": "crypto envelope와 contact-point secret protection", "summary": "crypto envelope와 contact-point secret protection", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c49", "module": "adapter-outbound-persistence-jpa", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L3565", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3565" ], "sourceHeading": "tenant-bound repository guard", "summary": "tenant-bound repository guard", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c50", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L3609", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3609" ], "sourceHeading": "현재 production composition은 Experimental을 실행하지 않지만 opt-in 경계는 완전히 구조적이지 않다", "summary": "현재 production composition은 Experimental을 실행하지 않지만 opt-in 경계는 완전히 구조적이지 않다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c51", "module": "adapter-outbound-persistence-jpa", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L3780", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3780" ], "sourceHeading": "schema identifier selection/reset", "summary": "schema identifier selection/reset", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c52", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L3784", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L3784" ], "sourceHeading": "tenant repository/listener guard가 곧 production isolation이라는 주장", "summary": "tenant repository/listener guard가 곧 production isolation이라는 주장", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c53", "module": "adapter-outbound-persistence-jpa", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L4017", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L4017" ], "sourceHeading": "`CommitAmbiguityProxy` / `PostgreSqlContractExtension`", "summary": "`CommitAmbiguityProxy` / `PostgreSqlContractExtension`", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c54", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L4021", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L4021" ], "sourceHeading": "`JpaReleaseManifest`의 regex parser", "summary": "`JpaReleaseManifest`의 regex parser", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c55", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L4143", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L4143" ], "sourceHeading": "always-install scan과 opt-in scan의 경계는 실제로 지켜지고 있다", "summary": "always-install scan과 opt-in scan의 경계는 실제로 지켜지고 있다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c56", "module": "adapter-outbound-persistence-jpa", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L4306", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L4306" ], "sourceHeading": "release gate 소속은 양방향으로 검증되지 않는다", "summary": "release gate 소속은 양방향으로 검증되지 않는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c57", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_JPA-L4541", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/05-adapter-outbound-persistence-jpa.md#L4541" ], "sourceHeading": "`JpaPlatformContractSupport`의 컨테이너 수명 서술은 실제와 다르다", "summary": "`JpaPlatformContractSupport`의 컨테이너 수명 서술은 실제와 다르다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-jpa-c58", "module": "adapter-outbound-persistence-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_MONGO-L98", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L98" ], "sourceHeading": "opt-in은 네 겹이고, 각 겹이 서로 다른 실패를 막는다", "summary": "opt-in은 네 겹이고, 각 겹이 서로 다른 실패를 막는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-mongo-c01", "module": "adapter-outbound-persistence-mongo", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_MONGO-L493", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L493" ], "sourceHeading": "mapping의 나머지는 manifest를 실제로 강제한다", "summary": "mapping의 나머지는 manifest를 실제로 강제한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-mongo-c02", "module": "adapter-outbound-persistence-mongo", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_MONGO-L586", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L586" ], "sourceHeading": "실행 scope의 고정된 순서가 이 sub-scope의 중심이다", "summary": "실행 scope의 고정된 순서가 이 sub-scope의 중심이다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-mongo-c03", "module": "adapter-outbound-persistence-mongo", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_MONGO-L648", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L648" ], "sourceHeading": "reactive 경로가 명시적으로 배치한 세 가지", "summary": "reactive 경로가 명시적으로 배치한 세 가지", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-mongo-c04", "module": "adapter-outbound-persistence-mongo", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_MONGO-L709", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L709" ], "sourceHeading": "Confirmed — 이 sub-scope는 정책과 값 객체이고, 배선된 것은 하나뿐이다", "summary": "Confirmed — 이 sub-scope는 정책과 값 객체이고, 배선된 것은 하나뿐이다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-mongo-c05", "module": "adapter-outbound-persistence-mongo", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_MONGO-L868", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L868" ], "sourceHeading": "migration은 fencing을 정면으로 다룬다", "summary": "migration은 fencing을 정면으로 다룬다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-mongo-c06", "module": "adapter-outbound-persistence-mongo", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_MONGO-L1015", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1015" ], "sourceHeading": "이 sub-scope는 이 leaf에서 유일하게 \"조립까지 된\" 대형 서브시스템이다", "summary": "이 sub-scope는 이 leaf에서 유일하게 \"조립까지 된\" 대형 서브시스템이다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-mongo-c07", "module": "adapter-outbound-persistence-mongo", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_MONGO-L1142", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1142" ], "sourceHeading": "`failure`는 이 leaf에서 가장 잘 배선되고 가장 잘 논증된 부분이다", "summary": "`failure`는 이 leaf에서 가장 잘 배선되고 가장 잘 논증된 부분이다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-mongo-c08", "module": "adapter-outbound-persistence-mongo", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_PERSISTENCE_MONGO-L1269", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/06-adapter-outbound-persistence-mongo.md#L1269" ], "sourceHeading": "Confirmed — 분류 불변식이 실제로 성립한다", "summary": "Confirmed — 분류 불변식이 실제로 성립한다", "disposition": "EMITTED", "target": "concept:adapter-outbound-persistence-mongo-c09", "module": "adapter-outbound-persistence-mongo", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_SUPPORT-L52", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L52" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:adapter-outbound-support-c01", "module": "adapter-outbound-support", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_SUPPORT-L119", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L119" ], "sourceHeading": "`FailOpenDependencyLogger`: 진단을 business outcome과 분리하려는 계약", "summary": "`FailOpenDependencyLogger`: 진단을 business outcome과 분리하려는 계약", "disposition": "EMITTED", "target": "concept:adapter-outbound-support-c02", "module": "adapter-outbound-support", "topic": "observability-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_SUPPORT-L207", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L207" ], "sourceHeading": "global masking도 이 보장을 복구하지 않는다", "summary": "global masking도 이 보장을 복구하지 않는다", "disposition": "EMITTED", "target": "concept:adapter-outbound-support-c03", "module": "adapter-outbound-support", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_SUPPORT-L318", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L318" ], "sourceHeading": "`OutboundSupportConfig`: unconditional shared bean seam과 실제 runtime wiring", "summary": "`OutboundSupportConfig`: unconditional shared bean seam과 실제 runtime wiring", "disposition": "EMITTED", "target": "concept:adapter-outbound-support-c04", "module": "adapter-outbound-support", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_SUPPORT-L368", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L368" ], "sourceHeading": "outbound peer isolation", "summary": "outbound peer isolation", "disposition": "EMITTED", "target": "concept:adapter-outbound-support-c05", "module": "adapter-outbound-support", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-ADAPTER_OUTBOUND_SUPPORT-L558", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/04-adapter-outbound-support.md#L558" ], "sourceHeading": "architecture suite / dependency registry", "summary": "architecture suite / dependency registry", "disposition": "EMITTED", "target": "concept:adapter-outbound-support-c06", "module": "adapter-outbound-support", "topic": "observability-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APP_BOOTSTRAP-L179", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/18-app-bootstrap.md#L179" ], "sourceHeading": "(8.3) 중복 메커니즘 — 세 개의 환경 검증기", "summary": "(8.3) 중복 메커니즘 — 세 개의 환경 검증기", "disposition": "EMITTED", "target": "concept:app-bootstrap-c01", "module": "app-bootstrap", "topic": "capability-and-disclosure-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APP_BOOTSTRAP-L185", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/18-app-bootstrap.md#L185" ], "sourceHeading": "— 다섯 어댑터 범위는 런타임 멤버십 레지스트리와 일치한다 (결함 아님)", "summary": "— 다섯 어댑터 범위는 런타임 멤버십 레지스트리와 일치한다 (결함 아님)", "disposition": "EMITTED", "target": "concept:app-bootstrap-c02", "module": "app-bootstrap", "topic": "capability-and-disclosure-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APP_BOOTSTRAP-L264", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/18-app-bootstrap.md#L264" ], "sourceHeading": "(8.4) 카운트 — `.imports` 여섯 줄과 다섯 능력", "summary": "(8.4) 카운트 — `.imports` 여섯 줄과 다섯 능력", "disposition": "EMITTED", "target": "concept:app-bootstrap-c03", "module": "app-bootstrap", "topic": "capability-and-disclosure-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APP_BOOTSTRAP-L386", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/18-app-bootstrap.md#L386" ], "sourceHeading": "(8.1)·(8.2) 도달성과 게이트", "summary": "(8.1)·(8.2) 도달성과 게이트", "disposition": "EMITTED", "target": "concept:app-bootstrap-c04", "module": "app-bootstrap", "topic": "identity-and-value-contracts", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APP_BOOTSTRAP-L460", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/18-app-bootstrap.md#L460" ], "sourceHeading": "(8.1) 도달성 — 레지스트리 계약이 실제 레지스트리 파일을 읽는가", "summary": "(8.1) 도달성 — 레지스트리 계약이 실제 레지스트리 파일을 읽는가", "disposition": "EMITTED", "target": "concept:app-bootstrap-c05", "module": "app-bootstrap", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APPLICATION_CORE-L58", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/03-application-core.md#L58" ], "sourceHeading": "모듈 경계와 빌드 의존성", "summary": "모듈 경계와 빌드 의존성", "disposition": "EMITTED", "target": "concept:application-core-c01", "module": "application-core", "topic": "query-and-pagination-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APPLICATION_CORE-L78", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/03-application-core.md#L78" ], "sourceHeading": "authorization: permission과 object access를 분리한다", "summary": "authorization: permission과 object access를 분리한다", "disposition": "EMITTED", "target": "concept:application-core-c02", "module": "application-core", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APPLICATION_CORE-L88", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/03-application-core.md#L88" ], "sourceHeading": "transaction: framework vocabulary 대신 application semantic policy", "summary": "transaction: framework vocabulary 대신 application semantic policy", "disposition": "EMITTED", "target": "concept:application-core-c03", "module": "application-core", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APPLICATION_CORE-L118", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/03-application-core.md#L118" ], "sourceHeading": "idempotency, inbox, outbox: uncertainty를 상태로 보존한다", "summary": "idempotency, inbox, outbox: uncertainty를 상태로 보존한다", "disposition": "EMITTED", "target": "concept:application-core-c04", "module": "application-core", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APPLICATION_CORE-L152", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/03-application-core.md#L152" ], "sourceHeading": "cache, lease, lock: 동시성 완화와 correctness authority를 구분한다", "summary": "cache, lease, lock: 동시성 완화와 correctness authority를 구분한다", "disposition": "EMITTED", "target": "concept:application-core-c05", "module": "application-core", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APPLICATION_CORE-L174", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/03-application-core.md#L174" ], "sourceHeading": "messaging과 realtime은 provider/transport vocabulary를 밖으로 밀어낸다", "summary": "messaging과 realtime은 provider/transport vocabulary를 밖으로 밀어낸다", "disposition": "EMITTED", "target": "concept:application-core-c06", "module": "application-core", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APPLICATION_CORE-L182", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/03-application-core.md#L182" ], "sourceHeading": "storage/file publication: legacy 경로와 semantic 경로가 공존한다", "summary": "storage/file publication: legacy 경로와 semantic 경로가 공존한다", "disposition": "EMITTED", "target": "concept:application-core-c07", "module": "application-core", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APPLICATION_CORE-L190", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/03-application-core.md#L190" ], "sourceHeading": "objectstorage: staged lifecycle, opaque identity, privilege separation", "summary": "objectstorage: staged lifecycle, opaque identity, privilege separation", "disposition": "EMITTED", "target": "concept:application-core-c08", "module": "application-core", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APPLICATION_CORE-L200", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/03-application-core.md#L200" ], "sourceHeading": "fileserver: DB metadata와 physical content 사이의 실패 seam을 명시한다", "summary": "fileserver: DB metadata와 physical content 사이의 실패 seam을 명시한다", "disposition": "EMITTED", "target": "concept:application-core-c09", "module": "application-core", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APPLICATION_CORE-L230", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/03-application-core.md#L230" ], "sourceHeading": "public API와 secret boundary", "summary": "public API와 secret boundary", "disposition": "EMITTED", "target": "concept:application-core-c10", "module": "application-core", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-APPLICATION_CORE-L270", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/03-application-core.md#L270" ], "sourceHeading": "실제 production reachability와 legacy/dead-path 판정", "summary": "실제 production reachability와 legacy/dead-path 판정", "disposition": "EMITTED", "target": "concept:application-core-c11", "module": "application-core", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-DOMAIN_CORE-L68", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/01-domain-core.md#L68" ], "sourceHeading": "관찰: 재사용 가능한 도메인 “내용”보다 도메인 모델링 계약을 소유한다", "summary": "관찰: 재사용 가능한 도메인 “내용”보다 도메인 모델링 계약을 소유한다", "disposition": "EMITTED", "target": "concept:domain-core-c01", "module": "domain-core", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-DOMAIN_CORE-L146", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/01-domain-core.md#L146" ], "sourceHeading": "Runtime reachability / wiring", "summary": "Runtime reachability / wiring", "disposition": "EMITTED", "target": "concept:domain-core-c02", "module": "domain-core", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-DOMAIN_CORE-L158", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/01-domain-core.md#L158" ], "sourceHeading": "Success / failure mechanics", "summary": "Success / failure mechanics", "disposition": "EMITTED", "target": "concept:domain-core-c03", "module": "domain-core", "topic": "result-and-failure-algebra", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_ADMIN-L50", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-admin.md#L50" ], "sourceHeading": "건강 레지스트리 — 낙관에서 시작하지 않는다", "summary": "건강 레지스트리 — 낙관에서 시작하지 않는다", "disposition": "EMITTED", "target": "concept:grpc-admin-c01", "module": "grpc-admin", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_ADMIN-L65", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-admin.md#L65" ], "sourceHeading": "배수 순서", "summary": "배수 순서", "disposition": "EMITTED", "target": "concept:grpc-admin-c02", "module": "grpc-admin", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_ADVANCED_BOOTSTRAP-L53", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-advanced-bootstrap.md#L53" ], "sourceHeading": "능력 15종과 등급 4종", "summary": "능력 15종과 등급 4종", "disposition": "EMITTED", "target": "concept:grpc-advanced-bootstrap-c01", "module": "grpc-advanced-bootstrap", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_ADVANCED_BOOTSTRAP-L76", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-advanced-bootstrap.md#L76" ], "sourceHeading": "게이트가 세 조건을 순서대로 본다", "summary": "게이트가 세 조건을 순서대로 본다", "disposition": "EMITTED", "target": "concept:grpc-advanced-bootstrap-c02", "module": "grpc-advanced-bootstrap", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_ADVANCED_BOOTSTRAP-L89", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-advanced-bootstrap.md#L89" ], "sourceHeading": "승격 게이트", "summary": "승격 게이트", "disposition": "EMITTED", "target": "concept:grpc-advanced-bootstrap-c03", "module": "grpc-advanced-bootstrap", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_ADVANCED_DIAGNOSTICS-L41", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-advanced-diagnostics.md#L41" ], "sourceHeading": "모듈의 정체", "summary": "모듈의 정체", "disposition": "EMITTED", "target": "concept:grpc-advanced-diagnostics-c01", "module": "grpc-advanced-diagnostics", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_ADVANCED_DIAGNOSTICS-L51", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-advanced-diagnostics.md#L51" ], "sourceHeading": "두 겹의 게이트", "summary": "두 겹의 게이트", "disposition": "EMITTED", "target": "concept:grpc-advanced-diagnostics-c02", "module": "grpc-advanced-diagnostics", "topic": "capability-and-disclosure-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_ADVANCED_RESILIENCE-L58", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-advanced-resilience.md#L58" ], "sourceHeading": "헤징 예산", "summary": "헤징 예산", "disposition": "EMITTED", "target": "concept:grpc-advanced-resilience-c01", "module": "grpc-advanced-resilience", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_ADVANCED_RESILIENCE-L75", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-advanced-resilience.md#L75" ], "sourceHeading": "xDS 시작 가드", "summary": "xDS 시작 가드", "disposition": "EMITTED", "target": "concept:grpc-advanced-resilience-c02", "module": "grpc-advanced-resilience", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_ADVANCED_STREAMING-L86", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-advanced-streaming.md#L86" ], "sourceHeading": "수동 흐름 제어", "summary": "수동 흐름 제어", "disposition": "EMITTED", "target": "concept:grpc-advanced-streaming-c01", "module": "grpc-advanced-streaming", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_CODEGEN-L104", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-codegen.md#L104" ], "sourceHeading": "소비자 컴파일 게이트", "summary": "소비자 컴파일 게이트", "disposition": "EMITTED", "target": "concept:grpc-codegen-c01", "module": "grpc-codegen", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_CORE_API-L105", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-core-api.md#L105" ], "sourceHeading": "Stable 모듈 목록과 불변식", "summary": "Stable 모듈 목록과 불변식", "disposition": "EMITTED", "target": "concept:grpc-core-api-c01", "module": "grpc-core-api", "topic": "identity-and-value-contracts", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_DISCOVERY-L85", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-discovery.md#L85" ], "sourceHeading": "생성자가 거부하는 것과 검증기가 보고하는 것", "summary": "생성자가 거부하는 것과 검증기가 보고하는 것", "disposition": "EMITTED", "target": "concept:grpc-discovery-c01", "module": "grpc-discovery", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_OBSERVABILITY-L46", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-observability.md#L46" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:grpc-observability-c01", "module": "grpc-observability", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_OBSERVABILITY-L59", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-observability.md#L59" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:grpc-observability-c02", "module": "grpc-observability", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_OBSERVABILITY-L74", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-observability.md#L74" ], "sourceHeading": "계약·불변식", "summary": "계약·불변식", "disposition": "EMITTED", "target": "concept:grpc-observability-c03", "module": "grpc-observability", "topic": "observability-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_OPERATION_LEDGER_JPA-L53", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-operation-ledger-jpa.md#L53" ], "sourceHeading": "스키마가 계약이다", "summary": "스키마가 계약이다", "disposition": "EMITTED", "target": "concept:grpc-operation-ledger-jpa-c01", "module": "grpc-operation-ledger-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_OPERATION_LEDGER_JPA-L76", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-operation-ledger-jpa.md#L76" ], "sourceHeading": "저장 키와 유니크 제약이 같은 행을 가리킨다", "summary": "저장 키와 유니크 제약이 같은 행을 가리킨다", "disposition": "EMITTED", "target": "concept:grpc-operation-ledger-jpa-c02", "module": "grpc-operation-ledger-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_OPERATION_LEDGER_JPA-L108", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-operation-ledger-jpa.md#L108" ], "sourceHeading": "상태 전이", "summary": "상태 전이", "disposition": "EMITTED", "target": "concept:grpc-operation-ledger-jpa-c03", "module": "grpc-operation-ledger-jpa", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_POLICY-L73", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-policy.md#L73" ], "sourceHeading": "재개 토큰 — 서명하고, 구분자를 봉인한다", "summary": "재개 토큰 — 서명하고, 구분자를 봉인한다", "disposition": "EMITTED", "target": "concept:grpc-policy-c01", "module": "grpc-policy", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_SERVER-L53", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-server.md#L53" ], "sourceHeading": "인터셉터 순서 계약", "summary": "인터셉터 순서 계약", "disposition": "EMITTED", "target": "concept:grpc-server-c01", "module": "grpc-server", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_SPRING_BOOT_STARTER-L42", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-spring-boot-starter.md#L42" ], "sourceHeading": "모듈의 정체와 격리 규칙", "summary": "모듈의 정체와 격리 규칙", "disposition": "EMITTED", "target": "concept:grpc-spring-boot-starter-c01", "module": "grpc-spring-boot-starter", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_SPRING_BOOT_STARTER-L87", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-spring-boot-starter.md#L87" ], "sourceHeading": "검증기가 담은 규칙", "summary": "검증기가 담은 규칙", "disposition": "EMITTED", "target": "concept:grpc-spring-boot-starter-c02", "module": "grpc-spring-boot-starter", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-GRPC_TESTKIT-L102", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/grpc/grpc-testkit.md#L102" ], "sourceHeading": "릴리스 게이트 — 문서가 후속이 아니라 차단 사유다", "summary": "릴리스 게이트 — 문서가 후속이 아니라 차단 사유다", "disposition": "EMITTED", "target": "concept:grpc-testkit-c01", "module": "grpc-testkit", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_API-L57", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L57" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-admin-api-c01", "module": "messaging-admin-api", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_API-L98", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L98" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-admin-api-c02", "module": "messaging-admin-api", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_API-L185", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L185" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-admin-api-c03", "module": "messaging-admin-api", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_API-L493", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L493" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-admin-api-c04", "module": "messaging-admin-api", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_API-L543", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L543" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-admin-api-c05", "module": "messaging-admin-api", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_API-L588", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L588" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-admin-api-c06", "module": "messaging-admin-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_API-L802", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-api.md#L802" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-admin-api-c07", "module": "messaging-admin-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_RUNTIME-L62", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L62" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-admin-runtime-c01", "module": "messaging-admin-runtime", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_RUNTIME-L78", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L78" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-admin-runtime-c02", "module": "messaging-admin-runtime", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_RUNTIME-L163", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L163" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-admin-runtime-c03", "module": "messaging-admin-runtime", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_RUNTIME-L440", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L440" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-admin-runtime-c04", "module": "messaging-admin-runtime", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_RUNTIME-L472", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L472" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-admin-runtime-c05", "module": "messaging-admin-runtime", "topic": "observability-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_RUNTIME-L493", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L493" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-admin-runtime-c06", "module": "messaging-admin-runtime", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_ADMIN_RUNTIME-L772", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-admin-runtime.md#L772" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-admin-runtime-c07", "module": "messaging-admin-runtime", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLAIM_CHECK-L57", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L57" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-claim-check-c01", "module": "messaging-claim-check", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLAIM_CHECK-L85", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L85" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-claim-check-c02", "module": "messaging-claim-check", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLAIM_CHECK-L124", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L124" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-claim-check-c03", "module": "messaging-claim-check", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLAIM_CHECK-L260", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L260" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-claim-check-c04", "module": "messaging-claim-check", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLAIM_CHECK-L270", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L270" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-claim-check-c05", "module": "messaging-claim-check", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLAIM_CHECK-L286", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L286" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-claim-check-c06", "module": "messaging-claim-check", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLAIM_CHECK-L436", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-claim-check.md#L436" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-claim-check-c07", "module": "messaging-claim-check", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLOUDEVENTS-L48", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L48" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-cloudevents-c01", "module": "messaging-cloudevents", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLOUDEVENTS-L80", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L80" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-cloudevents-c02", "module": "messaging-cloudevents", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLOUDEVENTS-L92", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L92" ], "sourceHeading": "패키지/컴포넌트 지도", "summary": "패키지/컴포넌트 지도", "disposition": "EMITTED", "target": "concept:messaging-cloudevents-c03", "module": "messaging-cloudevents", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLOUDEVENTS-L113", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L113" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-cloudevents-c04", "module": "messaging-cloudevents", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLOUDEVENTS-L290", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L290" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-cloudevents-c05", "module": "messaging-cloudevents", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLOUDEVENTS-L298", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L298" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-cloudevents-c06", "module": "messaging-cloudevents", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLOUDEVENTS-L321", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L321" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-cloudevents-c07", "module": "messaging-cloudevents", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CLOUDEVENTS-L451", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-cloudevents.md#L451" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-cloudevents-c08", "module": "messaging-cloudevents", "topic": "result-and-failure-algebra", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CORE_API-L70", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L70" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-core-api-c01", "module": "messaging-core-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CORE_API-L101", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L101" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-core-api-c02", "module": "messaging-core-api", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CORE_API-L123", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L123" ], "sourceHeading": "패키지/컴포넌트 지도", "summary": "패키지/컴포넌트 지도", "disposition": "EMITTED", "target": "concept:messaging-core-api-c03", "module": "messaging-core-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CORE_API-L180", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L180" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-core-api-c04", "module": "messaging-core-api", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CORE_API-L406", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L406" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-core-api-c05", "module": "messaging-core-api", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CORE_API-L419", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L419" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-core-api-c06", "module": "messaging-core-api", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CORE_API-L463", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L463" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-core-api-c07", "module": "messaging-core-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_CORE_API-L734", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-core-api.md#L734" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-core-api-c08", "module": "messaging-core-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_INBOX_JDBC_POSTGRESQL-L57", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L57" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-inbox-jdbc-postgresql-c01", "module": "messaging-inbox-jdbc-postgresql", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_INBOX_JDBC_POSTGRESQL-L98", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L98" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-inbox-jdbc-postgresql-c02", "module": "messaging-inbox-jdbc-postgresql", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_INBOX_JDBC_POSTGRESQL-L146", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L146" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-inbox-jdbc-postgresql-c03", "module": "messaging-inbox-jdbc-postgresql", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_INBOX_JDBC_POSTGRESQL-L319", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L319" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-inbox-jdbc-postgresql-c04", "module": "messaging-inbox-jdbc-postgresql", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_INBOX_JDBC_POSTGRESQL-L329", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L329" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-inbox-jdbc-postgresql-c05", "module": "messaging-inbox-jdbc-postgresql", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_INBOX_JDBC_POSTGRESQL-L346", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L346" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-inbox-jdbc-postgresql-c06", "module": "messaging-inbox-jdbc-postgresql", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_INBOX_JDBC_POSTGRESQL-L581", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-inbox-jdbc-postgresql.md#L581" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-inbox-jdbc-postgresql-c07", "module": "messaging-inbox-jdbc-postgresql", "topic": "result-and-failure-algebra", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_KAFKA-L69", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-kafka.md#L69" ], "sourceHeading": "소비자 런타임 — 스레드 규율이 설계다", "summary": "소비자 런타임 — 스레드 규율이 설계다", "disposition": "EMITTED", "target": "concept:messaging-kafka-c01", "module": "messaging-kafka", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_KAFKA-L87", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-kafka.md#L87" ], "sourceHeading": "커밋은 연속 워터마크로만 전진한다", "summary": "커밋은 연속 워터마크로만 전진한다", "disposition": "EMITTED", "target": "concept:messaging-kafka-c02", "module": "messaging-kafka", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L54", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L54" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-kafka-share-experimental-c01", "module": "messaging-kafka-share-experimental", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L84", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L84" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-kafka-share-experimental-c02", "module": "messaging-kafka-share-experimental", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L131", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L131" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-kafka-share-experimental-c03", "module": "messaging-kafka-share-experimental", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L234", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L234" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-kafka-share-experimental-c04", "module": "messaging-kafka-share-experimental", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L244", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L244" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-kafka-share-experimental-c05", "module": "messaging-kafka-share-experimental", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L258", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L258" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-kafka-share-experimental-c06", "module": "messaging-kafka-share-experimental", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_KAFKA_SHARE_EXPERIMENTAL-L399", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-kafka-share-experimental.md#L399" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-kafka-share-experimental-c07", "module": "messaging-kafka-share-experimental", "topic": "capability-and-disclosure-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_NATS_EXPERIMENTAL-L82", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-nats-experimental.md#L82" ], "sourceHeading": "능력 선언", "summary": "능력 선언", "disposition": "EMITTED", "target": "concept:messaging-nats-experimental-c01", "module": "messaging-nats-experimental", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_NATS_EXPERIMENTAL-L94", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-nats-experimental.md#L94" ], "sourceHeading": "프로파일이 스스로 거부하는 것", "summary": "프로파일이 스스로 거부하는 것", "disposition": "EMITTED", "target": "concept:messaging-nats-experimental-c02", "module": "messaging-nats-experimental", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OBSERVABILITY-L52", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L52" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-observability-c01", "module": "messaging-observability", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OBSERVABILITY-L70", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L70" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-observability-c02", "module": "messaging-observability", "topic": "observability-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OBSERVABILITY-L113", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L113" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-observability-c03", "module": "messaging-observability", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OBSERVABILITY-L334", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L334" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-observability-c04", "module": "messaging-observability", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OBSERVABILITY-L346", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L346" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-observability-c05", "module": "messaging-observability", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OBSERVABILITY-L363", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L363" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-observability-c06", "module": "messaging-observability", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OBSERVABILITY-L597", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-observability.md#L597" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-observability-c07", "module": "messaging-observability", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L66", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L66" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-outbox-jdbc-postgresql-c01", "module": "messaging-outbox-jdbc-postgresql", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L102", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L102" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-outbox-jdbc-postgresql-c02", "module": "messaging-outbox-jdbc-postgresql", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L177", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L177" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-outbox-jdbc-postgresql-c03", "module": "messaging-outbox-jdbc-postgresql", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L430", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L430" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-outbox-jdbc-postgresql-c04", "module": "messaging-outbox-jdbc-postgresql", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L486", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L486" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-outbox-jdbc-postgresql-c05", "module": "messaging-outbox-jdbc-postgresql", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_OUTBOX_JDBC_POSTGRESQL-L767", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-outbox-jdbc-postgresql.md#L767" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-outbox-jdbc-postgresql-c06", "module": "messaging-outbox-jdbc-postgresql", "topic": "transaction-and-consistency-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_POLICY-L56", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L56" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-policy-c01", "module": "messaging-policy", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_POLICY-L84", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L84" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-policy-c02", "module": "messaging-policy", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_POLICY-L135", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L135" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-policy-c03", "module": "messaging-policy", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_POLICY-L411", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L411" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-policy-c04", "module": "messaging-policy", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_POLICY-L423", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L423" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-policy-c05", "module": "messaging-policy", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_POLICY-L451", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L451" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-policy-c06", "module": "messaging-policy", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_POLICY-L603", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L603" ], "sourceHeading": "E. control: the publish path IS constructed in production", "summary": "E. control: the publish path IS constructed in production", "disposition": "EMITTED", "target": "concept:messaging-policy-c07", "module": "messaging-policy", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_POLICY-L617", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L617" ], "sourceHeading": "G. every file that acts on a RetryDecision variant", "summary": "G. every file that acts on a RetryDecision variant", "disposition": "EMITTED", "target": "concept:messaging-policy-c08", "module": "messaging-policy", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_POLICY-L700", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-policy.md#L700" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-policy-c09", "module": "messaging-policy", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_PULSAR_EXPERIMENTAL-L50", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-pulsar-experimental.md#L50" ], "sourceHeading": "실패 분류 — 타입 있는 신호만 본다", "summary": "실패 분류 — 타입 있는 신호만 본다", "disposition": "EMITTED", "target": "concept:messaging-pulsar-experimental-c01", "module": "messaging-pulsar-experimental", "topic": "result-and-failure-algebra", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RABBIT-L91", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-rabbit.md#L91" ], "sourceHeading": "소비·정착·죽은 편지의 세 규율", "summary": "소비·정착·죽은 편지의 세 규율", "disposition": "EMITTED", "target": "concept:messaging-rabbit-c01", "module": "messaging-rabbit", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RABBIT-L106", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-rabbit.md#L106" ], "sourceHeading": "자격증명은 연결 시도마다 해석된다", "summary": "자격증명은 연결 시도마다 해석된다", "disposition": "EMITTED", "target": "concept:messaging-rabbit-c02", "module": "messaging-rabbit", "topic": "security-and-trust-boundaries", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RELIABILITY_API-L51", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L51" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-reliability-api-c01", "module": "messaging-reliability-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RELIABILITY_API-L92", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L92" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-reliability-api-c02", "module": "messaging-reliability-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RELIABILITY_API-L143", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L143" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-reliability-api-c03", "module": "messaging-reliability-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RELIABILITY_API-L338", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L338" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-reliability-api-c04", "module": "messaging-reliability-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RELIABILITY_API-L348", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L348" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-reliability-api-c05", "module": "messaging-reliability-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RELIABILITY_API-L366", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L366" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-reliability-api-c06", "module": "messaging-reliability-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RELIABILITY_API-L610", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-reliability-api.md#L610" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-reliability-api-c07", "module": "messaging-reliability-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RUNTIME_CORE-L55", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L55" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-runtime-core-c01", "module": "messaging-runtime-core", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RUNTIME_CORE-L86", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L86" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-runtime-core-c02", "module": "messaging-runtime-core", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RUNTIME_CORE-L128", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L128" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-runtime-core-c03", "module": "messaging-runtime-core", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RUNTIME_CORE-L387", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L387" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-runtime-core-c04", "module": "messaging-runtime-core", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RUNTIME_CORE-L397", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L397" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-runtime-core-c05", "module": "messaging-runtime-core", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RUNTIME_CORE-L429", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L429" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-runtime-core-c06", "module": "messaging-runtime-core", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_RUNTIME_CORE-L631", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-runtime-core.md#L631" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-runtime-core-c07", "module": "messaging-runtime-core", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_API-L62", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-api.md#L62" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-schema-api-c01", "module": "messaging-schema-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_API-L79", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-api.md#L79" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-schema-api-c02", "module": "messaging-schema-api", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_API-L113", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-api.md#L113" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-schema-api-c03", "module": "messaging-schema-api", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_API-L255", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-api.md#L255" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-schema-api-c04", "module": "messaging-schema-api", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_API-L267", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-api.md#L267" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-schema-api-c05", "module": "messaging-schema-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_API-L282", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-api.md#L282" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-schema-api-c06", "module": "messaging-schema-api", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_API-L432", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-api.md#L432" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-schema-api-c07", "module": "messaging-schema-api", "topic": "result-and-failure-algebra", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_AVRO-L49", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L49" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-schema-avro-c01", "module": "messaging-schema-avro", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_AVRO-L75", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L75" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-schema-avro-c02", "module": "messaging-schema-avro", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_AVRO-L106", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L106" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-schema-avro-c03", "module": "messaging-schema-avro", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_AVRO-L254", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L254" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-schema-avro-c04", "module": "messaging-schema-avro", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_AVRO-L266", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L266" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-schema-avro-c05", "module": "messaging-schema-avro", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_AVRO-L298", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L298" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-schema-avro-c06", "module": "messaging-schema-avro", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_AVRO-L457", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-avro.md#L457" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-schema-avro-c07", "module": "messaging-schema-avro", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_JSON-L46", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-json.md#L46" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-schema-json-c01", "module": "messaging-schema-json", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_JSON-L71", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-json.md#L71" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-schema-json-c02", "module": "messaging-schema-json", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_JSON-L124", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-json.md#L124" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-schema-json-c03", "module": "messaging-schema-json", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_JSON-L238", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-json.md#L238" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-schema-json-c04", "module": "messaging-schema-json", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_JSON-L246", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-json.md#L246" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-schema-json-c05", "module": "messaging-schema-json", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_JSON-L263", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-json.md#L263" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-schema-json-c06", "module": "messaging-schema-json", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_JSON-L396", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-json.md#L396" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-schema-json-c07", "module": "messaging-schema-json", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_PROTOBUF-L49", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-protobuf.md#L49" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-schema-protobuf-c01", "module": "messaging-schema-protobuf", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_PROTOBUF-L76", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-protobuf.md#L76" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-schema-protobuf-c02", "module": "messaging-schema-protobuf", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_PROTOBUF-L112", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-protobuf.md#L112" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-schema-protobuf-c03", "module": "messaging-schema-protobuf", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_PROTOBUF-L229", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-protobuf.md#L229" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-schema-protobuf-c04", "module": "messaging-schema-protobuf", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_PROTOBUF-L239", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-protobuf.md#L239" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-schema-protobuf-c05", "module": "messaging-schema-protobuf", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_PROTOBUF-L258", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-protobuf.md#L258" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-schema-protobuf-c06", "module": "messaging-schema-protobuf", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SCHEMA_PROTOBUF-L458", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-schema-protobuf.md#L458" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-schema-protobuf-c07", "module": "messaging-schema-protobuf", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SECURITY-L52", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-security.md#L52" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-security-c01", "module": "messaging-security", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SECURITY-L91", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-security.md#L91" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-security-c02", "module": "messaging-security", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SECURITY-L141", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-security.md#L141" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-security-c03", "module": "messaging-security", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SECURITY-L327", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-security.md#L327" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-security-c04", "module": "messaging-security", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SECURITY-L339", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-security.md#L339" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-security-c05", "module": "messaging-security", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SECURITY-L359", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-security.md#L359" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-security-c06", "module": "messaging-security", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SECURITY-L562", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-security.md#L562" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-security-c07", "module": "messaging-security", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SPRING_BOOT_STARTER-L94", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-spring-boot-starter.md#L94" ], "sourceHeading": "선택은 닫힌 레지스트리이고, 등록과 조립은 다르다", "summary": "선택은 닫힌 레지스트리이고, 등록과 조립은 다르다", "disposition": "EMITTED", "target": "concept:messaging-spring-boot-starter-c01", "module": "messaging-spring-boot-starter", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SPRING_BOOT_STARTER-L111", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-spring-boot-starter.md#L111" ], "sourceHeading": "설정이 프로파일이 된다", "summary": "설정이 프로파일이 된다", "disposition": "EMITTED", "target": "concept:messaging-spring-boot-starter-c02", "module": "messaging-spring-boot-starter", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SPRING_BOOT_STARTER-L155", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-spring-boot-starter.md#L155" ], "sourceHeading": "종료 순서가 두 수명 주기의 phase 로 표현된다", "summary": "종료 순서가 두 수명 주기의 phase 로 표현된다", "disposition": "EMITTED", "target": "concept:messaging-spring-boot-starter-c03", "module": "messaging-spring-boot-starter", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L56", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L56" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-spring-cloud-stream-bridge-c01", "module": "messaging-spring-cloud-stream-bridge", "topic": "composition-and-lifecycle-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L86", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L86" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-spring-cloud-stream-bridge-c02", "module": "messaging-spring-cloud-stream-bridge", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L146", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L146" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-spring-cloud-stream-bridge-c03", "module": "messaging-spring-cloud-stream-bridge", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L309", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L309" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-spring-cloud-stream-bridge-c04", "module": "messaging-spring-cloud-stream-bridge", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L319", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L319" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-spring-cloud-stream-bridge-c05", "module": "messaging-spring-cloud-stream-bridge", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_SPRING_CLOUD_STREAM_BRIDGE-L341", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-spring-cloud-stream-bridge.md#L341" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-spring-cloud-stream-bridge-c06", "module": "messaging-spring-cloud-stream-bridge", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TESTKIT-L68", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L68" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-testkit-c01", "module": "messaging-testkit", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TESTKIT-L99", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L99" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-testkit-c02", "module": "messaging-testkit", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TESTKIT-L140", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L140" ], "sourceHeading": "패키지/컴포넌트 지도", "summary": "패키지/컴포넌트 지도", "disposition": "EMITTED", "target": "concept:messaging-testkit-c03", "module": "messaging-testkit", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TESTKIT-L169", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L169" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-testkit-c04", "module": "messaging-testkit", "topic": "identity-and-value-contracts", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TESTKIT-L452", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L452" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-testkit-c05", "module": "messaging-testkit", "topic": "capability-and-disclosure-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TESTKIT-L492", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L492" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-testkit-c06", "module": "messaging-testkit", "topic": "result-and-failure-algebra", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TESTKIT-L539", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L539" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-testkit-c07", "module": "messaging-testkit", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TESTKIT-L848", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-testkit.md#L848" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-testkit-c08", "module": "messaging-testkit", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TRANSPORT_SPI-L62", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md#L62" ], "sourceHeading": "모듈의 정체와 경계", "summary": "모듈의 정체와 경계", "disposition": "EMITTED", "target": "concept:messaging-transport-spi-c01", "module": "messaging-transport-spi", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TRANSPORT_SPI-L90", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md#L90" ], "sourceHeading": "의존성과 런타임 배선", "summary": "의존성과 런타임 배선", "disposition": "EMITTED", "target": "concept:messaging-transport-spi-c02", "module": "messaging-transport-spi", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TRANSPORT_SPI-L124", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md#L124" ], "sourceHeading": "계약·불변식·상태 모델", "summary": "계약·불변식·상태 모델", "disposition": "EMITTED", "target": "concept:messaging-transport-spi-c03", "module": "messaging-transport-spi", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TRANSPORT_SPI-L326", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md#L326" ], "sourceHeading": "주요 실행 경로", "summary": "주요 실행 경로", "disposition": "EMITTED", "target": "concept:messaging-transport-spi-c04", "module": "messaging-transport-spi", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TRANSPORT_SPI-L338", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md#L338" ], "sourceHeading": "실패 경로와 복구/번역", "summary": "실패 경로와 복구/번역", "disposition": "EMITTED", "target": "concept:messaging-transport-spi-c05", "module": "messaging-transport-spi", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TRANSPORT_SPI-L352", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md#L352" ], "sourceHeading": "트랜잭션·동시성·수명주기", "summary": "트랜잭션·동시성·수명주기", "disposition": "EMITTED", "target": "concept:messaging-transport-spi-c06", "module": "messaging-transport-spi", "topic": "state-machines-and-ownership", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-MESSAGING_TRANSPORT_SPI-L579", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/messaging/messaging-transport-spi.md#L579" ], "sourceHeading": "Git/설계 문서에서 확인한 변화와 실패 기록", "summary": "Git/설계 문서에서 확인한 변화와 실패 기록", "disposition": "EMITTED", "target": "concept:messaging-transport-spi-c07", "module": "messaging-transport-spi", "topic": "result-and-failure-algebra", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-SHARED_CONTRACT-L51", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/02-shared-contract.md#L51" ], "sourceHeading": "주요 계약과 불변식", "summary": "주요 계약과 불변식", "disposition": "EMITTED", "target": "concept:shared-contract-c01", "module": "shared-contract", "topic": "delivery-and-settlement-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-SHARED_CONTRACT-L69", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/02-shared-contract.md#L69" ], "sourceHeading": "Permission", "summary": "Permission", "disposition": "EMITTED", "target": "concept:shared-contract-c02", "module": "shared-contract", "topic": "admission-budget-and-backpressure", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-SHARED_CONTRACT-L108", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/02-shared-contract.md#L108" ], "sourceHeading": "Activation and health snapshot", "summary": "Activation and health snapshot", "disposition": "EMITTED", "target": "concept:shared-contract-c03", "module": "shared-contract", "topic": "result-and-failure-algebra", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." }, { "id": "C-SHARED_CONTRACT-L114", "kindCandidate": "CONCEPT", "priority": "NONE", "sourceRefs": [ "analysis/02-shared-contract.md#L114" ], "sourceHeading": "Messaging envelope schema", "summary": "Messaging envelope schema", "disposition": "EMITTED", "target": "concept:shared-contract-c04", "module": "shared-contract", "topic": "schema-and-wire-models", "reason": "CONCEPT recall pass — SSOT 본문이 설명하는 구현된 메커니즘. §17 finding 이 아니라 정상 동작 모델이다." } ], "counts": { "total": 965, "emitted": 915, "merged": 49, "blocked": 1, "rejected": 0 }, "unmapped": 0, "explicitAnalysisCandidates": 205, "explicitPriorityFindings": 200, "explicitUnresolvedWithoutPriority": 5, "cycle2": { "added": 13, "note": "사이클 2 초기 통독에서 노드로 낸 것(역사 기록)." }, "cycle3": { "added": 211, "topicsAdded": 9, "note": "61개 canonical module SSOT 전수 recall. §17 explicit finding 392건 중 미회수 211건을 회수했다." }, "conceptRecall": { "reviewed": 568, "emitted": 360, "mergedIntoParentMechanism": 138, "rejectedThinBody": 71, "topicsAdded": 12, "note": "61개 SSOT 본문의 메커니즘 절을 전수 검토했다. 상위 절이 이미 같은 메커니즘을 덮는 하위 절은 병합했고, 독립 기록으로 설명할 본문이 부족한 절은 제외했다." } }