Sub-scope 04 (cache-redis) sdk/lettuce/operations — manifest and probes
revision=a24ece9cf797f7ea647e33bf846b115208ed1ba5
generatedAt=2026-08-30T04:43:27+00:00

=== OWNED FILES ===
6cf662195dbee620aba4f7c41cfe1f2d89876065 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/AtomicCounterScripts.java 205
ebdd761fef7815229d24e4b284d7fc2d0da94319 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/BatchExecution.java 268
0ef880fb95edd2fa69776d6272db959f146f5d3a main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/BitmapOperationRequests.java 215
a3ed40f047d615777a3812903e5cdda744bdc28d main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/GeoOperationRequests.java 251
e1378b452a09b2f1fbf4977683f560a609178cde main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/GeoSearchHit.java 60
b13c4cdd3ecd67a47794f2c82c4f8fe68b4be250 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/HashOperationRequests.java 422
b498fbdffa74fa32c74c6c9901ddec0f490f364e main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/HashScanPage.java 38
f090c0f82196f1134585576bade6c439b2e297c6 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/HyperLogLogOperationRequests.java 117
ccd7e9ee3231f4882834a5851d53874b951f8eed main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/KeyOperationRequests.java 306
fc0391925f2d4567c1f552c3fd4620eea451eb4e main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/KeyScanPage.java 20
464148742de02dab8c9fb01077a8eaab2611ebcb main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/KeyedElement.java 69
a07568c841979b9ff7c2aabc1ec2d824dedfa523 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisBatchOperations.java 39
7c7028b516f73929501f84819f642c5f33e3d212 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisBitFieldOperations.java 47
e06bedcefb195d7e6a970dae4656172f4293a97d main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisBitmapOperations.java 68
7673ea8ff186f47f56e5aa581848f4519ba7f84b main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisBlockingListOperations.java 61
40584fa184ae9d9d0e185fa84873539e59f2eab8 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisBlockingStreamOperations.java 63
0c05b18389ddc243326162f33d10c30f1028b378 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisGeoOperations.java 75
091f2635e6db9517fb0d99ff3851d81732e01ec7 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisHashFieldExpirationOperations.java 76
dd8f96efd8c87287a6abddd30a8aeb1239985776 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisHashOperations.java 100
57468eb07817ea09408fb9db8f41d0ce9f3004e1 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisHyperLogLogOperations.java 51
e4ce1a2a1517b4eb076e6634fbca24eec0b3c311 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisKeyOperations.java 116
53c688aa96917807909d58eda6b9b6f99600b61e main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisListOperations.java 129
92bab6ed3d7f37c2a8877a6fa999f7aa082c4be5 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisPubSubOperations.java 63
732a51919870dee11baf65acdc2b2e7f0b50862f main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisSetOperations.java 126
fef674100f309c99a1aa8463d274324dfbdfc059 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisShardedPubSubOperations.java 67
226542121289c71802d5aa8c50bc57b11518f388 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisSortedSetOperations.java 143
ea1891dc0a62fe1f9c49381b9cc89d397a06eae3 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisStreamOperations.java 143
fe00fbce7b318b6f67dcd51565010173940ca44e main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisValueOperations.java 126
876157cec26edc36170627eeb5058ce40c813946 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisBatch.java 247
4ba7fb5f4ca43c83fb8af40c05b9524442b66832 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisBatchOperations.java 49
986f51cc50aff0048d9196eb8591dec4e5a2ceef main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisBitFieldOperations.java 43
25b7a746ae3c5db4122d86b4de4f954072369fe1 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisBitmapOperations.java 66
8ab8e6d838c4af01423c15dc42ab66934a2b2bae main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisBlockingListOperations.java 63
76c96cc1c3e9acb68af593a3ea4ff2963b089c63 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisBlockingStreamOperations.java 65
7e5ead5e8a8e760f8fd5185c179c336fa0514da5 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisCommandGateway.java 1282
d98021fab79b081ec43b0868e755f872a0634014 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisGeoOperations.java 72
64c2bb0e76334d96683dcf3f6c78f83d24d96630 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisHashFieldExpirationOperations.java 76
72cf0bdcac528ed9b3890e014fed3bf25a99dca3 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisHashOperations.java 97
d5025f3d61efbe3c377e7b9d327c72848e0f8777 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisHyperLogLogOperations.java 49
37413707e3860800d7765edb47ef6dc0464ca36a main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisKeyOperations.java 108
bd38ec25d217cd50dda167199a64be21e4a66964 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisListOperations.java 114
b067509eb186a62c9bff6e9c23d8167462cc2b36 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisPubSubOperations.java 116
047d48a54cab4b70b2adcffc03c247465a8c56ed main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisSetOperations.java 117
dea4045eecda4d7ce5705fbe4c8f4330781f4ee2 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisShardedPubSubOperations.java 77
bf1201b1780738724d0bbd1e162b6e047d89e3c3 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisSortedSetOperations.java 131
c9f50d6847727374f3337fea554cd91fd101b2c5 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisStreamDeletionOperations.java 71
7d71c9d4e91fd4e48f5781fb95e321d3ed91e630 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisStreamOperations.java 136
e371ddaf28f013a2ce8ff085ecc8f00056d6efaf main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisValueOperations.java 106
dbe36970d2eed97c899bb1179a00a835a4b34fb9 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/ListOperationRequests.java 344
a24b04c704c624500bae71453e0d294e3a00648c main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LiveSubscription.java 44
3dca7b2f39a817e062b14ea243559ff1f1b626f9 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/MemberScanPage.java 20
ebde9ccf6ef7adde983de91e95e0e721ca75cb98 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/PubSubOperationRequests.java 119
0668c6edde069adf0ce0f1f4b9c63b93ee796386 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisCommandGateway.java 1227
6435d76379bbb314e971632cafa081a8ec64b653 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisOperationContext.java 405
0e94f868b6630651bd5286789d4ae50cb34c62ec main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisOperationLimits.java 66
1153c0360f91d75e810e8a49e0f1f06a0968155a main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisPubSubGateway.java 71
480d1fbbe13ecb020aed8753e550c48d5e78d5ad main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/ScoredMemberPage.java 39
c7d5429e3b4a973f96fc1440c775d7b51255acb3 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/SetOperationRequests.java 333
c13f507b272d10ab2748cc89b99a8b7fa99d4a32 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/SortedSetOperationRequests.java 413
671eb1cadbc124308e16232a5f81f6d0ebaf78d6 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/StreamClaimPage.java 23
8ba6626467bce2d83df6af743c85ff38c1ffe434 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/StreamEntry.java 74
b19bfaa45f681b22a23df0589e32e7f9f395400e main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/StreamOperationRequests.java 487
1373ea0cf7fcc1855446cda64405b194ccfeb14a main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/StreamPendingEntry.java 23
30e9818ab663b4384444c2a71f59d04ad671db6e main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/StreamPendingOverview.java 29
44ab90844511c34d41255e2ef0cf0e28cbbcbe54 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/SubscriptionFlux.java 113
e5716c2316f8bfe5232b917aac8febf420bb0c77 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/ValueOperationRequests.java 320
faf060a80d6af9adb4f7a3a8177d8e222c6f7bc1 main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/WritePresence.java 19
70750e5d41a09cb5e139d97d004a6b91210491e4 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/DeferringRedisCommandGateway.java 148
ada4e6b819d8ab4662274d7e015040838f6d1224 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/InMemoryGatewayAccess.java 50
eb23912c9b1770ff2177a11069cfaf5e2a80369b test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/InMemoryRedisCommandGateway.java 2456
3e8e6565c4afbcee07a2e44ce4a47767f042f299 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/InMemoryRedisPubSubGateway.java 111
b86f725323cf79f4658eb368ca7430ee78f171de test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LiveRedisClusterTest.java 362
b714df0adca919051529f8fc56b928e7056db0d8 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LiveRedisGuardrailTest.java 230
1bab101e188b06ce7802769b9df98c1af83dc438 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LiveRedisOperationsFixture.java 178
d5d4004b89ea808d188db5a336c855549d8b5ada test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LiveRedisSentinelPromotionTest.java 437
2bb94f85b030f39bc6e6f789412ac9f7982a5493 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisAdminPlaneContractTest.java 157
fed1ef2199c5d199bb0d39435b3a2163aab2bbd8 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisBatchOperationsContractTest.java 200
42c5a401b1effe90a4705b95a9d8a6dd53e94dd6 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisBitmapGeoOperationsContractTest.java 207
1e53439857d1d13c4fe280b14b7d7a7ac504fd22 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisExtensionModulesContractTest.java 260
65182ca66a7b59e9ec357e724ad90636ceb62645 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisFunctionOperationsContractTest.java 92
0b8e1a13170a54ab4e7a1868cec29c9c4eed1901 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisHashFieldExpirationContractTest.java 148
32ed7f23b77ea1b6fe8d13cd575f9256849210c1 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisHashOperationsContractTest.java 140
4d3c5ba837087193b945030fcbf646508f3c3909 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisKeyOperationsContractTest.java 244
1f9db540792d5eba76a34c87868ab235a3627c70 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisListOperationsContractTest.java 167
e122f1b24781db3b0cf4479bd8eda9e177cbb3d9 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisOperationsFixture.java 272
8e318ada864e0f23c67a72d73b313f5a8d2b362f test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisPubSubOperationsContractTest.java 201
56060a362973fd1a96aa4db1061f15adcdee6cfc test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisRawGatewayContractTest.java 174
082272f0335a05d7b4027a640f2640234c7fbe7d test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisScriptOperationsContractTest.java 152
dee6eb1dc4f517ab84f2a6ef9b91eea5e0c93a89 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisSetOperationsContractTest.java 170
4520f64a5b153db7f02e9614f16fafe8b297d154 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisSortedSetOperationsContractTest.java 197
5cd316d012a84275e4a79c8df270493133ab3972 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisStreamDeletionCapabilityTest.java 75
46fb0aef30da1c67b54c578ff36109872882a8f8 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisStreamOperationsContractTest.java 302
6c575edd24540b9c01384441dbe748e2b15f6c87 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisTransactionContractTest.java 324
977660d64e9b228f936a3aab8e9e4638d0416664 test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisTransactionSlotContractTest.java 181
6f0a16a39e14f820df28ec790e46c840ed1a640e test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisValueOperationsContractTest.java 265

