diff --git a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestrator.kt b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestrator.kt index 181dfd64..c5f4cb8a 100644 --- a/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestrator.kt +++ b/core/kernel/src/main/kotlin/com/correx/core/kernel/orchestration/SessionOrchestrator.kt @@ -366,6 +366,12 @@ abstract class SessionOrchestrator( is InferenceResult.Failed -> StageExecutionResult.Failure(inferenceResult.reason, retryable = true) is InferenceResult.Success -> { if (isCancelled(sessionId)) return StageExecutionResult.Failure("CANCELLED", retryable = false) + // Capture the LLM-emitted artifact's JSON so transition conditions + // (e.g. ArtifactFieldEquals on a reviewer's verdict) can read it. + llmEmittedSlots.firstOrNull()?.let { slot -> + artifactContentCache["${sessionId.value}:${slot.name.value}"] = + inferenceResult.response.text + } val validationCtx = ValidationContext( graph = graph, sessionState = session.state,