Repository navigation
Closed
Labels
area:fullstackEnd-to-end Host and Client implementationEnd-to-end Host and Client implementationfeature:messagingMessaging module and external providersMessaging module and external providersready-for-humanRequires human implementationRequires human implementationscope:tracerHuman-testable implementation sliceHuman-testable implementation slice
Milestone
Description
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.
Metadata
Metadata
Assignees
Labels
area:fullstackEnd-to-end Host and Client implementationEnd-to-end Host and Client implementationfeature:messagingMessaging module and external providersMessaging module and external providersready-for-humanRequires human implementationRequires human implementationscope:tracerHuman-testable implementation sliceHuman-testable implementation slice
Type
Projects
- StatusShow more project fieldsDone
Activity
DoodleBears commentedon Oct 6, 2026
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 .
DoodleBears commentedon Oct 6, 2026
Agent work claim
codex/local/01a112f7-9794-7692-9b17-b71aa980b313(not a DSH Session)codex/910-wechat-proactiveRefreshed #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.DoodleBears commentedon Oct 6, 2026
Agent work outcome — Human QA handoff
codex/local/01a112f7-9794-7692-9b17-b71aa980b313(not a DSH Session)46dbb1afa9e5666623ccefeffc595dd8c1d191da, based on latest main2383a6e74330073a309d34b3c5052c9b3fb26761codex/910-wechat-proactive, commit4f4f0a6282580bb59968eb90571778eb7e37ee73; fixed managed artifact4.32.0-botharness.12retains main-qualified Lark imagesFresh-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-0632and replied910 FOLLOWUP 蓝色灯塔63; that reply entered the original Bot's canonical Inbox and was handled. Profile posting left local DM history unchanged. The preceding packed build0.0.0-test.910produced a real-modelBH910-MODEL-POST-0640report with an actual native server ID; its independent Human receipt check and native screenshot remain pending. The final UI candidate0.0.0-test.910.1preserved 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-0640in 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.
docs(wechat): record Human-confirmed installed-model report receipt
DoodleBears commentedon Oct 7, 2026
Independent Human receipt confirmed
The Human has now confirmed receiving
BH910-MODEL-POST-0640in the original personal WeChat DM. This completes the independent recipient check for the real-model report from installed product0.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
46dbb1afa9e5666623ccefeffc595dd8c1d191dacompleted 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-b71aa980b313docs(wechat): attach native receipt and real Inbox E2E evidence
docs(wechat): assign ADR-0139 after syncing main
DoodleBears commentedon Oct 7, 2026
Agent work outcome — completed
codex/local/01a112f7-9794-7692-9b17-b71aa980b313(not a DSH Session).4ae1335302cbe4612d109d7cc626a68784ff16a5. Issue and Agent-Task trailers preserved in the squash commit.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.BH910-PROACTIVE-OWNER-0632and installed-model reportBH910-MODEL-POST-0640in native WeChat;910 FOLLOWUP 蓝色灯塔63was 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.DoodleBears/dsh-imcommit4f4f0a6282580bb59968eb90571778eb7e37ee73,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.