docs(msteams): document replyStyle resolution precedence and thread context preservation#78835
Conversation
…ontext preservation The existing replyStyle section explains the Posts-vs-Threads tradeoff but doesn't document how the value is actually resolved at send-time, nor what happens to thread-root context across configurations. Operators who hit unexpected top-level posts (e.g., requireMention=false setups, long-running agents whose proactive sends fall outside the live Bot Framework turn) have no docs-side anchor for understanding which knob to flip. Add two subsections under Reply Style: 1. Resolution precedence — channel > team > global > implicit default, plus the requireMention-derived implicit default. 2. Thread context preservation — describes that replyStyle=thread re-attaches the original thread root on outbound (live and proactive paths after openclaw#78387), with the threadId/activityId fallback for legacy stored refs. Calls out the deliberate "no thread suffix" behavior for replyStyle=top-level. Pure documentation change, no behavior or surface impact.
|
Codex review: needs maintainer review before merge. Summary Reproducibility: not applicable. this is a docs-only PR. The behavior being documented is source-verifiable in the Microsoft Teams policy, send-context, messenger, and focused tests. Real behavior proof Next step before merge Security Review detailsBest possible solution: Land the scoped docs update after normal maintainer review so operator-facing Microsoft Teams guidance matches existing reply policy and threading behavior. Do we have a high-confidence way to reproduce the issue? Not applicable: this is a docs-only PR. The behavior being documented is source-verifiable in the Microsoft Teams policy, send-context, messenger, and focused tests. Is this the best way to solve the issue? Yes: updating What I checked:
Likely related people:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 1ef85c7d4c30. Re-review progress:
|
|
LGTM |
…ontext preservation (openclaw#78835) The existing replyStyle section explains the Posts-vs-Threads tradeoff but doesn't document how the value is actually resolved at send-time, nor what happens to thread-root context across configurations. Operators who hit unexpected top-level posts (e.g., requireMention=false setups, long-running agents whose proactive sends fall outside the live Bot Framework turn) have no docs-side anchor for understanding which knob to flip. Add two subsections under Reply Style: 1. Resolution precedence — channel > team > global > implicit default, plus the requireMention-derived implicit default. 2. Thread context preservation — describes that replyStyle=thread re-attaches the original thread root on outbound (live and proactive paths after openclaw#78387), with the threadId/activityId fallback for legacy stored refs. Calls out the deliberate "no thread suffix" behavior for replyStyle=top-level. Pure documentation change, no behavior or surface impact.
…ontext preservation (openclaw#78835) The existing replyStyle section explains the Posts-vs-Threads tradeoff but doesn't document how the value is actually resolved at send-time, nor what happens to thread-root context across configurations. Operators who hit unexpected top-level posts (e.g., requireMention=false setups, long-running agents whose proactive sends fall outside the live Bot Framework turn) have no docs-side anchor for understanding which knob to flip. Add two subsections under Reply Style: 1. Resolution precedence — channel > team > global > implicit default, plus the requireMention-derived implicit default. 2. Thread context preservation — describes that replyStyle=thread re-attaches the original thread root on outbound (live and proactive paths after openclaw#78387), with the threadId/activityId fallback for legacy stored refs. Calls out the deliberate "no thread suffix" behavior for replyStyle=top-level. Pure documentation change, no behavior or surface impact.
Summary
Adds two subsections under the existing Reply style: threads vs posts section in
docs/channels/msteams.md:requireMention-derived implicit default that's currently undocumented (requireMention: true→thread,false→top-level).replyStyle: threadis in effect, the original thread root (;messageid=<root>) is re-attached to outbound conversation references on both live and proactive sends. Notes thethreadId ?? activityIdfallback for legacy stored refs, and the deliberate "no thread suffix" behavior forreplyStyle: top-level.Why
We hit production confusion on a
requireMention: falseTeams channel where bot replies kept landing at the channel root instead of in the thread. The existing docs explain the Posts-vs-Threads UI tradeoff but don't surface thatreplyStyledefaults are conditional onrequireMention, nor that thread-root context preservation depends on whether thereplyStyle: threadbranch is taken at send-time. Operators with no source-level visibility have nowhere to anchor their debugging.After applying patch-package against 5.5 (until #78387 ships) and pinning
replyStyle: "thread"explicitly per the precedence rules, every reply lands in the right place. Wanted that knowledge written down so the next operator doesn't re-discover it.Real behavior proof
Pure documentation change — no source / runtime / config / surface impact. No tests, lint, or build steps to validate beyond the markdown render. Diff is +21/-0 in a single file.
Rendered preview (the two new subsections live under Reply style: threads vs posts → after the per-channel config example):
References:
extensions/msteams/src/policy.ts:243-244(implicit default) andextensions/msteams/src/messenger.ts:570-604(thread-root preservation, after fix(msteams): preserve proactive thread replies #78387).extensions/msteams/src/policy.ts:239-241.Checklist
CODEOWNERS-restricted files touched