Skip to content
Technical preview. This site is published for review. Everything on it, including the API, tokens and module protocol, is subject to change.
Glossary

Glossary

AutoFlow is the product a user writes workflow definitions for. autocore is the durable engine underneath it, embedded in GitLab Relay (formerly KAS). The layer column says which one owns a term.

TermLayerDefinition
ActionAutoFlowA function a module exposes to a workflow definition. Calling one returns a future; the work runs outside the interpreter and its outcome is recorded.
ActivityautocoreA side-effecting function executed outside the deterministic replay, with its result written to history. Every action call becomes one.
AnnotationAutoFlowA key and value tag the caller puts on a workflow at start. Every child workflow inherits the set, and every action invocation carries it.
autocoreautocoreThe event-sourced workflow engine embedded in Relay: durable timers, activities, signals and cancellation, on PostgreSQL for state and Redis for coordination. It is generic; AutoFlow is one domain built on it.
ChannelAutoFlowA stream of values a workflow receives from outside, created by channel() or bound to a main() parameter by the caller. Never closed, values arrive in the order AutoFlow received them.
Channel tokenAutoFlowA send-only capability for one channel of one workflow. It names no principal, so a send presents the workflow token as well.
Child workflowAutoFlowA workflow another workflow starts. w.start_workflow() is detached; w.execute_workflow() is awaitable and canceled if the parent terminates.
Cold replay and warm resumeautocoreTwo ways a workflow continues. A cold replay re-runs the workflow definition from the top against the whole history because no suspended goroutine exists. A warm resume feeds only the newer events to a goroutine still in memory.
Derived actionAutoFlowAn action wrapped by a pure Starlark transform that runs where the action runs, so a response can be reshaped or classified without a round trip into the workflow.
DeterminismautocoreThe requirement that a workflow takes the same decisions in the same order on every replay. A scheduling call that does not match the recorded one is a replay mismatch.
Durable timerautocoreA sleep or timer persisted as a database row rather than held as a process timer, so a waiting workflow holds no CPU or memory.
FenceautocoreA counter on a shard row, bumped on every ownership change and verified inside every write, so a former owner cannot corrupt a shard after it moves.
FutureAutoFlowA handle to an asynchronous result: an action call, a timer, a poll or an awaitable child. Waited on with gather or watched with select; resolves once, to a permanent value. See Futures and gather.
HistoryautocoreThe append-only log of one workflow’s life, one row per state change, with gapless sequence ids. Replaying it is what makes a workflow resumable.
Idempotency keyautocoreThe caller-chosen key that pins one workflow per namespace, or one delivery per channel send. Resubmitting under a used key returns what already exists.
Inline activityautocoreA cheap, idempotent side effect run inside the workflow’s own goroutine, with its outcome written as one history event. A failed attempt escalates to an ordinary queued activity.
LeaseautocoreThe ownership record on a shard row: an owner and an expiry, renewed by heartbeat. An expired lease lets another instance claim the shard.
ModuleAutoFlowThe unit that gives a workflow the ability to act outside itself. It exposes variables, actions and Starlark files, and a workflow definition imports them with load("module:<name>", ...).
Module descriptorAutoFlowWhat a module publishes: its proto descriptor set, its variables, its actions and its files.
NamespaceautocoreThe caller-supplied grouping every RPC carries. It scopes idempotency keys and the rate limit.
PollAutoFlowRe-invoking an action on a fixed interval until a predicate over its result holds or a deadline passes. A result that does not satisfy the predicate, or a retryable error, re-pends the same activity task without a history event, so history stays flat however long the wait.
RelayRelayThe GitLab server component, formerly KAS, whose binary hosts the AutoFlow module alongside the Kubernetes agent server, the job router and workspaces. It is where the code lives, not the actor.
ReplayautocoreRe-running a workflow definition from the top against the workflow’s recorded history. A call with a recorded outcome returns that outcome instead of doing the work again.
RetentionautocoreThe window past which a workflow’s partitions are dropped, 90 days by default. It bounds idle time as well as cleanup: an idle non-terminal workflow is retired too.
Retry policyautocoreThe retry budget of an activity whose call fails or times out: 20 attempts by default, starting at one second, doubling, capped at ten minutes, about an hour and three quarters in all, every attempt under the same idempotency key. Attempts are counted on the activity task, not in history; the workflow sees only the final outcome.
Sensitive valueAutoFlowA sensitive_string or sensitive_bytes. A workflow can pass it and concatenate it, but cannot read, hash or probe it, and cannot construct one from ordinary data.
ShardautocoreThe unit of partitioning. The keyspace of workflows is split into shards, and each shard is owned by at most one AutoFlow instance at a time.
SignalautocoreAn external message to a running workflow, written to an inbox and later promoted into a history event by the shard owner. A channel value is one.
WorkflowautocoreOne durable run of a workflow definition, started by StartWorkflow.
Workflow definitionAutoFlowThe Starlark program a user writes. One definition can back many workflows.
Workflow keyautocoreThe opaque public identifier of a workflow. It embeds the shard, so traffic after creation routes without a central lookup.
Workflow tokenAutoFlowThe capability minted at start that every other RPC requires. Holding a workflow key or an idempotency key is not holding the workflow.
Last updated on