Sub-scope 04 (fileserver) platform/local - IO primitive / gateway / store+publisher
revision=a24ece9cf797f7ea647e33bf846b115208ed1ba5
generatedAt=2026-08-30T01:22:06+00:00

=== OWNED FILES ===
3c03d0e4158da54e8105d03c2233662139b0bd2e platform/local/LocalStorageLayout.java 29
ade8a995be43b400974148f20e103cd347ec3bef platform/local/PhysicalPathResolver.java 26
ef697d8d353ad83cd8cdf2bf0af833d98a06065b platform/local/DefaultPhysicalPathResolver.java 134
de4a170b7c7d44bc69302b958c161145ce8ad6aa platform/local/SecureDirectoryWalk.java 172
eb5594e2bdce47fc01e720c811faae93ab222530 platform/local/SafeFileChannelFactory.java 288
35b5e29b631cdd50ff4618983f669bcde1f16447 platform/local/BoundedFileChannel.java 52
d60c3a5db41a27b3612bb8514146e4edc4416ab3 platform/local/StreamingDigest.java 62
675e5f0e0b22e3280e5037ba6a65be35de84b599 platform/local/TransferBufferPool.java 59
05639c1c99be3986dcb1978e480052b1b589a178 platform/local/LocalAppendEngine.java 260
c03b3c4a65a834b55969a74c73c84100ac315fb2 platform/local/LocalUploadContentGateway.java 118
16b82d1689bdd819dd655e20f699d363cbe8b4af platform/local/LocalUploadStorageGateway.java 62
61e4a361fd57accc87355befde54e4d8a8f8c8c8 platform/local/LocalDownloadContentGateway.java 26
d61ca3342028694c233131a16510ca597ec0eb75 platform/local/LocalZeroCopyDownloadGateway.java 42
d5c5b8d0e1f3890e92416f4adb13b9c691e58e06 platform/local/LocalCopyContentGateway.java 102
64a3456555dae206bd5fdac3d5adf22aa17db6e7 platform/local/LocalCleanupContentGateway.java 33
7d4466f3071626cf4e19cf3167b701055943a89b platform/local/LocalUploadHandle.java 75
28ea844dd9209f303ac2782070c700e1a0c45eec platform/local/LocalBlockingContentStore.java 400
38924d53eec31163de73d6b98a8da8351c94f538 platform/local/ContentPublisher.java 17
e878aab9a89c2dc268cad36ae4b0f440ce2ebb79 platform/local/AtomicMoveContentPublisher.java 124
b5e407f37420a3d861cc7d612a7375e95102ed3d platform/local/MetadataPointerContentPublisher.java 115
d9c8790ab5f0beb9c206e01610aebc3f219b44f9 platform/local/ContentPublishVerification.java 133
7a4b14c2820ac250818c2e43544cd71253fa3e06 platform/local/PublishResult.java 21
b01552ee5658797faef668bc322b9776681e1587 test/ContentPublisherTest.java 208
8a9a8ad2799700f69ef9e428d0dafd928b0f89cf test/LocalAppendEngineTest.java 245
72c3b9920e105683e58df82a0e7f717eceb548f9 test/LocalAppendMemoryTest.java 92
42fd4735920e8b8ce26f48dc3d5a7eb634dcf12f test/LocalCreateUploadTest.java 157
db9c350bf983107f17fd62234222445fb78b60be test/LocalCreateUploadConcurrencyTest.java 72
7e1fbf711532bbe13dc69c9f3707a329b5ef2ab4 test/LocalStorageGatewayContractTest.java 269
2696bca685bf8a49c4bb37839dded0c19c0c877f test/PhysicalPathResolverTest.java 112
00fcdd6fd3c8e7464b19dfcf119f762be22b8cb9 test/LocalContentStoreFixture.java 82

