package de.gecheckt.pdf.umbenenner.domain.model;

/**
 * Sealed interface representing the outcome of document pre-checks.
 * <p>
 * This interface establishes the architectural pattern for pre-check results.
 * The actual pre-check logic (fachlich validation such as "brauchbarer Text" and "Seitenlimit")
 * is implemented via {@link de.gecheckt.pdf.umbenenner.application.service.PreCheckEvaluator}.
 * <p>
 * There are two allowed implementations:
 * <ul>
 *   <li>{@link PreCheckPassed}: Document passed all pre-checks and is ready for further processing</li>
 *   <li>{@link PreCheckFailed}: Document failed a pre-check and will not proceed further in this run</li>
 * </ul>
 * <p>
 * Design principles:
 * <ul>
 *   <li>Sealed: enforces exhaustive handling of all cases</li>
 *   <li>Carries both success path ({@link PreCheckPassed}) and failure reason ({@link PreCheckFailed})</li>
 *   <li>Defined early to ensure architecture is established before logic arrives</li>
 *   <li>Future-extensible for additional pre-check variants in later milestones</li>
 * </ul>
 */
public sealed interface ProcessingDecision
    permits PreCheckPassed, PreCheckFailed {
    // Marker interface; concrete implementations define structure
}