main: 67  test: 28
main LOC:  10718 total
=== 8.1 금지된 표면: 명령 이름을 받는 메서드가 없는가 ===
$ grep -rn 'execute(String\|command(String\|dispatch(String' adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations | head
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisCommandGateway.java:34: * execute(String, byte[]...)} surface cannot appear here either.
exit=0

$ grep -c 'CompletionStage' adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisCommandGateway.java
119
exit=0

$ grep -oE '^  CompletionStage<[^>]*(<[^>]*>)?[^>]*> [a-zA-Z]+\(' adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisCommandGateway.java | wc -l
114
exit=0

=== 8.2 두 프로그래밍 모델이 같은 request builder를 지나는가 ===
$ grep -l 'OperationRequests\.' adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/Lettuce*.java | wc -l
0
exit=0

$ grep -ho '[A-Za-z]*OperationRequests\.' adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisValueOperations.java adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisValueOperations.java | sort | uniq -c
exit=0

$ grep -n 'RedisOperationContext' adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisValueOperations.java adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisValueOperations.java | head -6
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisValueOperations.java:30:      RedisOperationContext context,
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceReactiveRedisValueOperations.java:37:      RedisOperationContext context,
exit=0

=== 8.3 in-memory double이 실제 gateway와 같은 계약을 구현하는가 ===
$ grep -n 'class InMemoryRedisCommandGateway' -A 3 adapter/outbound/cache-redis/src/test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/InMemoryRedisCommandGateway.java
60:final class InMemoryRedisCommandGateway implements RedisCommandGateway {
61-
62-  private final Map<String, Entry> entries = new TreeMap<>();
63-
exit=0

$ diff <(grep -oE '[a-zA-Z]+\(byte\[\]|[a-zA-Z]+\(List<byte' adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisCommandGateway.java | sort -u | head -60) <(grep -oE '[a-zA-Z]+\(byte\[\]|[a-zA-Z]+\(List<byte' adapter/outbound/cache-redis/src/test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/InMemoryRedisCommandGateway.java | sort -u | head -60) | head -30
0a1,2
> Entry(byte[]
> HashEntry(byte[]
4d5
< bitPosition(byte[]
9d9
< expireAt(byte[]
11d10
< geoDistance(byte[]
20d18
< hashExpireFields(byte[]
37d34
< listBlockingPop(List<byte
39d35
< listMove(byte[]
47a44
> numbers(List<byte
60a58,60
> setUnion(List<byte
> sortedSetCountByScore(byte[]
> sortedSetIncrementScore(byte[]
exit=0

=== 8.4 응답 예산이 실제로 강제되는가 ===
$ git grep -c 'requireReplyWithinBudget' -- 'adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations' | head -20
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/BitmapOperationRequests.java:1
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/GeoOperationRequests.java:1
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/HashOperationRequests.java:1
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/KeyOperationRequests.java:1
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/ListOperationRequests.java:1
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/RedisOperationContext.java:1
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/SetOperationRequests.java:1
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/SortedSetOperationRequests.java:2
adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/ValueOperationRequests.java:2
exit=0

$ git grep -n 'requireReplyWithinBudget' -- 'adapter/outbound/cache-redis/src/main' | wc -l
12
exit=0

=== 8.4b guard 통과가 실제로 강제되는가 ===
$ grep -n 'CommandPolicyGuard\|guard\.' adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisCommandGateway.java | head -20
exit=0

$ grep -n 'class LettuceRedisCommandGateway' -B 25 adapter/outbound/cache-redis/src/main/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations/LettuceRedisCommandGateway.java | sed -n '1,30p'
58-import io.lettuce.core.models.stream.StreamEntryDeletionResult;
59-import io.lettuce.core.output.NestedMultiOutput;
60-import io.lettuce.core.output.ScoredValueListOutput;
61-import io.lettuce.core.output.ValueListOutput;
62-import io.lettuce.core.protocol.CommandArgs;
63-import io.lettuce.core.protocol.CommandKeyword;
64-import io.lettuce.core.protocol.CommandType;
65-import io.lettuce.core.protocol.ProtocolKeyword;
66-import java.nio.charset.StandardCharsets;
67-import java.time.Duration;
68-import java.time.Instant;
69-import java.util.ArrayList;
70-import java.util.LinkedHashMap;
71-import java.util.List;
72-import java.util.Map;
73-import java.util.Objects;
74-import java.util.Optional;
75-import java.util.concurrent.CompletionStage;
76-
77-/**
78- * The only place in the SDK where a typed operation reaches Lettuce.
79- *
80- * <p>The driver is bound to {@code byte[]} keys and values on purpose: rendering and encoding have
81- * already happened in the typed layer, so nothing here can reinterpret a key or pick a codec.
82- */
83:public final class LettuceRedisCommandGateway implements RedisCommandGateway {
exit=0

=== 8.4c test 목록 ===
$ git ls-files 'adapter/outbound/cache-redis/src/test/java/dev/caskeleton/adapter/outbound/cache/redis/sdk/lettuce/operations' | xargs -n1 basename
DeferringRedisCommandGateway.java
InMemoryGatewayAccess.java
InMemoryRedisCommandGateway.java
InMemoryRedisPubSubGateway.java
LiveRedisClusterTest.java
LiveRedisGuardrailTest.java
LiveRedisOperationsFixture.java
LiveRedisSentinelPromotionTest.java
RedisAdminPlaneContractTest.java
RedisBatchOperationsContractTest.java
RedisBitmapGeoOperationsContractTest.java
RedisExtensionModulesContractTest.java
RedisFunctionOperationsContractTest.java
RedisHashFieldExpirationContractTest.java
RedisHashOperationsContractTest.java
RedisKeyOperationsContractTest.java
RedisListOperationsContractTest.java
RedisOperationsFixture.java
RedisPubSubOperationsContractTest.java
RedisRawGatewayContractTest.java
RedisScriptOperationsContractTest.java
RedisSetOperationsContractTest.java
RedisSortedSetOperationsContractTest.java
RedisStreamDeletionCapabilityTest.java
RedisStreamOperationsContractTest.java
RedisTransactionContractTest.java
RedisTransactionSlotContractTest.java
RedisValueOperationsContractTest.java
exit=0

