Sub-scope 10 (inbound-web) fileserver/** revision=a24ece9cf797f7ea647e33bf846b115208ed1ba5 generatedAt=2026-08-30T07:43:19+00:00 === OWNED FILES === 13b5e7bbf861d9c93e9cd87252b986c0081403a9 main/java/dev/caskeleton/adapter/inbound/web/fileserver/admin/FileserverAdminController.java 137 5a2695193f158ca22a2b5ebe6c04a0c8a83b824f main/java/dev/caskeleton/adapter/inbound/web/fileserver/admin/ForceDeleteHttpRequest.java 7 8a618a95468332e1427e24d192671709d10f2d88 main/java/dev/caskeleton/adapter/inbound/web/fileserver/admin/OrphanReconcileHttpRequest.java 16 f6339f1a0a6013f9483b463cb0111e749e5b009f main/java/dev/caskeleton/adapter/inbound/web/fileserver/config/BlockingTransferExecutor.java 96 5c17165cd453050d14f3282d4dd0363cafd9a18d main/java/dev/caskeleton/adapter/inbound/web/fileserver/config/FileserverWebProperties.java 38 766542bd1e3eda851eda9a537fc056bd5a10726b main/java/dev/caskeleton/adapter/inbound/web/fileserver/config/MvcTransferExecutorConfiguration.java 46 0ec06ef018c6a36d19eb7668b9bac087ff3aa350 main/java/dev/caskeleton/adapter/inbound/web/fileserver/config/TransferExecutorProperties.java 28 e2d78788c005bea7e2b86a01e4fbd2a4d78fa696 main/java/dev/caskeleton/adapter/inbound/web/fileserver/controller/FileDownloadController.java 165 e756c3332bd641822bdce4b0b9613a62a12eda5d main/java/dev/caskeleton/adapter/inbound/web/fileserver/controller/FileUploadController.java 225 0f041ffd5ddd6912bf7265828b28ee9df3f523bd main/java/dev/caskeleton/adapter/inbound/web/fileserver/draft12/Draft12Headers.java 20 3a96da700a49996c27ca5436ae7ad717403d7a48 main/java/dev/caskeleton/adapter/inbound/web/fileserver/draft12/Draft12OffsetProblem.java 20 deb0bb4468d42e1ff2148e4bbb16841aa22e443e main/java/dev/caskeleton/adapter/inbound/web/fileserver/draft12/Draft12Properties.java 29 02fb0b131deaf6a26668f60204132ae0e14d5999 main/java/dev/caskeleton/adapter/inbound/web/fileserver/draft12/Draft12UploadController.java 178 156f25bcaa660625971ca45761bb2b5be39c7a5c main/java/dev/caskeleton/adapter/inbound/web/fileserver/draft12/ExperimentalApi.java 23 cbe8cbab230d740cc5b40894d3fc49f271f4e374 main/java/dev/caskeleton/adapter/inbound/web/fileserver/dto/BatchUploadItemProblem.java 16 f23eca44ec513e03b770355ace9fefeebb0af8fc main/java/dev/caskeleton/adapter/inbound/web/fileserver/dto/BatchUploadItemResult.java 24 d3c5eaf262551047c6b5bd37e8858b544b5bb3c9 main/java/dev/caskeleton/adapter/inbound/web/fileserver/dto/BatchUploadResponse.java 21 a3b389a0b0adef873c4f7889f6a2b1452f78778e main/java/dev/caskeleton/adapter/inbound/web/fileserver/dto/RelocateFileRequest.java 14 553572e2ab3f80978fc740d051bdc69433c58e6b main/java/dev/caskeleton/adapter/inbound/web/fileserver/dto/UploadedFileResponse.java 30 d39c58d88295484726a5e6cc88f1944b9388f761 main/java/dev/caskeleton/adapter/inbound/web/fileserver/http/MvcConditionalRequestFactory.java 51 1d9ddb98863ccb16d343c260004d40e0d577ce77 main/java/dev/caskeleton/adapter/inbound/web/fileserver/http/MvcDownloadResponseWriter.java 93 ab5cfca0ef39113ede9cdb576b013a1f1b062020 main/java/dev/caskeleton/adapter/inbound/web/fileserver/http/ZeroCopyEligibility.java 54 b524c829c83bcf200f72c100b5ee74156770f5e9 main/java/dev/caskeleton/adapter/inbound/web/fileserver/lifecycle/FileLifecycleController.java 103 365dc63fe5fafe2b1a86629eb000a90a1b5112a8 main/java/dev/caskeleton/adapter/inbound/web/fileserver/mapper/MultipartUploadRequestMapper.java 34 3dd3b0b1b7702711c416f148c6fc7cc20494a8c4 main/java/dev/caskeleton/adapter/inbound/web/fileserver/mapper/RawUploadRequestMapper.java 72 7bb9cbbc93f8404694c085f5441c569006f82a16 main/java/dev/caskeleton/adapter/inbound/web/fileserver/mapper/UploadIntent.java 26 e368a87abde2d0584ce9df955ea226cc008ef806 main/java/dev/caskeleton/adapter/inbound/web/fileserver/nginx/DefaultNginxInternalUriMapper.java 64 d7086cafdc9671e2fc9e527bbb9cf8e40f1c462c main/java/dev/caskeleton/adapter/inbound/web/fileserver/nginx/NginxDelegationProperties.java 41 9d1d652f8d42e36e2984557b1904e9c32b50faf2 main/java/dev/caskeleton/adapter/inbound/web/fileserver/nginx/NginxDownloadStrategy.java 48 a850819c02704e95c57586bb4c5d71c406885520 main/java/dev/caskeleton/adapter/inbound/web/fileserver/nginx/NginxInternalUriMapper.java 33 0d71df1523a43c89b19ac30ef7bcaf866e2432cc main/java/dev/caskeleton/adapter/inbound/web/fileserver/problem/FileserverExceptionHandler.java 46 038ec59a98430ffa47281c806a929100234dc2e0 main/java/dev/caskeleton/adapter/inbound/web/fileserver/problem/FileserverProblem.java 32 038ab8442ec155e2946493501c45fa705ad83561 main/java/dev/caskeleton/adapter/inbound/web/fileserver/problem/FileserverProblemFactory.java 45 b17aa9b62e83a5ec0946cf1fec2f559f1c1abc4d main/java/dev/caskeleton/adapter/inbound/web/fileserver/problem/FileserverProblemHeaders.java 61 222fb5f40d078b1856dbd6ab2a0483bb9960b93e main/java/dev/caskeleton/adapter/inbound/web/fileserver/problem/FileserverProblemTitles.java 54 3fe72b74f3daef3d6dbabbbec434b64f168c96e6 main/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/DataBufferByteChannel.java 150 2a8ea8b76fb3bd79550a936034f539dbe61a4a97 main/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/FileDownloadHandler.java 146 51c8e593b6765e3eeb7a675ffceda418d144160d main/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/FileUploadHandler.java 165 3f0512a9fca6f55d455090aac8e75b46e7f18c02 main/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/FileserverIoScheduler.java 36 90e780754a493bde5e2dd9b5139fa1fa600270fb main/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/FileserverReactiveConfiguration.java 108 f822e52ce56fde60f7cfa78380c3fd84eb3d072f main/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/FileserverRouterFactory.java 75 26ad0b57d66b8c9fe231ad76feb14234fe5ff67b main/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/PartEventUploadReader.java 93 1c1ab7c24714fd0a8d288e8fd7a45d5187c753fd main/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/ReactiveDownloadResponseWriter.java 71 69b119facafe1a79a469440d81b0cadd64100da5 main/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/ReactiveFileserverAttributes.java 19 7f4caf1fa4696980e20ec7d61362d67177ff915d main/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/ReactiveUploadApplicationService.java 58 cf046ff902609dc7afc96de931c95c4b52122386 main/java/dev/caskeleton/adapter/inbound/web/fileserver/security/FileserverRequestContextFactory.java 70 6dfb8a02fe155a78ca40a177042dc63103cc3e82 main/java/dev/caskeleton/adapter/inbound/web/fileserver/tus/TusChecksumVerifier.java 53 17d52c2c65aa1f1502570e150c7fd40575b1da5d main/java/dev/caskeleton/adapter/inbound/web/fileserver/tus/TusController.java 207 010172d83b1ddc77a17e8299a95fb6f2a7431d9c main/java/dev/caskeleton/adapter/inbound/web/fileserver/tus/TusHeaders.java 21 75d4eb8c565c373f71989444cc1f1a9d0c0406ff main/java/dev/caskeleton/adapter/inbound/web/fileserver/tus/TusProperties.java 44 98385b93827c98b8ba52e705bf6c03a92b4958df main/java/dev/caskeleton/adapter/inbound/web/fileserver/tus/TusRequestParser.java 140 007b324ef153387487498a674229c3dd7b0849c1 test/java/dev/caskeleton/adapter/inbound/web/fileserver/admin/FileserverAdminControllerTest.java 116 5485247d72c106020aa85eeb6f55e0245374af4c test/java/dev/caskeleton/adapter/inbound/web/fileserver/config/MvcUploadExecutorSaturationTest.java 145 84a561bb1133dd13c2f427589b88e6d87164598a test/java/dev/caskeleton/adapter/inbound/web/fileserver/controller/FileDownloadControllerContractTest.java 219 1cd976507c7f91398159cc648836d507c00d24ec test/java/dev/caskeleton/adapter/inbound/web/fileserver/controller/FileUploadControllerTest.java 185 4c564fc811ca54355e16392d4b6962b05d659e0b test/java/dev/caskeleton/adapter/inbound/web/fileserver/draft12/Draft12ProtocolTest.java 153 7edac7046192c23ffac97710e9c18f5e6a5b6e50 test/java/dev/caskeleton/adapter/inbound/web/fileserver/http/ZeroCopyEligibilityTest.java 44 45935d5c6b7222905551eb8753e2b71536efa36f test/java/dev/caskeleton/adapter/inbound/web/fileserver/nginx/NginxDownloadDelegationTest.java 117 7366be5c978e08305cffc310a863a8819652c7dc test/java/dev/caskeleton/adapter/inbound/web/fileserver/nginx/NginxInternalUriMapperTest.java 60 c462e216cf9c7e19874c6e98f38a09c0b9a1d9e6 test/java/dev/caskeleton/adapter/inbound/web/fileserver/problem/FileserverProblemHeaderParityTest.java 84 59ba9b0fb24b0643e37a76658516304b3987700a test/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/DataBufferReleaseTest.java 93 5f903c9e0c16ccc42a68e75f5a28b1a78e6df6f2 test/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/PartEventUploadReaderTest.java 90 3faee6c468213f67cdcda4ac46b14e9119aaf116 test/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/ReactiveFileserverContractTest.java 207 93bacd4f7668a45292a3e6d8cb87883884bc27b8 test/java/dev/caskeleton/adapter/inbound/web/fileserver/security/FileserverHardeningContractTest.java 196 04b49a7a592d38dae46d6aeabaa4c21411bae1dd test/java/dev/caskeleton/adapter/inbound/web/fileserver/testkit/CountingDataBuffer.java 48 e04d6103bcfd7214c75d7050ff82f8292b19a8ab test/java/dev/caskeleton/adapter/inbound/web/fileserver/testkit/CountingDataBufferFactory.java 30 6fa79a986db70b895deef9d20e774afd7706c556 test/java/dev/caskeleton/adapter/inbound/web/fileserver/testkit/FileserverWebFixtures.java 70 8463f38d352724920a09a8550beadaa6f547c600 test/java/dev/caskeleton/adapter/inbound/web/fileserver/testkit/InMemoryUploadApplicationService.java 159 b0b3baa87fed4144e752171dd68c29f8eb1049c7 test/java/dev/caskeleton/adapter/inbound/web/fileserver/testkit/RecordingAdminService.java 108 0ec4d75b45cc7b95828eb2ac924329c77d6ca325 test/java/dev/caskeleton/adapter/inbound/web/fileserver/testkit/RecordingFinalizeService.java 49 7aed02efdbabab7f555da87acd3467a6f1735abc test/java/dev/caskeleton/adapter/inbound/web/fileserver/testkit/RecordingUploadService.java 113 3562111e14163070ccda976e1968dfbb2bcdcff5 test/java/dev/caskeleton/adapter/inbound/web/fileserver/testkit/StubDownloadService.java 148 4e5f8aefa5f2e5422a8d9d9cf32a79690282bea7 test/java/dev/caskeleton/adapter/inbound/web/fileserver/tus/TusProtocolContractTest.java 247 file_count=73 === 8.1 시작 검증이 호출되는가 === $ grep -rn 'attestMapping' --include=*.java adapter app-bootstrap sample-portfolio | sed 's|adapter/inbound/web/src/||;s|app-bootstrap/src/main/java/dev/caskeleton/bootstrap/|BOOT:|' main/java/dev/caskeleton/adapter/inbound/web/fileserver/nginx/DefaultNginxInternalUriMapper.java:41: public boolean attestMapping() { main/java/dev/caskeleton/adapter/inbound/web/fileserver/nginx/NginxInternalUriMapper.java:32: boolean attestMapping(); BOOT:autoconfigure/fileserver/FileserverStartupConfiguration.java:87: return uriMapper.attestMapping(); exit=0 $ grep -rn 'DefaultNginxInternalUriMapper\|FileserverRequestContextFactory\|NginxDownloadStrategy' --include=*.java app-bootstrap/src/main | sed 's|app-bootstrap/src/main/java/dev/caskeleton/bootstrap/|BOOT:|' BOOT:autoconfigure/fileserver/FileserverPlatformAutoConfiguration.java:11:import dev.caskeleton.adapter.inbound.web.fileserver.nginx.DefaultNginxInternalUriMapper; BOOT:autoconfigure/fileserver/FileserverPlatformAutoConfiguration.java:13:import dev.caskeleton.adapter.inbound.web.fileserver.nginx.NginxDownloadStrategy; BOOT:autoconfigure/fileserver/FileserverPlatformAutoConfiguration.java:16:import dev.caskeleton.adapter.inbound.web.fileserver.security.FileserverRequestContextFactory; BOOT:autoconfigure/fileserver/FileserverPlatformAutoConfiguration.java:159: FileserverRequestContextFactory fileserverRequestContextFactory( BOOT:autoconfigure/fileserver/FileserverPlatformAutoConfiguration.java:161: return new FileserverRequestContextFactory(properties.instanceId()); BOOT:autoconfigure/fileserver/FileserverPlatformAutoConfiguration.java:216: return new DefaultNginxInternalUriMapper(properties); BOOT:autoconfigure/fileserver/FileserverPlatformAutoConfiguration.java:221: NginxDownloadStrategy fileserverNginxDownloadStrategy( BOOT:autoconfigure/fileserver/FileserverPlatformAutoConfiguration.java:223: return new NginxDownloadStrategy(properties, uriMapper); exit=0 === 8.4 리액티브 활성화 조건과 실제 WebApplicationType === $ grep -n 'ConditionalOnWebApplication' adapter/inbound/web/src/main/java/dev/caskeleton/adapter/inbound/web/fileserver/reactive/FileserverReactiveConfiguration.java 12:import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; 38:@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE) exit=0 $ grep -rn 'ConditionalOnWebApplication.Type.REACTIVE' --include=*.java adapter/inbound/web/src/main | sed 's|.*/web/||' fileserver/reactive/FileserverReactiveConfiguration.java:38:@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE) webflux/error/WebFluxProblemExceptionHandler.java:44:@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE) webflux/autoconfigure/WebFluxPlatformAutoConfiguration.java:42:@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE) notification/platform/callback/reactive/CallbackWebFluxConfiguration.java:27:@ConditionalOnWebApplication(type = ConditionalOnWebApplication.Type.REACTIVE) exit=0 $ grep -n 'starter-web\|spring-webflux\|reactor-core' adapter/inbound/web/build.gradle 11: implementation 'org.springframework.boot:spring-boot-starter-web' 24: implementation 'org.springdoc:springdoc-openapi-starter-webmvc-api:3.0.0' 44: // deliberately not spring-boot-starter-webflux, which would put a second embedded server 48: implementation 'org.springframework:spring-webflux' 49: implementation 'io.projectreactor:reactor-core' 80: // Nothing is inherited: the leaf's own `implementation` carries spring-boot-starter-web, and 94: // own `implementation` and therefore carries spring-boot-starter-web — and with Tomcat on 118: jettyCompatTestImplementation('org.springframework.boot:spring-boot-starter-web') { 129: webfluxContractTestImplementation('org.springframework.boot:spring-boot-starter-webflux') { 148: nginxProxyTestImplementation 'org.springframework.boot:spring-boot-starter-web' exit=0 $ grep -c 'spring-boot-starter-tomcat\|spring-webmvc' app-bootstrap/gradle.lockfile 5 exit=0 $ grep -n 'starter-web' sample-portfolio/build.gradle 45: implementation 'org.springframework.boot:spring-boot-starter-web' exit=0 $ grep -rn 'setWebApplicationType' --include=*.java app-bootstrap/src/main adapter/inbound/web/src/main | wc -l 0 exit=0 $ grep -n 'reactive handlers are wired' adapter/inbound/web/build.gradle 46: // WebApplicationType deduction keeps resolving SERVLET; the reactive handlers are wired only exit=0 $ grep -n 'inherits()' -B 6 adapter/inbound/web/build.gradle | head -12 91- sourceSet('webfluxContractTest') { 92- compilesAgainst 'main', 'testkit' 93- // Inherits nothing. The default is to extend `testImplementation`, which extends the leaf's 94- // own `implementation` and therefore carries spring-boot-starter-web — and with Tomcat on 95- // the classpath Boot deduces a servlet application, starts a servlet container, and the 96- // reactive gate certifies the servlet stack while reporting itself green. 97: inherits() exit=0