Skip to main content

Workflow

A Loom-side definition of a workflow over one protocol: an ordered list of steps, each either deterministic (one action with literal arguments, proposed without a model) or a judgement (the actions a model may choose among, with instructions). A step may be conditional on a frontier claim, never on a model. A run's progress over a definition may be kept as a record a store writes after every performed step and a later process resumes from.

loom.workflow is one of loom's bounded contexts. All domains.

Types​

DeterministicStep​

loom.workflow.DeterministicStep is a record of two fields:

  • action — String
  • arguments — Json

JudgementStep​

loom.workflow.JudgementStep is a record of three fields:

  • actions — List<String>
  • instructions — String
  • inputs — List<loom.workflow.OutputReference>

OutputReference​

loom.workflow.OutputReference is a record of two fields:

  • step — String
  • output — String

OutputType​

loom.workflow.OutputType is one of String, Integer, Boolean, Json, StringList, IntegerList, BooleanList and JsonList.

RecordedOutput​

loom.workflow.RecordedOutput is a record of three fields:

  • step — String
  • output — String
  • value — Json

StepCondition​

loom.workflow.StepCondition is a record of two fields:

  • claim — String
  • value — loom.workflow.Truth

StepKind​

loom.workflow.StepKind is one of two shapes, told apart by a kind field — tagged, so a decoder never has to guess which branch it is reading:

  • Deterministic — loom.workflow.DeterministicStep
  • Judgement — loom.workflow.JudgementStep

StepOutput​

loom.workflow.StepOutput is a record of three fields:

  • name — String
  • pointer — String
  • type — loom.workflow.OutputType

StepRequest​

loom.workflow.StepRequest is a record of three fields:

  • step — String
  • action — String
  • arguments — Json

Truth​

loom.workflow.Truth is one of True, False and Unknown.

UnproducedOutput​

loom.workflow.UnproducedOutput is a record of three fields:

  • step — String
  • output — String
  • why — String

WorkflowDefinition​

loom.workflow.WorkflowDefinition is a record of three fields:

  • name — String
  • protocol — String
  • steps — List<loom.workflow.WorkflowStep>

WorkflowRunRecord​

loom.workflow.WorkflowRunRecord is a record of nine fields:

  • run — loom.run.CommissionRunId
  • workflow — String
  • definition_digest — String
  • performed — List<loom.workflow.StepRequest>
  • proposed — Optional<loom.workflow.StepRequest>, which may be absent
  • outputs — List<loom.workflow.RecordedOutput>
  • unproduced — Optional<loom.workflow.UnproducedOutput>, which may be absent
  • attempted — List<String>
  • usage — loom.metering.CarriedUsage

WorkflowStep​

loom.workflow.WorkflowStep is a record of four fields:

  • name — String
  • when — Optional<loom.workflow.StepCondition>, which may be absent
  • kind — loom.workflow.StepKind
  • outputs — List<loom.workflow.StepOutput>

Two of the types above are reached by nothing else in this system: loom.workflow.WorkflowDefinition and loom.workflow.WorkflowRunRecord. No entity, view, command, event, error or crossing names them, so it is either vocabulary something outside this specification uses or a leftover — and only a person can tell which.


Generated from loom v1 · model digest 687ce3d39bdb34d56d1fe0c221f558534fa9c3e8eda9e34862b5b742d61331e9 · contract digest slice-sha256/2:120c98f3e776a8a2ca06cc58ec971e5d0fa401b6ad79cf8a374a50d4bd770d64. Do not edit this file; change the specification and regenerate it with task docs-generate.