=== 8.1 reachability: which platform/local types are public? ===
$ grep -l 'public final class\|public interface\|public record' adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/*.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/AmbiguousFilesystemOperationDetector.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalBlockingContentStore.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalCleanupContentGateway.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalCopyContentGateway.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalDownloadContentGateway.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalReconciliationContentProbe.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageHealthAdapter.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageProbeResult.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageProperties.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageUsageProbe.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalUploadContentGateway.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalUploadStorageGateway.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalZeroCopyDownloadGateway.java
exit=0

$ git grep -rln 'platform.local' -- . | grep -v "^adapter/outbound/fileserver/"
app-bootstrap/src/main/java/dev/caskeleton/bootstrap/autoconfigure/fileserver/FileserverServiceConfiguration.java
app-bootstrap/src/main/java/dev/caskeleton/bootstrap/autoconfigure/fileserver/FileserverStartupCheck.java
app-bootstrap/src/main/java/dev/caskeleton/bootstrap/autoconfigure/fileserver/FileserverStartupConfiguration.java
app-bootstrap/src/main/java/dev/caskeleton/bootstrap/autoconfigure/fileserver/FileserverStartupValidator.java
app-bootstrap/src/main/java/dev/caskeleton/bootstrap/autoconfigure/fileserver/FileserverStorageConfiguration.java
app-bootstrap/src/test/java/dev/caskeleton/bootstrap/autoconfigure/fileserver/FileserverStartupValidatorTest.java
exit=0

=== 8.2 the module's own rule: descriptor-relative access, and where pathnames survive ===
--- descriptor-relative usage per file
$ grep -c 'SecureDirectoryWalk\|channels\.' adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalBlockingContentStore.java adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalAppendEngine.java adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SafeFileChannelFactory.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalBlockingContentStore.java:20
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalAppendEngine.java:5
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SafeFileChannelFactory.java:5
exit=0

--- every remaining java.nio.file.Files.* call in platform/local
$ grep -n 'Files\.' adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/*.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/AtomicMoveContentPublisher.java:53:      Files.move(staging, target, StandardCopyOption.ATOMIC_MOVE);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/AtomicMoveContentPublisher.java:113:    boolean stagingGone = !Files.exists(staging, LinkOption.NOFOLLOW_LINKS);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/AtomicMoveContentPublisher.java:114:    boolean targetPresent = Files.exists(target, LinkOption.NOFOLLOW_LINKS);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublishVerification.java:53:      return Files.size(target);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublishVerification.java:114:      if (!Files.isDirectory(directory, LinkOption.NOFOLLOW_LINKS)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalAppendEngine.java:124:   * <p>{@code Files.size} would re-resolve the whole pathname, which is precisely the lookup a
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:73:    if (!Files.isDirectory(contentRoot, LinkOption.NOFOLLOW_LINKS)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:81:    try (Stream<Path> tree = Files.walk(contentRoot, MAXIMUM_WALK_DEPTH)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:111:    if (!Files.isRegularFile(object, LinkOption.NOFOLLOW_LINKS)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:121:      size = Files.size(object);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:122:      modifiedAt = Files.getLastModifiedTime(object, LinkOption.NOFOLLOW_LINKS).toInstant();
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:135:      Files.createDirectories(quarantined.getParent());
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:136:      Files.move(object, quarantined, StandardCopyOption.ATOMIC_MOVE);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:146:      Files.move(quarantined, object, StandardCopyOption.ATOMIC_MOVE);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:163:    if (!Files.isRegularFile(quarantined, LinkOption.NOFOLLOW_LINKS)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:167:      return Files.deleteIfExists(quarantined);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:174:    if (!Files.isRegularFile(candidate, LinkOption.NOFOLLOW_LINKS)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:184:      size = Files.size(candidate);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalOrphanScanAdapter.java:185:      modifiedAt = Files.getLastModifiedTime(candidate, LinkOption.NOFOLLOW_LINKS).toInstant();
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:56:      Files.createDirectories(probeDirectory);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:119:      Files.delete(candidate);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:166:      Files.createDirectories(resolver.stagingRoot());
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:167:      Files.createDirectories(resolver.contentRoot());
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:168:      Files.createDirectories(resolver.quarantineRoot());
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:169:      Object staging = Files.getFileStore(resolver.stagingRoot());
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:170:      Object content = Files.getFileStore(resolver.contentRoot());
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:171:      Object quarantine = Files.getFileStore(resolver.quarantineRoot());
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:187:      Files.write(source, new byte[] {1, 2, 3});
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:188:      Files.move(source, target, StandardCopyOption.ATOMIC_MOVE);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:189:      return Files.exists(target, LinkOption.NOFOLLOW_LINKS);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:206:      Files.write(source, new byte[] {1});
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:207:      Files.write(target, new byte[] {2});
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:208:      Files.move(source, target, StandardCopyOption.REPLACE_EXISTING);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:224:      Files.write(target, new byte[] {7});
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:225:      Files.createSymbolicLink(link, target);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:248:      Files.write(candidate, new byte[] {9});
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:250:        Files.delete(candidate);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:263:      return Files.getFileStore(properties.root()).getUsableSpace() >= 0;
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:273:      String type = Files.getFileStore(properties.root()).type();
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:284:      Files.deleteIfExists(path);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:292:    if (!Files.isDirectory(directory, LinkOption.NOFOLLOW_LINKS)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageCapabilityProbe.java:295:    try (Stream<Path> entries = Files.walk(directory)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageHealthAdapter.java:46:      FileStore fileStore = Files.getFileStore(root);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageHealthAdapter.java:56:        Files.isWritable(root),
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageUsageProbe.java:35:      FileStore store = Files.getFileStore(root);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/MetadataPointerContentPublisher.java:107:      Files.deleteIfExists(staging);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/MetadataPointerContentPublisher.java:110:      if (Files.exists(staging, LinkOption.NOFOLLOW_LINKS)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SafeFileChannelFactory.java:143:    if (parent == null || Files.isDirectory(parent, LinkOption.NOFOLLOW_LINKS)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SafeFileChannelFactory.java:147:      Files.createDirectories(parent);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SafeFileChannelFactory.java:167:    if (Files.isSymbolicLink(current)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SafeFileChannelFactory.java:172:      if (Files.isSymbolicLink(current)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SafeFileChannelFactory.java:224:        Files.setPosixFilePermissions(current, OWNER_ONLY_DIRECTORY);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SecureDirectoryWalk.java:129:    if (!Files.isDirectory(root, LinkOption.NOFOLLOW_LINKS)) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SecureDirectoryWalk.java:134:    DirectoryStream<Path> stream = Files.newDirectoryStream(root);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SecureDirectoryWalk.java:146:    try (DirectoryStream<Path> stream = Files.newDirectoryStream(directory)) {
exit=0

=== 8.2b the publish rename: pathname move guarded by the precheck the module calls insufficient ===
$ grep -n 'requireNoSymlinkBetween' -B 3 -A 3 adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/AtomicMoveContentPublisher.java
47-    ContentKey contentKey = resolver.newContentKey();
48-    Path target = resolver.contentPath(contentKey);
49-    channels.createParentDirectories(root, target);
50:    channels.requireNoSymlinkBetween(root, target.getParent());
51-
52-    try {
53-      Files.move(staging, target, StandardCopyOption.ATOMIC_MOVE);
exit=0

$ grep -n 'Retained for the capability probe' -A 6 adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SafeFileChannelFactory.java
155:   * Retained for the capability probe, which still reasons about pathnames.
156-   *
157-   * <p>Production access no longer relies on it: descending descriptor by descriptor with {@code
158-   * NOFOLLOW_LINKS} refuses a symlinked component by construction, which a precheck could only ever
159-   * approximate.
160-   */
161-  void requireNoSymlinkBetween(Path root, Path leaf) {
exit=0

$ grep -n 'could only ever approximate\|More checks only narrow the window' adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SafeFileChannelFactory.java adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SecureDirectoryWalk.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/SecureDirectoryWalk.java:20: * directories. More checks only narrow the window; they never close it.
exit=0

=== 8.2c the same question answered two ways: file length ===
$ grep -n 'Files.size' -B 4 adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublishVerification.java
49-  }
50-
51-  long sizeOf(Path target) {
52-    try {
53:      return Files.size(target);
exit=0

$ grep -n 'private long currentLength' -B 8 -A 4 adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalAppendEngine.java
121-  /**
122-   * Length read through the staging file's parent descriptor.
123-   *
124-   * <p>{@code Files.size} would re-resolve the whole pathname, which is precisely the lookup a
125-   * replaced shard directory redirects: an attacker who swaps the parent for a symlink gets this
126-   * check to report the size of their own file, and the offset comparison that follows is then
127-   * being made about a different object than the one the append will open.
128-   */
129:  private long currentLength(Path root, Path staging) {
130-    return channels.readAttributes(root, staging).size();
131-  }
132-
133-  /**
exit=0

=== 8.3 duplicate mechanism: two publishers, one selection point ===
$ grep -n 'selectPublisher' -A 18 adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalBlockingContentStore.java | head -24
63:    this.publisher = selectPublisher(properties, probeResult, verification);
64-    this.capabilities = probeResult.toCapabilities(true);
65-  }
66-
67-  /**
68-   * Chooses the publish strategy from the probe result.
69-   *
70-   * <p>{@code ATOMIC_MOVE_REQUIRED} fails closed when the probe could not demonstrate an atomic
71-   * move; {@code ATOMIC_MOVE_PREFERRED} degrades to a metadata pointer publish instead.
72-   */
73:  private ContentPublisher selectPublisher(
74-      LocalStorageProperties properties,
75-      LocalStorageProbeResult probeResult,
76-      ContentPublishVerification verification) {
77-    Path root = properties.root();
78-    boolean atomicProven = probeResult.atomicMove();
79-    return switch (properties.publishMode()) {
80-      case ATOMIC_MOVE_REQUIRED -> {
81-        if (!atomicProven) {
82-          throw new AtomicPublishUnsupportedException(
83-              "publish mode requires an atomic move that the storage probe could not prove",
84-              FileserverFailureContext.of(FileserverErrorCode.ATOMIC_PUBLISH_UNSUPPORTED, false));
85-        }
86-        yield new AtomicMoveContentPublisher(root, resolver, channels, verification);
exit=0

$ grep -n 'usesAtomicMove' adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/*.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/AtomicMoveContentPublisher.java:101:  public boolean usesAtomicMove() {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisher.java:16:  boolean usesAtomicMove();
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalBlockingContentStore.java:379:    return publisher.usesAtomicMove();
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalBlockingContentStore.java:384:    if (publisher.usesAtomicMove()) {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/MetadataPointerContentPublisher.java:69:  public boolean usesAtomicMove() {
exit=0

=== 8.4 doc/behaviour: bounded memory claim and its regression test ===
$ grep -n 'maxBorrowedBytes' adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/TransferBufferPool.java adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalAppendMemoryTest.java
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/TransferBufferPool.java:20:  private final AtomicLong maxBorrowedBytes = new AtomicLong();
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/TransferBufferPool.java:38:    maxBorrowedBytes.accumulateAndGet(outstanding, Math::max);
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/TransferBufferPool.java:56:  long maxBorrowedBytes() {
adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/TransferBufferPool.java:57:    return maxBorrowedBytes.get();
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalAppendMemoryTest.java:54:    assertThat(bufferPool.maxBorrowedBytes()).isLessThanOrEqualTo(BUFFER_BYTES);
exit=0

$ grep -nE '@Test|  void ' adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalAppendMemoryTest.java adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java | head -30
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalAppendMemoryTest.java:31:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalAppendMemoryTest.java:32:  void maxObservedBufferDoesNotGrowWithPayload() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:20:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:21:  void generatedContentPathAlwaysStaysBelowContentRoot() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:30:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:31:  void stagingPathIsShardedFromTheUploadIdentityOnly() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:43:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:44:  void quarantinePathMirrorsTheContentLayoutInASeparateArea() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:67:  void rejectsEveryKeyThatIsNotTheServerGeneratedShardedShape(String candidate) {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:75:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:76:  void newContentKeyIsShardedUniqueAndResolvable() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:87:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:88:  void aRelativeStorageRootIsRejectedOutright() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:93:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:94:  void everyAreaRootStaysBelowTheConfiguredRoot() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:103:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:104:  void resolutionNeverDependsOnAClientFilename() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:32:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:33:  void atomicPublisherMovesStagingToCreateOnlyTarget() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:48:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:49:  void pointerPublisherKeepsImmutableObjectAndReturnsNewContentKey() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:64:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:65:  void bothStrategiesRecordTheProvenSizeAndDigest() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:80:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:81:  void aDigestMismatchNeverPublishesAnything() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:94:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:95:  void aLengthMismatchNeverPublishesAnything() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:107:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:108:  void requiredAtomicModeFailsClosedWhenTheProbeCouldNotProveIt() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:119:  @Test
exit=0

$ grep -nE '@Test|  void ' adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalCreateUploadConcurrencyTest.java adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java | head -30
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalCreateUploadConcurrencyTest.java:28:  void exactlyOneConcurrentCreateWinsForSameUploadId() throws Exception {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:47:  void setUp() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:56:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:57:  void anUploadIsStagedAppendedAndReadBackThroughTheGateways() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:67:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:68:  void aStagingLengthOfAMissingObjectReadsAsZeroRatherThanFailing() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:76:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:77:  void aStagedDigestIsRefusedWhenTheOffsetDisagreesWithTheBytesOnDisk() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:86:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:87:  void aPublishedObjectIsReadableThroughTheDownloadGateway() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:96:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:97:  void aRangedReadIsBoundedToTheRequestedRegion() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:106:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:107:  void aCopyProducesAnIndependentObjectWithTheSameBytes() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:121:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:122:  void deletingTheCopyLeavesTheSourceIntact() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:133:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:134:  void aDeleteWhoseSizePreconditionDisagreesIsRefused() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:143:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:144:  void deletingAnAbsentObjectIsIdempotentRatherThanAFailure() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:152:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:153:  void aDirectTransferWritesExactlyTheRequestedRegion() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:165:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:166:  void aDirectTransferDeclinesForAnObjectThatIsNotThereRatherThanThrowing() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:188:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:189:  void aSinkThatStopsPartWayReportsAPartialTransferRatherThanADecline() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:230:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:231:  void aStagingCleanupRemovesTheBytesTheUploadOwned() {
exit=0


=== 8.4b maxBorrowedBytes: the javadoc names a regression test; who reads it? ===
$ grep -n 'the bounded-memory regression asserts on this' -A 3 adapter/outbound/fileserver/src/main/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/TransferBufferPool.java
55:  /** Peak simultaneously-borrowed bytes; the bounded-memory regression asserts on this. */
56-  long maxBorrowedBytes() {
57-    return maxBorrowedBytes.get();
58-  }
exit=0

$ git grep -rn 'maxBorrowedBytes' -- 'adapter/outbound/fileserver/src' | grep -v 'TransferBufferPool.java'
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalAppendMemoryTest.java:54:    assertThat(bufferPool.maxBorrowedBytes()).isLessThanOrEqualTo(BUFFER_BYTES);
exit=0

$ grep -nE '@Test|  void |assertThat' adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalAppendMemoryTest.java | head -20
3:import static org.assertj.core.api.Assertions.assertThat;
31:  @Test
32:  void maxObservedBufferDoesNotGrowWithPayload() throws IOException {
53:    assertThat(result.committedOffset()).isEqualTo(PAYLOAD_BYTES);
54:    assertThat(bufferPool.maxBorrowedBytes()).isLessThanOrEqualTo(BUFFER_BYTES);
55:    assertThat(Files.size(staging)).isEqualTo(PAYLOAD_BYTES);
exit=0

$ git grep -rn 'LargeFileBoundedMemory' -- 'adapter/outbound/fileserver/src' | head -4
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/testkit/LargeFileBoundedMemoryTest.java:34:class LargeFileBoundedMemoryTest {
exit=0

$ grep -nE '@Test|  void |assertThat.*[Mm]emory|Runtime.getRuntime' adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/testkit/LargeFileBoundedMemoryTest.java | head -20
43:  @Test
44:  void uploadingALargeObjectNeverRequestsMoreThanOneBufferAtATime() {
71:  @Test
72:  void readingALargeObjectIsAlsoBounded() throws Exception {
exit=0

=== 8.4c what LocalCreateUploadConcurrencyTest and the gateway contract cover ===
$ grep -nE '@Test|  void ' adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalCreateUploadConcurrencyTest.java adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalCreateUploadConcurrencyTest.java:28:  void exactlyOneConcurrentCreateWinsForSameUploadId() throws Exception {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:47:  void setUp() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:56:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:57:  void anUploadIsStagedAppendedAndReadBackThroughTheGateways() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:67:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:68:  void aStagingLengthOfAMissingObjectReadsAsZeroRatherThanFailing() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:76:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:77:  void aStagedDigestIsRefusedWhenTheOffsetDisagreesWithTheBytesOnDisk() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:86:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:87:  void aPublishedObjectIsReadableThroughTheDownloadGateway() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:96:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:97:  void aRangedReadIsBoundedToTheRequestedRegion() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:106:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:107:  void aCopyProducesAnIndependentObjectWithTheSameBytes() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:121:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:122:  void deletingTheCopyLeavesTheSourceIntact() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:133:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:134:  void aDeleteWhoseSizePreconditionDisagreesIsRefused() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:143:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:144:  void deletingAnAbsentObjectIsIdempotentRatherThanAFailure() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:152:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:153:  void aDirectTransferWritesExactlyTheRequestedRegion() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:165:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:166:  void aDirectTransferDeclinesForAnObjectThatIsNotThereRatherThanThrowing() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:188:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:189:  void aSinkThatStopsPartWayReportsAPartialTransferRatherThanADecline() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:230:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/LocalStorageGatewayContractTest.java:231:  void aStagingCleanupRemovesTheBytesTheUploadOwned() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:20:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:21:  void generatedContentPathAlwaysStaysBelowContentRoot() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:30:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:31:  void stagingPathIsShardedFromTheUploadIdentityOnly() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:43:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:44:  void quarantinePathMirrorsTheContentLayoutInASeparateArea() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:67:  void rejectsEveryKeyThatIsNotTheServerGeneratedShardedShape(String candidate) {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:75:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:76:  void newContentKeyIsShardedUniqueAndResolvable() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:87:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:88:  void aRelativeStorageRootIsRejectedOutright() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:93:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:94:  void everyAreaRootStaysBelowTheConfiguredRoot() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:103:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/PhysicalPathResolverTest.java:104:  void resolutionNeverDependsOnAClientFilename() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:32:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:33:  void atomicPublisherMovesStagingToCreateOnlyTarget() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:48:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:49:  void pointerPublisherKeepsImmutableObjectAndReturnsNewContentKey() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:64:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:65:  void bothStrategiesRecordTheProvenSizeAndDigest() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:80:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:81:  void aDigestMismatchNeverPublishesAnything() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:94:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:95:  void aLengthMismatchNeverPublishesAnything() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:107:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:108:  void requiredAtomicModeFailsClosedWhenTheProbeCouldNotProveIt() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:119:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:120:  void preferredModeDegradesToPointerPublishWhenAtomicMoveIsUnproven() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:133:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:134:  void statReadsTheProvenPhysicalSizeWithoutFollowingALink() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:146:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:147:  void rangedReadStopsExactlyAtTheRequestedEnd() throws IOException {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:158:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:159:  void deleteIsPreconditionCheckedAndIdempotent() {
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:179:  @Test
adapter/outbound/fileserver/src/test/java/dev/caskeleton/adapter/outbound/fileserver/platform/local/ContentPublisherTest.java:180:  void publishedContentIsNeverNamedAfterAClientFilename() {
exit=0

