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

