Files
document-haness/docs/clean-architecture-backend-template/final/evidence/rendered/the-last-part-cannot-get-a-grant.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

23 lines
4.0 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="414" viewBox="0 0 1200 414" 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="412" 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">$ grep -n &#x27;38&#x27; analysis/09-adapter-outbound-objectstorage.md | head -12</tspan></text>
<text x="24" y="90" fill="#8b949e" font-size="13" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">cwd: /shared/document-detail/clean-architecture-backend-template</tspan></text>
<text x="24" y="112" 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-01T05:42:57+00:00 · exit 0</tspan></text>
<line x1="24" y1="126" x2="1176" y2="126" stroke="#30363d"/>
<text x="24" y="166" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">12:- 최초 분석 revision `a24ece9c` → 재검증 revision `21234e38` · 이 리프의 변경 파일 **0**</tspan></text>
<text x="24" y="188" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">432:## 38. P2 — 직접 multipart의 마지막 part는 grant를 받을 수 없다</tspan></text>
<text x="24" y="210" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">508:- **8.2 조건부 형제 ①**: `requirePartSize`의 세 호출 지점 중 하나만 `finalPart`를 하드코딩(§38).</tspan></text>
<text x="24" y="232" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">719:| `S3ProviderType.MINIO_COMMUNITY_2024_01_16:8` | `s3-compatible-minio-community-release-2024-01-16t16-07-38z` |</tspan></text>
<text x="24" y="254" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">720:| `S3ProviderVersion:7` | `release-2024-01-16t16-07-38z-sdk-2.30.0` |</tspan></text>
<text x="24" y="276" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">760:| 1 | **P2** | 직접 multipart의 마지막 part에 grant를 발급할 수 없다 — `requirePartSize(..., false)` 하드코딩 + 요청 타입에</tspan><tspan x="24" dy="22"> 마지막 part 표시 없음 | §38 | 미배선; 배선 시 통상적 클라이언트 분할 전부 |</tspan></text>
<text x="24" y="320" fill="#e6edf3" font-size="14" font-family="ui-monospace, SFMono-Regular, Menlo, Consolas, monospace" xml:space="preserve"><tspan x="24" dy="0">785:- **그리고 이 모듈의 P2 넷은 전부 같은 모양이다** — 설정 표면이나 계약이 절반만 조립돼 있다. 마지막 part 표시가 요청 타입에</tspan><tspan x="24" dy="22"> 없고(§38), 검증이 세 경로 중 하나에만 있고(§39), capability가 compile을 통과하는데 소비자가 없고(§41), APPLY는 설정으로 켜지</tspan><tspan x="24" dy="22">는데 검증기는 손배선이다(§49). 개별 구현의 품질과 **조립의 대칭성** 사이에 일관된 격차가 있다.</tspan></text>
</svg>