Skip to content

fix(discord): qualify own managed-role mentions in the product Provider - #1927

Merged
DoodleBears merged 5 commits into
mainfrom
codex/1615-discord-managed-role
Nov 2, 2026
Merged

DoodleBears merged 5 commits into
mainfrom
codex/1615-discord-managed-role

Conversation

@DoodleBears

@DoodleBears DoodleBears commented Oct 15, 2026 •

Copy link
Copy Markdown
Contributor

Issue #1615 | Agent claim | Provider #30

Why the change

Let a Discord member choose the App's own same-name managed role and reach its bound PersonaBot through checked original-location messaging instead of having the request silently ignored.

Special things to note

  • Merge risk: two-way door — revert this integration and restore the .21 Provider pin; medium blast radius — independently compiled Provider selection affects IM runtime, while the behavioral change is checked Discord addressing. Review exact role ownership, existing ordinary-policy separation, package/runtime digests and fresh native evidence; no schema, Core route or permission store is added.
  • Provider .22 is a local candidate pinned at 1fc80010ab7cfd10ecc4f63c1d46c098e829c6a6, not a globally published release. Agent-operated native/installed-package QA passed on QA1; both PRs remain draft pending review presentation and feedback. The App already had Message Content approval. Its prior availability was idle; the isolated receiver and temporary zero-permission test role have been released.
  • Task codex/local/01a13902-0d72-7872-ac0f-440e152155d5. Provider Discord 96/96, shared/other-platform 286/286, integrated Core/packaging 80/80, typecheck, lint, formatting, Core/docs build and actual packaged Web/model checks passed. CI at integration head a1d49691 passed all required checks, including actual package preparation; the latest documentation-only evidence commit has its own CI run. No complete local Windows suite success is claimed.

Change outline

 Original Discord MESSAGE_CREATE
-  user mention only → checked mention intake
+  native user mention → existing path
+  mentioned role + current checked guild/member proof
+    managed role belongs to this authenticated Bot → checked mention intake
   unrelated role / everyone / here → no direct addressing
   existing ordinary collection → separately authorized context only
   Source → Inbox → Orchestrator → own-App source-bound reply / Outbox
 Product composition
-  Provider .21 / immutable beaed4a6
+  Provider .22 / immutable 1fc80010
   source manifest + lock + 421-file runtime digest
   → six actual tarballs → qualified DSH 0.2.0-rc.2

The Runtime/Consumer regression first failed with one expected delivery and zero actual. The fix shares native role recognition between early Runtime intake and normalization without fabricating user mentions. Core additionally covers role text with an empty native user-mention list through canonical Inbox and own-identity reply. ADR-0128, the living architecture and bilingual guides state the trust boundary and qualification limits.

Installed/native verification record: the Human requested built-in-browser testing, which completed on the idle registered QA1 using the actual six-tarball 1.3.0-test.1615.1 candidate and official DeepSeek Flash. Native Bot-user and own-managed-role B markers each produced exactly one rendered reply and source-referencing receipt. The role event had zero user mentions. A zero-permission unrelated role held by the Bot, everyone and here produced no new Source, Admission, Outbox or model usage during the bounded observation. Native readback confirmed all addressing fields; the temporary role was removed and the task-owned receiver stopped.

Current screenshots and the browser recording are local evidence. A matched base/candidate visual pair and GitHub-rendered review images are still owed: the base receiver was not run in this candidate-only window. Reproduce with an exclusive idle QA App against each immutable artifact, select each native @ entry, and compare original-location replies plus canonical facts. The earlier T3 connection failure was resolved and is no longer a native-test blocker. The head-bound HTML explainer remains a local review aid, not reviewer-hosted or runtime evidence.

Refs #1615. This does not implement ordinary roles as addressing, silently grant Message Content access, or change the standalone Discord Session runner.

Issue: #1615

Agent-Task: codex/local/01a13902-0d72-7872-ac0f-440e152155d5
@coderabbitai

coderabbitai Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Caution

Review failed

The pull request is closed.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

Issue: #1615

Agent-Task: codex/local/01a13902-0d72-7872-ac0f-440e152155d5
Issue: #1615

Agent-Task: codex/local/01a13902-0d72-7872-ac0f-440e152155d5
@DoodleBears

Copy link
Copy Markdown
Contributor Author

Agent work progress — native installed-product acceptance passed

Task: codex/local/01a13902-0d72-7872-ac0f-440e152155d5 (not a DSH Session). Date: 2026-10-16 JST. State: active; review presentation and feedback still pending.

The Human confirmed registered Discord QA1 was idle and requested testing through the built-in browser. The actual six-tarball 1.3.0-test.1615.1 candidate, Provider .22 at 1fc80010ab7cfd10ecc4f63c1d46c098e829c6a6, ran in an isolated Host with official DeepSeek Flash.

  • Native Bot-user B marker: one rendered USER_OK and one source-referencing accepted Outbox.
  • Native own-managed-role B marker: one rendered ROLE_OK and one source-referencing accepted Outbox; zero user mentions in the native message and canonical Source.
  • Unrelated unmanaged role held by the Bot, with zero permissions: no new Source, Admission, Outbox or model usage.
  • Native @everyone and @here: same negative result. Provider reception and native readback confirmed all three messages were actually received.
  • Temporary role deleted and original native role/member state verified. Exact task-owned receiver stopped before its cutoff; QA1 returned to idle. No pre-existing receiver or App permission was changed.

Full verification record, Core draft #1927, maintained Provider draft #30.

Provider affected tests 96/96, shared/other-platform tests 286/286, integrated Core/packaging tests 80/80 and integration CI passed. The latest documentation-only commit has a separate CI run. Private native facts/screenshots/recording remain machine-local; a matched base/candidate visual pair and GitHub-rendered review images are still owed. A local HTML explainer is bound to Core head 20f533999d05ca2efd17d0fe707a9de27b386ac4 and Provider head 1fc80010ab7cfd10ecc4f63c1d46c098e829c6a6; it is not reviewer-hosted or runtime evidence. Neither PR has been merged, globally published or deployed.

DoodleBears and others added 2 commits November 2, 2026 17:50
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@DoodleBears
DoodleBears marked this pull request as ready for review November 2, 2026 12:20
@DoodleBears
DoodleBears merged commit d460269 into main Nov 2, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature:messaging Messaging module and external providers

Projects

Development

Successfully merging this pull request may close these issues.

1 participant