--- id: PIPE-3 family: RT-PIPE level: extended profiles: [runtime] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/rt-pipe/pipe-3 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # PIPE-3 — Status vocabulary is guarded in the summary and raw in the node counts *RT-PIPE (Part II) · level: extended · profiles: runtime · added in 1.0* Two counters in the same payload count the same jobs on different terms, and a consumer that reads one as if it were the other draws the wrong conclusion. ## The rule > **Normative.** This is the rule. > > 1. In `job_status_summary` and the job API's `status_summary`, `total` counts every job, but a bucket is incremented only for a persisted value that is a defined job status. > > 2. The buckets may therefore sum to less than `total`, and a value outside the vocabulary must never appear as a key there. > > 3. Each read reports the distinct unrecognised values once. > > 4. The per-node `node_statuses[*].status_counts` is deliberately not guarded: it counts persisted values as they are, so a value outside the vocabulary does appear both as a key there and as `node_statuses[*].status`. ## Related rules - Names: PIPE-2, PIPE-4 - Referenced by: PIPE-2, PIPE-4 --- Rule identifiers are permanent and are never renumbered. This specification carries no implementation status: each implementation publishes its own standing against these rules. Licensed CC BY 4.0.