# 이 저장소에서 propertyName() 을 선언하는 자리를 세면 : 3
  WebSocketAdvancedCapability.java:75
  VirtualThreadProfile.java:75
  WebAdvancedFeature.java:60

# 그 셋의 구현
  WebAdvancedFeature.java:59-62
      /** The property that turns this on. */
      public String propertyName() {
        return "backend.web.advanced." + name().toLowerCase(Locale.ROOT).replace('_', '-') + ".enabled";
      }
  WebSocketAdvancedCapability.java:74-79
      /** The property that enables this capability. */
      public String propertyName() {
        return "backend.websocket.advanced."
            + name().toLowerCase(Locale.ROOT).replace('_', '-')
            + ".enabled";
      }
  VirtualThreadProfile.java:74-77
      /** The property that turns this on. */
      public static String propertyName() {
        return "backend.web.advanced.virtual-threads.enabled";
      }

# 그 셋을 부르는 자리. 메서드 참조까지 센다
  WebAdvancedFeature : WebAdvancedReleaseTest.java:48 WebAdvancedReleaseTest.java:52 (끝)
  WebSocketAdvancedCapability : ResumeTokenTest.java:187 ResumeTokenTest.java:191 (끝)
  VirtualThreadProfile : (끝)

# 발행된 이름 그대로 저장소에 나오는 자리 (git 추적 파일 전부)
  VirtualThreadProfile.java:76     return "backend.web.advanced.virtual-threads.enabled";
# 그 접두사만으로 찾으면 한 줄이 더 나온다
  docs/web-superpowers-package/docs/superpowers/plans/2026-08-13-web-advanced-capabilities-expansion-plan.md:202:    prefix = "backend.web.advanced.virtual-threads",
  src/adapter/inbound/web/src/main/java/dev/caskeleton/adapter/inbound/web/advanced/virtualthread/VirtualThreadProfile.java:76:    return "backend.web.advanced.virtual-threads.enabled";
  그 계획 문서가 접두사 다음 줄에 적은 것 :
        name = "enabled",
# 운영자용 문서가 쓰는 이름
  web/advanced-capabilities.md:8  backend.web.advanced.mvc-virtual-threads.enabled
  web/virtual-thread-profile.md:25  mvc-virtual-threads:

# 같은 능력을 실제로 바인딩하고 게이트하는 이름
  VirtualThreadSettings:17:@ConfigurationProperties(prefix = "backend.web.advanced.mvc-virtual-threads")
  VirtualThreadMvcConfiguration    @EnableConfigurationProperties(VirtualThreadSettings.class)
  VirtualThreadMvcConfiguration    @ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.SERVLET)
  VirtualThreadMvcConfiguration    @ConditionalOnProperty(
  VirtualThreadMvcConfiguration        prefix = "backend.web.advanced.mvc-virtual-threads",
  VirtualThreadMvcConfiguration        name = "enabled",
  VirtualThreadMvcConfiguration        havingValue = "true")
  VirtualThreadMvcConfiguration    public class VirtualThreadMvcConfiguration {

# 게이트와 무관하게 이 설정을 등록하는 출하 조립 루트
  CaSkeletonApplication:58:@ConfigurationPropertiesScan(
  CaSkeletonApplication:72:      "dev.caskeleton.adapter.inbound.web",
  그 애너테이션이 거는 목록 : 58-80 · 20 개 패키지

# 이름을 잘못 발행하는 타입 자체는 배선되어 있다
  VirtualThreadSettings:77:  public VirtualThreadProfile toProfile() {
  VirtualThreadSettings:91:      toProfile();
  VirtualThreadMvcConfiguration      @Bean
  VirtualThreadMvcConfiguration      public VirtualThreadProfile virtualThreadProfile(VirtualThreadSettings properties) {
  VirtualThreadMvcConfiguration        return properties.toProfile();
  VirtualThreadMvcConfiguration      }

# 루트가 거는 그 패키지 아래의 @ConfigurationProperties 타입 : 8
  그중 값을 요구하는 하나. SecuritySettings.java:31-34 :
        if (this.authMode == AuthenticationMode.JWT && (issuerUri == null || issuerUri.isBlank())) {
          throw new IllegalArgumentException(
              "APP_SECURITY_JWT_ISSUER (ca-skeleton.security.issuer-uri) is required");
        }

# 이 리프는 설정 메타데이터를 생성하도록 선언되어 있다
  build.gradle:16:    annotationProcessor 'org.springframework.boot:spring-boot-configuration-processor'
  그 선언을 리프마다 강제하는 루트 빌드 자리 :
    configure(subprojects.findAll { it.childProjects.isEmpty() }) {
        tasks.named('check') {
            dependsOn verifyConfigurationPropertiesProcessor
        }
    }
