$ the-wire · showcase
Ambient transcript watermark now scoped per session, DeepSeek V4 reasoning fixed on OpenRouter
By RepoJournal · Filed · About OpenClaw
Two production fixes ship: Telegram group transcripts survive session resets without losing older messages, and OpenRouter-routed DeepSeek V4 requests stop sending conflicting reasoning controls.
The ambient transcript watermark introduced in #99306 was surviving session resets while the transcript rows it vouched for did not, leaving group messages permanently invisible in prompt windows after a manual, daily, or delete reset. Ambient transcript watermarks now carry the transcript session id, resolve only for the current session entry, and skip stale room-event hooks that no longer match the prepared transcript session, which backfills rows missing from the new session transcript while preserving steady-state filtering [1][2].
DeepSeek V4 models routed through OpenRouter could hit a 400 error because OpenClaw sent both OpenRouter reasoning controls and DeepSeek-native thinking controls in the same request. OpenRouter DeepSeek V4 requests now stay on the OpenRouter reasoning payload shape (`reasoning.effort`) and no longer add DeepSeek-native `thinking` / `reasoning_effort` fields after the provider wrapper runs [3][4].
On macOS 26.4, casting a vote in a native Messages poll produced a vote with no balloon payload, so the associated `4000` message shipped (`is_sent=1`) but never delivered (`is_delivered=0`) and never registered on the recipient's poll. The fix applies the Polls balloon and payload across the associated message and backing item, with focused regression coverage [5][6].
A refactor consolidates 17 duplicate non-array object type guards under `src/` to the canonical `isRecord` export from `@openclaw/normalization-core/record-coerce`, removing maintenance surface without adding new workspace dependency edges [7]. The docs desk saw routine syncs and translation refreshes [8][9][10][11].
Action items
- → Upgrade openclaw to include the session-scoped watermark fix before relying on Telegram group transcripts after session resets openclaw/openclaw [immediate]
- → If you route DeepSeek V4 through OpenRouter, pull the fix to avoid 400 responses openclaw/openclaw [immediate]
- → Verify native poll voting on macOS 26.4 after updating imsg openclaw/imsg [plan]
References
- [1] fix(sessions): scope ambient transcript watermark to session id ↗ openclaw/openclaw
- [2] fix(sessions): scope ambient transcript watermark to session id ↗ openclaw/openclaw
- [3] fix: avoid DeepSeek-native thinking on OpenRouter V4 ↗ openclaw/openclaw
- [4] fix: avoid DeepSeek-native thinking on OpenRouter V4 ↗ openclaw/openclaw
- [5] fix(poll): stamp vote balloon/payload on each responding target (macOS 26.4 regression) ↗ openclaw/imsg
- [6] fix(poll): restore vote payload delivery (#150) ↗ openclaw/imsg
- [7] refactor(shared): consolidate core record guards ↗ openclaw/openclaw
- [8] chore(sync): mirror docs from openclaw/openclaw@08079ecb44dfb7b20121c9cc8be521a27ba06c14 ↗ openclaw/docs
- [9] chore(i18n): refresh translations ↗ openclaw/docs
- [10] chore(sync): mirror docs from openclaw/openclaw@4440226d52c2c94f6fa14c6e8052eaf077c48ab6 ↗ openclaw/docs
- [11] chore(sync): mirror docs from openclaw/openclaw@af9ab9f193b682c289ad344529d9b5f2c88ada59 ↗ openclaw/docs