{ "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": "이름 검색과 접두사 검색을 분리, 운영자 문서 줄 추가" }