Complete

Complete is a stage that emits Status.Complete while passing the input through as output unchanged. Every invocation yields Status.Complete with the input value intact — no value is dropped.

It signals that the current unit of work is done. At the top level of a pipeline this becomes the run's terminal status; inside an enclosing alterator such as Loop or Repeat it ends the current cycle. The CompleteIfSome operator uses Complete for exactly this purpose.

Complete is a polymorphic singleton. Use Complete[T] to obtain a typed Fruitful.Endo[T, Nothing].

import h8io.stages.*
import h8io.stages.std.*
val stage = Complete[String]
// stage: base.Fruitful.Endo[String, Nothing] = <function1>
stage("hello")
// res0: Yield.Some[String, String, Nothing] = Some(
//   out = "hello",
//   status = Complete(),
//   evolution = <function1>
// )
stage("world")
// res1: Yield.Some[String, String, Nothing] = Some(
//   out = "world",
//   status = Complete(),
//   evolution = <function1>
// )