docs: complete Phase 534 roles, plan Phase 535 moderation (v0.8.497)
Update PLATFORM_ROADMAP, ROLES, PERMISSIONS, and AGENTCTL for the second roles depth pass and upcoming moderation phase. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
@@ -244,6 +244,15 @@ PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase516-contacts
|
||||
|
||||
Extends `test:contacts` + `test:block-contacts` + `test:friend-presence` with split contacts guild-loading compositor (`syncContactsPanelsDuringGuildLoading`), platform `contacts.request`/`accept`/`decline` span metadata, dev-log **contacts-errors** filter + clipboard contacts meta, `#composer-contacts-hint`, `lastFriendRowId`, and Phase 515 DMs regression. Agentctl: `test:contacts` headless roundtrip.
|
||||
|
||||
**Roles depth (v0.8.497):** Primary Phase 534 verification — combined bundle:
|
||||
|
||||
```bash
|
||||
npm run test:phase534-roles
|
||||
PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase534-roles
|
||||
```
|
||||
|
||||
Extends `test:phase533-guild-admin` regression with split roles compositor panels, platform role/overwrite span metadata (`spanKind`, `activeChannelId`, `customRoleCount`), anchored **permission-errors**/**role-errors** filters, clipboard roles busy meta, role/overwrite `aria-current=location`, ui-flow composer focus after role/overwrite IPC, and headless `createGuildCustomRole`/`deleteGuildCustomRole`/`upsertChannelPermissionOverwrite`. Agentctl: `test:agentctl-phase473-roles` + `smoke-agentctl-roles-phase534`.
|
||||
|
||||
**Guild admin depth (v0.8.496):** Primary Phase 533 verification — combined bundle:
|
||||
|
||||
```bash
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
# Guild permissions (v0.3.4)
|
||||
|
||||
**v0.8.497 (Phase 534):** Third permissions depth pass — roles panel compositor wrappers; platform `permission.overwrite*`/`role.*` end `spanKind` + `activeChannelId`; anchored **permission-errors**/**role-errors** (`$`); overwrite/role rows `aria-current=location`; ui-flow composer focus after overwrite/role IPC. Bundle: `npm run test:phase534-roles`.
|
||||
|
||||
**v0.8.473 (Phase 510):** Second permissions depth pass — `syncPermissionsPanelsDuringGuildLoading` splits role filter/editor, roles list panel/items, and channel overwrite modal chrome/controls/rows; platform `role.update` adds `previousPermissionMask`/`permissionMaskDelta`; `permission.overwrite` adds `replacedExisting`/`allowChanged`/`denyChanged`; post-upsert `permission.eval` for effective send; clipboard `permissionsGuildLoading`, `lastRoleRowId`, `lastChannelOverwriteKey`. Bundle: `npm run test:phase510-permissions`.
|
||||
|
||||
**v0.8.448 (Phase 485):** Channel overwrite platform spans add `allowNonZero`/`denyNonZero`; dev-log **permission-errors** filter anchored to `^permission.overwrite(.delete)? error` (role spans moved to **role-errors**). Clipboard `channelOwModalOpen`, `overwriteCount`. Bundle: `npm run test:phase485-roles`.
|
||||
|
||||
+112
-52
@@ -12991,62 +12991,121 @@ Fix guild switching, session boot gating, and theme/prefs application before mic
|
||||
|
||||
---
|
||||
|
||||
### Phase 534 — Roles depth (v0.8.497)
|
||||
### Phase 534 — Roles depth (v0.8.497) ✅
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P534-1 | Roles: create custom role roundtrip re-verify | [ ] |
|
||||
| P534-2 | Roles: update role roundtrip re-verify | [ ] |
|
||||
| P534-3 | Roles: delete role roundtrip re-verify | [ ] |
|
||||
| P534-4 | UI: split roles guild-loading compositor extend | [ ] |
|
||||
| P534-5 | UI: role list panel guild-loading guard extend | [ ] |
|
||||
| P534-6 | UI: channel perm modal panel guild-loading guard extend | [ ] |
|
||||
| P534-7 | UI: member role assign panel guild-loading guard extend | [ ] |
|
||||
| P534-8 | Platform: `role.create` span metadata extend | [ ] |
|
||||
| P534-9 | Platform: `role.update` span metadata extend | [ ] |
|
||||
| P534-10 | Platform: `permission.overwrite` span metadata extend | [ ] |
|
||||
| P534-11 | Logging: dev-log **permission-errors** filter tighten | [ ] |
|
||||
| P534-12 | Logging: dev-log **role-errors** filter tighten | [ ] |
|
||||
| P534-13 | Logging: dev-log clipboard roles meta extend | [ ] |
|
||||
| P534-14 | Agentctl: role create headless re-verify | [ ] |
|
||||
| P534-15 | Agentctl: overwrite edit headless re-verify | [ ] |
|
||||
| P534-16 | Agentctl: combined phase534 roles bundle | [ ] |
|
||||
| P534-17 | Smoke: roles-panels-guild-loading-extend-534 | [ ] |
|
||||
| P534-18 | Smoke: dev-log-permission-errors-tighten-extend-534 | [ ] |
|
||||
| P534-19 | Smoke: dev-log-clipboard-roles-meta-extend-534 | [ ] |
|
||||
| P534-20 | UI: composer roles hint extend | [ ] |
|
||||
| P534-21 | UI: role empty-state hints polish | [ ] |
|
||||
| P534-22 | UI: role row aria-current polish | [ ] |
|
||||
| P534-23 | UI: role filter chips aria-pressed re-verify | [ ] |
|
||||
| P534-24 | UI: role color picker re-verify | [ ] |
|
||||
| P534-25 | UI: @everyone row highlight re-verify | [ ] |
|
||||
| P534-26 | UI: composer autofocus after role modal re-verify | [ ] |
|
||||
| P534-27 | UI: channel overwrite pagination re-verify | [ ] |
|
||||
| P534-28 | Permissions: manage-roles toast re-verify | [ ] |
|
||||
| P534-29 | Docs: `ROLES.md` refresh | [ ] |
|
||||
| P534-30 | Docs: `PERMISSIONS.md` refresh | [ ] |
|
||||
| P534-31 | Docs: `AGENTCTL.md` phase 534 bundle | [ ] |
|
||||
| P534-32 | Regression: guild-admin phase 533 smokes still pass | [ ] |
|
||||
| P534-33 | Regression: invites phase 532 smokes still pass | [ ] |
|
||||
| P534-34 | Boot: session ready gate | [ ] |
|
||||
| P534-35 | Boot: pear run gate | [ ] |
|
||||
| P534-36 | Module: `pearcord-role` README accuracy | [ ] |
|
||||
| P534-37 | Module: `pearcord-platform` README roles section | [ ] |
|
||||
| P534-38 | Smoke: platform-role-span-metadata-extend-534 | [ ] |
|
||||
| P534-39 | Smoke: platform-overwrite-span-metadata-extend-534 | [ ] |
|
||||
| P534-40 | Mesh: role gossip roundtrip re-verify | [ ] |
|
||||
| P534-41 | Mesh: overwrite gossip roundtrip re-verify | [ ] |
|
||||
| P534-42 | UI: roles panel aria-busy polish | [ ] |
|
||||
| P534-43 | UI: lurker role badge re-verify | [ ] |
|
||||
| P534-44 | UI: admin role badge re-verify | [ ] |
|
||||
| P534-45 | UI: companion roles defer re-verify | [ ] |
|
||||
| P534-46 | UI: dev-log clipboard overwrite meta extend | [ ] |
|
||||
| P534-47 | UI: role reorder drag re-verify | [ ] |
|
||||
| P534-48 | UI: audit role entries re-verify | [ ] |
|
||||
| P534-49 | UI: hoist position display re-verify | [ ] |
|
||||
| P534-50 | Phase 535 moderation depth (v0.8.498) | [ ] |
|
||||
| P534-1 | Roles: create custom role roundtrip re-verify | [x] |
|
||||
| P534-2 | Roles: update role roundtrip re-verify | [x] |
|
||||
| P534-3 | Roles: delete role roundtrip re-verify | [x] |
|
||||
| P534-4 | UI: split roles guild-loading compositor extend | [x] |
|
||||
| P534-5 | UI: role list panel guild-loading guard extend | [x] |
|
||||
| P534-6 | UI: channel perm modal panel guild-loading guard extend | [x] |
|
||||
| P534-7 | UI: member role assign panel guild-loading guard extend | [x] |
|
||||
| P534-8 | Platform: `role.create` span metadata extend | [x] |
|
||||
| P534-9 | Platform: `role.update` span metadata extend | [x] |
|
||||
| P534-10 | Platform: `permission.overwrite` span metadata extend | [x] |
|
||||
| P534-11 | Logging: dev-log **permission-errors** filter tighten | [x] |
|
||||
| P534-12 | Logging: dev-log **role-errors** filter tighten | [x] |
|
||||
| P534-13 | Logging: dev-log clipboard roles meta extend | [x] |
|
||||
| P534-14 | Agentctl: role create headless re-verify | [x] |
|
||||
| P534-15 | Agentctl: overwrite edit headless re-verify | [x] |
|
||||
| P534-16 | Agentctl: combined phase534 roles bundle | [x] |
|
||||
| P534-17 | Smoke: roles-panels-guild-loading-extend-534 | [x] |
|
||||
| P534-18 | Smoke: dev-log-permission-errors-tighten-extend-534 | [x] |
|
||||
| P534-19 | Smoke: dev-log-clipboard-roles-meta-extend-534 | [x] |
|
||||
| P534-20 | UI: composer roles hint extend | [x] |
|
||||
| P534-21 | UI: role empty-state hints polish | [x] |
|
||||
| P534-22 | UI: role row aria-current polish | [x] |
|
||||
| P534-23 | UI: role filter chips aria-pressed re-verify | [x] |
|
||||
| P534-24 | UI: role color picker re-verify | [x] |
|
||||
| P534-25 | UI: @everyone row highlight re-verify | [x] |
|
||||
| P534-26 | UI: composer autofocus after role modal re-verify | [x] |
|
||||
| P534-27 | UI: channel overwrite pagination re-verify | [x] |
|
||||
| P534-28 | Permissions: manage-roles toast re-verify | [x] |
|
||||
| P534-29 | Docs: `ROLES.md` refresh | [x] |
|
||||
| P534-30 | Docs: `PERMISSIONS.md` refresh | [x] |
|
||||
| P534-31 | Docs: `AGENTCTL.md` phase 534 bundle | [x] |
|
||||
| P534-32 | Regression: guild-admin phase 533 smokes still pass | [x] |
|
||||
| P534-33 | Regression: invites phase 532 smokes still pass | [x] |
|
||||
| P534-34 | Boot: session ready gate | [x] |
|
||||
| P534-35 | Boot: pear run gate | [x] |
|
||||
| P534-36 | Module: `pearcord-role` README accuracy | [x] |
|
||||
| P534-37 | Module: `pearcord-platform` README roles section | [x] |
|
||||
| P534-38 | Smoke: platform-role-span-metadata-extend-534 | [x] |
|
||||
| P534-39 | Smoke: platform-overwrite-span-metadata-extend-534 | [x] |
|
||||
| P534-40 | Mesh: role gossip roundtrip re-verify | [x] |
|
||||
| P534-41 | Mesh: overwrite gossip roundtrip re-verify | [x] |
|
||||
| P534-42 | UI: roles panel aria-busy polish | [x] |
|
||||
| P534-43 | UI: lurker role badge re-verify | [x] |
|
||||
| P534-44 | UI: admin role badge re-verify | [x] |
|
||||
| P534-45 | UI: companion roles defer re-verify | [x] |
|
||||
| P534-46 | UI: dev-log clipboard overwrite meta extend | [x] |
|
||||
| P534-47 | UI: role reorder drag re-verify | [x] |
|
||||
| P534-48 | UI: audit role entries re-verify | [x] |
|
||||
| P534-49 | UI: hoist position display re-verify | [x] |
|
||||
| P534-50 | Phase 535 moderation depth (v0.8.498) | [x] |
|
||||
|
||||
**Next:** P534-1–P534-49.
|
||||
**Next:** ~~Phase 534~~ (complete). Split roles compositor panels (`syncRolesRoleListPanelDuringGuildLoading`, `syncRolesChannelPermPanelDuringGuildLoading`, `syncRolesMemberAssignPanelDuringGuildLoading`); platform role/overwrite `spanKind` + `activeChannelId`/`customRoleCount`; anchored **permission-errors**/**role-errors** (`$`); clipboard `rolesRoleListBusy`/`rolesMemberAssignBusy`/`rolesChannelPermBusy`/`rolesFilterChipsBusy`; role/overwrite rows `aria-current=location`; ui-flow composer focus after role create/update and overwrite upsert/delete; agentctl `createGuildCustomRole`/`deleteGuildCustomRole`/`upsertChannelPermissionOverwrite`; bundle `npm run test:phase534-roles`. Phase 535 planned (50 items).
|
||||
|
||||
---
|
||||
|
||||
### Phase 535 — Moderation depth (v0.8.498)
|
||||
|
||||
| ID | Item | Status |
|
||||
|----|------|--------|
|
||||
| P535-1 | Moderation: ban member roundtrip re-verify | [ ] |
|
||||
| P535-2 | Moderation: kick member roundtrip re-verify | [ ] |
|
||||
| P535-3 | Moderation: timeout member roundtrip re-verify | [ ] |
|
||||
| P535-4 | UI: split moderation guild-loading compositor extend | [ ] |
|
||||
| P535-5 | UI: ban list panel guild-loading guard extend | [ ] |
|
||||
| P535-6 | UI: member action panel guild-loading guard extend | [ ] |
|
||||
| P535-7 | UI: automod panel guild-loading guard extend | [ ] |
|
||||
| P535-8 | Platform: `ban.member` span metadata extend | [ ] |
|
||||
| P535-9 | Platform: `kick.member` span metadata extend | [ ] |
|
||||
| P535-10 | Platform: `timeout.member` span metadata extend | [ ] |
|
||||
| P535-11 | Logging: dev-log **moderation-errors** filter tighten | [ ] |
|
||||
| P535-12 | Logging: dev-log **automod-errors** filter tighten | [ ] |
|
||||
| P535-13 | Logging: dev-log clipboard moderation meta extend | [ ] |
|
||||
| P535-14 | Agentctl: ban member headless re-verify | [ ] |
|
||||
| P535-15 | Agentctl: timeout member headless re-verify | [ ] |
|
||||
| P535-16 | Agentctl: combined phase535 moderation bundle | [ ] |
|
||||
| P535-17 | Smoke: moderation-panels-guild-loading-extend-535 | [ ] |
|
||||
| P535-18 | Smoke: dev-log-moderation-errors-tighten-extend-535 | [ ] |
|
||||
| P535-19 | Smoke: dev-log-clipboard-moderation-meta-extend-535 | [ ] |
|
||||
| P535-20 | UI: composer moderation hint extend | [ ] |
|
||||
| P535-21 | UI: ban row aria-current polish | [ ] |
|
||||
| P535-22 | UI: timeout preset modal re-verify | [ ] |
|
||||
| P535-23 | UI: automod rule list re-verify | [ ] |
|
||||
| P535-24 | UI: composer autofocus after ban modal re-verify | [ ] |
|
||||
| P535-25 | Moderation: unban roundtrip re-verify | [ ] |
|
||||
| P535-26 | Moderation: automod block roundtrip re-verify | [ ] |
|
||||
| P535-27 | Moderation: audit log export re-verify | [ ] |
|
||||
| P535-28 | Moderation: reason field validation re-verify | [ ] |
|
||||
| P535-29 | Docs: `MODERATION.md` refresh | [ ] |
|
||||
| P535-30 | Docs: `AUTOMOD.md` refresh | [ ] |
|
||||
| P535-31 | Docs: `AGENTCTL.md` phase 535 bundle | [ ] |
|
||||
| P535-32 | Regression: roles phase 534 smokes still pass | [ ] |
|
||||
| P535-33 | Regression: guild-admin phase 533 smokes still pass | [ ] |
|
||||
| P535-34 | Boot: session ready gate | [ ] |
|
||||
| P535-35 | Boot: pear run gate | [ ] |
|
||||
| P535-36 | Module: `pearcord-moderation` README accuracy | [ ] |
|
||||
| P535-37 | Module: `pearcord-platform` README moderation section | [ ] |
|
||||
| P535-38 | Smoke: platform-moderation-span-metadata-extend-535 | [ ] |
|
||||
| P535-39 | Smoke: platform-automod-span-metadata-extend-535 | [ ] |
|
||||
| P535-40 | Mesh: ban gossip roundtrip re-verify | [ ] |
|
||||
| P535-41 | Mesh: automod gossip roundtrip re-verify | [ ] |
|
||||
| P535-42 | UI: moderation panel aria-busy polish | [ ] |
|
||||
| P535-43 | UI: audit row aria-current re-verify | [ ] |
|
||||
| P535-44 | UI: companion moderation defer re-verify | [ ] |
|
||||
| P535-45 | UI: dev-log clipboard audit meta extend | [ ] |
|
||||
| P535-46 | UI: kick confirm copy re-verify | [ ] |
|
||||
| P535-47 | UI: ban appeal hint re-verify | [ ] |
|
||||
| P535-48 | UI: audit export filter re-verify | [ ] |
|
||||
| P535-49 | UI: moderation P2P fanout re-verify | [ ] |
|
||||
| P535-50 | Phase 536 compliance depth (v0.8.499) | [ ] |
|
||||
|
||||
**Next:** P535-1–P535-49.
|
||||
|
||||
---
|
||||
|
||||
@@ -14497,6 +14556,7 @@ Absorbed into Phase 273 (P273-5–P273-8, P273-11–P273-12). See Phase 274 for
|
||||
- **2026-05-24** — v0.8.479: Phase 516 — split contacts guild-loading compositor; `contacts.request`/`accept`/`decline` span metadata; dev-log contacts-errors filter + clipboard contacts meta; bundle `test:phase516-contacts`. Phase 517 planned.
|
||||
- **2026-05-24** — v0.8.478: Phase 515 — split DMs guild-loading compositor; `dm.open`/`dm.send`/`dm.group.create` span metadata; dev-log dm-errors filter tighten + clipboard DM meta; bundle `test:phase515-dms`. Phase 516 planned.
|
||||
- **2026-05-24** — v0.8.477: Phase 514 — split invites guild-loading compositor; `guild.invite`/`invite.join`/`invite.revoke` span metadata; dev-log invite-errors filter + clipboard meta; bundle `test:phase514-invites`. Phase 515 planned.
|
||||
- **2026-05-24** — v0.8.497: Phase 534 — split roles compositor panels; platform role/overwrite span metadata (`spanKind`, `activeChannelId`, `customRoleCount`); anchored **permission-errors**/**role-errors** (`$`); clipboard roles busy meta; role/overwrite `aria-current=location`; ui-flow composer focus after role/overwrite IPC; agentctl `createGuildCustomRole`/`deleteGuildCustomRole`/`upsertChannelPermissionOverwrite`; bundle `test:phase534-roles`. Phase 535 planned (50 items).
|
||||
- **2026-05-24** — v0.8.496: Phase 533 — split guild-admin compositor panels; platform channel span metadata (`spanKind`, `activeChannelId`, `createdChannelId`); anchored **guild-admin-errors** (`$`); clipboard guild-admin busy meta; channel row `aria-current=location`; ui-flow composer focus after `delete-channel`/`reorder-channels`; agentctl `createGuildChannel`/`deleteGuildChannel`/`reorderGuildChannels`; bundle `test:phase533-guild-admin`. Phase 534 planned (50 items).
|
||||
- **2026-05-24** — v0.8.495: Phase 532 — split invites compositor (`syncInvitesHubPanelDuringGuildLoading`, `syncInvitesJoinPanelDuringGuildLoading`, `syncInvitesInvitePanelDuringGuildLoading`); platform invite span metadata (`guild.invite` `spanKind`/`hasShareCode`, `invite.join` `activeChannelId`/`guildCount`); anchored **invite-errors** (`$`); clipboard invites hub busy meta; invite code `aria-current=location`; ui-flow composer focus after `join-invite`; agentctl `createGuildInvite`/`joinGuildInvite`/`revokeGuildInvite`; bundle `test:phase532-invites`. Phase 533 planned (50 items).
|
||||
- **2026-05-24** — v0.8.494: Phase 531 — split DMs compositor (`syncDmsSidebarPanelDuringGuildLoading`, `syncDmsComposerPanelDuringGuildLoading`); platform DM span metadata (`dmConversationCount`, `sealed`, `groupDm`); anchored **dm-errors**; clipboard DM busy meta; DM row `aria-current=location`; E2E badge live region; agentctl `openDmWithPeer`/`createGroupDm`/`sendDmMessage`; bundle `test:phase531-dms`. Phase 532 planned (50 items).
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
Discord-style **custom roles** with bitmask permissions, colors, hoist, and P2P `ROLE_UPSERT` gossip.
|
||||
|
||||
**v0.8.497 (Phase 534):** Second roles depth pass — panel compositor wrappers (`syncRolesRoleListPanelDuringGuildLoading`, `syncRolesChannelPermPanelDuringGuildLoading`, `syncRolesMemberAssignPanelDuringGuildLoading`); platform role/overwrite `spanKind` + `activeChannelId`/`customRoleCount`; anchored **permission-errors**/**role-errors** (`$`); clipboard `rolesRoleListBusy`/`rolesMemberAssignBusy`/`rolesChannelPermBusy`/`rolesFilterChipsBusy`; role/overwrite rows `aria-current=location`; ui-flow composer focus after role create/update and overwrite upsert/delete; agentctl `createGuildCustomRole`/`deleteGuildCustomRole`/`upsertChannelPermissionOverwrite`. Bundle: `npm run test:phase534-roles`.
|
||||
|
||||
**v0.8.473 (Phase 510):** `syncPermissionsPanelsDuringGuildLoading` splits role filter/editor, list panel/items, channel overwrite chrome/controls/rows; `setChannelOverwriteRowsCurrent` + `lastChannelOverwriteKey`; platform `permission.eval` after overwrite upsert. Bundle: `npm run test:phase510-permissions`.
|
||||
|
||||
**v0.8.448 (Phase 485):** `syncRoleControlsDuringGuildLoading` / `syncRolesListDuringGuildLoading` / `syncChannelPermModalDuringGuildLoading`; `ensureComposerRolesHint` guild-loading copy; `setRoleRowsCurrent` on `.role-reorder-item`. Platform: `role.create` `nameLen`; `role.update` `renamed`/`permissionsChanged`; `role.delete` `existed`; `permission.overwrite` `allowNonZero`/`denyNonZero`. Dev-log **permission-errors** (`^permission.overwrite`) split from **role-errors** (`^role.`). Clipboard: `rolesPanelOpen`, `channelOwModalOpen`, `activeRoleEditId`, `guildBuiltinRoleCount`. Bundle: `npm run test:phase485-roles`.
|
||||
@@ -42,6 +44,16 @@ npm run test:phase438-roles-permissions
|
||||
npm run test:phase447-roles-permissions
|
||||
npm run test:phase464-roles-permissions
|
||||
npm run test:phase473-roles-permissions
|
||||
npm run test:phase534-roles
|
||||
PEARCORD_SKIP_MESH_ROUNDTRIP=1 npm run test:agentctl-phase534-roles
|
||||
```
|
||||
|
||||
Targeted Phase 534 smokes:
|
||||
|
||||
```bash
|
||||
npm run test:roles-panels-guild-loading-extend-534
|
||||
npm run test:role-row-aria-current-extend-534
|
||||
npm run test:ui-flow-roles-composer-focus-extend-534
|
||||
```
|
||||
|
||||
## Related
|
||||
|
||||
Reference in New Issue
Block a user