Files
document-haness/docs/clean-architecture-backend-template/final/evidence/meta/a14-f015-virtualthreadprofile-propertyname.json
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

15 lines
4.6 KiB
JSON

{
"assetKey": "a14-f015-virtualthreadprofile-propertyname",
"kind": "terminal",
"command": "set -e\nset -o pipefail\nW=src/adapter/inbound/web/src/main/java/dev/caskeleton/adapter/inbound/web\nS=src/adapter/inbound/websocket/src/main/java/dev/caskeleton/adapter/inbound/websocket\necho -n \"# 이 저장소에서 propertyName() 을 선언하는 자리를 세면 : \"\ngrep -rn 'String propertyName()' --include=*.java src | grep -c '/src/main/' || true\ngrep -rn 'String propertyName()' --include=*.java src | grep '/src/main/' \\\n | sed -E 's#^[^:]*/([^:/]+):([0-9]+):.*# \\1:\\2#'\necho\necho \"# 그 셋의 구현\"\necho \" WebAdvancedFeature.java:59-62\"\nsed -n '59,62p' $W/advanced/WebAdvancedFeature.java | sed 's#^# #'\necho \" WebSocketAdvancedCapability.java:74-79\"\nsed -n '74,79p' $S/advanced/WebSocketAdvancedCapability.java | sed 's#^# #'\necho \" VirtualThreadProfile.java:74-77\"\nsed -n '74,77p' $W/advanced/virtualthread/VirtualThreadProfile.java | sed 's#^# #'\necho\necho \"# 그 셋을 부르는 자리. 메서드 참조까지 센다\"\nfor n in WebAdvancedFeature WebSocketAdvancedCapability VirtualThreadProfile; do\n echo -n \" $n : \"\n { grep -rn \"$n\\(\\.[A-Z_]*\\)\\?\\.propertyName()\\|$n::propertyName\" --include=*.java src \\\n | sed -E \"s#^[^:]*/([^:/]+):([0-9]+):.*#\\1:\\2#\" | tr '\\n' ' ' || true; }\n echo \"(끝)\"\ndone\necho\necho \"# 발행된 이름 그대로 저장소에 나오는 자리 (git 추적 파일 전부)\"\ngit grep -n 'backend\\.web\\.advanced\\.virtual-threads\\.enabled' -- . \\\n | sed -E 's#^[^:]*/([^:/]+):([0-9]+):# \\1:\\2 #'\necho \"# 그 접두사만으로 찾으면 한 줄이 더 나온다\"\ngit grep -n 'backend\\.web\\.advanced\\.virtual-threads' -- . | sed 's#^# #'\necho \" 그 계획 문서가 접두사 다음 줄에 적은 것 :\"\ngit show HEAD:docs/web-superpowers-package/docs/superpowers/plans/2026-08-13-web-advanced-capabilities-expansion-plan.md \\\n | sed -n '203p' | sed 's#^# #'\necho \"# 운영자용 문서가 쓰는 이름\"\ngit grep -n 'mvc-virtual-threads' -- docs/ \\\n | sed -E 's#^docs/([^:]+):([0-9]+):.*(backend[a-z.-]*mvc-virtual-threads[a-z.]*|mvc-virtual-threads:).*# \\1:\\2 \\3#'\necho\necho \"# 같은 능력을 실제로 바인딩하고 게이트하는 이름\"\ngrep -n 'ConfigurationProperties(prefix' $W/advanced/mvc/VirtualThreadSettings.java \\\n | sed 's#^# VirtualThreadSettings:#'\nsed -n '30,36p' $W/advanced/mvc/VirtualThreadMvcConfiguration.java \\\n | sed 's#^# VirtualThreadMvcConfiguration #'\necho\necho \"# 게이트와 무관하게 이 설정을 등록하는 출하 조립 루트\"\nB=src/app-bootstrap/src/main/java/dev/caskeleton/bootstrap/CaSkeletonApplication.java\ngrep -n '^@ConfigurationPropertiesScan(' $B | sed 's#^# CaSkeletonApplication:#'\ngrep -n ' \"dev.caskeleton.adapter.inbound.web\",' $B | sed 's#^# CaSkeletonApplication:#'\necho -n \" 그 애너테이션이 거는 목록 : \"\nawk 'NR>=59 && /^ \\}\\)/ {print \"58-\" NR \" · \" n \" 개 패키지\"; exit} NR>=60 && /\"dev\\.caskeleton/ {n++}' $B\necho\necho \"# 이름을 잘못 발행하는 타입 자체는 배선되어 있다\"\ngrep -n 'toProfile()' $W/advanced/mvc/VirtualThreadSettings.java | sed 's#^# VirtualThreadSettings:#'\nsed -n '39,42p' $W/advanced/mvc/VirtualThreadMvcConfiguration.java \\\n | sed 's#^# VirtualThreadMvcConfiguration #'\necho\necho -n \"# 루트가 거는 그 패키지 아래의 @ConfigurationProperties 타입 : \"\ngrep -rl '@ConfigurationProperties' --include=*.java src/adapter/inbound/web/src/main | wc -l\necho \" 그중 값을 요구하는 하나. SecuritySettings.java:31-34 :\"\nsed -n '31,34p' src/adapter/inbound/web/src/main/java/dev/caskeleton/adapter/inbound/web/settings/SecuritySettings.java | sed 's#^# #'\necho\necho \"# 이 리프는 설정 메타데이터를 생성하도록 선언되어 있다\"\ngrep -n 'configuration-processor' src/adapter/inbound/web/build.gradle | sed 's#^# build.gradle:#'\necho \" 그 선언을 리프마다 강제하는 루트 빌드 자리 :\"\nsed -n '2201,2205p' src/build.gradle | sed 's#^# #'\n",
"cwd": "/shared/codebase/clean-architecture-backend-template",
"exitCode": 0,
"executedAt": "2026-09-03T06:15:15+00:00",
"sourceRevision": "21234e38cdb9a926cbc92bb97a2aee2e4a7d2916",
"raw": "evidence/raw/a14-f015-virtualthreadprofile-propertyname.txt",
"svg": "evidence/rendered/a14-f015-virtualthreadprofile-propertyname.svg",
"rawSha256": "badf45413cb8063f768caae82d111d5610745de0a16e146324a9b60a5b2d9c01",
"lines": 78,
"redaction": "이름 검색과 접두사 검색을 분리, 운영자 문서 줄 추가"
}