Skip to content

WeChat tracer: authorized external-only proactive text delivery #910

Closed

Description

@DoodleBears

Parent

#902 — Personal WeChat capability alignment. IM coordination reference: #48.

What to build

The PersonaBot can initiate a text report to its authorized paired-owner WeChat DM using its own bound identity, without generating an unwanted local Human DM message.

Scope: personal WeChat/iLink, explicitly authorized paired-owner DM. Enterprise WeChat/WeCom is excluded.

Acceptance criteria

  • Extend the canonical proactive-post capability to qualified WeChat owner-DM targets. Human can inspect and explicitly manage the target authorization and capability in the existing identity/authorization UI.
  • Recheck account fingerprint, binding, enabled state and Grant immediately before send. Use only valid private conversation context supported by the native server; missing/expired context returns an actionable result rather than an assumed success.
  • Store canonical outbound operation/receipt evidence while keeping delivery external-only. Preserve any native server message ID actually returned and identify client acknowledgement separately; neither is a read receipt.
  • Handle explicit rejection, revocation, cancellation and uncertain network outcomes without false delivery claims or uncontrolled retries.
  • Real E2E: initiate a fresh unique report without a new triggering WeChat message, verify actual receipt in the authorized WeChat DM and absence of a local DM mirror. Verify follow-up replies still enter canonical Inbox and cover a revoked/invalid-context attempt.
  • This provides the send capability usable by a morning-report workflow; a new scheduling system or scheduled-work UI is not part of this slice.

Blocked by

None — can start immediately. Completed prerequisite: #878 / PR #894.

Delivery and evidence

  • Deliver one production-shaped tracer through the qualified Provider, canonical Messaging authority, applicable PersonaBot/Channel/Inbox behavior, and an operable Client path. Reuse the existing exclusive Consumer; do not create standalone dsh-im Sessions or a parallel message store.
  • Keep the original external author, timestamp, lossless native message ID, Source Event ID, and trusted reply route. Every external send uses the acting Bot's own bound identity and current Grant; platform credentials, context tokens and media keys remain Provider-private.
  • Qualify the changed Provider capability on the maintained fork and pin the verified artifact. Submit reusable Provider changes upstream where appropriate, without making upstream merge a release prerequisite.
  • Complete fresh real WeChat E2E with the Human controlling WeChat. Include observable success and the relevant refusal/recovery behavior, focused regression coverage, and packaged-product verification. A model's claim, HTTP success, or client acknowledgement alone is not delivery/read proof.
  • Preserve real screenshots or recording during acceptance; embed GitHub-renderable evidence in the PR, including before/after and applicable light/dark states for visible UI changes. Do not publish credentials or unrelated chat contents.
  • Update the illustrated English and Chinese WeChat connection guide and reusable IM integration guidance with verified behavior and platform limitations; edit canonical source docs, not generated site content.
  • Create one issue-linked PR, then pause for Human QA. Merge and deployment require their own Human authorization. Issue closure requires the accepted behavior, not only documentation or a capability flag.

