Run status is read from persisted state, on two routes and one envelope
The live picture of a run is whatever has been persisted for it, not what some in-memory tracker happens to remember. A poll therefore answers the same value to every caller, including one served by a process that has just started.
The rule
Normative: this is the rule
- A run's status is published by two reads: the full pipeline document and a lightweight status document.
- Both answer the standard
{success: true, data}envelope, publish the persisted lifecycle value verbatim asdata.status, and answer404with{success: false, error}for a run that does not exist and403for one the caller may not view. - The full document adds
node_statuses,jobs,job_status_summaryandexecution_dataalongsideid,name,description,createdAt,lastExecuted,executionCountandtimestamp; the lightweight document carriesid,status,createdAt,lastExecuted,pendingInterruptandpausedReasonand must not carry the jobs payload. - Both read persisted state only, so a status written outside the request path is what the next poll returns.
Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · PIPE-1 · changed in spec 1.0