openclaw/docs/concepts
Ayaan Zaidi 4388721632
fix: remove stale progress messages after final replies (#154467)
## What Problem This Solves

Fixes progress messages left above the final answer when a requester hands its card to subagents or sends its final through the message tool.

## User Impact

A confirmed final reply retires its temporary progress message. Failed or uncertain delivery, silent internal consumption, and further delegated work retain their existing progress ownership. The final answer is not retried when cosmetic cleanup fails.

## Why This Change Was Made

The core task presenter already owned the adopted message receipt, but batch retirement only stopped future updates. It now waits for pending edits and removes that exact message after positive source-final delivery evidence and a terminal current batch. Private completion processing preserves final-delivery evidence without exposing its content.

Telegram uses the existing observed-delivery callback for foreground drafts and carries the host's live guard through its existing delete action. No new configuration, schema, task framework, or provider harness is introduced. The internal-notification reply-policy fix is separate.

## Evidence

- Negative controls reproduced both retained foreground progress and missing adopted-card retirement.
- Focused task lifecycle, registered-channel receipt/authority, announcement, Telegram finalization, and physical HTTP mutation suites passed. The HTTP regression also failed before Telegram forwarded the deletion guard; active deletion now succeeds and revoked authority prevents the request.
- Real Telegram Test Server userbot against a disposable Gateway with real OpenAI `gpt-5.4`: eight model requests returned HTTP 200; the original progress message received six edits showing the child running and succeeding; a separate final arrived at 44.465 seconds; the original progress message was deleted at 46.403 seconds. No later message or edit appeared in the three-minute recording. No mock inference calls occurred.
- The real-provider proof ran with the independent reply-policy correction present. The changes affect disjoint files and are retained in separate branches; proof was not rerun solely for the split.
- Test Gateway, credential file, and credential lease were cleaned up. No production Gateway was modified.
- Independent P0/P1 review: scoped clean.
- Final local lint was blocked by the declaration-isolation guard resolving a dependency through the ancestor checkout's install. The guard was not bypassed and the ancestor install was not changed. Hosted CI must provide the clean-checkout static-check verdict.

Measured local wall times (Node 24/macOS, including setup and imports; not estimates of incremental test cost):

| Selected suite/group | Tests | Wall time |
| --- | ---: | ---: |
| Task progress registered-channel runtime | 43 | 26.99 s |
| Task progress lifecycle and authority | 51 | 26.05 s |
| Subagent announce delivery | 323 | 15.95 s |
| Telegram progress/finalization/fallback group | 53 | 22.24 s |
| Telegram action runtime | 145 | 20.46 s |
| Telegram physical HTTP and action-contract group | 57 | 28.72 s |

Recorded hosted job wall times for this head, including runner setup: [production typecheck](https://github.com/openclaw/openclaw/actions/runs/35565702748/job/106227222096) passed in 254 s; [runtime topology/architecture](https://github.com/openclaw/openclaw/actions/runs/35565702748/job/106227222279) passed in 165 s. These completed-job measurements are not a claim that the entire CI run had finished at that snapshot.

Before/after screenshots in both chat and GitHub were explicitly waived for this PR. The real Telegram userbot recording is the behavior evidence; it is not presented as visual screenshot verification.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-09-21 11:51:57 +05:30
..
active-memory fix(active-memory): skip recall for inter-session deliveries (#143903) 2026-09-10 19:50:39 +05:30
model-providers docs(providers): expand llmman guidance and add hybrid inference (#139606) 2026-09-19 10:07:03 -07:00
qa-e2e-automation fix(qa): preserve transport preloads and packaged bootstrap boundaries (#152944) 2026-09-19 09:38:01 -07:00
active-memory.md docs: fix 20 link defects confirmed live in the verified backlog (#144133) 2026-09-11 03:48:10 +08:00
agent-bindings.md refactor(routing): simplify channel route selection (#148848) 2026-09-16 22:38:22 -07:00
agent-loop.md fix: prevent silent replies to unmentioned group requests (#153800) 2026-09-20 22:52:07 +05:30
agent-runtimes.md fix: skip official setup approvals and default to Astra (#145646) 2026-09-12 00:34:25 -07:00
agent-workspace.md fix(agents): reject invalid selectors before routing (#153387) 2026-09-20 01:08:48 -07:00
agent.md docs: STE structural cleanup for gateway, cli and concepts (46 audit findings) (#143931) 2026-09-10 18:50:32 +08:00
architecture.md docs: STE structural cleanup for gateway, cli and concepts (46 audit findings) (#143931) 2026-09-10 18:50:32 +08:00
compaction.md refactor: remove compaction checkpoints (#154131) 2026-09-20 19:47:11 -07:00
context-engine.md fix: start background context maintenance after durable turns (#151936) 2026-09-18 14:15:10 -07:00
context.md docs: fix accuracy findings in concepts, start, install, and help (#143029) 2026-09-09 19:34:49 +09:00
decision-models.md feat(typesafe): support local System One decision models (#154059) 2026-09-20 19:44:29 -07:00
delegate-architecture.md docs: fix checkable ux defects in docs/cli and docs/concepts (#143927) 2026-09-10 18:39:20 +08:00
dreaming.md fix(memory): defer dreaming jobs while cron is disabled (#151713) 2026-09-18 05:01:19 -07:00
experimental-features.md fix: apply Labs settings without restarting the Gateway (#153975) 2026-09-20 18:06:32 -07:00
features.md docs: fix accuracy findings in concepts, start, install, and help (#143029) 2026-09-09 19:34:49 +09:00
main-session.md fix(sessions): notify Home about new sessions by default (#152068) 2026-09-18 16:24:59 -07:00
managed-worktrees.md fix(ui): use remote defaults for manual worktree creation (#154364) 2026-09-20 21:44:45 -07:00
mantis-slack-desktop-runbook.md docs: STE structural cleanup for gateway, cli and concepts (46 audit findings) (#143931) 2026-09-10 18:50:32 +08:00
mantis.md fix(qa): Mantis before-after exits when a lane command stalls (#111051) 2026-09-16 17:00:24 -06:00
markdown-formatting.md fix(telegram): preserve styled links inside rich message containers (#139976) 2026-09-07 23:24:50 -07:00
memory-architecture.md fix(memory): honor bootstrap budget during promotion (#142545) 2026-09-13 18:42:01 -07:00
memory-builtin.md perf(memory-core): reuse native KNN query processes (#153832) 2026-09-20 11:36:30 -07:00
memory-honcho.md docs: fix checkable ux defects in docs/cli and docs/concepts (#143927) 2026-09-10 18:39:20 +08:00
memory-provenance.md fix(memory): preserve forget lineage after file publication errors (#149340) 2026-09-15 12:59:00 -07:00
memory-search.md docs: fix 20 link defects confirmed live in the verified backlog (#144133) 2026-09-11 03:48:10 +08:00
memory.md fix(memory): guide session search hits to sanitized history (#144669) 2026-09-11 01:18:28 -06:00
messages.md fix: prevent silent replies to unmentioned group requests (#153800) 2026-09-20 22:52:07 +05:30
model-failover.md fix(agents): stop reporting upstream HTTP failures as timeouts (#141843) 2026-09-19 21:02:26 +05:30
model-providers.md docs(providers): expand llmman guidance and add hybrid inference (#139606) 2026-09-19 10:07:03 -07:00
models.md fix: keep model refresh indicators compact and accurate (#153932) 2026-09-20 19:14:39 -07:00
multi-agent.md fix(doctor): preserve channel ownership across updates (#150555) 2026-09-17 04:03:27 -07:00
multi-user.md fix(ui): stop mention searches from consuming prompt text (#154350) 2026-09-20 20:44:11 -07:00
oauth.md fix(models): share account connection across setup pages (#148864) 2026-09-15 14:41:10 +05:30
parallel-specialist-lanes.md feat(agents): add role templates and a team preset for onboarding (#145712) 2026-09-12 00:07:12 -07:00
personal-agent-benchmark-pack.md docs: fix checkable ux defects in docs/cli and docs/concepts (#143927) 2026-09-10 18:39:20 +08:00
presence.md fix: restore Mac presence context and Canvas media playback (#153381) 2026-09-19 21:37:59 -07:00
progress-drafts.md fix(discord): retain progress cards while subagents continue (#153028) 2026-09-19 22:39:33 +05:30
qa-e2e-automation.md fix(docs): restore anchor ids dropped by heading renames (#143586) 2026-09-10 11:23:48 +09:00
queue-steering.md fix(ui): show steering skips without blaming queued user messages (#150185) 2026-09-16 10:40:39 -07:00
queue.md fix: preserve operator authority through queued and child runs (#153989) 2026-09-21 06:51:09 +01:00
retry.md fix: rate-limit Retry-After past maxRetryDelayMs sleeps the turn instead of failing over (#148580) 2026-09-20 15:50:57 +03:00
session-attachment.md
session-pruning.md docs: fix 20 link defects confirmed live in the verified backlog (#144133) 2026-09-11 03:48:10 +08:00
session-search.md fix: find grouped conversations created by agents (#149803) 2026-09-19 20:29:16 +01:00
session-state.md fix: keep child notifications out of replaced session stores (#152828) 2026-09-19 08:44:34 -07:00
session-tool.md fix: revalidate session previews and tool inventories (#154336) 2026-09-21 06:41:15 +01:00
session.md fix: keep messages pending during restart recovery (#152475) 2026-09-18 23:37:51 -07:00
soul.md
standing-intents.md fix(memory): preserve standing intents after prompt hook timeouts (#145107) 2026-09-11 11:22:32 -07:00
streaming.md fix(discord): retain progress cards while subagents continue (#153028) 2026-09-19 22:39:33 +05:30
subagent-yield-handoff.md fix: remove stale progress messages after final replies (#154467) 2026-09-21 11:51:57 +05:30
system-prompt.md fix: prevent silent replies to unmentioned group requests (#153800) 2026-09-20 22:52:07 +05:30
timezone.md docs: close remaining cross-link gaps across concepts, gateway, and security (#143923) 2026-09-10 18:34:34 +08:00
typebox.md refactor(protocol): simplify generated schema registration (#144112) 2026-09-10 09:00:15 -07:00
typing-indicators.md docs: fix checkable ux defects in docs/cli and docs/concepts (#143927) 2026-09-10 18:39:20 +08:00
usage-tracking.md fix(ui): respect known zero usage costs (#143033) 2026-09-20 16:38:06 -07:00
user-model.md feat: verify GitHub credit from trusted OIDC claims (#153940) 2026-09-21 05:28:31 +01:00