PUMP_ENDED
One of the ply's mirror/announce pumps is over: the ply Seam's own state, capability or peers flow failed, which ends it, so that strand of this ply will never update again — the composite may go on folding a stale mirrored value into capability/peers while the ply stays Woven.
The ply is neither torn nor detached, for the same reason a malformed frame does not tear it (INBOUND). Nothing re-subscribes: a Seam's flows are collected once, at attach.
No onEach-body guard can see this — it is the upstream half us.tractat.kuilt.core.pumpIn exists to close, and on Kotlin/Native it aborted the process before it was closed (#1788).