Activity

  1. added this to the v1.1 milestone on Oct 5, 2026
  2. added
    ready-for-agentFully specified, ready for an AFK agent
    area:fullstackEnd-to-end Host and Client implementation
    feature:messagingMessaging module and external providers
    on Oct 5, 2026
  3. DoodleBears commented on Oct 6, 2026

    @DoodleBears
    ContributorAuthor

    Continuation reference (not an implementation claim)

    #909 / PR #1076 is merged at 965f88cf67ad5c78084c59ced5b5a1564f8be784. Human requested continuation on another computer; the complete goal, current Provider pins, original E2E evidence, required fresh QA setup and suggested #910 acceptance path are recorded in the parent handoff.

    This task has not claimed or implemented #910. Refresh current claims/PRs before starting; use latest main and a new isolated QA Profile, preserve native WeChat Human control, and keep one issue → one evidenced PR → Human QA. Pairing and credentials were not synchronized to GitHub. Merge-commit CI remains in progress: https://github.com/BotHarness/BotHarness/actions/runs/37528325667 .

  4. DoodleBears commented on Oct 6, 2026

    @DoodleBears
    ContributorAuthor

    Agent work claim

    • Agent: Codex
    • Task: codex/local/01a112f7-9794-7692-9b17-b71aa980b313 (not a DSH Session)
    • Issue scope: WeChat tracer: authorized external-only proactive text delivery #910 — qualified paired-owner WeChat external-only proactive text, current identity/Grant fences, canonical receipts, operable Client path, fresh Human-controlled native E2E and bilingual illustrated guides.
    • Branch: codex/910-wechat-proactive
    • Started: 2026-10-06 21:04 UTC
    • State: active

    Refreshed #902 handoff, open PRs and native dependency list: no existing #910 implementation claim or open blocker. #909/#1076 merged at 965f88cf67ad5c78084c59ced5b5a1564f8be784; both PR-head and merge CI completed successfully. Starting from latest main and preserving its qualified Lark media Provider baseline. One issue → one PR → pause for Human QA; native WeChat remains Human-operated, with fresh machine-local pairing and credentials. No merge or deployment authorization is assumed.

  5. added
    agent:activeOne or more coding-agent tasks currently claim this issue; see claim comments for task IDs
    in-progressHeld by an agent session; see Claim comment for who
    on Oct 6, 2026
  6. DoodleBears commented on Oct 6, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — Human QA handoff

    • Task: codex/local/01a112f7-9794-7692-9b17-b71aa980b313 (not a DSH Session)
    • State: handed-off for Human QA; implementation is not merged, published or deployed
    • PR: #1081, draft; one issue → one PR
    • Commit: 46dbb1afa9e5666623ccefeffc595dd8c1d191da, based on latest main 2383a6e74330073a309d34b3c5052c9b3fb26761
    • Provider: authorized push completed to maintained fork branch codex/910-wechat-proactive, commit 4f4f0a6282580bb59968eb90571778eb7e37ee73; fixed managed artifact 4.32.0-botharness.12 retains main-qualified Lark images

    Fresh-computer pairing was performed by the Human. A genuine missing-context refusal was recovered by a fresh owner message. The Human confirmed BH910-PROACTIVE-OWNER-0632 and replied 910 FOLLOWUP 蓝色灯塔63; that reply entered the original Bot's canonical Inbox and was handled. Profile posting left local DM history unchanged. The preceding packed build 0.0.0-test.910 produced a real-model BH910-MODEL-POST-0640 report with an actual native server ID; its independent Human receipt check and native screenshot remain pending. The final UI candidate 0.0.0-test.910.1 preserved pairing, authorization, Outbox receipts and the FOLLOWUP Inbox across restart, with no automatic report mirror.

    Repository: 2,992 passed / 9 skipped in serial execution, focused final 18 passed, Provider 3,608 passed; lint, format, types, build, package qualification and 386-page docs build pass. Actual before/after light/dark screenshots, native GitHub video attachment, PR Lens diagrams, ADR-0138 and bilingual illustrated guides are in the PR. Verify CI and prerelease preparation were still running at handoff; inspect final results before any merge.

    Remaining Human QA: verify BH910-MODEL-POST-0640 in the original native WeChat DM, provide a screenshot containing only this test exchange for the PR, and inspect the final Profile posting/receipt/recovery views. Provider acceptance, a client ack and a returned native ID are never treated as recipient delivery/read proof. Upstream submission remains separate from the qualified fork and will be assessed after accepted Human QA.

    Native WeChat stays Human-operated. Credentials, private context, pairing and QA data remain machine-local. No #911/#912 work starts before this slice's Human QA. Merge and deployment each require separate Human authorization.

  7. 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
    in-progressHeld by an agent session; see Claim comment for who
    on Oct 6, 2026
  8. DoodleBears commented on Oct 7, 2026

    @DoodleBears
    ContributorAuthor

    Independent Human receipt confirmed

    The Human has now confirmed receiving BH910-MODEL-POST-0640 in the original personal WeChat DM. This completes the independent recipient check for the real-model report from installed product 0.0.0-test.910; Provider acceptance and recipient receipt remain separate evidence. The Profile report and canonical Inbox FOLLOWUP were independently confirmed earlier.

    Implementation commit 46dbb1afa9e5666623ccefeffc595dd8c1d191da completed verify CI and prerelease preparation successfully. A documentation-only follow-up updates the bilingual guide and PR evidence; no runtime behavior or Provider pin changes.

    PR #1081 remains draft pending native screenshot evidence and final Human QA. Receipt confirmation does not authorize merging, publishing or deploying. #911/#912 remain outside this handoff.

    Agent-Task: codex/local/01a112f7-9794-7692-9b17-b71aa980b313

  9. DoodleBears commented on Oct 7, 2026

    @DoodleBears
    ContributorAuthor

    Agent work outcome — completed

    • Task: codex/local/01a112f7-9794-7692-9b17-b71aa980b313 (not a DSH Session).
    • State: completed for WeChat tracer: authorized external-only proactive text delivery #910.
    • PR #1081 merged after independent Human QA and explicit conditional merge authorization, at 2026-10-07 05:13:50 UTC.
    • Merge: 4ae1335302cbe4612d109d7cc626a68784ff16a5. Issue and Agent-Task trailers preserved in the squash commit.
    • Exact reviewed head f2f95d620e165e3cb95b98c3ccf2c17f9fcb5cbb: verify and prerelease preparation both success. ADR-number collision with concurrent main documentation was resolved as ADR-0139 before these checks. Independent Standards and Spec reviews: 0 / 0 actionable findings. CodeRabbit exhausted its review quota and is not counted as a completed review.
    • Real E2E: Human confirmed Profile report BH910-PROACTIVE-OWNER-0632 and installed-model report BH910-MODEL-POST-0640 in native WeChat; 910 FOLLOWUP 蓝色灯塔63 was handled in the same canonical Bot Inbox. No fresh WeChat trigger for either proactive report; no automatic local DM report mirror. Provider acceptance remains distinct from delivery/read proof.
    • Original Human native screenshot, 20 actual browser screenshots in both themes, actual interaction video and PR Lens diagrams are in the PR. All 21 PR images and the video render in GitHub. Illustrated English/Chinese guides are maintained.
    • Provider pin: maintained fork DoodleBears/dsh-im commit 4f4f0a6282580bb59968eb90571778eb7e37ee73, 4.32.0-botharness.12; main-qualified Lark images and personal WeChat media retained. Only the explicitly authorized Provider branch was pushed; no pairing, credentials or private QA data uploaded.
    • Local results: 2,992 passed / 9 skipped, affected tests 18 passed, qualified Provider 3,608 passed. Final synchronized lint, formatting, types, ledgers, unique ADRs and 388-page docs build pass.
    • Merge-commit main verify finished success. Local main was fast-forwarded to the verified merge commit; pre-existing local edits remain preserved in their existing stash. Deployment/release has not been performed; it needs separate Human authorization. WeChat tracer: real typing indication with bounded lifecycle #911 and WeChat tracer: global behavior defaults and Profile inheritance #912 remain separate tickets.
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

    area:fullstackEnd-to-end Host and Client implementationfeature:messagingMessaging module and external providersready-for-humanRequires human implementationscope:tracerHuman-testable implementation slice

    Type

    No type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions