-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
Feature request: Persistent task-status surface for long-running channel turns #52640
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.Issue quality rating does not apply to this item.maturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:fix-shape-clearClawSweeper found a clear likely implementation shape for this issue.ClawSweeper found a clear likely implementation shape for this issue.clawsweeper:needs-maintainer-reviewClawSweeper marked this issue as needing maintainer review before automation.ClawSweeper marked this issue as needing maintainer review before automation.clawsweeper:needs-product-decisionClawSweeper marked this issue as needing a product or behavior decision.ClawSweeper marked this issue as needing a product or behavior decision.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.impact:session-stateSession, memory, transcript, context, or agent state can drift or corrupt.Session, memory, transcript, context, or agent state can drift or corrupt.issue-rating: 🌊 off-meta tidepoolIssue quality rating does not apply to this item.Issue quality rating does not apply to this item.maturity:stableIssue affects a taxonomy feature currently scored M4/M5.Issue affects a taxonomy feature currently scored M4/M5.
Type
Fields
Priority
None yet
Summary
Add a first-class persistent task-status surface for long-running channel turns (Discord first, generic abstraction later).
Current typing indicators, partial streaming, narration, and heartbeat-style updates help, but they do not provide a single authoritative status surface that tells the user whether a task is still working, waiting, done, failed, or interrupted.
Problem
For multi-step or multi-minute tasks on chat surfaces, users often cannot distinguish:
Periodic narration and fixed-interval heartbeats can help, but they add message noise and still do not provide one durable status object to look at.
Discord typing is also not a sufficient contract by itself:
done,failed, orunknownProposed behavior
For channels that support message editing (Discord first would already be useful):
Suggested states:
workingthinkingusing toolscomposingwaitingdonefailedunknown/interruptedThe
unknown/interruptedstate matters a lot: after restart, disconnect, or uncertain ownership, the system should fail closed instead of implying that work is still active.Why this feels distinct from adjacent issues
Important implementation constraint
I tried a local proof-of-concept against the installed runtime just to pressure-test the UX shape. The editable-status-message model felt promising, but it also exposed a safety requirement that a real implementation should encode from day one:
Status transport must be best-effort only.
If the provider send/edit call fails (network issue, permission issue, rate limit, provider outage, etc.), that failure must not block the main reply finalizer, queue unlock, or follow-up scheduling.
In other words:
That seems like the main architectural trap to avoid.
Acceptance criteria
unknowninstead of pretending the run is still active.Why this matters
This would reduce the "is it still working?" ambiguity without relying on fake perpetual typing or chat spam.
It also gives users a clearer lifecycle contract:
Environment / context
Related issues
Not asking for a local dist-bundle patch approach here — this needs a proper runtime/source implementation.