Spectre.Vigil (Spectre v0.3.0)

Copy Markdown View Source

Versioned durable observation loop built on the shared operational runtime.

A Vigil waits without retaining a Runner. Timers or declared events wake it, one observation runs, the reducer commits, and the controller schedules its next wait boundary.

Summary

Functions

Builds a declared terminal Vigil outcome.

Builds a declared terminal Vigil failure.

Builds one observation request.

Registers one observation or cognitive operation.

Allows one observation operation from the Agent application registry.

Builds an arbitrary declared wait boundary.

Schedules a timer relative to the controller context's committed clock.

Functions

complete(value)

@spec complete(term()) :: {:complete, term()}

Builds a declared terminal Vigil outcome.

fail(reason)

@spec fail(term()) :: {:error, term()}

Builds a declared terminal Vigil failure.

observe(operation, input, opts \\ [])

@spec observe(atom() | String.t(), term(), keyword()) ::
  {:run, Spectre.Operation.Request.t()}

Builds one observation request.

operation(id, opts)

(macro)

Registers one observation or cognitive operation.

operation(id, executor, opts)

(macro)

uses_operation(id)

(macro)

Allows one observation operation from the Agent application registry.

wait(kind, opts \\ [])

@spec wait(
  atom(),
  keyword()
) :: {:wait, Spectre.Operation.Wait.t()}

Builds an arbitrary declared wait boundary.

wait_for(milliseconds, map)

@spec wait_for(non_neg_integer(), map()) :: {:wait, Spectre.Operation.Wait.t()}

Schedules a timer relative to the controller context's committed clock.