Files
document-haness/docs/clean-architecture-backend-template/final/evidence/rendered/analysis-finding-a05-f034.svg
T
DongHyeonkaandClaude Opus 5 b2963105a8 docs(keycloak-session-store): import the session-storage lab as a new project
The keycloak project ended with four open questions that design could not
settle. A two-VM lab was built to answer them by measurement, and this is
that material: 26 experiments, 125 raw command outputs, 22 browser captures.

Follows the import procedure in README.md.

  source/     the originating repository verbatim — 78 documents, 28 SVGs,
              8 manifests, plus .source-revision recording the commit
  final/      the SSOT
    document.md   729 lines written from the 29 experiment documents, not
                  concatenated: what was predicted, what was measured, and
                  where the measurement itself was wrong
    evidence/raw    125 outputs, flattened to <experiment>__<file> because
                    the originals collided (01-baseline.txt appeared three
                    times) and the audit only globs the top level
    evidence/meta   one per raw file; command and exitCode are null and the
                    README says why rather than inventing them
    evidence/browser  22 captures
    assets/       three diagrams through techviz
    .techviz/     their VizSpecs

A separate project rather than an addition to keycloak: the B-layer answers
that project's four questions, but the A, C and D layers are about cluster
failure, SSO and operations, and one document.md should hold one subject.
The four question records there can point here through 관계.

Recorded rather than papered over: only three of the 28 diagrams were
remade. The repository forbids hand-drawn SVG and forbids titles inside the
canvas; all 28 originals carry both, so converting them is redrawing, not
reformatting. They stay in source/ and the gap is written into the document.

verify-pipeline.py passes. audit-records.py reports no issues.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-04 22:51:59 +09:00

