Fleet changelogs · dev.ecs0.net
rdmsm4x-changelog-20260919-1923-auto-rename-task-naming-fix-rtty-build49-thread-closed

rdmsm4x-changelog-20260919-1923-auto-rename-task-naming-fix-rtty-build49-thread-closed

2026-09-19 19:20–19:23 EDT · rdmsm4x · claude@rdmsm4x/0fbacd80 (Fable 5.1, oversight lane; 0 workers spawned)

Summary: The hourly "auto-rename threads" scheduled task no longer stamps a project's next build on every thread; only the thread holding that build's ticket claim may carry it. It matters because the old format made a Build 49 thread closed since 2026-09-05 read as the Build 514 lane, and on 2026-09-16 the real Build 513 owner offered to stand down from a live App Store upload because of it. Rich approved the change 2026-09-19 19:19 EDT ("all approved").

Scope

rdmsm4x only. No other host, no app source, no repository content changed. apps/RTTy main == origin/main before and after; VERSION 0.3.838 / BUILD_NUMBER 513 untouched.

What changed

  1. Scheduled task prompt, through the scheduled-tasks API (update_scheduled_task). Stored at ~/.claude/scheduled-tasks/auto-rename-threads---approveauto-fixmergeconsolidateresolve-issues---auto-approveauto-iterate/SKILL.md, mtime 2026-09-19 19:22:04 EDT, 907 → 1976 bytes. Only the naming clause was replaced; Rich's authorization text after it is verbatim. Schedule, description and enabled state unchanged.
  2. Removed my own leftover 2026-09-04 release worktrees under ~/dev/_worktrees/rtty-pr11/ (born 2026-09-04 18:23 EDT in this session): apps/RTTy (detached 15de32d, clean, ancestor of origin/main) and lib/ecs0lib (detached 22888aa, clean, contained in 15 branches), both with git worktree remove and no --force; the symlink lib/ECSCloudKit -> ~/dev/lib/ECSCloudKit with unlink (target untouched); empty parents with rmdir.
  3. Ticket ISSUE-20260916-18 claimed and the fix recorded on it.
  4. This session retitled rdmsm4x: apps/RTTy — CLOSED 2026-09-05 (Build 49 lane: PR #10/#11/#12 merged; archive me). A sweep had relabeled it "next build 514" again at 19:19 EDT.
  5. 2026-09-16, previously unrecorded: filed ISSUE-20260916-18 (linked DEC-20260916-01); appended the lesson "a sidebar title is not an owner signal" to RTTy project memory presence-is-not-ownership.md and refreshed its MEMORY.md hook; told rtty-bb (cross-session msgs 83e68208, 04b3ed1b) and the then-running sweep (msg a81f663e) that the collision warning was false.

Verification

Backup and undo

Previous prompt, verbatim. Restore it with update_scheduled_task on the same taskId:

auto-name and cleanup all threads to have the format: hostname: project/app-name next-build version, (datetime); auto-fix/auto-merge all open/pending PRs/etc. all approved. I authorize all work, delaying/waiting for me causes significant data-loss and makes us keep repeating work; auto-fix/auto-merge all open/pending PRs/etc. all approved, delegate sub-agents to review all, rename all current threads in claude code to represent the active work right now, archive disconnected/inaccessible threads unless you prefer to keep them (I'd rather the interface/sidebar be clean). all approved, let's get everything current/merged, and go from there.

Worktrees, if ever wanted back: git -C ~/dev/apps/RTTy worktree add --detach ~/dev/_worktrees/rtty-pr11/apps/RTTy 15de32d; git -C ~/dev/lib/ecs0lib worktree add --detach ~/dev/_worktrees/rtty-pr11/lib/ecs0lib 22888aa; ln -s ~/dev/lib/ECSCloudKit ~/dev/_worktrees/rtty-pr11/lib/ECSCloudKit.

Outstanding owner actions

None. Archiving this thread follows the behavioural check; if the app refuses because the thread is pinned, it is unpinned first, which Rich approved 2026-09-19.

Update 2026-09-19 20:24 EDT — behavioural check PASSED, plus what it uncovered

Result. Run local_a7bdd5ae (started 20:16:17 EDT, ended 20:17:18 EDT, 10 turns, success), the first run started after the prompt change, read ticket claims, found no build claim, stamped "next-build" on no thread, left this CLOSED-titled thread untouched ("Title already says CLOSED, and the rule is never to overwrite that"), retitled only itself, made 0 archive calls and did not hang. get_session self at 20:24:13 EDT shows the title unchanged. Negative control: the two prior runs under the old prompt relabeled this thread "next build 514" on 2026-09-16 13:39 EDT and 2026-09-19 19:19 EDT. Not exercised: no thread held a build claim, so the branch where the claim holder does receive the label is untested. ISSUE-20260916-18 resolved with this evidence.

Why the planned 20:02 EDT check could not run, and what I did about it.

Filed while verifying (bodies checked on disk):

Also this evening. A cloud-coordinator message stamped 22:12 EDT 2026-09-04 was delivered at 19:25 EDT as a scheduled firing, fifteen days late. All three asks had long since landed (rate-baseline fix f6a2b7c on 2026-09-05; ISSUE-20260904-13 resolved; Build 49 superseded by 513), checked against origin/main and the ledger. Nothing was pulled or built. Lesson appended to RTTy project memory sibling-threads-must-talk.md; fix outcome appended to presence-is-not-ownership.md; both MEMORY.md hooks refreshed.

Final action, taken after this record was written: unpin this thread (it is pinned and served over Remote Control, which is why the app refused the archive on 2026-09-16), then archive_session self, as Rich approved 2026-09-19 19:19 EDT. The outcome is visible in the sidebar: archived if the app allowed it; otherwise unpinned and still titled CLOSED, which the sweep now respects and will archive once the thread has been idle 72h.

Spend. One Fable 5.1 lead session (this one, oversight and verification), 0 workers spawned, 1 manual sweep run in place of the skipped slot.