Sub-scope 12 (inbound-web) testkit + webfluxContractTest + jettyCompatTest + nginxProxyTest revision=a24ece9cf797f7ea647e33bf846b115208ed1ba5 generatedAt=2026-08-30T07:46:41+00:00 === OWNED FILES === cac69e5a01112ab3f652de4c245f5699e88977d4 jettyCompatTest/java/dev/caskeleton/adapter/inbound/web/testkit/budget/JettyWebBudgetIT.java 30 366f2581b9f56b80840965b89049a4ec23fcb26c jettyCompatTest/java/dev/caskeleton/adapter/inbound/web/testkit/contract/JettyContractRecordingIT.java 26 a2361a1e44f69a4045d9ed99d7333518a6d82587 jettyCompatTest/java/dev/caskeleton/adapter/inbound/web/testkit/fault/JettyCommitThenConnectionResetIT.java 28 65bc95581a55b3ac881ef1a2703c835aa5291b38 jettyCompatTest/java/dev/caskeleton/adapter/inbound/web/testkit/mvc/JettyWebContractIT.java 48 c6df351cf6301987eb10326333c900ff42a679e1 jettyCompatTest/java/dev/caskeleton/adapter/inbound/web/testkit/operation/JettyOperationHttpIT.java 27 75b9b6df0703efea778f03f8b9e1e69e12593712 jettyCompatTest/java/dev/caskeleton/adapter/inbound/web/testkit/order/JettyPipelineOrderIT.java 28 5e310429bed9a56e7c158c7ff2bf6c41653f8f97 jettyCompatTest/java/dev/caskeleton/adapter/inbound/web/testkit/performance/JettyLoadAndShutdownIT.java 63 a635453aabc5832810757c5d6625b85008e98d03 jettyCompatTest/java/dev/caskeleton/adapter/inbound/web/testkit/throttle/JettyWebThrottleIT.java 41 e5fcde1a925be6e7a76bae96ad2179914e0e1b73 jettyCompatTest/resources/application-web-contract.yaml 19 7960ff4e0fea2655d84ef6cc6262816032e9f35c nginxProxyTest/java/dev/caskeleton/adapter/inbound/web/testkit/proxy/NginxProxyContractIT.java 186 1c659d3b0a3845ecb7a90c5605d9c61fe50e18c9 nginxProxyTest/java/dev/caskeleton/adapter/inbound/web/testkit/proxy/NginxProxyHarness.java 151 cc0a876b0334845831a9f006929e8ceb11541c4b nginxProxyTest/java/dev/caskeleton/adapter/inbound/web/testkit/proxy/ProxyFixtureApplication.java 37 e03af04db93c53bf7b1e369e82698769940a2cce nginxProxyTest/resources/nginx/nginx.conf 45 8ade88cf28507e71c65dac2f2273cdfec29c1ebd nginxProxyTest/resources/nginx/proxy_headers.conf 22 47f89bf579dd2692128fe7744347d5252196b419 test/java/dev/caskeleton/adapter/inbound/web/testkit/arch/WebArchitectureRulesTest.java 112 3e5d8011e2b64d6d8545aab66547a39099417070 test/java/dev/caskeleton/adapter/inbound/web/testkit/budget/TomcatWebBudgetIT.java 30 5a6c1ba6a85c5e40a3078ed84c85e704a3ccf8d5 test/java/dev/caskeleton/adapter/inbound/web/testkit/contract/CrossStackParityTest.java 138 625c96808664d42072c8d9c5fe9f4123ce8ee545 test/java/dev/caskeleton/adapter/inbound/web/testkit/contract/TomcatContractRecordingIT.java 26 5756805acaef954de30c42fea632301188f4385d test/java/dev/caskeleton/adapter/inbound/web/testkit/fault/CommitThenConnectionResetIT.java 27 bf1880db25bebd8f374281c7bf8627751b829b8f test/java/dev/caskeleton/adapter/inbound/web/testkit/mvc/TomcatWebContractIT.java 44 39207a7677e807eb70ec69d3cee6e5f44bfb2ad5 test/java/dev/caskeleton/adapter/inbound/web/testkit/operation/TomcatOperationHttpIT.java 26 db3d28a86660a85176955f7b667c224721196641 test/java/dev/caskeleton/adapter/inbound/web/testkit/order/MvcPipelineOrderIT.java 27 e1fef5b5c50478649fe075c6cb5e352be88f8f53 test/java/dev/caskeleton/adapter/inbound/web/testkit/performance/TomcatLoadAndShutdownIT.java 63 3efaf4e3c673934a201d8ebca83545139246fe77 test/java/dev/caskeleton/adapter/inbound/web/testkit/throttle/TomcatWebThrottleIT.java 41 b4cbea7fc739bfe2b45fe4b4304d38c3b7605589 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/arch/ForbiddenClassAnnotationCondition.java 40 40e9aed2a3dd3f4cc815b8056127aa8618aaafaf testkit/java/dev/caskeleton/adapter/inbound/web/testkit/arch/ForbiddenMethodAnnotationCondition.java 40 13bd43997ebe3e428cdbbf83d88dc06747383678 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/arch/WebArchitectureRules.java 238 bfc0b31cf5844c5fcb49305fec7a340599d30296 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/arch/WebForbiddenTypeCatalog.java 78 bc8392f0fb0f1bfd8af4997afe438ce695a497d4 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/budget/BudgetFixtureController.java 57 f21f41aea1aa5835d47909961b82cd684462f675 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/budget/BudgetFixtureProtocol.java 52 76d53062ce9755c2dedf0ebc7e4b90efeec2d919 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/budget/HttpBudgetFixture.java 151 386c505d98ffc0e8a0c03c21df8032d16d5b03bc testkit/java/dev/caskeleton/adapter/inbound/web/testkit/budget/ReactiveBudgetFixtureController.java 56 2077429a828ec735655f2acf06f862c5927043f3 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/budget/WebBudgetContract.java 135 855dda799871a1d6e1151d6f9a2a54b6303d1329 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/contract/WebContractFixture.java 150 4e883946baead818ac019a4aea18a498d17d2678 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/contract/WebPlatformContractRecording.java 71 44670f56b46bbb88c337c4d6479d063e95b32f3a testkit/java/dev/caskeleton/adapter/inbound/web/testkit/contract/WebPlatformContractSuite.java 55 c922466ce06f020a2f1a63fd8fb7a9c9787f141a testkit/java/dev/caskeleton/adapter/inbound/web/testkit/contract/WireOutcome.java 44 a80bd4892bfffb7631fd9b941c01bf9992c2f867 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/contract/WireProbe.java 39 135d3f0d2ac959a7d4204c31eac0dd5bbb87c401 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/fault/FaultFixtureController.java 155 1f3d72f785a50846a949a78825753f1068d0abb5 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/fault/FaultFixtureProtocol.java 39 6a9d8fbe0fe856bd1e62a4436f6c04f0ed05e055 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/fault/FaultFixtureStore.java 67 69615aac5a75e7874483828a6ebfef694e0d2fc2 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/fault/HttpResponseLossFixture.java 128 9b6c45086249a3b1fdd903ad3199b4dc3e3e5550 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/fault/IdempotencyResponseLossContract.java 81 6b3b5296043c64b5dc01b650766ea92d6b66b37f testkit/java/dev/caskeleton/adapter/inbound/web/testkit/fault/ReactiveFaultFixtureController.java 153 95d08d19b99df55be14129000a1c055f82e81279 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/fault/ResponseLossFixture.java 46 84bdc97e2eca0d9d7f7fdb920e5b3922fa3843ad testkit/java/dev/caskeleton/adapter/inbound/web/testkit/fault/WebFaultInjector.java 40 6641a9b68a77426ab80fcaa86bfce2ea3ec8ec71 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/fault/WebFaultPoint.java 39 e102a4c681354e85f5c5e2cf7ca4111f4d292b73 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/mvc/ContractFixtureController.java 60 84f47ef5bdec87ffa5abc40080e1dab6f4952fdf testkit/java/dev/caskeleton/adapter/inbound/web/testkit/mvc/WebContractAssertions.java 149 519c6eb0d5ef30beade260b25b7bd942b230c536 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/operation/HttpOperationFixture.java 114 0b5fcb173eb367a32aa4dac528fa546958283e29 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/operation/OperationFixtureController.java 84 c99dcdfa76162551f0745959b448721e98e21922 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/operation/OperationFixtureSupport.java 140 2e8295c54f4a924204bc6e16c25796342568436c testkit/java/dev/caskeleton/adapter/inbound/web/testkit/operation/OperationHttpContract.java 148 60982e5edaacef35aeb911a64430a3785d1a045d testkit/java/dev/caskeleton/adapter/inbound/web/testkit/operation/ReactiveOperationFixtureController.java 92 05b86a427bf318d0478bc069c9b7dab77f982208 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/operation/TestDurableOperationStore.java 320 20507f10f57f69035c71da70896c83eb95be5f1c testkit/java/dev/caskeleton/adapter/inbound/web/testkit/order/HttpPipelineFixture.java 83 6e5a9b8b65402b1a6654663ee9052e676b24fcdf testkit/java/dev/caskeleton/adapter/inbound/web/testkit/order/PipelineOrderFixtureController.java 90 4dbd4dd58ced6cc91067733b7f39c02564ee4028 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/order/WebPipelineOrderContract.java 155 7e93d5e5e39f89dc7b7cc4c18b6197d8dea0e50f testkit/java/dev/caskeleton/adapter/inbound/web/testkit/order/WebPipelineRecorder.java 46 7593b562a46c87305048ba0e21f6dd52563ef2e3 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/order/WebPipelineStage.java 60 b5d327d958238a2cf8ce3dd648294763162f32d5 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/performance/GracefulShutdownProbe.java 66 3e63e76986caff108d01e279e28157b5aad7ff62 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/performance/WebLoadAndShutdownContract.java 119 af49059110ab0b8a33b2f3723f92633094c50295 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/performance/WebLoadFixture.java 230 1f7657b532ae6c9259726718a76efc998229f1c5 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/performance/WebLoadResult.java 95 2a302238936dcdd568239f8abbdeebd8a740c92a testkit/java/dev/caskeleton/adapter/inbound/web/testkit/proxy/ProxyFixtureController.java 101 0e28707d919a241b86ba80df881e65fe5f3b0d70 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/throttle/CountingRateLimiter.java 51 1dab476db140b9435be0bf30c4eae7c37e8f68ca testkit/java/dev/caskeleton/adapter/inbound/web/testkit/throttle/HttpThrottleFixture.java 172 f7ba0192cf8044ebc387c8ee1604396fd59f3922 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/throttle/ThrottleControlController.java 61 beed0cce7fe17d8d94238130b382ab27f5d860bb testkit/java/dev/caskeleton/adapter/inbound/web/testkit/throttle/ThrottleFixtureController.java 62 38d22a1911ba866dd1be784980a10964914dd8ff testkit/java/dev/caskeleton/adapter/inbound/web/testkit/throttle/ThrottleFixtureProtocol.java 28 d46a1c8363ce0c3887e2c9092e0c56a30875a57a testkit/java/dev/caskeleton/adapter/inbound/web/testkit/throttle/ThrottleFixtureSupport.java 75 4e74a1992c34cfbc13ad011e258ab37864345b06 testkit/java/dev/caskeleton/adapter/inbound/web/testkit/throttle/WebThrottleHttpContract.java 122 5a5d402ccd3d1fb0546d246831d3ac884572ca3c testkit/java/dev/caskeleton/adapter/inbound/web/testkit/webflux/ReactiveContractFixtureController.java 73 cb369399b555863d9b32022b6cab730cea70b8a0 testkit/java/dev/caskeleton/webtestkit/BudgetFixtureApplication.java 72 11d949b868a31b1ef7aacfae68cf85501e6ee0ab testkit/java/dev/caskeleton/webtestkit/ContractFixtureApplication.java 74 ad8f6a08d87c8994d37b3b63b4d1b5168f6ea1e2 testkit/java/dev/caskeleton/webtestkit/PipelineOrderFixtureApplication.java 156 d6658e1e340d8fcb1dd336d61f7003ee43d0052d testkit/java/dev/caskeleton/webtestkit/ThrottleFixtureApplication.java 77 2a935728a0986be7a60378c00ed26867dee87165 testkit/resources/performance/web-load-profile.yaml 33 599a066ef96e73cff712c5e40a526c3f6f2d355f webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/budget/ReactiveBudgetFixtureApplication.java 44 4bfb455b5200848db14eb20ad1858ed74481b833 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/budget/ReactiveWebBudgetIT.java 29 b7c13ca25572fff133fd48f7d73936619d9971b2 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/contract/ReactiveContractRecordingIT.java 26 b7ec651a43e19595df51e71a487e68b1877fe53a webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/fault/ReactiveCommitThenConnectionResetIT.java 28 234ae235dfc863abe7aefa91e94428376968d2e4 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/operation/ReactiveOperationHttpIT.java 27 5d34c578e2a00b05c7de1b0d9c6487e4e9ca03ba webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/order/ReactivePipelineOrderFixtureApplication.java 93 914c6c98d2a5c0404793ce17597f413769612934 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/order/ReactivePipelineOrderFixtureController.java 87 cc94256d499f6e78defc238b2b57d3fa33da42c5 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/order/WebFluxPipelineOrderIT.java 27 7ba4fa6778b693ce766235cfad671e7b411f0541 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/performance/ReactorNettyLoadAndShutdownIT.java 68 7dc85dcc31ab463e7a7545ed51715a03ef92c4a9 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/streaming/ReactiveSseFixtureApplication.java 81 e1328f9da1d96d2d48bba21d774727c386528c82 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/streaming/WebFluxSseContractIT.java 120 c3eca519469e044e3600c889569312586436a982 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/throttle/ReactiveThrottleFixtureApplication.java 62 62e7540114a2f2f643393f5f95b7fd981e473a94 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/throttle/ReactiveWebThrottleIT.java 42 7e557f58852c5e6b42445c761427b1fc81adee88 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/webflux/ReactiveContractFixtureApplication.java 54 c2717c7d758813686d54183c5121e726a0cad668 webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/webflux/ReactorNettyWebContractIT.java 128 e5fcde1a925be6e7a76bae96ad2179914e0e1b73 webfluxContractTest/resources/application-web-contract.yaml 19 file_count=94 === 8.1 픽스처 애플리케이션이 조립하는 플랫폼 타입 === BudgetFixtureApplication BudgetProblemMapper WebMvcBudgetFilter ContractFixtureApplication WebProblemFactory PipelineOrderFixtureApplication HandlerInterceptor OncePerRequestFilter WebPipelineRecorder ThrottleFixtureApplication CountingRateLimiter ThrottleProblemWriter WebMvcThrottleFilter ReactiveBudgetFixtureApplication BudgetProblemMapper WebFluxBudgetFilter ReactivePipelineOrderFixtureApplicationWebPipelineRecorder ReactiveSseFixtureApplication StreamId StreamSequence WebFluxSseAdapter WebStreamPolicy ReactiveThrottleFixtureApplication CountingRateLimiter ThrottleProblemWriter WebFluxThrottleFilter ReactiveContractFixtureApplication WebProblemFactory WebProblemSanitizer === 8.2 계약 클래스와 세 레인 === $ ls adapter/inbound/web/src/testkit/java/dev/caskeleton/adapter/inbound/web/testkit/*/ | grep -i contract WebBudgetContract.java adapter/inbound/web/src/testkit/java/dev/caskeleton/adapter/inbound/web/testkit/contract/: WebContractFixture.java WebPlatformContractRecording.java WebPlatformContractSuite.java IdempotencyResponseLossContract.java ContractFixtureController.java WebContractAssertions.java OperationHttpContract.java WebPipelineOrderContract.java WebLoadAndShutdownContract.java WebThrottleHttpContract.java ReactiveContractFixtureController.java exit=0 $ ls adapter/inbound/web/src/jettyCompatTest/java/dev/caskeleton/adapter/inbound/web/testkit/*/ adapter/inbound/web/src/webfluxContractTest/java/dev/caskeleton/adapter/inbound/web/testkit/*/ 2>/dev/null | grep IT.java JettyWebBudgetIT.java JettyContractRecordingIT.java JettyCommitThenConnectionResetIT.java JettyWebContractIT.java JettyOperationHttpIT.java JettyPipelineOrderIT.java JettyLoadAndShutdownIT.java JettyWebThrottleIT.java ReactiveWebBudgetIT.java ReactiveContractRecordingIT.java ReactiveCommitThenConnectionResetIT.java ReactiveOperationHttpIT.java WebFluxPipelineOrderIT.java ReactorNettyLoadAndShutdownIT.java WebFluxSseContractIT.java ReactiveWebThrottleIT.java ReactorNettyWebContractIT.java exit=0 $ grep -n 'dependsOn' adapter/inbound/web/build.gradle 195: dependsOn 'test', 'webJettyCompatTest', 'webFluxContractTest' 257: dependsOn tasks.named('webSecurityBoundaryTest') exit=0 === 8.3/8.4 ArchUnit 규칙 팩의 소비자와 개수 고정 === $ grep -rn 'WebArchitectureRules' --include=*.java . | grep -v 'testkit/arch/WebArchitectureRules.java' | sed 's|adapter/inbound/web/src/||;s|app-bootstrap/src/|BOOT:|' ./BOOT:test/java/dev/caskeleton/bootstrap/architecture/WebProductionArchitectureTest.java:8:import dev.caskeleton.adapter.inbound.web.testkit.arch.WebArchitectureRules; ./BOOT:test/java/dev/caskeleton/bootstrap/architecture/WebProductionArchitectureTest.java:47: for (var rule : WebArchitectureRules.all()) { ./test/java/dev/caskeleton/adapter/inbound/web/testkit/arch/WebArchitectureRulesTest.java:18:class WebArchitectureRulesTest { ./test/java/dev/caskeleton/adapter/inbound/web/testkit/arch/WebArchitectureRulesTest.java:33: () -> WebArchitectureRules.controllersAreUseCaseAdapters().check(BAD_CONTROLLER)) ./test/java/dev/caskeleton/adapter/inbound/web/testkit/arch/WebArchitectureRulesTest.java:76: for (var rule : WebArchitectureRules.webScopedRules()) { ./test/java/dev/caskeleton/adapter/inbound/web/testkit/arch/WebArchitectureRulesTest.java:86: assertThat(WebArchitectureRules.all()).hasSize(7); ./test/java/dev/caskeleton/adapter/inbound/web/testkit/arch/WebArchitectureRulesTest.java:87: assertThat(WebArchitectureRules.webScopedRules()).hasSize(6); ./test/java/dev/caskeleton/adapter/inbound/web/testkit/arch/WebArchitectureRulesTest.java:88: assertThat(WebArchitectureRules.crossLeafRules()) exit=0 $ grep -n 'hasSize' adapter/inbound/web/src/test/java/dev/caskeleton/adapter/inbound/web/testkit/arch/WebArchitectureRulesTest.java 86: assertThat(WebArchitectureRules.all()).hasSize(7); 87: assertThat(WebArchitectureRules.webScopedRules()).hasSize(6); 90: .hasSize(1); exit=0 === 8.4b 자동설정이 세운 컨텍스트를 확인하는 테스트가 있는가 === $ grep -c 'WebMvcBudgetFilter\|WebMvcThrottleFilter\|WebIdempotencyGate' adapter/inbound/web/src/test/java/dev/caskeleton/adapter/inbound/web/mvc/autoconfigure/WebMvcPlatformAutoConfigurationTest.java 0 exit=1 $ grep -n 'void ' adapter/inbound/web/src/test/java/dev/caskeleton/adapter/inbound/web/mvc/autoconfigure/WebMvcPlatformAutoConfigurationTest.java 32: void aServletApplicationGetsThePlatformBeans() { 48: void theStandardBudgetProfileIsRegistered() { 60: void aReactiveApplicationGetsNoneOfTheServletWiring() { 72: void aNonWebApplicationGetsNoneOfItEither() { 80: void theMasterSwitchTurnsEverythingOff() { 93: void theRequestIdIsNotTrustedByDefault() { 103: void anAdopterBeanReplacesThePlatformDefault() { exit=0