Skip to content

IM tracer: dsh-im outbound adapter and explicit Bot binding #117

Closed

Description

@DoodleBears

Confirmed feature scope — 2026-09-30

Feature Project: IM Identities & Messaging; provider parent: #48. Cross-platform binding is allowed; initially one account per platform per PersonaBot and one platform Bot account bound to one local PersonaBot. The Human must be able to select/verify that binding in the first real vertical path. Historical #30 is retired; current local Messaging/Inbox baseline must be reused.

Parent

What to build

交付 outbound-first dsh-im Provider Adapter tracer。BotHarness 复用 same-Host public dshIm Service 和可选 dshImClient setup surface,让一个 PersonaBot 向 Human 已在 dsh-im 中测试并保存的目标发送一条主动纯文本消息。

本票只证明 Provider Registration、Bridge Connection/Binding、Human Service Grant、Outbox 和 lifecycle seam。真实 inbound consumer、Bot Inbox wake 与 Feishu/Lark DM reply 由 #12 拥有。

Production-shaped path

Human configures/tests dsh-im bot + target
→ BotHarness discovers opaque botId/targetId
→ Human creates PersonaBot Binding + proactive Service Grant
→ Messaging writes Outbox Intent
→ adapter calls same-Host dshIm.send()
→ provider-accepted / failure / unknown-outcome fact
→ UI shows honest outcome and rebind state

