openclaw/docs/reference
Peter Steinberger 84c6eb8fc5
improve: sessions_send delivers a peer's reply once instead of running automatic agent ping-pong (#162227)
* refactor(agents): replace peer announcement loops with one reply delivery

Deliver delayed peer results once to the requester and return waited replies inline without a continuation. Preserve child completion custody and same-session generation-bound channel delivery. Use exact-key saved-route lookup, retire legacy peer control tokens from runtime decisions, and retain historical display suppression.

Simplify the announce owner, preserve required missing child output, and keep wake retries within the remaining operation budget. Update session guidance and the opt-in live peer scenario.

Candidate regression scenarios pass. Broad focused tests and changed-lane validation remain incomplete under host load; original-code regression proof is still pending. No live provider test was run.

* refactor(subagents): consolidate completion custody and lifecycle owners

Share terminal-effect persistence and requester-wake settlement adapters while preserving their distinct authority, frozen-wave, and publication guards. Remove unused preparation and accessor paths and reuse existing parameter contracts.

Propagate unknown SQLite write outcomes before scheduling interrupted completion recovery during restart drain. The focused candidate regression passes; original-code failure proof and the broader validation matrix remain pending.

* test(agents): align completion assertions with reply ownership

Assert that an ACP target already owned by its requester keeps task completion and starts no detached reply. Keep isolated cron fallback routing and participant-store checks while asserting no detached wait.

Remove assertions on the retired duplicate steerMessage field; retain complete source-reply content, ordering, exclusions, visibility and batch settlement checks. Remove the redundant inner same-session return while retaining the enclosing branch exit.

Validation: scoped Codex review at P2, formatting and diff checks passed. Two attempts on the coordinator Testbox lease failed during file sync before installation or tests. Baseline regression proof, the full matrix and the changed-lane gate remain pending.

* test(agents): inject the gateway caller into same-session delivery routing tests

* test(subagents): route direct requester-yield callers through prepared cron authority

* refactor(subagents): keep the requester wake currency assertion module-private

* fix(agents): fence failed and delayed subagent cleanup

Restore the previous resident row when same-ID registration persistence fails.
Carry collector cleanup authority into attachment removal, and bind lifecycle
grace timers to their captured registration and generation.

Regression coverage exercises failed writes, retirement during cleanup, and
same-ID successors without changing storage or timer durations.

* fix(agents): retain paused state in compact registry reads

Read pauseReason from existing stored JSON for ordinary and private-parent
records so cold projections preserve the resident paused status. Derive compact
SQL row types from the query and shrink the removed-assertion allowance.

No schema, serialized representation, or migration changes are required.

* fix(agents): preserve spawn cleanup and request scope

Route fork lookup failures through provisional-child cleanup. Reuse the spawn
admission owner for visible work with the resolved requester agent identity.
Pass trusted-creation transport timeouts through the argument the transport reads.

Consolidate in-process dispatch while preserving creation custody, source
fencing, per-interface deadlines, and signed fallback behavior.

* refactor(agents): simplify subagent registry and spawn owners

Remove unused registry APIs, callback declarations, presentation adapters,
registration inputs, and bootstrap scaffolding. Share registration ACK control
flow while retaining both durable writes and the original settlement error owner.

Complete keyed capability lookups, reuse heartbeat and timeout owners, carry
resolved model references, and remove obsolete ACP transcript work and relay
options. Preserve legacy stored attachment safety and protocol-v4 fallbacks.

* refactor(agents): simplify completion consumers and registry publication

Move full-registry fixture writes into test support and require named production mutations. Consolidate publication subscriptions while preserving projection ordering and persistence observer exception isolation. Remove duplicate completion retry scaffolding, runtime barrels, test-only exports, duplicate types, and single-caller adapters.

* chore(agents): shrink retired test API assertion allowance

* test(gateway): preserve real registry operations in agent fixtures

* test(subagents): preserve named publication fixture preconditions

Name all retired fixture rows when replacing describe/list facts. Warm the compact cache before its initial publication so the existing ordering assertion still detects an unintended SQL reload.

* fix(plugin-sdk): preserve capability store compatibility

Retain the public record-or-lookup store contract, including normalized first-match identity lookup and canonical depth fallback for partial records. Keep migrated internal callers on keyed lookups. Restore the base handoff declarations and requester query/caller linkage so the existing SDK declaration gate stays unchanged.

* test(gateway): publish fixture memory ownership

Publish the staged in-memory owner through commitOwnership before asserting describe and list projections. Named durable writes no longer trigger the whole-index rebuild that accidentally discovered the fixture row. Preserve the existing assertions.

* refactor(agents): tighten completion projections and ownership facts

Project only formatter-consumed child fields without mutating authoritative rows, and carry the session resolver's required requesterOwned boolean directly. Preserve formatting, nested identity references, authority checks, and public signatures while resolving the full core lint findings.

* test(agents): retire obsolete benchmark registry mock

Remove the full-registry writer no-op from the memory benchmark's typed module mock after the production writer cutover. Preserve the named-write mock and benchmark behavior.

* test(agents): await requester settlement in live fixtures

Child cleanup can publish before the requester delivery acknowledgement. Join persistence publications until the requester wake settles, preserving the existing delivery assertions and deadlines.

* refactor(agents): retire hidden sessions_send message aliases

Require the canonical message argument already declared by the public tool schema. Remove alias-only reasoning stripping and keep canonical message indentation unchanged.

* fix(agents): decode compact subagent metadata canonically

Replace the separate compact decoder with the canonical codec and session-list projector. Keep bounded SQL metadata projection, private envelopes, and duplicate-key last-value semantics without transferring retained results. Add real-reader duplicate-key and retained-content regression coverage. Schema, persisted bytes, and update behavior are unchanged.

* refactor(agents): remove redundant delivery comments

* perf(agents): restore compact reader after benchmark regression

Revert 2c0fd630c7 as required by the performance gate. Across five scoped 2000-row reads per revision, the base median was 227.31 ms and the candidate median was 429.25 ms (88.84% slower). Retain the sessions_send alias retirement and comment cleanup; leave the duplicate-key reader fix for separately approved work.

* test(agents): relocate sessions_send alias regression coverage

Keep all four rejection cases in the assembled-tool suite where retired preparation coverage freed space. The oversized sessions test file shrinks again; no assertions, mocks, timeouts, skips, or line-cap baselines change.

* fix(agents): retain sessions_send record input validation

Use the shared isRecord guard from the retired alias normalizer instead of a new type assertion. Preserve canonical missing-message errors for non-record input and satisfy the assertion safety gate without a suppression.

* refactor(agents): keep sessions_send replies on the requester key

Remove the legacy key-only DM-to-main reply remap and its routing exceptions. Use the resolved caller key for reply context, provenance, watches and followup preparation. Preserve exact-incarnation and authorization checks.

* test(agents): bind native followup custody in admission fixture

Keep the key-only DM requester authority test on the native child completion path. Settle the existing completion owner before mock acceptance and reset queued mock implementations between cases.

* fix(agents): reconcile subagent callers after main merge

Use the phase-aware publication API in newer main callers and explicit changed IDs in the prepared-read fixture. Keep retained regressions in their current sibling owners and place requester adoption in the lifecycle controller without weakening guards. Preserve heartbeat narrowing after shared-owner integration.

* test(agents): clean up merged fixture imports and names

* test(agents): refresh single-reply prompt snapshots

Regenerate prompt fixtures for the intentional sessions_send description change. The four-file delta contains only the description and derived sizes and hashes. Reproduced the hosted drift on Testbox, then passed prompt:snapshots:check and the snapshot-only changed checks.

* test(agents): await owned descendant settlement

* fix(agents): retain the leaf followup owner contract

Restore the standalone completion-owner interface and implements check from main. Deriving that contract from the implementation class creates a type-only cycle through the cohort projection. Runtime behavior and the exposed owner methods remain unchanged.

* fix(agents): disambiguate the sessions reply target resolver

Give the async sessions_send reply lookup a distinct exported name from the general synchronous outbound session resolver. Update its sole production caller and direct tests without an alias or behavior change.

* test(agents): remove the retired steer fixture argument

* test(agents): drop the retired sessions_send delivery mode from the follow-up yield live test
2026-10-01 17:28:00 +00:00
..
database-schemas chore(storage): correct worker-only SQLite inventory classifications (#162826) 2026-10-01 09:41:47 -07:00
full-release-validation feat(release): let a release lead record an exact-job flake instead of blocking publication (#161515) 2026-09-30 04:31:07 +00:00
session-management-compaction feat(sessions): snooze sessions from the sidebar menu (#161960) 2026-09-30 14:32:33 -07:00
templates improve(agents): stop agents refusing or arguing over requested work (#157447) 2026-09-24 16:16:21 -05:00
test test(ui): record renderer stall evidence when Control UI e2e waits fail (#162767) 2026-10-01 17:17:23 +00:00
AGENTS.default.md improve(agents): stop agents refusing or arguing over requested work (#157447) 2026-09-24 16:16:21 -05:00
api-usage-costs.md docs: fix verified accuracy findings in channels, cli, nodes, and reference (#143950) 2026-09-10 18:58:15 +08:00
credits.md docs: fix and reciprocate cross-page links across install, help, reference, start, and web (#143773) 2026-09-10 15:35:25 +09:00
database-schemas.md perf(state): retire periodic runtime integrity scans (#162015) 2026-09-30 19:44:01 +00:00
device-models.md
full-release-validation.md fix(ci): preserve first failures through release validation 2026-09-23 18:27:19 -07:00
memory-config.md fix(bedrock): memory indexing fails under instance metadata throttling (#161164) 2026-09-29 20:39:49 +08:00
openclaw-ai.md docs: fix 12 concrete defects from the ux audit remainder (#144128) 2026-09-25 17:28:14 +08:00
prompt-caching.md fix(active-memory): recalls on claude-cli never reuse the prompt cache (#160768) 2026-09-29 04:52:53 +05:30
pull-request-review-flow.md fix(scripts): prevent host tooling drift from blocking PR workflows (#152078) 2026-09-18 14:34:18 -07:00
release-performance-sweep.md
RELEASING.md fix(release): require signed publication tags (#162323) 2026-09-30 21:27:24 -07:00
rich-output-protocol.md fix: resend inbound attachments referenced from chat history (#158720) 2026-09-26 21:02:02 +05:30
rpc.md
secret-placeholder-conventions.md docs: fix 12 concrete defects from the ux audit remainder (#144128) 2026-09-25 17:28:14 +08:00
secretref-credential-surface.md refactor: retire the TaskFlow Webhooks plugin (#158225) 2026-09-25 20:29:15 -07:00
secretref-user-supplied-credentials-matrix.json refactor: retire the TaskFlow Webhooks plugin (#158225) 2026-09-25 20:29:15 -07:00
session-management-compaction.md docs(reference): split the session management deep dive by reader job (#143082) 2026-09-09 21:03:41 +09:00
test.md
token-use.md fix(models): apply downloaded catalogs without a Gateway restart (#158000) 2026-10-01 13:27:55 +08:00
transcript-hygiene.md improve: sessions_send delivers a peer's reply once instead of running automatic agent ping-pong (#162227) 2026-10-01 17:28:00 +00:00