Run states
An idempotency key derives a stable run ID for a tenant. Repeating the same
request does not create another logical attempt once that run has progressed.
What one attempt does
The runner resolves secrets and connectors, plans resources and ingestion behavior, ensures destination schemas, seeds checkpoint state, and starts the Arrow pipeline. It callsCommit only after extraction and writes succeed. A
non-resumable failure ends with Abort. Filament gives cleanup its own short
timeout, even when the original run context has already been canceled.
Schema preparation is intentionally before extraction. Depending on the sink,
EnsureSchema may create or evolve destination objects before the final commit;
connector docs should state their own visibility and cleanup behavior.
When failure becomes partial
A failed standard run becomespartial only when all resources have progress
that is safe to preserve:
- every resource has checkpoint coverage;
- none waits until
Committo make its checkpoint durable; - none uses append, where replay could duplicate rows; and
- at least one resource is incremental or otherwise checkpointed.
users resource
does not make a neighboring full-replace orders resource resumable. When the
rule is not satisfied, the run fails and a new attempt starts those resources
from their normal beginning.
CDC saves its stream position only after a successful commit, so a failed
attempt is not labeled partial. A later CDC catch-up starts from the last
committed position. Even a successful cycle with no changes can advance that
position.
Pause, resume, and cancel
SignalRun supports all three controls:
- Pausing a requested run changes its state immediately. Pausing a running run sends a worker command and waits for the worker’s acknowledgement.
- A fully checkpointed running route drains accepted rows, commits them, and pauses with progress preserved. A checkpoint-free route aborts and later restarts. A route with mixed checkpoint coverage rejects pause because neither outcome is safe for every resource.
- Resuming a paused or partial run returns it to requested. Only checkpointed progress is retained; restart-only work has its execution totals reset.
- Canceling a running run stops extraction and aborts the sink before the worker acknowledges cancellation. Requested, paused, and partial runs can be canceled directly.
Failure containment
A source panic is converted to a run error. When a sink error causes extraction to stop, the sink error remains the root cause. Terminal facts are published on a short detached context so cancellation does not leave a run appearing to be active indefinitely. Under Kubernetes dispatch, workers emit heartbeats and the reaper fails stale running jobs. Partial runs are exempt because they are intentionally waiting for a resume request. In-process dispatch does not use the worker heartbeat/reaper path.Progress events
The event stream includes run lifecycle and control facts, resource progress, batch writes and integrity evidence, cursor/checkpoint changes, and pressure or retry events. Examples includerun.pause_requested, run.paused,
batch.integrity_verified, batch.encoded_integrity_verified, and
cursor.checkpoint_saved.
These events record worker execution and let the tracker update totals and progress.
The API also persists intake and control transitions directly, as described in
Architecture.