[Windows App] Task summary panel shows completed child pages as “Working” with timers still increasing
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.5k
- PR merge metrics
- PR metrics pending
Description
Environment
- App: ChatGPT/Codex Desktop
26.810.7004.0 - Platform: Windows 11 Pro, build
26200, x64 - Authentication: ChatGPT subscription
- Surface: right-side task summary panel / pinned summary view
What issue are you seeing?
Completed historical child/subagent pages are shown as Working in the right-side task summary panel, and their elapsed timers continue increasing even though those children finished days or weeks earlier and no longer represent active work.
This is reproducible across multiple local projects. Opening or pinning the task summary makes old child pages appear live. The timer is therefore not a reliable indication of current execution.
Steps to reproduce
- Use a parent task that creates several child/subagent tasks.
- Let the children complete or interrupt them.
- Later, return to the parent or another project and open/pin the task summary panel in the right sidebar.
- Observe historical child pages displayed as Working.
- Leave the panel open and observe their elapsed timers continue counting.
Expected behavior
- Completed, interrupted, archived, or otherwise non-live children should display a terminal/inactive state.
- Their elapsed timers should stop.
- The summary panel should derive current activity from live lifecycle state, not a stale persisted relationship.
- If persisted and live state disagree, the UI should reconcile or clearly label the child as stale.
Actual behavior
Historical child pages continue to display Working with increasing timers.
A read-only inspection of state_5.sqlite found the same stale lifecycle invariant described in related reports:
thread_spawn_edges:
closed = 24
open = 60
The 60 persisted open edges are divided across two historical projects:
Project A: 48 open edges
48/48 child threads archived
latest child update: 2026-07-18
Project B: 12 open edges
latest child update: 2026-08-08
These dates and archived states do not match the summary panel's current Working labels or continuously increasing timers.
The counts were obtained read-only with:
SELECT status, COUNT(*)
FROM thread_spawn_edges
GROUP BY status;
SELECT
t.cwd,
COUNT(*) AS open_edges,
SUM(CASE WHEN t.archived = 1 THEN 1 ELSE 0 END) AS archived_children,
datetime(MAX(t.updated_at), 'unixepoch', 'localtime') AS newest_update
FROM thread_spawn_edges e
LEFT JOIN threads t ON t.id = e.child_thread_id
WHERE e.status = 'open'
GROUP BY t.cwd;
No database rows were modified.
Impact
- Users cannot trust the summary panel to identify active work.
- Old timers create the impression that agents are still consuming time or resources.
- The stale state persists even when affected child threads are archived.
- This may lead users to repeatedly attempt cleanup or avoid using subagents.
Related issues
- #23930 — closed/completed subagent cards remain visibly stuck after no live handle remains.
- #33700 — completed/interrupted descendants remain persisted as
openinthread_spawn_edges. - #25341 — child threads can retain stale open spawn edges and pollute UI listings.
This report is separate because it reproduces on Windows and specifically affects the pinned/right-side task summary's Working status and continuously increasing elapsed timer.
I can provide additional sanitized read-only queries or app logs if maintainers identify the most useful lifecycle event to capture. No thread IDs, titles, prompts, repository names, or local paths are included in this public report.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Begin with the read-only state_5.sqlite queries for thread_spawn_edges, then trace how the pinned task summary derives each child's Working status and elapsed timer from persisted and archived state. Done means completed, interrupted, archived, or otherwise non-live children show a terminal or stale state and their timers stop; verify this across the reported historical projects.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust, sqlite
- Domain
- databases, desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100