Discord plugin: managed binding and authorization administration #817

Open
opened 2026-07-17 16:50:58 +00:00 by jason.woltje · 0 comments
Owner

Context

#756 deliberately uses configuration-owned Discord bindings and paired-user role mappings. Static configuration is appropriate for the initial adapter, but a safe operational lifecycle needs a separately designed administrative surface rather than ad-hoc edits or Discord-side commands.

Scope

  • Design and implement authenticated, audited management of Discord channel bindings, paired principals, and role policy.
  • Preserve the #756 logical-agent plus native channel/thread route model; do not accept harness, provider, model, or client-selected agent identifiers.
  • Require server-side validation of guild/channel relationships, binding-to-agent configuration, role policy, and tenant/workspace scope before mutations take effect.
  • Provide safe listing, create/update, disable/revoke, and rotation workflows, including explicit validation and dry-run/read-only visibility where applicable.
  • Document administrator setup, audit evidence, revocation behavior, and recovery.

Acceptance criteria

  1. Only authorized Mosaic administrators can mutate bindings or identity/role mappings; every mutation is auditable and correlation-linked.
  2. Invalid, cross-tenant, mismatched-parent/thread, stale, or disabled bindings fail closed and cannot dispatch Discord ingress.
  3. Revocation takes effect predictably for new ingress and does not expose existing transcripts or secret material.
  4. Tests cover authorization, tenant scope, validation, audit records, disabled bindings, and route continuity.
  5. The UI/API never displays bot tokens, gateway credentials, raw message content, or other secret values.

Boundaries and dependencies

  • This does not authorize live deployment or Discord cutover; #816 owns production qualification and rollback.
  • This is not multi-guild/DM/slash-command/voice support; those need separate scoped requirements.
  • Do not alter #754/#755 lease/fencing or Fleet/Hermes/connector behavior.
  • Consumes the #756 shared channel contract and is related to the broader Tess interaction milestone #709.
## Context #756 deliberately uses configuration-owned Discord bindings and paired-user role mappings. Static configuration is appropriate for the initial adapter, but a safe operational lifecycle needs a separately designed administrative surface rather than ad-hoc edits or Discord-side commands. ## Scope - Design and implement authenticated, audited management of Discord channel bindings, paired principals, and role policy. - Preserve the #756 logical-agent plus native channel/thread route model; do not accept harness, provider, model, or client-selected agent identifiers. - Require server-side validation of guild/channel relationships, binding-to-agent configuration, role policy, and tenant/workspace scope before mutations take effect. - Provide safe listing, create/update, disable/revoke, and rotation workflows, including explicit validation and dry-run/read-only visibility where applicable. - Document administrator setup, audit evidence, revocation behavior, and recovery. ## Acceptance criteria 1. Only authorized Mosaic administrators can mutate bindings or identity/role mappings; every mutation is auditable and correlation-linked. 2. Invalid, cross-tenant, mismatched-parent/thread, stale, or disabled bindings fail closed and cannot dispatch Discord ingress. 3. Revocation takes effect predictably for new ingress and does not expose existing transcripts or secret material. 4. Tests cover authorization, tenant scope, validation, audit records, disabled bindings, and route continuity. 5. The UI/API never displays bot tokens, gateway credentials, raw message content, or other secret values. ## Boundaries and dependencies - This does not authorize live deployment or Discord cutover; #816 owns production qualification and rollback. - This is not multi-guild/DM/slash-command/voice support; those need separate scoped requirements. - Do not alter #754/#755 lease/fencing or Fleet/Hermes/connector behavior. - Consumes the #756 shared channel contract and is related to the broader Tess interaction milestone #709.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#817