docs: Phase 622 emoji hub depth complete, Phase 623 stickers planned

Mark Phase 622 (v0.8.585) complete with 50-item table and changelog;
plan Phase 623 stickers hub depth; update EMOJI.md and AGENTCTL.md
bundles for test:phase622-emoji.

Co-authored-by: Cursor <[email protected]>
This commit is contained in:
Raven Scott
2026-05-24 19:30:43 -04:00
co-authored by Cursor
parent 97af04d020
commit f5e5c7830b
3 changed files with 130 additions and 55 deletions
+9
View File
@@ -496,6 +496,15 @@ PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase610-expression
Extends `test:phase609-stickers` regression with `#expression-panel-live` + `syncExpressionLivePanelDuringGuildLoading`; `#expression-hub-panel-live` `aria-busy`; emoji picker `aria-busy` during guild load; tightened **expression-errors** filter (excludes attachment/embed/message/pin/automod/ban/kick/timeout bleed); clipboard `expressionPanelLiveBusy`; platform `emoji.create`/`sticker.send`/`reaction.toggle` span metadata re-verify; `syncComposerExpressionHint` refreshes expression hub; ui-flow composer focus after send/upsert emoji/sticker; agentctl toggle reaction/staged sticker send `refreshView` re-verify. Agentctl: `test:agentctl-phase581-expression` + `smoke-agentctl-expression-phase610`. Extends `test:phase609-stickers` regression with `#expression-panel-live` + `syncExpressionLivePanelDuringGuildLoading`; `#expression-hub-panel-live` `aria-busy`; emoji picker `aria-busy` during guild load; tightened **expression-errors** filter (excludes attachment/embed/message/pin/automod/ban/kick/timeout bleed); clipboard `expressionPanelLiveBusy`; platform `emoji.create`/`sticker.send`/`reaction.toggle` span metadata re-verify; `syncComposerExpressionHint` refreshes expression hub; ui-flow composer focus after send/upsert emoji/sticker; agentctl toggle reaction/staged sticker send `refreshView` re-verify. Agentctl: `test:agentctl-phase581-expression` + `smoke-agentctl-expression-phase610`.
**v0.8.585 (Phase 622):** Primary Phase 622 verification — combined bundle:
```bash
npm run test:phase622-emoji
PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase622-emoji
```
Extends `test:phase621-automation` regression with `#emoji-hub-panel-live` hub depth copy + mesh note + active channel context; tightened **emoji-errors** filter (excludes thread bleed); `syncComposerEmojiHint` refreshes both hub and panel live regions; platform `emoji.create`/`emoji.delete`/`emoji.stage` `activeChannelId` re-verify; ui-flow composer focus after upsert/remove; agentctl upsert/remove `refreshView` re-verify. Agentctl: `test:agentctl-phase608-emoji` + `smoke-agentctl-emoji-phase622`.
**v0.8.584 (Phase 621):** Primary Phase 621 verification — combined bundle: **v0.8.584 (Phase 621):** Primary Phase 621 verification — combined bundle:
```bash ```bash
+6
View File
@@ -25,6 +25,10 @@ Expression hub compositor — split `#expression-panel-live` + `syncExpressionLi
Expression hub (`#expression-hub-panel-live`) composes emoji+sticker picker state; unified **expression-errors** dev-log filter. Bundle chains via `npm run test:phase581-expression`. Expression hub (`#expression-hub-panel-live`) composes emoji+sticker picker state; unified **expression-errors** dev-log filter. Bundle chains via `npm run test:phase581-expression`.
## Platform logging (v0.8.585 Phase 622)
Second emoji hub depth pass — `#emoji-hub-panel-live` hub mesh note + active channel context (`#channelName` in picker/upload copy); `#emoji-panel-live` guild mesh notes on custom emoji counts; **emoji-errors** excludes thread bleed; `syncComposerEmojiHint` refreshes both hub and panel live regions; platform `emoji.create`/`emoji.delete`/`emoji.stage` `activeChannelId` re-verify. Bundle: `npm run test:phase622-emoji`.
## Platform logging (v0.8.571 Phase 608) ## Platform logging (v0.8.571 Phase 608)
- Split emoji panel live (`#emoji-panel-live`, `syncEmojiLivePanelDuringGuildLoading`); hub `#emoji-hub-panel-live` `aria-busy`; upload modal `aria-busy` during guild load - Split emoji panel live (`#emoji-panel-live`, `syncEmojiLivePanelDuringGuildLoading`); hub `#emoji-hub-panel-live` `aria-busy`; upload modal `aria-busy` during guild load
@@ -143,6 +147,8 @@ View: `guildEmojis`, `guildEmojiPacks`, `emojisByPack`, `emojiMap`, `reactionGly
```bash ```bash
cd apps/pearcord cd apps/pearcord
npm run test:phase622-emoji
PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase622-emoji
npm run test:emoji npm run test:emoji
npm run test:emoji-packs # EMOJI_PACKS_SMOKE_OK npm run test:emoji-packs # EMOJI_PACKS_SMOKE_OK
npm run test:emoji-slots npm run test:emoji-slots
+115 -55
View File
@@ -18002,7 +18002,7 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
| P618-49 | UI: webhook panel autofocus re-verify | [x] | | P618-49 | UI: webhook panel autofocus re-verify | [x] |
| P618-50 | Phase 619 slash hub depth (v0.8.582) | [x] | | P618-50 | Phase 619 slash hub depth (v0.8.582) | [x] |
**Next:** ~~Phase 619~~ (complete). `#slash-hub-panel-live` hub depth copy + mesh note + active channel context; **slash-errors** excludes thread bleed; `syncComposerSlashHint` refreshes both hub and panel live regions; platform `slash.register`/`slash.delete`/`slash.invoke` `activeChannelId` re-verify; agentctl register/delete/invoke `refreshView` re-verify; bundle `npm run test:phase619-slash`. ~~Phase 620~~ (complete). ~~Phase 621~~ (complete). Phase 622 planned (50 items). **Next:** ~~Phase 619~~ (complete). `#slash-hub-panel-live` hub depth copy + mesh note + active channel context; **slash-errors** excludes thread bleed; `syncComposerSlashHint` refreshes both hub and panel live regions; platform `slash.register`/`slash.delete`/`slash.invoke` `activeChannelId` re-verify; agentctl register/delete/invoke `refreshView` re-verify; bundle `npm run test:phase619-slash`. ~~Phase 620~~ (complete). ~~Phase 621~~ (complete). ~~Phase 622~~ (complete). Phase 623 planned (50 items).
--- ---
@@ -18061,7 +18061,7 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
| P619-49 | UI: slash panel autofocus re-verify | [x] | | P619-49 | UI: slash panel autofocus re-verify | [x] |
| P619-50 | Phase 620 bots hub depth (v0.8.583) | [x] | | P619-50 | Phase 620 bots hub depth (v0.8.583) | [x] |
**Next:** ~~Phase 619~~ (complete). `#slash-hub-panel-live` hub depth copy + mesh note + active channel context; **slash-errors** excludes thread bleed; `syncComposerSlashHint` refreshes both hub and panel live regions; platform `slash.register`/`slash.delete`/`slash.invoke` `activeChannelId` re-verify; agentctl register/delete/invoke `refreshView` re-verify; bundle `npm run test:phase619-slash`. ~~Phase 620~~ (complete). ~~Phase 621~~ (complete). Phase 622 planned (50 items). **Next:** ~~Phase 619~~ (complete). `#slash-hub-panel-live` hub depth copy + mesh note + active channel context; **slash-errors** excludes thread bleed; `syncComposerSlashHint` refreshes both hub and panel live regions; platform `slash.register`/`slash.delete`/`slash.invoke` `activeChannelId` re-verify; agentctl register/delete/invoke `refreshView` re-verify; bundle `npm run test:phase619-slash`. ~~Phase 620~~ (complete). ~~Phase 621~~ (complete). ~~Phase 622~~ (complete). Phase 623 planned (50 items).
--- ---
@@ -18120,7 +18120,7 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
| P620-49 | UI: bot panel autofocus re-verify | [x] | | P620-49 | UI: bot panel autofocus re-verify | [x] |
| P620-50 | Phase 621 automation hub depth (v0.8.584) | [x] | | P620-50 | Phase 621 automation hub depth (v0.8.584) | [x] |
**Next:** ~~Phase 620~~ (complete). `#bots-hub-panel-live` hub depth copy + mesh note + active channel context; **bot-errors** excludes thread bleed; `syncComposerBotHint` refreshes both hub and panel live regions; platform `bot.install`/`bot.verify`/`bot.message` `activeChannelId` re-verify; agentctl install/verify/message `refreshView` re-verify; bundle `npm run test:phase620-bots`. ~~Phase 621~~ (complete). Phase 622 planned (50 items). **Next:** ~~Phase 620~~ (complete). `#bots-hub-panel-live` hub depth copy + mesh note + active channel context; **bot-errors** excludes thread bleed; `syncComposerBotHint` refreshes both hub and panel live regions; platform `bot.install`/`bot.verify`/`bot.message` `activeChannelId` re-verify; agentctl install/verify/message `refreshView` re-verify; bundle `npm run test:phase620-bots`. ~~Phase 621~~ (complete). ~~Phase 622~~ (complete). Phase 623 planned (50 items).
--- ---
@@ -18179,7 +18179,7 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
| P621-49 | UI: automation panel autofocus re-verify | [x] | | P621-49 | UI: automation panel autofocus re-verify | [x] |
| P621-50 | Phase 622 emoji hub depth (v0.8.585) | [x] | | P621-50 | Phase 622 emoji hub depth (v0.8.585) | [x] |
**Next:** ~~Phase 621~~ (complete). `#automation-hub-panel-live` hub depth copy + mesh note + active channel context; **automation-errors** excludes thread bleed; `syncComposerAutomationHint` refreshes both hub and panel live regions; platform `automation.hook`/`automation.dispatch`/`automation.manifest` `activeChannelId` re-verify; agentctl upsert/delete/dry-run/export `refreshView` re-verify; bundle `npm run test:phase621-automation`. Phase 622 planned (50 items). **Next:** ~~Phase 621~~ (complete). `#automation-hub-panel-live` hub depth copy + mesh note + active channel context; **automation-errors** excludes thread bleed; `syncComposerAutomationHint` refreshes both hub and panel live regions; platform `automation.hook`/`automation.dispatch`/`automation.manifest` `activeChannelId` re-verify; agentctl upsert/delete/dry-run/export `refreshView` re-verify; bundle `npm run test:phase621-automation`. ~~Phase 622~~ (complete). Phase 623 planned (50 items).
--- ---
@@ -18187,58 +18187,117 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
| ID | Item | Status | | ID | Item | Status |
|----|------|--------| |----|------|--------|
| P622-1 | Emoji: create roundtrip re-verify | [ ] | | P622-1 | Emoji: create roundtrip re-verify | [x] |
| P622-2 | Emoji: delete roundtrip re-verify | [ ] | | P622-2 | Emoji: delete roundtrip re-verify | [x] |
| P622-3 | Emoji: stage roundtrip re-verify | [ ] | | P622-3 | Emoji: stage roundtrip re-verify | [x] |
| P622-4 | Emoji: mesh gossip upsert roundtrip re-verify | [ ] | | P622-4 | Emoji: mesh gossip upsert roundtrip re-verify | [x] |
| P622-5 | UI: split emoji hub panel guild-loading extend | [ ] | | P622-5 | UI: split emoji hub panel guild-loading extend | [x] |
| P622-6 | UI: emoji panel live aria-busy polish | [ ] | | P622-6 | UI: emoji panel live aria-busy polish | [x] |
| P622-7 | UI: emoji grid panel guard extend | [ ] | | P622-7 | UI: emoji grid panel guard extend | [x] |
| P622-8 | UI: emoji upload panel guard extend | [ ] | | P622-8 | UI: emoji upload panel guard extend | [x] |
| P622-9 | Platform: `emoji.create` span metadata extend | [ ] | | P622-9 | Platform: `emoji.create` span metadata extend | [x] |
| P622-10 | Platform: `emoji.delete` span metadata extend | [ ] | | P622-10 | Platform: `emoji.delete` span metadata extend | [x] |
| P622-11 | Platform: `emoji.stage` span metadata extend | [ ] | | P622-11 | Platform: `emoji.stage` span metadata extend | [x] |
| P622-12 | Platform: emoji span `activeChannelId` re-verify | [ ] | | P622-12 | Platform: emoji span `activeChannelId` re-verify | [x] |
| P622-13 | Logging: dev-log **emoji-errors** filter tighten | [ ] | | P622-13 | Logging: dev-log **emoji-errors** filter tighten | [x] |
| P622-14 | Logging: dev-log clipboard emoji meta extend | [ ] | | P622-14 | Logging: dev-log clipboard emoji meta extend | [x] |
| P622-15 | Agentctl: upsert emoji headless re-verify | [ ] | | P622-15 | Agentctl: upsert emoji headless re-verify | [x] |
| P622-16 | Agentctl: combined phase622 emoji bundle | [ ] | | P622-16 | Agentctl: combined phase622 emoji bundle | [x] |
| P622-17 | Agentctl: phase622 emoji refreshView smoke | [ ] | | P622-17 | Agentctl: phase622 emoji refreshView smoke | [x] |
| P622-18 | Smoke: emoji-panels-guild-loading-extend-622 | [ ] | | P622-18 | Smoke: emoji-panels-guild-loading-extend-622 | [x] |
| P622-19 | Smoke: dev-log-emoji-errors-tighten-extend-622 | [ ] | | P622-19 | Smoke: dev-log-emoji-errors-tighten-extend-622 | [x] |
| P622-20 | Smoke: dev-log-clipboard-emoji-meta-extend-622 | [ ] | | P622-20 | Smoke: dev-log-clipboard-emoji-meta-extend-622 | [x] |
| P622-21 | UI: composer emoji hint extend | [ ] | | P622-21 | UI: composer emoji hint extend | [x] |
| P622-22 | UI: emoji tile aria-current polish re-verify | [ ] | | P622-22 | UI: emoji tile aria-current polish re-verify | [x] |
| P622-23 | UI: emoji picker guild-loading re-verify | [ ] | | P622-23 | UI: emoji picker guild-loading re-verify | [x] |
| P622-24 | UI: emoji empty-state hints re-verify | [ ] | | P622-24 | UI: emoji empty-state hints re-verify | [x] |
| P622-25 | UI: composer autofocus after emoji action re-verify | [ ] | | P622-25 | UI: composer autofocus after emoji action re-verify | [x] |
| P622-26 | Emoji: keyboard navigation re-verify | [ ] | | P622-26 | Emoji: keyboard navigation re-verify | [x] |
| P622-27 | Emoji: picker collapse roundtrip re-verify | [ ] | | P622-27 | Emoji: picker collapse roundtrip re-verify | [x] |
| P622-28 | Mesh: emoji gossip roundtrip re-verify | [ ] | | P622-28 | Mesh: emoji gossip roundtrip re-verify | [x] |
| P622-29 | Mesh: emoji delete sync roundtrip re-verify | [ ] | | P622-29 | Mesh: emoji delete sync roundtrip re-verify | [x] |
| P622-30 | Docs: `EMOJI.md` refresh | [ ] | | P622-30 | Docs: `EMOJI.md` refresh | [x] |
| P622-31 | Docs: `AGENTCTL.md` phase 622 bundle | [ ] | | P622-31 | Docs: `AGENTCTL.md` phase 622 bundle | [x] |
| P622-32 | Regression: automation phase 621 smokes still pass | [ ] | | P622-32 | Regression: automation phase 621 smokes still pass | [x] |
| P622-33 | Regression: bots phase 620 smokes still pass | [ ] | | P622-33 | Regression: bots phase 620 smokes still pass | [x] |
| P622-34 | Boot: emoji ready gate | [ ] | | P622-34 | Boot: emoji ready gate | [x] |
| P622-35 | Boot: pear run gate | [ ] | | P622-35 | Boot: pear run gate | [x] |
| P622-36 | Module: `pearcord-platform` README emoji section | [ ] | | P622-36 | Module: `pearcord-platform` README emoji section | [x] |
| P622-37 | Module: `pearcord-agentctl` README emoji section | [ ] | | P622-37 | Module: `pearcord-agentctl` README emoji section | [x] |
| P622-38 | Smoke: platform-emoji-span-metadata-extend-622 | [ ] | | P622-38 | Smoke: platform-emoji-span-metadata-extend-622 | [x] |
| P622-39 | Smoke: platform-emoji-stage-span-metadata-extend-622 | [ ] | | P622-39 | Smoke: platform-emoji-stage-span-metadata-extend-622 | [x] |
| P622-40 | UI: `#emoji-hub-panel-live` aria-busy extend | [ ] | | P622-40 | UI: `#emoji-hub-panel-live` aria-busy extend | [x] |
| P622-41 | UI: `#emoji-panel-live` live region extend | [ ] | | P622-41 | UI: `#emoji-panel-live` live region extend | [x] |
| P622-42 | UI: emoji escape focus re-verify | [ ] | | P622-42 | UI: emoji escape focus re-verify | [x] |
| P622-43 | UI: companion emoji defer re-verify | [ ] | | P622-43 | UI: companion emoji defer re-verify | [x] |
| P622-44 | UI: dev-log clipboard emoji filter meta extend | [ ] | | P622-44 | UI: dev-log clipboard emoji filter meta extend | [x] |
| P622-45 | UI: emoji expression cross-link re-verify | [ ] | | P622-45 | UI: emoji expression cross-link re-verify | [x] |
| P622-46 | UI: emoji guild cross-link re-verify | [ ] | | P622-46 | UI: emoji guild cross-link re-verify | [x] |
| P622-47 | UI: portable deep link emoji re-verify | [ ] | | P622-47 | UI: portable deep link emoji re-verify | [x] |
| P622-48 | UI: emoji permission toast re-verify | [ ] | | P622-48 | UI: emoji permission toast re-verify | [x] |
| P622-49 | UI: emoji panel autofocus re-verify | [ ] | | P622-49 | UI: emoji panel autofocus re-verify | [x] |
| P622-50 | Phase 623 stickers hub depth (v0.8.586) | [ ] | | P622-50 | Phase 623 stickers hub depth (v0.8.586) | [x] |
**Next:** Phase 622 `#emoji-hub-panel-live` hub depth copy + mesh note + active channel context; **emoji-errors** excludes thread bleed; `syncComposerEmojiHint` refreshes both hub and panel live regions; platform `emoji.create`/`emoji.delete`/`emoji.stage` `activeChannelId` re-verify; agentctl upsert/delete/stage `refreshView` re-verify; bundle `npm run test:phase622-emoji`. **Next:** ~~Phase 622~~ (complete). `#emoji-hub-panel-live` hub depth copy + mesh note + active channel context; **emoji-errors** excludes thread bleed; `syncComposerEmojiHint` refreshes both hub and panel live regions; platform `emoji.create`/`emoji.delete`/`emoji.stage` `activeChannelId` re-verify; agentctl upsert/remove `refreshView` re-verify; bundle `npm run test:phase622-emoji`. Phase 623 planned (50 items).
---
### Phase 623 — Stickers hub depth (v0.8.586)
| ID | Item | Status |
|----|------|--------|
| P623-1 | Sticker: upsert roundtrip re-verify | [ ] |
| P623-2 | Sticker: delete roundtrip re-verify | [ ] |
| P623-3 | Sticker: send roundtrip re-verify | [ ] |
| P623-4 | Sticker: mesh gossip roundtrip re-verify | [ ] |
| P623-5 | UI: split sticker hub panel guild-loading extend | [ ] |
| P623-6 | UI: sticker panel live aria-busy polish | [ ] |
| P623-7 | UI: sticker grid panel guard extend | [ ] |
| P623-8 | UI: sticker upload panel guard extend | [ ] |
| P623-9 | Platform: `sticker.create` span metadata extend | [ ] |
| P623-10 | Platform: `sticker.delete` span metadata extend | [ ] |
| P623-11 | Platform: `sticker.send` span metadata extend | [ ] |
| P623-12 | Platform: sticker span `activeChannelId` re-verify | [ ] |
| P623-13 | Logging: dev-log **sticker-errors** filter tighten | [ ] |
| P623-14 | Logging: dev-log clipboard sticker meta extend | [ ] |
| P623-15 | Agentctl: upsert sticker headless re-verify | [ ] |
| P623-16 | Agentctl: combined phase623 stickers bundle | [ ] |
| P623-17 | Agentctl: phase623 stickers refreshView smoke | [ ] |
| P623-18 | Smoke: sticker-panels-guild-loading-extend-623 | [ ] |
| P623-19 | Smoke: dev-log-sticker-errors-tighten-extend-623 | [ ] |
| P623-20 | Smoke: dev-log-clipboard-sticker-meta-extend-623 | [ ] |
| P623-21 | UI: composer sticker hint extend | [ ] |
| P623-22 | UI: sticker tile aria-current polish re-verify | [ ] |
| P623-23 | UI: sticker picker guild-loading re-verify | [ ] |
| P623-24 | UI: sticker empty-state hints re-verify | [ ] |
| P623-25 | UI: composer autofocus after sticker action re-verify | [ ] |
| P623-26 | Sticker: keyboard navigation re-verify | [ ] |
| P623-27 | Sticker: picker collapse roundtrip re-verify | [ ] |
| P623-28 | Mesh: sticker gossip roundtrip re-verify | [ ] |
| P623-29 | Mesh: sticker delete sync roundtrip re-verify | [ ] |
| P623-30 | Docs: `STICKERS.md` refresh | [ ] |
| P623-31 | Docs: `AGENTCTL.md` phase 623 bundle | [ ] |
| P623-32 | Regression: emoji phase 622 smokes still pass | [ ] |
| P623-33 | Regression: automation phase 621 smokes still pass | [ ] |
| P623-34 | Boot: stickers ready gate | [ ] |
| P623-35 | Boot: pear run gate | [ ] |
| P623-36 | Module: `pearcord-platform` README stickers section | [ ] |
| P623-37 | Module: `pearcord-agentctl` README stickers section | [ ] |
| P623-38 | Smoke: platform-sticker-span-metadata-extend-623 | [ ] |
| P623-39 | Smoke: platform-sticker-send-span-metadata-extend-623 | [ ] |
| P623-40 | UI: `#sticker-hub-panel-live` aria-busy extend | [ ] |
| P623-41 | UI: `#sticker-panel-live` live region extend | [ ] |
| P623-42 | UI: sticker escape focus re-verify | [ ] |
| P623-43 | UI: companion sticker defer re-verify | [ ] |
| P623-44 | UI: dev-log clipboard sticker filter meta extend | [ ] |
| P623-45 | UI: sticker expression cross-link re-verify | [ ] |
| P623-46 | UI: sticker guild cross-link re-verify | [ ] |
| P623-47 | UI: portable deep link sticker re-verify | [ ] |
| P623-48 | UI: sticker permission toast re-verify | [ ] |
| P623-49 | UI: sticker panel autofocus re-verify | [ ] |
| P623-50 | Phase 624 expression hub depth (v0.8.587) | [ ] |
**Next:** Phase 623 — `#sticker-hub-panel-live` hub depth copy + mesh note + active channel context; **sticker-errors** excludes thread bleed; `syncComposerStickerHint` refreshes both hub and panel live regions; platform `sticker.create`/`sticker.delete`/`sticker.send` `activeChannelId` re-verify; agentctl upsert/remove/send `refreshView` re-verify; bundle `npm run test:phase623-stickers`.
--- ---
@@ -19684,6 +19743,7 @@ Absorbed into Phase 273 (P273-5P273-8, P273-11P273-12). See Phase 274 for
### Changelog ### Changelog
- **2026-05-24** — v0.8.585: Phase 622 — `#emoji-hub-panel-live` hub depth copy + mesh note + active channel context; **emoji-errors** excludes thread bleed; `syncComposerEmojiHint` refreshes both hub and panel live regions; platform `emoji.create`/`emoji.delete`/`emoji.stage` `activeChannelId` re-verify; agentctl upsert/remove `refreshView` re-verify; bundle `npm run test:phase622-emoji`. Phase 623 planned (50 items).
- **2026-05-24** — v0.8.584: Phase 621 — `#automation-hub-panel-live` hub depth copy + mesh note + active channel context; **automation-errors** excludes thread bleed; `syncComposerAutomationHint` refreshes both hub and panel live regions; platform `automation.hook`/`automation.dispatch`/`automation.manifest` `activeChannelId` re-verify; agentctl upsert/delete/dry-run/export `refreshView` re-verify; bundle `npm run test:phase621-automation`. Phase 622 planned (50 items). - **2026-05-24** — v0.8.584: Phase 621 — `#automation-hub-panel-live` hub depth copy + mesh note + active channel context; **automation-errors** excludes thread bleed; `syncComposerAutomationHint` refreshes both hub and panel live regions; platform `automation.hook`/`automation.dispatch`/`automation.manifest` `activeChannelId` re-verify; agentctl upsert/delete/dry-run/export `refreshView` re-verify; bundle `npm run test:phase621-automation`. Phase 622 planned (50 items).
- **2026-05-24** — v0.8.583: Phase 620 — `#bots-hub-panel-live` hub depth copy + mesh note + active channel context; **bot-errors** excludes thread bleed; `syncComposerBotHint` refreshes both hub and panel live regions; platform `bot.install`/`bot.verify`/`bot.message` `activeChannelId` re-verify; agentctl install/verify/message `refreshView` re-verify; bundle `npm run test:phase620-bots`. Phase 621 planned (50 items). - **2026-05-24** — v0.8.583: Phase 620 — `#bots-hub-panel-live` hub depth copy + mesh note + active channel context; **bot-errors** excludes thread bleed; `syncComposerBotHint` refreshes both hub and panel live regions; platform `bot.install`/`bot.verify`/`bot.message` `activeChannelId` re-verify; agentctl install/verify/message `refreshView` re-verify; bundle `npm run test:phase620-bots`. Phase 621 planned (50 items).
- **2026-05-24** — v0.8.582: Phase 619 — `#slash-hub-panel-live` hub depth copy + mesh note + active channel context; **slash-errors** excludes thread bleed; `syncComposerSlashHint` refreshes both hub and panel live regions; platform `slash.register`/`slash.delete`/`slash.invoke` `activeChannelId` re-verify; agentctl register/delete/invoke `refreshView` re-verify; bundle `npm run test:phase619-slash`. Phase 620 planned (50 items). - **2026-05-24** — v0.8.582: Phase 619 — `#slash-hub-panel-live` hub depth copy + mesh note + active channel context; **slash-errors** excludes thread bleed; `syncComposerSlashHint` refreshes both hub and panel live regions; platform `slash.register`/`slash.delete`/`slash.invoke` `activeChannelId` re-verify; agentctl register/delete/invoke `refreshView` re-verify; bundle `npm run test:phase619-slash`. Phase 620 planned (50 items).