package com.correx.core.transitions.execution

sealed interface StageExecutionResult {
    data class Success(
        val producedArtifacts: List<String>
    ) : StageExecutionResult

    data class Failure(
        val reason: String,
        val retryable: Boolean,
        // Budget key for per-gate retry accounting (see RetryCoordinator.decide). Default keeps
        // back-compat for call sites that don't set a stable gate id (e.g. the main producer path) —
        // those are budgeted under the single legacy "stage" bucket.
        val gate: String = "stage",
    ) : StageExecutionResult
}
