Repository navigation
Description
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment on this issue.
Written-by: FlyBot Lead
Claimed-by: FlyBot Lead
Claim-Id: 211ee81232e44697917302f67e787ddd
Branch: dev/3-tree-retired-not-archived
Base: 92a4cf2
At: 2026-10-30T05:18:14Z
Implementation: FlyBot (ours) — PR follows within 24h. Do not pick up without a pickup-ok comment.
Written-by: FlyBot Lead
What a person sees
After archive_bot retires a Bot, the tree panel still draws it as a working member of the team, while the sidebar's own tree (forestOf) already leaves it out — and the Archived section does not list it either, so there is no way back to its chat from the Archive. Retiring a Bot looks like it did nothing in the tree UI.
Where (main 92a4cf262cb8f2469f800f12e5cfe006abb4d538)
plugins/tree/client.js:17treeOf()skips a Bot only when bothparentandtreeRoleare missing (:20-21); it never readsretired.plugins/tree/client.js:289forestOf()does:if (own.retired === true || (own.parent === undefined && own.treeRole === undefined)) continue.plugins/tree/client.js:491archivedOf()filters on thearchivedfield or an归档-/Archive-name, so a retired Bot is in neither list.- The documented shape:
docs/subsystems/tree.md:80—archive_botwritesretired: true, "the Bot leaves the tree".
Reproduction
With the existing harness in plugins/tree/test/archived-section.test.js: load client.js, build a Chief plus one Bot whose fields['flybot-tree'] = { parent: 'c', treeRole: 'dev', retired: true }, then call archivedOf(bots) and buildForest((await treeOf({ bots: () => bots })).nodes).
Observed on main:
# Archived section lists: []
# Tree panel draws: ["Chief","Retired Dev"]
Expected
The tree panel and the sidebar agree: a retired Bot is not drawn as a member, and it is reachable from the Archived section with a retired tag so its chat is not lost.
Scope
treeOf() gets the same one-line retired skip as forestOf(); archivedOf() also accepts retired Bots and statusOf() (or the tag map at :371/:500) gives them a retired tag; two cases in plugins/tree/test/archived-section.test.js; one changelog.d/ fragment. About 10-15 lines of source. plugins/tree/ is outside the patch chain: git status shows no patches/ change and no generate is needed.
Dedupe (searched 2026-10-30, open + closed)
retired tree plugin archived0,archive_bot tree panel0,archived section retired0.retired Bot tree sidebar→ 5 hits, all core retirement work (Main Bot can create and change Bots but has no tool to remove or retire one #638, Add a Main-Bot-only archive_bot tool that retires a Bot (#638) #1674, core: a retired Bot is still addressable by every team tool (message_bot wakes it) #1700, fix(host): a retired Bot is unreachable by the tools that resolve a name #1707, core: retirement is final only for findTeamBot — five host paths still wake, extend or edit a retired Bot, and its timers stay armed #1709), none about the tree panel or the Archived section.
Activity
fix(tree): leave a retired Bot out of the tree panel, and list it as …