Stable boundaries

  • Adapter is a Consumer of dsh-im services and a Provider of Messaging: external ingress, Provider contracts and Outbox #46's application-defined Messaging Provider Registration.
  • dsh-im remains optional. Missing/incompatible service removes the Registration and affected Binding becomes unavailable; other providers and BotHarness core continue.
  • BotHarness stores opaque bot/target references plus verified account fingerprint and health/capability snapshots; never secrets or private dsh-im JSON.
  • Provider capability is not authorization. Binding and Service Grant are validated at action acceptance and immediately before execution.
  • Every send persists Outbox Intent before the external call. sent: true means provider accepted, not delivered/read.
  • timeout or ambiguous failure becomes unknown-outcome; no blind automatic retry.
  • deleted/recreated bot or target becomes degraded/rebind-required; no display-name/App-ID/recent-item fallback.
  • Fiber disposal revokes Registration/operations and cleans listeners.
  • Client may link/embed dsh-im management UI for provider setup, but PersonaBot Binding/Grant remains BotHarness authority.
  • No unauthenticated dsh-im HTTP delivery endpoint and no import of dsh-im private src/**.

Acceptance criteria

  • Pin and compatibility-check the dsh-im package/upstream revision against the project DSH profile.
  • Optional adapter Plugin/Fiber registers and disposes cleanly; dsh-im absence fails closed.
  • Human can select a tested opaque bot/target and create a PersonaBot Binding without copying credentials.
  • proactive send validates archive/recovery state, Binding, capability and Service Grant twice.
  • Outbox Intent precedes the call; provider-accepted, failure, cancellation and unknown-outcome are distinct.
  • restart preserves durable Outbox/Binding facts without treating transport memory as authority.
  • remove/recreate/rebind paths are explicit and auditable.
  • fake dsh-im contract tests cover lifecycle, unavailable service, unknown bot/target, timeout and cleanup.
  • Human can send one proactive text in a real Profile and see an honest provider-accepted outcome.

Blocked by

Out of scope

  • inbound subscription or exclusive external-consumer mode。
  • provider DM → Source Event → Bot Inbox → Orchestrator。
  • trusted inbound Reply Route acceptance。
  • Slack/Discord second-provider proof。
  • claims of final delivery/read or exactly-once。

References

Activity

  1. added this to the v1.1 milestone on Sep 20, 2026
  2. changed the title [-]Spec: dsh-im-backed PersonaBot messaging provider(outbound first, inbound consumer gate)[/-] [+]Tracer A: dsh-im outbound PersonaBot messaging adapter[/+] on Sep 20, 2026
  3. added
    V1.1Milestone v1.1; mirrors the GitHub milestone
    area:backendHost-side implementation
    feature:messagingMessaging module and external providers
    scope:tracerHuman-testable implementation slice
    on Sep 22, 2026
  4. changed the title [-]Tracer A: dsh-im outbound PersonaBot messaging adapter[/-] [+]IM tracer: dsh-im outbound adapter and explicit Bot binding[/+] on Sep 30, 2026
  5. 15 remaining items

  6. DoodleBears commented on Sep 30, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome

    The Human bound the real Lark account/destination in Profile, sent a text and confirmed receipt, then authorized merge. Exact final head db2ce29cddb4406c0d8240373aa71526a992807d passed GitHub lint/format/typecheck/test/build/docs and CodeRabbit checks; local integration was 1462 pass / 1 skip. Canonical grant, intent and one settled accepted attempt were verified without another external send. Main integration retains the concurrent Human Inbox reply, usage and Host file actions.

    Released legacy dsh-im remains disabled. The compatible authenticated-account/checked-send contract is proposed in xmanrui/dsh-im#293 and has not been accepted or released. This does not complete #117's compatible pinned artifact or #46/#78's inbound scope.

    The Human clarified work-group collaboration as the priority. #12 now verifies work-group @bot → the bound PersonaBot Inbox/Orchestrator → trusted same-group/topic reply; DM is a compatibility follow-up. See #12 (comment).

  7. removed
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Sep 30, 2026
  8. DoodleBears commented on Sep 30, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim — compatible provider adoption

    • Agent: Codex
    • Task: codex/local/01a0f14c-5338-7020-853b-0fe54b87aa95 (not a DSH Session)
    • Issue scope: reproducible preparation/install of the exact qualified temporary dsh-im provider artifact, compatibility validation in an isolated DSH Profile, and actual existing outbound binding/send evidence; no new Inbox implementation or package/Release publication.
    • Branch: codex/117-compatible-provider
    • Started: 2026-10-01 06:15 JST
    • State: active

    #587 delivered the Human-accepted outbound behavior. #607 now merged at bdecd0da167e450e1ac65da981f22dcce0bd7204, qualifying the pinned public consumer/reply proposal. #117 still owns compatible-artifact adoption, which is a native blocker of #12. Complete this narrow repeatable artifact path before expanding the integrated Inbox tracer. Upstream #293 remains unaccepted/unreleased; a temporary qualified fork is labelled explicitly and its exit condition must stay visible.

  9. added
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Sep 30, 2026
  10. DoodleBears commented on Oct 1, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — Human QA gate

    The optional isolated launcher installs the qualified public-contract fork at full Git SHA, checks runtime identity before boot, and leaves upstream-release/production gates explicit. A fresh real Profile exercised account/group grant selection and actual UI sends; exactly two accepted BotHarness attempts and the same Binding/Grant/Intents survived restart without replay. The PR includes native before/after screenshots and public-safe provenance. Platform accepted is verified; visible group receipt, delivery and read are unverified because read surfaces lacked authorization or a valid client login. No Human credentials entered BotHarness and no permission was expanded.

    Local integration: lint/format/typecheck/build/docs pass, 1569 tests pass / 1 skip with four workers. The earlier unchanged source-policy timeout and passing isolated rerun are retained as separate evidence. Exact-head GitHub CI status is visible on the PR.

    Goal is paused as instructed after this issue PR. Await Human QA before merge or #12 implementation. #12 remains the integrated work-group @bot → PersonaBot Inbox/Orchestrator → trusted reply tracer; #612 / #613 / #614 are the approved later slices in Project 10 / v1.1. Upstream dsh-im PR #293 remains pending and no provider package or Release was published.

  11. added and removed
    ready-for-agentFully specified, ready for an AFK agent
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 1, 2026
  12. DoodleBears commented on Oct 1, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim — Human-approved merge

    • Agent: Codex
    • Task: codex/local/01a0f14c-5338-7020-853b-0fe54b87aa95 (not a DSH Session)
    • Issue scope: merge the Human-approved qualified optional provider adoption PR feat(dev): pin qualified IM provider for repeatable isolated QA #624; preserve exact-head CI and existing real Profile evidence, then record the outcome. No new provider behavior or inbound implementation is included in this merge.
    • Branch: codex/117-compatible-provider
    • Started: 2026-10-01 05:25 UTC
    • State: active

    The Human explicitly authorized merging PR #624. Its final head is a9e5d56c5951c304031b0ad833aee49b6448c678; GitHub reports clean/mergeable with successful integrated CI and CodeRabbit. Existing evidence distinguishes provider acceptance from unverified external receipt/read. Upstream publication and production enablement remain separate gates.

  13. added
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 1, 2026
  14. DoodleBears commented on Oct 1, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — Human-approved merge completed

    The Human explicitly authorized merge after QA. Exact-head integrated GitHub CI and CodeRabbit passed; the PR was clean/mergeable and was squash-merged with a head guard. #117 is now closed. Existing native UI/send/restart screenshots and provenance remain in the PR; the verified send outcome remains provider acceptance, without upgrading unverified receipt/read evidence. The unreleased upstream proposal and production gate are unchanged.

    The qualified optional artifact prerequisite is complete. #12 remains the next integrated work-group mention → PersonaBot Inbox/Orchestrator → same-source reply tracer. The Human has approved including #629's #634–#639 slices in a new IM delivery goal, alongside #612/#613/#614, with real E2E evidence and a Human QA pause after each issue PR. No new #12 implementation claim is made by this merge outcome.

  15. removed
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    on Oct 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    V1.1Milestone v1.1; mirrors the GitHub milestonearea:backendHost-side implementationfeature:messagingMessaging module and external providersscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions