Fleet changelogs · dev.ecs0.net
rdmsm4x-changelog-20260904-1847-sidebar-cleanup-pr-sweep-rtty-regression

rdmsm4x-changelog-20260904-1847-sidebar-cleanup-pr-sweep-rtty-regression

Swept every open PR in the fleet (there was one, and it merged under its owner while under review), archived 115 stale Claude Code sidebar threads reversibly, retitled the untitled live threads, and filed ISSUE-20260904-13 — a confirmed regression that survives the merged RTTy #10.

Window: 2026-09-04 18:34:21 EDT → 18:47:36 EDT · host rdmsm4x · session c8b04c2f (dev-57) · claude@rdmsm4x Request: "auto-fix/auto-merge all open/pending PRs, delegate sub-agents to review all, rename all current threads, archive disconnected threads — I'd rather the sidebar be clean." Rich sent the same prompt to at least two sessions (dev-de got a copy with an extra framing sentence: RTTy release, ReplicantDB, Tyrell, ECS libraries / ecs0lib).

What changed

Area Change Evidence
Sidebar 115 stale threads MOVED to ~/.claude/projects-archive/20260904-sidebar-cleanup/ moved=115 failed=0, 0 remain in projects/, 115 in archive; live 10/10 present; pinned Claude sessions 0 moved
Sidebar 3 live threads retitled via custom-title records dev-57, dev-6d (55b61233), notes-republish (158c9525); byte offsets in scratchpad undo-offsets.txt
Tickets ISSUE-20260904-13 opened (BUG, high, RTTy), linked relates-to ISSUE-20260904-12 ~/dev/issues/open/ISSUE-20260904-13-*.md
PRs none merged by me the one open PR merged by its owner at 18:37 EDT

PR sweep — result

Exactly ONE open PR across all 91 remote-backed repos under ~/dev — richhdoty/RTTy#10 (Build 49 flows-banner split). Verified three ways: gh search prs --owner, --author, --involves richhdoty. It was a DRAFT whose body said "Not merging until both are green" with its archive-matrix gate still running (pid 87523, started 18:21:29). I did not merge under its owner. The owner's cloud session took it out of draft and merged it at 22:37:24Z (18:37 EDT) as 2629abc; main is now fbede7c.

The regression that survives the merge (ISSUE-20260904-13)

Independent read-only review (one Opus subagent, 155K tokens, 59 tool calls, 8 min) of the full 13-file diff against merge base e0011cf:

Moved only if ALL held: last real activity (timestamp inside the transcript) < 2026-08-31; not in ~/.claude/sessions/; not in any resume pin; a real project thread (subagents/, wf_* untouched). Moved set spans 2026-08-07 → 2026-08-30, 0.24 GB. mtime was rejected as the signal: 95 files share one 2026-09-03 21:16 mtime from a bulk copy; only 9 had genuine Sep-3 activity. Result: real project threads in the sidebar 154 → 39. Undo: ~/.claude/projects-archive/20260904-sidebar-cleanup/RESTORE.sh (exact manifest, nothing else).

Thread titles

Mechanism: append {"type":"custom-title","customTitle":…,"sessionId":…} to the transcript; verified on my own session first. Trap: grep -c '"type":"custom-title"' over-counts 25:3 because the string recurs inside recorded tool output — use jq 'select(.type=="custom-title")'. dev-de retitled six other live threads at 18:45 EDT in a consistent "rdmsm4x: next … (timestamp)" format in parallel with me — redundant, not conflicting; appends are additive and the last record wins. All 9 transcript-backed live threads now carry accurate titles. dev-df has no transcript to title.

Also measured, not acted on

Own measurement errors this session (caught before narrating)

find -newermt '-30 minutes' silently matched nothing on BSD find; ps -p | tail -1 returned tail's exit code; substring grep inflated the title count 8×; sorting stat %H:%M without the date. Same class every time — a check returning a plausible value for a question it did not ask.

How to undo

Outstanding — Rich

  1. Rotate the fleet SSH password (SEC-20260904-01). It is in git history on three remotes of a private repo.
  2. ISSUE-20260904-13 needs a decision on where the split lives (ecs0lib exposing the terms vs RTTy reading the counters).
  3. The offline Remote Control entries in ListAgents (≈23) are server-side registrations; nothing local removes them.