mirror of
https://github.com/openclaw/openclaw.git
synced 2026-10-03 17:53:39 +00:00
Most changed lines move recovery helpers and tests out of oversized files; answer boundaries still have one owner. ## What Problem This Solves With default `steer` queueing, channels received only the last answer when more messages arrived during a run. Earlier answers remained in the transcript. ## Why This Change Was Made This state has one writer: the subscriber seals an answer segment at the next user message. Final selection and deferred delivery use those boundaries, replacing the tool-result proxy. Telegram and Discord recovery keep earlier answers intact. Growth accepted under the owner's standing acceptance (2026-09-15): 49 net production lines record boundaries and carry answer identity. ## User Impact Completed answers arrive in order. Final answers still replace progress within one input; silent answers do not leak progress. ## Evidence - Gateway `chat.send` plus a queued steer delivered only the second answer on baseline; the same dispatcher probe delivered both on candidate. Steering tests passed 8/8. - Two live Telegram Test Server runs used controlled model responses and real transport. Both answers arrived separately, including an ellipsis excerpt followed by its expansion. - The split passed 318 affected tests and exact-once test selection. A fresh merge passed 212 focused tests, build, package creation, and file limits. - Strict external compilation passed against published 2026.9.4 and candidate packages, including legacy calls and optional payload. Type-aware lint and production/test types passed. ## Compatibility No config, schema, or protocol changes. The public helper keeps its call shape; `payload` is optional. App-server steering is unchanged. ## Consumers Final selection, deferred replies, normalization, and Telegram/Discord recovery consume the same answer identity. ## Invalidation Segments clear with assistant text on compaction retry. ## Tests Covers skipped tools, direct/deferred delivery, silent middle answers, empty boundaries, legacy SDK calls, and media-preview metadata. Moved tests retain all assertions. Co-authored-by: Ayaan Zaidi <hi@obviy.us> |
||
|---|---|---|
| .. | ||
| oxlint | ||
| tsconfig | ||
| assertion-safety-baseline.txt | ||
| ci-test-timings.json | ||
| control-ui-startup-budget-baseline.json | ||
| env-var-count-budget.txt | ||
| knip.all-exports.config.ts | ||
| knip.config.ts | ||
| knip.scripts-exports.config.ts | ||
| markdownlint-cli2.jsonc | ||
| markdownlint-templates.jsonc | ||
| max-lines-baseline.txt | ||
| shellcheckrc | ||
| stylelint.config.mjs | ||
| swiftformat | ||
| swiftlint.yml | ||