/**
 * Outbound adapter for target folder management and unique filename resolution.
 * <p>
 * Components:
 * <ul>
 *   <li>{@link de.gecheckt.pdf.umbenenner.adapter.out.targetfolder.FilesystemTargetFolderAdapter}
 *       — Filesystem-based implementation of
 *       {@link de.gecheckt.pdf.umbenenner.application.port.out.TargetFolderPort}.</li>
 *   <li>{@link de.gecheckt.pdf.umbenenner.adapter.out.targetfolder.FilesystemTargetFileRenameAdapter}
 *       — Filesystem-based implementation of
 *       {@link de.gecheckt.pdf.umbenenner.application.port.out.TargetFileRenamePort}.</li>
 * </ul>
 * <p>
 * <strong>Duplicate resolution:</strong> Given a base name such as
 * {@code 2024-01-15 - Rechnung.pdf}, the adapter checks whether the file exists in the
 * target folder and appends a numeric suffix ({@code (1)}, {@code (2)}, …) directly
 * before {@code .pdf} until a free name is found. The 20-character base-title limit
 * does not apply to the suffix.
 * <p>
 * <strong>Rollback support:</strong> The adapter provides a best-effort deletion method
 * used by the application layer to remove a successfully written target copy when
 * subsequent persistence fails, preventing orphaned target files.
 * <p>
 * <strong>Architecture boundary:</strong> All NIO ({@code Path}, {@code Files}) operations
 * are strictly confined to this package. The port interface
 * {@link de.gecheckt.pdf.umbenenner.application.port.out.TargetFolderPort} contains no
 * filesystem types, preserving the hexagonal architecture boundary.
 */
package de.gecheckt.pdf.umbenenner.adapter.out.targetfolder;
