II.
Page JSON
Structured · livepage:docs-harness-features-backlog-gaps-subagent-observability-gap-subobs-001
GAP-SUBOBS-001: Streaming Output Capture from Invoked Harnesses json
Inspect the normalized record payload exactly as the atlas UI reads it.
{
"id": "page:docs-harness-features-backlog-gaps-subagent-observability-gap-subobs-001",
"_kind": "Page",
"_file": "wiki/docs/harness-features-backlog/gaps/subagent-observability/gap-subobs-001.md",
"_cluster": "wiki",
"attributes": {
"nodeKind": "Page",
"sourcePath": "docs/harness-features-backlog/gaps/subagent-observability/GAP-SUBOBS-001.md",
"sourceKind": "repo-docs",
"title": "GAP-SUBOBS-001: Streaming Output Capture from Invoked Harnesses",
"displayName": "GAP-SUBOBS-001: Streaming Output Capture from Invoked Harnesses",
"slug": "docs/harness-features-backlog/gaps/subagent-observability/gap-subobs-001",
"articlePath": "wiki/docs/harness-features-backlog/gaps/subagent-observability/GAP-SUBOBS-001.md",
"article": "\n# GAP-SUBOBS-001: Streaming Output Capture from Invoked Harnesses\n\n| Field | Value |\n|-------|-------|\n| Category | subagent-observability |\n| Priority | Critical |\n| Effort | L |\n| Status | Missing |\n\n## Description\nCapture and stream stdout/stderr from spawned harness CLIs in real-time during effect execution. Enable live progress visibility for operators.\n\n## Current State\nCLI-based `invokeHarness()` captures output only after process exits. Pi adapter supports streaming via `PiSessionHandle.subscribe()`, but this is Pi-specific and not generalized across harnesses. No unified streaming output capture.\n\n## Target State\nReal-time stdout/stderr streaming from spawned harness processes. Stream events visible in embedded SDK dashboard. Progress updates captured mid-execution.\n\n## Dependencies\n- None\n\n## Key Files\n| Component | Path |\n|-----------|------|\n| Harness invoker | `packages/sdk/src/harness/invoker.ts` |\n| Embedded SDK dashboard (new) | `packages/sdk/src/dashboard/` |\n\n## Recommendation\nPhase 1 implementation. Pipe stdout/stderr from child processes in invokeHarness(). Stream events to embedded SDK dashboard via journal or direct channel.\n",
"documents": []
},
"outgoingEdges": [],
"incomingEdges": [
{
"from": "page:docs-harness-features-backlog",
"to": "page:docs-harness-features-backlog-gaps-subagent-observability-gap-subobs-001",
"kind": "contains_page"
}
]
}