/**
 * Use case implementations that realize the inbound port contracts.
 * <p>
 * Implementations:
 * <ul>
 *   <li>{@link de.gecheckt.pdf.umbenenner.application.usecase.DefaultBatchRunProcessingUseCase}
 *       — Production implementation with run lock, fingerprint-based idempotency,
 *       and consistent two-level persistence</li>
 * </ul>
 * <p>
 * <h2>Processing order per candidate</h2>
 * <p>
 * The {@link de.gecheckt.pdf.umbenenner.application.usecase.DefaultBatchRunProcessingUseCase}
 * enforces this order:
 * <ol>
 *   <li>Compute SHA-256 fingerprint of the candidate file content.</li>
 *   <li>If fingerprint computation fails: log as non-identifiable run event;
 *       do NOT write any SQLite record; continue with next candidate.</li>
 *   <li>Run the document extraction and pre-checks pipeline.</li>
 *   <li>Delegate to {@link de.gecheckt.pdf.umbenenner.application.service.DocumentProcessingCoordinator}
 *       for idempotency check, status/counter mapping, and consistent persistence.</li>
 * </ol>
 * <p>
 * All implementations are infrastructure-agnostic and interact only through ports.
 */
package de.gecheckt.pdf.umbenenner.application.usecase;
