Skip to content

v2026.7.21: SPEC-236 Phase D v0.1 — Local Pipeline Graph

v2026.7.21: SPEC-236 Phase D v0.1 — Local Pipeline Graph

Section titled “v2026.7.21: SPEC-236 Phase D v0.1 — Local Pipeline Graph”

Phase D starts where CapTP gets interesting: an unresolved result is a reference you can name in later work. Full multi-hop wire envelopes are not here yet. What is here is the local substrate those envelopes will sit on: dependency edges, failure cascade, and honest sequential downgrade.

let root: Promise[u64] = promise.new[u64]()
let seg: Promise[u64] = promise.new[u64]()
_ = promise.pipeline_link[u64, u64](root, seg)
// pipeline_dependent_count(root) == 1

The child is a pipeline segment of the parent ([PROM:5.1]). It does not auto-resolve when the parent succeeds — the next producer still owns that resolve. It does fail if the parent breaks.

If the root fails, is cancelled, or is destroyed while still pending, every pending dependent (and their dependents) transitions to Failed(ERR_UPSTREAM_FAILED).

_ = promise.pipeline_link[u64, u64](p0, p1)
_ = promise.pipeline_link[u64, u64](p1, p2)
_ = promise.signal_fail[u64](promise.resolver[u64](p0), promise.ERR_SCHEMA_MISMATCH)
// p1 and p2 → STATE_FAILED, failure_kind == ERR_UPSTREAM_FAILED
_ = promise.set_tombstone_token[u64](p0, 0xC0FFEE01 as u64)
// after cascade, dependents carry the same token via tombstone_token()

Sequential vs envelope mode ([PROM:5.2.3])

Section titled “Sequential vs envelope mode ([PROM:5.2.3])”
ModeMeaning
PIPELINE_MODE_SEQUENTIAL (default)Segments recorded; driver awaits then issues next call
PIPELINE_MODE_ENVELOPE (reserved)True multi-segment wire not live yet

If you set ENVELOPE today, pipeline_link still records the segment and increments pipeline_downgrade_count() so nothing is silently dropped. That counter is the runtime evidence behind P236-W001.

APIRole
pipeline_link[T,U](parent, child)Record segment
pipeline_dependent_count[T](parent)Direct child count
set_tombstone_token / tombstone_tokenFailure record token
pipeline_mode / pipeline_set_modeCapability mode
pipeline_downgrade_countSequential fallback observations
Terminal window
./scripts/zb test-cluster-promise-pipeline-cascade
./scripts/zb test-cluster-promise-pipeline-downgrade
SPEC-236 phaseStatus
A — local Promise slots
B — .call() sugar
C — SBI PromiseId
D v0.1 — local pipeline graph✅ (this release)
D.1 — wire envelopes + Promise.callNext