Skip to main content
This page is the catalog of in-flight channels. Pair every live subscribe with tip reconciliation (webhooks + REST) when you reconnect, miss chunks, or are not attached to a run.

Shared rules

  1. Subscribe with a run id from the domain start response (workflow_id, or x-workflow-run-id for chat).
  2. Retries stay on the same run — more chunks on the same stream.
  3. A new start is a new run — newest-wins cancels the prior run; switch streams.
  4. Reconnect with startIndex (NDJSON) while the World retains the run.
  5. Tip reconcile with webhooks + REST — never a second survey-wide pub/sub bus.
Live NDJSON for new UIs is the generic World stream:
  • Content-Type: application/x-ndjson
  • Omit startIndex or pass 0 to read from the start
  • Positive index = resume; negative = tail-relative when the World supports it
  • There is no Program archive after World data ages out — reconnect while the run’s stream is retained
Domain start responses set stream_url to the generic path.

survey.questionnaire_clarifications

Answers/skips are not streamed — use tip PATCH and optional webhook/GET. Details: Questionnaire clarifications.

survey.audit

Detection compares tip questionnaire prose + answered clarifications to the pinned content revision snapshot. Nested body chunks are { type: "audit.issue", issue } between step.started and step.ended. Domain responses do not include stream_url.

survey.audit.remediate

Mutates the audit proposed source only — never the content tip. The Review agent does not start this workflow; it patches the dirty Monaco buffer and PATCHes findings.

survey.programming

Configure gates resume via PUT .../programming/target, PUT .../programming/template, or POST /v1/workflows/{id}/hooks/{token} when following anatomy resumePath. After Push, PFQ emits a hidden { asyncContinuation: true } and a single Audit step (contentFormat: todo) that starts survey.audit / survey.audit.remediate as children; Continue to Review is allowed while Audit still runs. See Programming.

survey.content_edit

This path uses the World default model-call stream (ModelCallStreamPart), transformed to UIMessage SSE — not an NDJSON programming/clarifications/audit stream. Details: Content edit.

What is not a live workflow stream

Prefer run streams (or conversation SSE) while attached to a run; prefer webhooks + REST when you are not.