360 lines
71 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="6574" viewBox="0 0 1200 6574" role="img">
<title>terminal evidence</title>
<desc>Terminal-style rendering generated from retained command output. Sensitive-looking values are redacted in the visual asset.</desc>
<rect x="1" y="1" width="1198" height="6572" rx="14" fill="#0d1117" stroke="#30363d"/>
<rect x="1" y="1" width="1198" height="44" rx="14" fill="#161b22"/>
<rect x="1" y="30" width="1198" height="14" fill="#161b22"/>
<circle cx="24" cy="22" r="6" fill="#ff5f57"/>
<circle cx="44" cy="22" r="6" fill="#febc2e"/>
<circle cx="64" cy="22" r="6" fill="#28c840"/>
<text x="92" y="27" fill="#8b949e" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace">terminal evidence</text>
<text x="24" y="68" fill="#c9d1d9" font-size="15" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">$ #!/bin/bash
set -euo pipefail
cd /shared/codebase/clean-architecture-backend-template
. /tmp/lib.sh
Y=src/config/jpa/r</tspan><tspan x="24" dy="22">eadiness-cards.yaml
G=src/gradle/jpa-evidence.gradle
B=src/build.gradle
R=src/adapter/outbound/persistence-jpa/src/postg</tspan><tspan x="24" dy="22">resqlIntegrationTest/java/dev/caskeleton/adapter/outbound/persistence/readiness
for f in &quot;$Y&quot; &quot;$G&quot; &quot;$B&quot; &quot;$R/PostgreSqlAg</tspan><tspan x="24" dy="22">gregateIntegrationTest.java&quot; \
&quot;$R/PostgreSqlQueryIntegrationTest.java&quot; &quot;$R/PostgreSqlLifecycleIntegrationTest.</tspan><tspan x="24" dy="22">java&quot;; do test -f &quot;$f&quot;; done
echo &quot;# 카드 전체와 selected 카드의 태그 커버리지&quot;
python3 - &quot;$Y&quot; &lt;&lt;&#x27;PY&#x27;
import json, sys
</tspan><tspan x="24" dy="22">from collections import Counter
d = json.load(open(sys.argv[1]))
c = Counter(v.get(&#x27;state&#x27;) for v in d[&#x27;cards&#x27;].values()</tspan><tspan x="24" dy="22">)
print(&#x27; 카드 %d 개 · %s&#x27; % (len(d[&#x27;cards&#x27;]), &#x27; · &#x27;.join(&#x27;%s %d&#x27; % kv for kv in sorted(c.items()))))
for k, v in d[&#x27;</tspan><tspan x="24" dy="22">cards&#x27;].items():
if v.get(&#x27;state&#x27;) != &#x27;selected&#x27;:
continue
ev = v.get(&#x27;evidence&#x27;, {})
scen, claims =</tspan><tspan x="24" dy="22"> ev.get(&#x27;scenarios&#x27;, []), ev.get(&#x27;task-claims&#x27;, [])
tags = v.get(&#x27;required-evidence&#x27;, [])
covered = set()
fo</tspan><tspan x="24" dy="22">r s in scen: covered |= set(s.get(&#x27;covers&#x27;, []))
for c2 in claims: covered |= set(c2.get(&#x27;covers&#x27;, []))
print(&#x27; </tspan><tspan x="24" dy="22"> %-26s 태그 %d · 시나리오 %d · task-claim %d · support-task %d · 레지스트리가 덮지 않는 태그 %s&#x27;
% (k, len</tspan><tspan x="24" dy="22">(tags), len(scen), len(claims), len(v.get(&#x27;support-tasks&#x27;) or []),
sorted(set(tags) - covered) or &#x27;없음&#x27;))
</tspan><tspan x="24" dy="22">PY
echo
echo &quot;# 그 두 태그는 레지스트리가 덮을 수 없다&quot;
echo &quot; build.gradle 이 no-skip 을 필수로 요구하면서 클레임에서</tspan><tspan x="24" dy="22">는 빼는 자리 :&quot;
at &quot;$B&quot; 1672 1680 build.gradle
echo &quot; 생성기가 JUnit XML 결과로 채우는 자리 :&quot;
at &quot;$G&quot; 676 692 jpa-evid</tspan><tspan x="24" dy="22">ence.gradle
echo
echo &quot;# 시나리오가 가리키는 시험이 프로덕션을 지나는가&quot;
python3 - &quot;$Y&quot; &lt;&lt;&#x27;PY&#x27;
import json, sys
d = jso</tspan><tspan x="24" dy="22">n.load(open(sys.argv[1]))
for k in (&#x27;jpa-aggregate-store&#x27;, &#x27;jpa-query-model&#x27;, &#x27;jpa-observability-lifecycle&#x27;):
v = d[</tspan><tspan x="24" dy="22">&#x27;cards&#x27;][k]
print(&#x27; ==&#x27;, k)
print(&#x27; 필수 태그 :&#x27;, v.get(&#x27;required-evidence&#x27;))
for s in v.get(&#x27;evidence&#x27;</tspan><tspan x="24" dy="22">, {}).get(&#x27;scenarios&#x27;, []):
print(&#x27; 시나리오 :&#x27;, s[&#x27;selector&#x27;].split(&#x27;#&#x27;)[-1])
print(&#x27; 덮는 태</tspan><tspan x="24" dy="22">그 :&#x27;, s.get(&#x27;covers&#x27;))
PY
echo
echo &quot;# 그 세 시험의 본문&quot;
at &quot;$R/PostgreSqlAggregateIntegrationTest.java&quot; 19 30 Postgr</tspan><tspan x="24" dy="22">eSqlAggregateIntegrationTest.java
at &quot;$R/PostgreSqlAggregateIntegrationTest.java&quot; 36 84 PostgreSqlAggregateIntegrationTe</tspan><tspan x="24" dy="22">st.java
echo
at &quot;$R/PostgreSqlQueryIntegrationTest.java&quot; 22 35 PostgreSqlQueryIntegrationTest.java
at &quot;$R/PostgreSqlQuer</tspan><tspan x="24" dy="22">yIntegrationTest.java&quot; 45 80 PostgreSqlQueryIntegrationTest.java
echo
at &quot;$R/PostgreSqlLifecycleIntegrationTest.java&quot; 51</tspan><tspan x="24" dy="22"> 66 PostgreSqlLifecycleIntegrationTest.java
at &quot;$R/PostgreSqlLifecycleIntegrationTest.java&quot; 107 119 PostgreSqlLifecycleI</tspan><tspan x="24" dy="22">ntegrationTest.java
echo
echo &quot;# 그 시험들이 프로덕션 타입에 닿는가&quot;
for f in PostgreSqlAggregateIntegrationTest Postgr</tspan><tspan x="24" dy="22">eSqlQueryIntegrationTest PostgreSqlLifecycleIntegrationTest; do
printf &#x27; %-38s dev.caskeleton 를 import 하는 줄 : %s </tspan><tspan x="24" dy="22">개\n&#x27; &quot;$f.java&quot; \
&quot;$({ grep -cE &#x27;^import dev\.caskeleton&#x27; &quot;$R/$f.java&quot; || true; })&quot;
done
echo &quot; [대조] 같은 소스 세</tspan><tspan x="24" dy="22">트가 훑은 파일 :&quot;
printf &#x27; %s 개\n&#x27; &quot;$(git ls-files -- &quot;$R/*.java&quot; | grep -c .)&quot;
echo &quot; import 만이 아니라 이름 단위</tspan><tspan x="24" dy="22">로 훑어도 :&quot;
for f in PostgreSqlAggregateIntegrationTest PostgreSqlQueryIntegrationTest PostgreSqlLifecycleIntegrationTe</tspan><tspan x="24" dy="22">st; do
n=0
while read -r t; do
git ls-files -- &quot;src/**/src/main/**/$t.java&quot; | grep -q . &amp;&amp; n=$((n+1)) || true
</tspan><tspan x="24" dy="22">done &lt; &lt;(grep -oE &#x27;\b[A-Z][A-Za-z0-9]+\b&#x27; &quot;$R/$f.java&quot; | sort -u)
printf &#x27; %-38s 프로덕션에 정의된 타입 이름 : %s </tspan><tspan x="24" dy="22">개\n&#x27; &quot;$f.java&quot; &quot;$n&quot;
done
echo &quot; [대조] PostgreSqlTransactionIntegrationTest 에 같은 검사를 걸면 :&quot;
TT=$(git ls-files -</tspan><tspan x="24" dy="22">- &#x27;**/PostgreSqlTransactionIntegrationTest.java&#x27; | head -1)
n=0
while read -r t; do
git ls-files -- &quot;src/**/src/main/*</tspan><tspan x="24" dy="22">*/$t.java&quot; | grep -q . &amp;&amp; n=$((n+1)) || true
done &lt; &lt;(grep -oE &#x27;\b[A-Z][A-Za-z0-9]+\b&#x27; &quot;$TT&quot; | sort -u)
printf &#x27; 프로</tspan><tspan x="24" dy="22">덕션에 정의된 타입 이름 : %s 개\n&#x27; &quot;$n&quot;
echo &quot; 두 시험이 쓰는 테이블 :&quot;
{ grep -hoE &#x27;readiness_[a-z]+&#x27; &quot;$R/PostgreSqlAg</tspan><tspan x="24" dy="22">gregateIntegrationTest.java&quot; &quot;$R/PostgreSqlQueryIntegrationTest.java&quot; || true; } | sort -u | sed &#x27;s#^# #&#x27;
printf &#x27; </tspan><tspan x="24" dy="22">그 이름이 프로덕션 소스나 마이그레이션에 나오는가 : %s 개\n&#x27; &quot;$(count &#x27;readiness_aggregate|readiness_query&#x27; &#x27;src/**/src/</tspan><tspan x="24" dy="22">main/**&#x27;)&quot;
printf &#x27; [대조] 그 검색이 훑은 main 파일 : %s 개\n&#x27; &quot;$(git ls-files -- &#x27;src/**/src/main/**&#x27; | grep -c .)&quot;
pr</tspan><tspan x="24" dy="22">intf &#x27; postgresql-primary 가 프로덕션에 나오는 파일 : %s 개\n&#x27; &quot;$(count &#x27;postgresql-primary&#x27; &#x27;src/**/src/main/**&#x27;)&quot;
ec</tspan><tspan x="24" dy="22">ho
echo &quot;# 대조 — 시나리오 일곱을 가진 카드&quot;
python3 - &quot;$Y&quot; &lt;&lt;&#x27;PY&#x27;
import json, sys
d = json.load(open(sys.argv[1]))
v </tspan><tspan x="24" dy="22">= d[&#x27;cards&#x27;][&#x27;jpa-transaction-runtime&#x27;]
print(&#x27; 필수 태그 :&#x27;, v.get(&#x27;required-evidence&#x27;))
for s in v.get(&#x27;evidence&#x27;,</tspan><tspan x="24" dy="22"> {}).get(&#x27;scenarios&#x27;, []):
print(&#x27; 시나리오 :&#x27;, s[&#x27;selector&#x27;].split(&#x27;#&#x27;)[-1], &#x27;-&gt;&#x27;, s.get(&#x27;covers&#x27;))
PY
T=$(git </tspan><tspan x="24" dy="22">ls-files -- &#x27;**/PostgreSqlTransactionIntegrationTest.java&#x27; &#x27;**/PostgreSql*Transaction*IntegrationTest.java&#x27; | head -1)
t</tspan><tspan x="24" dy="22">est -n &quot;$T&quot;
printf &#x27; %s 가 dev.caskeleton 를 import 하는 줄 : %s 개\n&#x27; &quot;$(basename &quot;$T&quot;)&quot; &quot;$({ grep -cE &#x27;^import dev\.c</tspan><tspan x="24" dy="22">askeleton&#x27; &quot;$T&quot; || true; })&quot;
{ grep -nE &#x27;^import dev\.caskeleton&#x27; &quot;$T&quot; || true; } | head -8 | sed -E &#x27;s#^([0-9]+): *# </tspan><tspan x="24" dy="22"> :\1 #&#x27;
</tspan></text>
<text x="24" y="1058" fill="#8b949e" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">cwd: /shared/codebase/clean-architecture-backend-template</tspan></text>
<text x="24" y="1080" fill="#8b949e" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">time: 2026-09-04T07:07:49+00:00 · exit 0</tspan></text>
<line x1="24" y1="1094" x2="1176" y2="1094" stroke="#30363d"/>
<text x="24" y="1134" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 카드 전체와 selected 카드의 태그 커버리지</tspan></text>
<text x="24" y="1156" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 카드 17 개 · implemented-candidate 6 · not-implemented 4 · selected 7</tspan></text>
<text x="24" y="1178" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-observability-lifecycle 태그 4 · 시나리오 2 · task-claim 0 · support-task 0 · 레지스트리가 덮지 않는 태그 [&#x27;no-skip&#x27;]</tspan></text>
<text x="24" y="1200" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-security-baseline 태그 6 · 시나리오 3 · task-claim 1 · support-task 3 · 레지스트리가 덮지 않는 태그 [&#x27;no-skip&#x27;]</tspan></text>
<text x="24" y="1222" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-flyway-migration 태그 4 · 시나리오 4 · task-claim 0 · support-task 0 · 레지스트리가 덮지 않는 태그 [&#x27;no-skip&#x27;]</tspan></text>
<text x="24" y="1244" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-transaction-runtime 태그 4 · 시나리오 7 · task-claim 0 · support-task 0 · 레지스트리가 덮지 않는 태그 [&#x27;no-skip&#x27;]</tspan></text>
<text x="24" y="1266" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-aggregate-store 태그 4 · 시나리오 1 · task-claim 0 · support-task 0 · 레지스트리가 덮지 않는 태그 [&#x27;no-skip&#x27;]</tspan></text>
<text x="24" y="1288" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-query-model 태그 4 · 시나리오 1 · task-claim 0 · support-task 0 · 레지스트리가 덮지 않는 태그 [&#x27;no-skip&#x27;]</tspan></text>
<text x="24" y="1310" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-primary-foundation 태그 4 · 시나리오 0 · task-claim 2 · support-task 5 · 레지스트리가 덮지 않는 태그 [&#x27;base-card-m</tspan><tspan x="24" dy="22">anifests&#x27;, &#x27;no-skip&#x27;]</tspan></text>
<text x="24" y="1354" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="1376" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 그 두 태그는 레지스트리가 덮을 수 없다</tspan></text>
<text x="24" y="1398" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> build.gradle 이 no-skip 을 필수로 요구하면서 클레임에서는 빼는 자리 :</tspan></text>
<text x="24" y="1420" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> build.gradle:1672 if (!requiredEvidence.contains(&#x27;no-skip&#x27;)) {</tspan></text>
<text x="24" y="1442" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> build.gradle:1673 violations &lt;&lt; &quot;${cardId}: required-evidence must include no-skip&quot;</tspan></text>
<text x="24" y="1464" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> build.gradle:1674 }</tspan></text>
<text x="24" y="1486" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> build.gradle:1675 }</tspan></text>
<text x="24" y="1508" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> build.gradle:1676 </tspan></text>
<text x="24" y="1530" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> build.gradle:1677 Object migrationNode = card.migration</tspan></text>
<text x="24" y="1552" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> build.gradle:1678 Set&lt;String&gt; allowedEvidenceClaims = requiredEvidence</tspan></text>
<text x="24" y="1574" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> build.gradle:1679 .findAll { String requirement -&gt; requirement != &#x27;no-skip&#x27; }</tspan></text>
<text x="24" y="1596" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> build.gradle:1680 .toSet()</tspan></text>
<text x="24" y="1618" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 생성기가 JUnit XML 결과로 채우는 자리 :</tspan></text>
<text x="24" y="1640" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:676 } as int</tspan></text>
<text x="24" y="1662" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:677 int errorCount = testResults.sum {</tspan></text>
<text x="24" y="1684" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:678 Map&lt;String, Object&gt; result -&gt; result.errorCount as int</tspan></text>
<text x="24" y="1706" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:679 } as int</tspan></text>
<text x="24" y="1728" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:680 boolean noSkipResult = executedTestCount &gt; 0 &amp;&amp;</tspan></text>
<text x="24" y="1750" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:681 skippedOrAbortedCount == 0 &amp;&amp;</tspan></text>
<text x="24" y="1772" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:682 failureCount == 0 &amp;&amp;</tspan></text>
<text x="24" y="1794" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:683 errorCount == 0</tspan></text>
<text x="24" y="1816" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:684 if (noSkipResult) {</tspan></text>
<text x="24" y="1838" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:685 covered &lt;&lt; &#x27;no-skip&#x27;</tspan></text>
<text x="24" y="1860" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:686 }</tspan></text>
<text x="24" y="1882" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:687 if (cardId == &#x27;jpa-primary-foundation&#x27; &amp;&amp;</tspan></text>
<text x="24" y="1904" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:688 (card.prerequisites as List).every {</tspan></text>
<text x="24" y="1926" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:689 Object prerequisite -&gt; manifestIds.containsKey(prerequisite as String)</tspan></text>
<text x="24" y="1948" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:690 }) {</tspan></text>
<text x="24" y="1970" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:691 covered &lt;&lt; &#x27;base-card-manifests&#x27;</tspan></text>
<text x="24" y="1992" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> jpa-evidence.gradle:692 }</tspan></text>
<text x="24" y="2014" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="2036" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 시나리오가 가리키는 시험이 프로덕션을 지나는가</tspan></text>
<text x="24" y="2058" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> == jpa-aggregate-store</tspan></text>
<text x="24" y="2080" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 필수 태그 : [&#x27;real-postgresql&#x27;, &#x27;mapping&#x27;, &#x27;optimistic-conflict&#x27;, &#x27;no-skip&#x27;]</tspan></text>
<text x="24" y="2102" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 시나리오 : roundTripsUuidAndInstantAndDetectsExpectedVersionConflict</tspan></text>
<text x="24" y="2124" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 덮는 태그 : [&#x27;real-postgresql&#x27;, &#x27;mapping&#x27;, &#x27;optimistic-conflict&#x27;]</tspan></text>
<text x="24" y="2146" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> == jpa-query-model</tspan></text>
<text x="24" y="2168" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 필수 태그 : [&#x27;real-postgresql&#x27;, &#x27;query-contract&#x27;, &#x27;query-plan&#x27;, &#x27;no-skip&#x27;]</tspan></text>
<text x="24" y="2190" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 시나리오 : boundedKeysetQueryUsesTheRepresentativeIndex</tspan></text>
<text x="24" y="2212" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 덮는 태그 : [&#x27;real-postgresql&#x27;, &#x27;query-contract&#x27;, &#x27;query-plan&#x27;]</tspan></text>
<text x="24" y="2234" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> == jpa-observability-lifecycle</tspan></text>
<text x="24" y="2256" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 필수 태그 : [&#x27;real-postgresql&#x27;, &#x27;lifecycle&#x27;, &#x27;observability&#x27;, &#x27;no-skip&#x27;]</tspan></text>
<text x="24" y="2278" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 시나리오 : startsPostgreSql16WithUtcAndProvidesAValidConnection</tspan></text>
<text x="24" y="2300" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 덮는 태그 : [&#x27;real-postgresql&#x27;, &#x27;lifecycle&#x27;]</tspan></text>
<text x="24" y="2322" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 시나리오 : poolCapacityExhaustionAndShutdownAreBoundedAndObservable</tspan></text>
<text x="24" y="2344" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 덮는 태그 : [&#x27;observability&#x27;]</tspan></text>
<text x="24" y="2366" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="2388" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 그 세 시험의 본문</tspan></text>
<text x="24" y="2410" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:19 @BeforeAll</tspan></text>
<text x="24" y="2432" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:20 static void startPostgreSql() throws Exception {</tspan></text>
<text x="24" y="2454" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:21 PostgreSqlReadinessSupport.assertDockerAvailable();</tspan></text>
<text x="24" y="2476" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:22 postgres = PostgreSqlReadinessSupport.start();</tspan></text>
<text x="24" y="2498" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:23 postgres.execute(</tspan></text>
<text x="24" y="2520" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:24 &quot;create table readiness_aggregate(&quot;</tspan></text>
<text x="24" y="2542" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:25 + &quot;id uuid primary key, title varchar(100) not null, &quot;</tspan></text>
<text x="24" y="2564" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:26 + &quot;occurred_at timestamptz not null, version bigint not null)&quot;);</tspan></text>
<text x="24" y="2586" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:27 }</tspan></text>
<text x="24" y="2608" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:28 </tspan></text>
<text x="24" y="2630" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:29 @AfterAll</tspan></text>
<text x="24" y="2652" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:30 static void stopPostgreSql() {</tspan></text>
<text x="24" y="2674" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:36 @Test</tspan></text>
<text x="24" y="2696" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:37 void roundTripsUuidAndInstantAndDetectsExpectedVersionConflict() throws Exception</tspan><tspan x="24" dy="22"> {</tspan></text>
<text x="24" y="2740" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:38 UUID id = UUID.randomUUID();</tspan></text>
<text x="24" y="2762" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:39 Instant occurredAt = Instant.parse(&quot;2026-07-28T12:00:00.123456Z&quot;);</tspan></text>
<text x="24" y="2784" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:40 try (Connection connection = postgres.connection();</tspan></text>
<text x="24" y="2806" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:41 PreparedStatement insert =</tspan></text>
<text x="24" y="2828" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:42 connection.prepareStatement(</tspan></text>
<text x="24" y="2850" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:43 &quot;insert into readiness_aggregate(id,title,occurred_at,version) &quot;</tspan></text>
<text x="24" y="2872" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:44 + &quot;values (?,?,?,0)&quot;)) {</tspan></text>
<text x="24" y="2894" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:45 insert.setObject(1, id);</tspan></text>
<text x="24" y="2916" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:46 insert.setString(2, &quot;aggregate&quot;);</tspan></text>
<text x="24" y="2938" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:47 insert.setObject(3, occurredAt.atOffset(ZoneOffset.UTC));</tspan></text>
<text x="24" y="2960" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:48 assertThat(insert.executeUpdate()).isOne();</tspan></text>
<text x="24" y="2982" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:49 }</tspan></text>
<text x="24" y="3004" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:50 </tspan></text>
<text x="24" y="3026" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:51 try (Connection connection = postgres.connection();</tspan></text>
<text x="24" y="3048" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:52 PreparedStatement query =</tspan></text>
<text x="24" y="3070" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:53 connection.prepareStatement(</tspan></text>
<text x="24" y="3092" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:54 &quot;select id,title,occurred_at,version from readiness_aggregate where</tspan><tspan x="24" dy="22"> id=?&quot;)) {</tspan></text>
<text x="24" y="3136" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:55 query.setObject(1, id);</tspan></text>
<text x="24" y="3158" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:56 try (ResultSet row = query.executeQuery()) {</tspan></text>
<text x="24" y="3180" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:57 assertThat(row.next()).isTrue();</tspan></text>
<text x="24" y="3202" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:58 assertThat(row.getObject(1, UUID.class)).isEqualTo(id);</tspan></text>
<text x="24" y="3224" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:59 assertThat(row.getString(2)).isEqualTo(&quot;aggregate&quot;);</tspan></text>
<text x="24" y="3246" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:60 assertThat(row.getObject(3, java.time.OffsetDateTime.class).toInstant())</tspan></text>
<text x="24" y="3268" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:61 .isEqualTo(occurredAt);</tspan></text>
<text x="24" y="3290" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:62 assertThat(row.getLong(4)).isZero();</tspan></text>
<text x="24" y="3312" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:63 }</tspan></text>
<text x="24" y="3334" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:64 }</tspan></text>
<text x="24" y="3356" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:65 </tspan></text>
<text x="24" y="3378" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:66 try (Connection first = postgres.connection();</tspan></text>
<text x="24" y="3400" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:67 Connection second = postgres.connection();</tspan></text>
<text x="24" y="3422" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:68 PreparedStatement firstUpdate =</tspan></text>
<text x="24" y="3444" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:69 first.prepareStatement(</tspan></text>
<text x="24" y="3466" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:70 &quot;update readiness_aggregate set title=?,version=version+1 &quot;</tspan></text>
<text x="24" y="3488" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:71 + &quot;where id=? and version=?&quot;);</tspan></text>
<text x="24" y="3510" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:72 PreparedStatement secondUpdate =</tspan></text>
<text x="24" y="3532" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:73 second.prepareStatement(</tspan></text>
<text x="24" y="3554" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:74 &quot;update readiness_aggregate set title=?,version=version+1 &quot;</tspan></text>
<text x="24" y="3576" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:75 + &quot;where id=? and version=?&quot;)) {</tspan></text>
<text x="24" y="3598" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:76 first.setAutoCommit(false);</tspan></text>
<text x="24" y="3620" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:77 second.setAutoCommit(false);</tspan></text>
<text x="24" y="3642" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:78 bindUpdate(firstUpdate, &quot;first&quot;, id, 0);</tspan></text>
<text x="24" y="3664" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:79 bindUpdate(secondUpdate, &quot;second&quot;, id, 0);</tspan></text>
<text x="24" y="3686" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:80 assertThat(firstUpdate.executeUpdate()).isOne();</tspan></text>
<text x="24" y="3708" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:81 first.commit();</tspan></text>
<text x="24" y="3730" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:82 assertThat(secondUpdate.executeUpdate()).isZero();</tspan></text>
<text x="24" y="3752" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:83 second.rollback();</tspan></text>
<text x="24" y="3774" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java:84 }</tspan></text>
<text x="24" y="3796" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="3818" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:22 @BeforeAll</tspan></text>
<text x="24" y="3840" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:23 static void startPostgreSql() throws Exception {</tspan></text>
<text x="24" y="3862" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:24 PostgreSqlReadinessSupport.assertDockerAvailable();</tspan></text>
<text x="24" y="3884" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:25 postgres = PostgreSqlReadinessSupport.start();</tspan></text>
<text x="24" y="3906" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:26 postgres.execute(</tspan></text>
<text x="24" y="3928" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:27 &quot;create table readiness_query(&quot;</tspan></text>
<text x="24" y="3950" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:28 + &quot;id uuid primary key, occurred_at timestamptz not null, payload text not </tspan><tspan x="24" dy="22">null)&quot;);</tspan></text>
<text x="24" y="3994" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:29 postgres.execute(&quot;create index ix_readiness_query_keyset on readiness_query(occurre</tspan><tspan x="24" dy="22">d_at,id)&quot;);</tspan></text>
<text x="24" y="4038" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:30 postgres.execute(</tspan></text>
<text x="24" y="4060" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:31 &quot;insert into readiness_query(id,occurred_at,payload) &quot;</tspan></text>
<text x="24" y="4082" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:32 + &quot;select gen_random_uuid(), &quot;</tspan></text>
<text x="24" y="4104" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:33 + &quot;timestamptz &#x27;2026-01-01T00:00:00Z&#x27; + (n || &#x27; milliseconds&#x27;)::interval, &quot;</tspan></text>
<text x="24" y="4126" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:34 + &quot;&#x27;payload-&#x27; || n from generate_series(1,1000) n&quot;);</tspan></text>
<text x="24" y="4148" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:35 postgres.execute(&quot;analyze readiness_query&quot;);</tspan></text>
<text x="24" y="4170" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:45 @Test</tspan></text>
<text x="24" y="4192" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:46 void boundedKeysetQueryUsesTheRepresentativeIndex() throws Exception {</tspan></text>
<text x="24" y="4214" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:47 OffsetDateTime cursorTime = OffsetDateTime.of(2026, 1, 1, 0, 0, 0, 0, ZoneOffset.UT</tspan><tspan x="24" dy="22">C);</tspan></text>
<text x="24" y="4258" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:48 UUID cursorId = new UUID(0, 0);</tspan></text>
<text x="24" y="4280" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:49 List&lt;UUID&gt; ids = new ArrayList&lt;&gt;();</tspan></text>
<text x="24" y="4302" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:50 String query =</tspan></text>
<text x="24" y="4324" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:51 &quot;select id from readiness_query &quot;</tspan></text>
<text x="24" y="4346" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:52 + &quot;where (occurred_at,id) &gt; (?,?) &quot;</tspan></text>
<text x="24" y="4368" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:53 + &quot;order by occurred_at,id limit ?&quot;;</tspan></text>
<text x="24" y="4390" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:54 </tspan></text>
<text x="24" y="4412" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:55 try (Connection connection = postgres.connection();</tspan></text>
<text x="24" y="4434" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:56 PreparedStatement statement = connection.prepareStatement(query)) {</tspan></text>
<text x="24" y="4456" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:57 statement.setObject(1, cursorTime);</tspan></text>
<text x="24" y="4478" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:58 statement.setObject(2, cursorId);</tspan></text>
<text x="24" y="4500" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:59 statement.setInt(3, 25);</tspan></text>
<text x="24" y="4522" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:60 try (ResultSet rows = statement.executeQuery()) {</tspan></text>
<text x="24" y="4544" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:61 while (rows.next()) {</tspan></text>
<text x="24" y="4566" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:62 ids.add(rows.getObject(1, UUID.class));</tspan></text>
<text x="24" y="4588" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:63 }</tspan></text>
<text x="24" y="4610" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:64 }</tspan></text>
<text x="24" y="4632" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:65 }</tspan></text>
<text x="24" y="4654" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:66 assertThat(ids).hasSize(25).doesNotHaveDuplicates();</tspan></text>
<text x="24" y="4676" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:67 </tspan></text>
<text x="24" y="4698" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:68 try (Connection connection = postgres.connection();</tspan></text>
<text x="24" y="4720" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:69 Statement setup = connection.createStatement()) {</tspan></text>
<text x="24" y="4742" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:70 setup.execute(&quot;set enable_seqscan=off&quot;);</tspan></text>
<text x="24" y="4764" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:71 try (PreparedStatement explain =</tspan></text>
<text x="24" y="4786" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:72 connection.prepareStatement(&quot;explain (format json) &quot; + query)) {</tspan></text>
<text x="24" y="4808" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:73 explain.setObject(1, cursorTime);</tspan></text>
<text x="24" y="4830" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:74 explain.setObject(2, cursorId);</tspan></text>
<text x="24" y="4852" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:75 explain.setInt(3, 25);</tspan></text>
<text x="24" y="4874" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:76 try (ResultSet plan = explain.executeQuery()) {</tspan></text>
<text x="24" y="4896" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:77 assertThat(plan.next()).isTrue();</tspan></text>
<text x="24" y="4918" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:78 assertThat(plan.getString(1)).contains(&quot;ix_readiness_query_keyset&quot;);</tspan></text>
<text x="24" y="4940" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:79 }</tspan></text>
<text x="24" y="4962" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java:80 }</tspan></text>
<text x="24" y="4984" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="5006" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:51 @Test</tspan></text>
<text x="24" y="5028" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:52 @Timeout(10)</tspan></text>
<text x="24" y="5050" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:53 void poolCapacityExhaustionAndShutdownAreBoundedAndObservable() throws Exception </tspan><tspan x="24" dy="22">{</tspan></text>
<text x="24" y="5094" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:54 PostgreSqlReadinessSupport bounded = PostgreSqlReadinessSupport.start(2, 300);</tspan></text>
<text x="24" y="5116" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:55 HikariDataSource dataSource = bounded.dataSource();</tspan></text>
<text x="24" y="5138" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:56 try {</tspan></text>
<text x="24" y="5160" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:57 try (Connection first = bounded.connection();</tspan></text>
<text x="24" y="5182" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:58 Connection second = bounded.connection()) {</tspan></text>
<text x="24" y="5204" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:59 PoolSnapshot saturated = snapshot(dataSource);</tspan></text>
<text x="24" y="5226" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:60 assertThat(saturated.state()).isEqualTo(PoolState.SATURATED);</tspan></text>
<text x="24" y="5248" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:61 assertThat(saturated.activeConnections()).isEqualTo(2);</tspan></text>
<text x="24" y="5270" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:62 assertThat(saturated.maximumConnections()).isEqualTo(2);</tspan></text>
<text x="24" y="5292" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:63 assertThat(saturated.boundedTags())</tspan></text>
<text x="24" y="5314" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:64 .containsExactlyInAnyOrderEntriesOf(</tspan></text>
<text x="24" y="5336" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:65 java.util.Map.of(&quot;component&quot;, &quot;postgresql-primary&quot;, &quot;state&quot;, &quot;satur</tspan><tspan x="24" dy="22">ated&quot;));</tspan></text>
<text x="24" y="5380" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:66 </tspan></text>
<text x="24" y="5402" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:107 private record PoolSnapshot(</tspan></text>
<text x="24" y="5424" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:108 PoolState state,</tspan></text>
<text x="24" y="5446" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:109 int activeConnections,</tspan></text>
<text x="24" y="5468" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:110 int idleConnections,</tspan></text>
<text x="24" y="5490" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:111 int totalConnections,</tspan></text>
<text x="24" y="5512" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:112 int awaitingConnections,</tspan></text>
<text x="24" y="5534" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:113 int maximumConnections) {</tspan></text>
<text x="24" y="5556" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:114 </tspan></text>
<text x="24" y="5578" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:115 private Map&lt;String, String&gt; boundedTags() {</tspan></text>
<text x="24" y="5600" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:116 return Map.of(</tspan></text>
<text x="24" y="5622" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:117 &quot;component&quot;, &quot;postgresql-primary&quot;, &quot;state&quot;, state.name().toLowerCase(Loc</tspan><tspan x="24" dy="22">ale.ROOT));</tspan></text>
<text x="24" y="5666" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:118 }</tspan></text>
<text x="24" y="5688" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java:119 }</tspan></text>
<text x="24" y="5710" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="5732" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 그 시험들이 프로덕션 타입에 닿는가</tspan></text>
<text x="24" y="5754" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java dev.caskeleton 를 import 하는 줄 : 0 개</tspan></text>
<text x="24" y="5776" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java dev.caskeleton 를 import 하는 줄 : 0 개</tspan></text>
<text x="24" y="5798" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java dev.caskeleton 를 import 하는 줄 : 0 개</tspan></text>
<text x="24" y="5820" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> [대조] 같은 소스 세트가 훑은 파일 :</tspan></text>
<text x="24" y="5842" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 27 개</tspan></text>
<text x="24" y="5864" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> import 만이 아니라 이름 단위로 훑어도 :</tspan></text>
<text x="24" y="5886" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlAggregateIntegrationTest.java 프로덕션에 정의된 타입 이름 : 0 개</tspan></text>
<text x="24" y="5908" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlQueryIntegrationTest.java 프로덕션에 정의된 타입 이름 : 0 개</tspan></text>
<text x="24" y="5930" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlLifecycleIntegrationTest.java 프로덕션에 정의된 타입 이름 : 0 개</tspan></text>
<text x="24" y="5952" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> [대조] PostgreSqlTransactionIntegrationTest 에 같은 검사를 걸면 :</tspan></text>
<text x="24" y="5974" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 프로덕션에 정의된 타입 이름 : 15 개</tspan></text>
<text x="24" y="5996" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 두 시험이 쓰는 테이블 :</tspan></text>
<text x="24" y="6018" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> readiness_aggregate</tspan></text>
<text x="24" y="6040" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> readiness_query</tspan></text>
<text x="24" y="6062" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 그 이름이 프로덕션 소스나 마이그레이션에 나오는가 : 0 개</tspan></text>
<text x="24" y="6084" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> [대조] 그 검색이 훑은 main 파일 : 4714 개</tspan></text>
<text x="24" y="6106" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> postgresql-primary 가 프로덕션에 나오는 파일 : 0 개</tspan></text>
<text x="24" y="6128" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"></tspan></text>
<text x="24" y="6150" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"># 대조 — 시나리오 일곱을 가진 카드</tspan></text>
<text x="24" y="6172" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 필수 태그 : [&#x27;real-postgresql&#x27;, &#x27;concurrency&#x27;, &#x27;fault&#x27;, &#x27;no-skip&#x27;]</tspan></text>
<text x="24" y="6194" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 시나리오 : appliesTransactionLocalTimeoutsBeforeWorkAndResetsThemAfterCommit -&gt; [&#x27;real-postgresql&#x27;]</tspan></text>
<text x="24" y="6216" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 시나리오 : actionFailureProducesAConfirmedRollback -&gt; [&#x27;fault&#x27;]</tspan></text>
<text x="24" y="6238" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 시나리오 : serializableConflictIsRetriedOnlyByTheReplaySafePolicy -&gt; [&#x27;concurrency&#x27;]</tspan></text>
<text x="24" y="6260" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 시나리오 : deterministicDeadlockProducesExactlyOneTypedDeadlockFailure -&gt; [&#x27;concurrency&#x27;, &#x27;fault&#x27;]</tspan></text>
<text x="24" y="6282" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 시나리오 : lockAndStatementTimeoutsRollbackWithinTheConfiguredBounds -&gt; [&#x27;fault&#x27;]</tspan></text>
<text x="24" y="6304" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 시나리오 : poolExhaustionRejectsBeforeApplicationWorkStarts -&gt; [&#x27;concurrency&#x27;, &#x27;fault&#x27;]</tspan></text>
<text x="24" y="6326" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> 시나리오 : connectionLossDuringCommitIsIndeterminateAndNeverBlindlyRetried -&gt; [&#x27;fault&#x27;]</tspan></text>
<text x="24" y="6348" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> PostgreSqlTransactionIntegrationTest.java 가 dev.caskeleton 를 import 하는 줄 : 15 개</tspan></text>
<text x="24" y="6370" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> :6 import dev.caskeleton.adapter.outbound.persistence.failure.PersistenceExceptionTranslator;</tspan></text>
<text x="24" y="6392" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> :7 import dev.caskeleton.adapter.outbound.persistence.failure.StandardSqlStateErrorMapping;</tspan></text>
<text x="24" y="6414" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> :8 import dev.caskeleton.adapter.outbound.persistence.postgresql.PostgreSqlLocalTimeoutConfigurer;</tspan></text>
<text x="24" y="6436" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> :9 import dev.caskeleton.adapter.outbound.persistence.postgresql.PostgreSqlSqlStateErrorMapping;</tspan></text>
<text x="24" y="6458" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> :10 import dev.caskeleton.adapter.outbound.persistence.transaction.JpaTransactionSettings;</tspan></text>
<text x="24" y="6480" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> :11 import dev.caskeleton.adapter.outbound.persistence.transaction.SpringTransactionPort;</tspan></text>
<text x="24" y="6502" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> :12 import dev.caskeleton.application.outbound.CallBudget;</tspan></text>
<text x="24" y="6524" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0"> :13 import dev.caskeleton.application.transaction.OperationId;</tspan></text>
</svg>