fix(mattermost): preserve text-block boundaries in draft preview (#87322)#87449
Conversation
|
Codex review: stale review; fresh review needed. Summary Next step Review history (4 earlier review cycles)
|
|
ClawSweeper PR egg ✨ Hatched: 🥚 common Velvet Merge Sprite Hatch commandComment Hatchability rules:
Rarity: 🥚 common. What is this egg doing here?
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
d969eef to
353f83b
Compare
|
@clawsweeper re-review Address P1 finding ( |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper re-review Addressed the boundary gate race P1 ( Root cause: Fix: Proof refreshed on current head, exercising the fire-and-forget path over live loopback HTTP (production stream + controller, real
New regression |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
🦞👀 Command router queued. I will update this comment with the next step. |
|
@clawsweeper re-review Addressed the callback-ordering P1 at The monitor's Fix: both callbacks now start the split, reset local state synchronously, then await ( Proof refreshed on the current head through the real Local: draft-stream 20/20, monitor.inbound-system-event 10/10, full Remaining items I believe are maintainer decisions rather than code defects, and I have flagged them in the PR body for sign-off: (1) the intentional visible delivery-shape change (one edited post to multiple posts for block-mode and preview-off blockStreaming); (2) the additive exported |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper re-review Re-requesting a clean review of the current head All three fire-and-forget races the prior verdicts flagged are fixed on
Proof on the current head goes through the real The remaining items I believe are maintainer decisions rather than code defects (flagged in the PR body for sign-off): the intentional visible delivery-shape change, the additive exported |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper re-run |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper re-run |
|
Clownfish 🐠 reef update Thanks for the contribution here. Clownfish gave this branch a little current boost so the original PR can stay the canonical swim lane instead of opening a replacement. Source PR: #87449 fish notes: model gpt-5.5, reasoning medium; reviewed against 55dcfbf. |
|
@clawsweeper re-run |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper re-run |
Co-authored-by: Yuval Dinodia <[email protected]>
|
Land-ready at exact head
Known gap: no approved authenticated Mattermost deployment was available for exact-head channel/UI validation. Source-blind behavior validation is blocked on the missing Mattermost URL/token and deployed runtime; server-side rendering, notifications, and mobile push were not observed. Thanks @yetval for the original report-driven fix and persistence through review. |
|
Merged via squash.
|
What Problem This Solves
Fixes #87322. Mattermost block previews could overwrite earlier assistant/tool blocks during one streamed turn, and
streaming.mode: "off"withblockStreaming: trueincorrectly suppressed normal block delivery.Why This Change Was Made
User Impact
With Mattermost block streaming, earlier text and tool-progress blocks remain visible in source order instead of being overwritten. Reasoning placeholders remain transient, response prefixes appear once, long blocks retain configured chunking, and completed turns do not repeat preview text. Preview-off
blockStreaming: trueagain produces ordinary separate block replies.Evidence
e40a51294973a0123d7c68dd341a5d34db5957cfoxfmt,oxlint,git diff --check, and plugin-SDK API baseline verification passed.Known proof gap: no approved authenticated Mattermost deployment was available for exact-head channel/UI validation. The focused runtime/HTTP and regression coverage exercises the delivery contract, but server-side rendering, notifications, and mobile push were not observed.
Fixes #87322