---
name: never-block-on-taskoutput-for-long-tasks
description: Operator rule — never block on TaskOutput for a long-running background task; it leaves the perch unreachable
metadata: 
  node_type: memory
  type: feedback
  originSessionId: 0d207031-a044-4941-b6e3-3c37d5cbc835
  modified: 2026-08-29T00:14:46.934Z
---

Operator correction (2026-08-28, mid W3 gate): NEVER call TaskOutput with block=true on a long-running background task.

**Why:** the blocking wait consumes the whole turn — inbound perch messages (peers, operator, alchemy acks) cannot be processed until the task finishes, so the agent is effectively unreachable for the task's entire duration. The harness already sends a `<task-notification>` on completion that wakes the agent; blocking buys nothing and costs reachability.

**How to apply:** launch long work with `run_in_background: true`, END THE TURN, and act when the completion notification arrives. Read the leg's `.exit`/`.raw` files at that point ([[exit-status-after-a-truncation-pipe-measures-the-truncator]] still applies — the notification's exit code is the wrapper's, not the leg's). TaskOutput with block=false (or a short bounded block on a task known to be seconds from done) is acceptable; a multi-minute blocking wait is not.