Commit Graph

381 Commits

Author SHA1 Message Date
Vincent Koc
263741b1f0 fix(ci): align release validation fixtures (#117494)
* fix(release): align beta 6 e2e fixtures

* fix(doctor): preserve missing state startup signal

* test(release): align beta e2e contracts

* test(agents): use canonical empty auth store

* test(agents): isolate prompt cooldown scheduling

* test(release): align main validation fixtures

* test(release): accept Code Mode plugin tool evidence

* fix(test): repair release validation checks

* test(cron): assert structured session targets
2026-08-02 00:39:36 +08:00
Peter Steinberger
e9e4023e59 fix(cron): deliver spawned child results when scheduled agents emit no text (#117308)
* fix(cron): deliver spawned child results when parents emit no text

* test(cron): cover spawn-only scheduled child delivery end to end
2026-08-01 04:16:10 -07:00
Peter Steinberger
aa2a5c96f6 feat(channels): record account lifecycle facts and retire inferred health vocabularies (#117300)
* fix(channels): record account lifecycle facts

* fix(channels): bound recorded lifecycle grace

* fix(channels): preserve authored health state

* test: dedupe health snapshot type literal and fix spread order
2026-08-01 02:51:47 -07:00
Peter Steinberger
b721cffa44 fix(inference): simplify lifecycle and preserve Codex tool identity (#117298) 2026-08-01 02:05:45 -07:00
Ahmed Tarek
730cf56915 fix(msteams): prevent duplicate final replies (#116398)
* fix(msteams): preserve message-tool thread routing

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>

* test(msteams): prove thread-aware final dedupe

* fix(agents): suppress duplicate source previews

* fix(agents): dedupe current-source reply previews

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-01 15:32:56 +08:00
Dallin Romney
947886e764 fix(qa): align release harness contracts (#116812) 2026-08-01 13:24:10 +08:00
Dallin Romney
f58570cb8c fix(qa): stabilize Slack progress and table proofs (#116847)
* fix(qa): stabilize Slack progress and table proofs

* fix(qa): type Slack invalid-blocks instrumentation
2026-08-01 12:55:39 +08:00
Dallin Romney
bf32414a4a fix(qa): keep memory context proof on the QA channel (#116849)
* fix(qa): correct memory and Codex watchdog contracts

* test(qa): keep channel assertion in channel catalog
2026-08-01 12:53:00 +08:00
Peter Steinberger
cb16d739cf fix(inference): harden Codex streaming, cancellation, and live QA (#116012)
* fix(inference): harden Codex turns, streams, and live QA

* fix(inference): dispatch open CR-delimited response frames

* fix(inference): finish live goal and split streaming regressions

* fix(codex): wait for interrupted turn completion

* fix(codex): narrow terminal collector notification ownership

* fix(inference): harden completion authority and lifecycle

* fix(inference): use canonical source delivery contract

* test(inference): align lifecycle probes with current main

* style(inference): format source delivery verification

* fix(goals): prevent premature completion across staged work

* fix(qa): settle streamed goal turns before continuation

* fix(goals): require visible replies after goal completion

* test(qa): keep goal flow regressions within lint limits
2026-07-31 21:29:33 -07:00
Dallin Romney
f9d2f0dc86 fix(qa): restore WebChat auto-TTS proof (#116810) 2026-08-01 12:28:43 +08:00
Dallin Romney
e3b069270c fix(qa): use public subagent fanout evidence (#116832) 2026-08-01 11:56:28 +08:00
Harjoth Khara
102c2e1a64 fix(slack): recover MPIM thread context from outbound replies (#116660)
Co-authored-by: scoootscooob <167050519+scoootscooob@users.noreply.github.com>
2026-07-31 23:12:56 +08:00
Peter Steinberger
1a0fde18d6 fix(commands): validate native settings and preserve Telegram ingress outcomes (#116773)
* fix(commands): validate native directives and preserve Telegram outcomes

* test(commands): isolate native directive fast runtime

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:36:54 -07:00
Peter Steinberger
1f578f0e65 fix(telegram): validate native queue arguments before fallback (#116726)
Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 02:45:15 -07:00
Vincent Koc
37b1a71654 fix(release): unblock beta validation workflows (#116708)
* fix(release): repair beta validation workflow state

* fix(qa): dispatch yielded fanout runs without task tracking

* fix(test): honor GPT-Live shard opt-in
2026-07-31 15:47:11 +08:00
Yuval Dinodia
589a914328 fix(session): preserve reset message payloads (#116195)
* fix(session): preserve reset message payloads

Use the raw command body when it directly matches a reset trigger so code, logs, bracketed text, and line breaks reach the new session intact. Keep structural normalization only for prefixed messages that require it to match.

* fix(session): anchor reset payloads to original input

* fix(session): anchor reset parsing to inbound projections

* fix(session): keep reset result type internal

* test(qa): prove reset payload preservation

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-31 15:34:23 +08:00
Dallin Romney
397fe272a0 fix(qa): stop waiting on yielded fanout runs (#116440)
* fix(qa): observe resumed fanout completions

* test(qa): keep runtime watchdog assertions in runtime suite
2026-07-31 14:36:59 +08:00
Dallin Romney
5c061507d3 fix(qa): align Slack progress scenarios with fresh finals (#116445)
* fix(qa): verify Slack progress drafts against fresh finals

* fix(qa): narrow Slack progress message identity
2026-07-31 14:22:24 +08:00
Patrick Erichsen
61cf4b9246 test(buzz): add live QA Lab channel lane (#116298)
* feat(buzz): add live QA runner

* ci(qa): add gated Buzz live lane

* docs(qa): document Buzz live testing

* fix(buzz): keep QA relay type private

* test(buzz): type QA suite mock

* fix(buzz): preserve racing QA reply relations

* fix(qa): harden Buzz credential redaction

* fix(buzz): ignore retained QA relay events

* fix(buzz): clean up observer setup failures

* test(buzz): return complete racing messages

* fix(buzz): default QA credentials to file

* fix(qa): validate pooled Buzz secrets

* fix(qa): redact structured Buzz auth tags

* fix(buzz): preserve QA credential env override

* fix(qa): redact inspected Buzz auth tags

* test(buzz): limit live QA to supported scenarios

* ci(qa): run Buzz lane in release checks

* fix(qa): require secure remote Buzz relays

* fix(qa): satisfy Buzz QA validation gates

* fix(qa): inject credential leasing into transport adapters
2026-07-30 17:44:27 -07:00
keshavbotagent
4dc90937a0 fix(session): isolate memory flush lifecycle from parent recovery (#116198)
* fix(session): isolate memory flush lifecycle

* fix(session): fence newly introduced recovery cycles

* test(qa): prove memory flush preserves parent lifecycle

* test(session): align recovery fixtures with internal state
2026-07-30 11:31:23 -07:00
Dallin Romney
7df05d5fc0 refactor(qa): remove live-channel scenario registries and wrappers (#115752)
* refactor(qa): remove duplicate channel scenario registries

* refactor(qa): route live scenarios through shared runners

* fix(qa): isolate WhatsApp driver retries

* refactor(qa): add module export flow arguments

* test(qa): include scenario metadata in matrix fixture
2026-07-30 13:56:34 +08:00
Peter Steinberger
d98e984ec2 fix(qa): isolate Matrix live validation state (#116071)
* fix(qa): isolate Matrix live scenario routing

* fix(qa): preserve Matrix mention filenames

* fix(qa): reset Matrix transport scenario state

* test(qa): isolate stateful Matrix scenario partitions

* test(qa): match numbered Matrix isolation

* test(qa): reject stale Matrix progress results

* fix(qa): bound Matrix scenario prompt ownership

* fix(qa): bound mock scenario ownership

* test(qa): satisfy Matrix validation gates

* refactor(qa): remove stale prompt helper

* fix(qa): preserve tool-result ownership after rebase
2026-07-29 17:23:03 -04:00
Peter Steinberger
d16e33e08e fix: restore trustworthy end-to-end QA and cross-channel delivery (#115404)
* fix(qa): repair verified end-to-end and channel regressions

* fix(gateway): make interrupted restart recovery lifecycle-safe

* test(heartbeat): target the canonical recovery session store

* fix(gateway): prioritize durable restart recovery before heartbeat

* fix(qa): preserve safe restart recovery and channel expiry

* fix(qa): fail closed and fence restart recovery

* test(agents): isolate restart recovery timing

* test(agents): prove actual restart retry timing

* fix(qa): report incompatible profile scenarios

* fix(scripts): resolve symlinked docker scheduler entrypoints

* fix(qa): require fresh native test evidence

* fix(heartbeat): fence active restart recovery delivery

* fix(gateway): consume untargeted restart acknowledgements

* fix(qa): satisfy exhaustive hosted validation gates

* fix(agents): fence stopped restart recovery dispatch

* style(agents): format restart recovery lifecycle regression

* test(gateway): isolate context prewarm sidecar lifecycle

* test(qa): make scenario process timeout cleanup deterministic

* fix(qa): stamp synthetic gateway configs with current version

* fix(openai): preserve vision capabilities in stale model catalogs

* test(qa): align profile channel rejection with current main

* fix(openai): forward supported moderation for image edits

* fix: restore latest-main CI and image edit documentation

* fix(qa): retain relocated code-mode evidence validation

* fix(openai): expose GPT-5.4 vision in static catalog

* fix(pricing): honor explicit model cost overrides

* test(pricing): keep isolated provider regressions deterministic

* fix(openai): inherit transport for discovered static models

* fix(gateway): honor agent-owned static image capabilities

* test(gateway): preserve prepared-snapshot attachment races

* test(gateway): isolate subagent persistence failure injection

* test(gateway): exercise concurrent voice replay admission

* fix(gateway): restore stale model image capabilities

* fix(agents): publish configured model vision capabilities

* fix(agents): isolate detached media transcript ownership

* test(agents): preserve generic transcript lock regression

* fix(gateway): require proven static model route identity

* fix(qa): accept bounded full-size generated image attachments

* fix(qa): require fresh script producer evidence

* test(qa): prove native E2E scenario execution
2026-07-29 12:45:27 -04:00
Peter Steinberger
17a8961a6a fix(active-memory): inject cold first-turn memory in QA-channel DMs (#115936)
* fix(active-memory): prewarm trigger recall for channel turns

* test(active-memory): satisfy timing test lint

* test(plugins): declare active-memory prewarm hook
2026-07-29 10:38:42 -04:00
ACD_RD4駱俊馳
e7f0fdfd9b fix: CJK replies are silently dropped instead of recovered when the model skips message(action=send) (#115556)
* fix(auto-reply): count CJK sentence terminators in stranded private-final detection

* fix(auto-reply): compare private-final substance thresholds with the CJK-aware estimator

* fix(auto-reply): detect CJK sentence boundaries

---------

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-29 07:23:33 -04:00
Peter Steinberger
d37fd8f2d4 fix(matrix): accept documented automatic approval mode (#115676)
Restore the explicitly shipped Matrix approval mode without changing omitted, boolean, invalid, or non-strict configuration behavior. Regenerate the canonical channel metadata and prove native Matrix approvals against a real homeserver.

Co-authored-by: mingdideng <deng.mingdi@xydigit.com>
2026-07-29 03:37:19 -04:00
Peter Steinberger
5da5551a5c fix(qa): verify paired Ollama nodes over the gateway (#115644) 2026-07-29 02:18:16 -04:00
Dallin Romney
96ea0fbf56 improve(qa): align Telegram coverage with startup behavior (#113527)
* test(telegram): align coverage with startup behavior

* fix(qa): register Slack MPIM coverage
2026-07-29 12:59:42 +08:00
Peter Steinberger
dd5b9c8c04 fix(slack): prevent duplicate MPIM mention replies (#115528)
* fix(slack): make MPIM app mentions type-safe

Resolve typeless app mentions through explicit metadata, the scoped event cache, then conversations.info so modern C-prefixed MPIMs cannot be misclassified by event ordering. Add a real Slack QA scenario that requires one reply and cleans up its temporary MPIM.

Co-authored-by: moeealii <75953662+moeealii@users.noreply.github.com>

* fix(slack): type unresolved mention metadata

* fix(slack): satisfy MPIM type contracts

---------

Co-authored-by: moeealii <75953662+moeealii@users.noreply.github.com>
2026-07-29 00:23:06 -04:00
Peter Steinberger
d5567ed61e fix: prevent duplicate agent turns and slow Codex harness runs (#115474)
* fix(agents): deduplicate turns and speed up Codex harnesses

* test(agents): keep keyed transcript fixtures type-safe

* fix(codex): simplify linear native skill traversal

* fix(agents): preserve admitted SQLite turns during orphan repair

* test: split session user idempotency regressions
2026-07-28 22:56:12 -04:00
Peter Steinberger
d239a59d82 fix(ui): make Control UI ownership and permissions reliable (#115364)
* fix(ui): unify connection-owned gateway event dispatch

* fix(qa): keep hosted UI smoke evidence truthful

* fix(ui): make mobile navigation drawer an accessible modal

* refactor(ui): centralize settings search destinations

* fix(ui): own chat media resource lifecycles

* fix(ui): unify sidebar session scope ownership

* refactor(ui): remove obsolete navigation backdrop styles

* refactor(ui): isolate dashboard provider lease capabilities

* fix(ui): centralize gateway operator permissions

* style(ui): format gateway event regressions

* fix(ui): render live dashboard permissions immediately

* fix(ui): enforce approval grant authority

* fix(gateway): fence retired sockets after event gaps

* fix(ui): isolate sidebar gateway fixtures across shared workers

* test(ui): isolate singleton-sensitive browser suites

* fix(ui): retire stale catalog pagination on gateway reconnect

* fix(ui): restore drawer focus after native dialog dismissal

* fix(ui): seed drawer threads and preserve modal focus ownership

* fix(ui): isolate nested native drawer overlay lifecycle

* test(ui): prove isolated dashboard lease authorization

* fix(ui): bound settled managed image resources

* fix(ui): type native modal focus and shared test helper

* fix(ui): correct approval mock types and trim dead export

* fix(ui): keep settings section metadata private

* fix(qa): keep hosted coverage regression within lint limit

* refactor(ui): keep catalog presence in its session data owner

* fix(browser): regenerate bundled copilot runtime

* test(ui): split board lease authorization regressions

* fix(ui): snapshot gateway listener fanout without redundant spread

* fix(ui): bind chat media subscriptions to image lifetime

* fix(ui): extract overlay access lifecycle

* fix(ui): restore guarded media after Lit reconnection

* test(ui): localize board lease fixture title

* fix(ui): reuse system approval fixture labels

* test(ui): narrow managed media lifecycle source

* fix(ui): prevent retired board gateway clients from rolling back leases

* fix(ui): expose pairing to pairing-scoped operators

* fix(ui): preserve legacy device pairing access

* fix(ui): preserve responsive sidebar ownership

* fix(ui): preserve responsive navigation and prove media ownership

* fix(ui): retire revoked catalog and refresh pairing grants

* test(ui): align typed catalog fixtures with main
2026-07-28 16:42:05 -04:00
Peter Steinberger
641c82b5bd fix(qa): restore full-stack scenarios and truthful suite exits (#115290)
* fix(qa): restore full-stack scenarios and truthful suite exits

* test(qa): respect plugin boundaries and atomic media delivery
2026-07-28 13:00:22 -04:00
Vincent Koc
b403cb5d50 fix(qa-lab): filter incompatible channel scenarios (#115087) 2026-07-28 23:49:47 +08:00
Dallin Romney
9feb6ad161 refactor(qa): make scenario selection taxonomy-owned (#114055)
* refactor(qa): remove scenario execution profiles

* fix(qa): preserve smoke CI membership

* test(qa): drop redundant smoke pack order check

* refactor(qa): remove Matrix runner profiles

* refactor(qa): simplify Matrix CI orchestration

* refactor(qa): derive execution sets from taxonomy

* fix(qa): keep Matrix shard helper private

* refactor(qa): derive profile scenarios from taxonomy

* refactor(qa): reconcile taxonomy selection

* refactor(qa): use canonical profile planning

* refactor(qa): select canonical coverage owners

* fix(qa): keep profile selector internal

* refactor(qa): remove representative coverage owners
2026-07-28 22:23:41 +08:00
Peter Steinberger
107bc4f963 fix: make gateway nodes and local inference reliable under stress (#115185) 2026-07-28 08:41:14 -04:00
Peter Steinberger
a5ee5039ce test(ui): split the oversized Control UI e2e suites (#114889)
* test(ui): split oversized Control UI e2e suites

* test(ui): bound new-session locator polling

* test(ui): fix split e2e metadata

* test(ui): give startup waits an explicit budget
2026-07-28 01:07:21 -04:00
Peter Steinberger
854a7f0e91 fix(ui): preserve agent, session, locale, and dashboard ownership (#114896)
* fix(ui): isolate sessions and preserve agent-scoped state

* test(ui): stabilize agent-scoped chat startup browser proof
2026-07-28 01:02:06 -04:00
Peter Steinberger
fafe7d9dad fix: prevent cron and Workboard execution races (#114808) 2026-07-27 20:33:53 -04:00
Ho Lim
50f0e8d8ab fix(diagnostics): exclude active steering from session backlog (#114780)
* fix(diagnostics): exclude active steering from session backlog

Signed-off-by: Ho Lim <subhoya@gmail.com>

* fix(diagnostics): cover reply-run steering backlog

Signed-off-by: Ho Lim <subhoya@gmail.com>

* test(qa): prove active steering drains diagnostics

Signed-off-by: Ho Lim <subhoya@gmail.com>

* test(diagnostics): format reply-run steering coverage

Signed-off-by: Ho Lim <subhoya@gmail.com>

* fix(diagnostics): keep backlog policy internal

Signed-off-by: Ho Lim <subhoya@gmail.com>

* test(qa): isolate Talk diagnostics client

Signed-off-by: Ho Lim <subhoya@gmail.com>

* test(qa): close Talk client before diagnostics

* test(qa): reuse Gateway diagnostic RPC client

* test(qa): retry Talk steering admission

---------

Signed-off-by: Ho Lim <subhoya@gmail.com>
Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-07-27 20:01:22 -04:00
Peter Steinberger
37cf0c6064 improve: reduce GPT-5.6 coding harness overhead (#114574)
* improve: reduce GPT-5.6 coding harness overhead

* refactor: extract runtime parity timing helpers

* fix(qa): verify native apply-patch runtime parity

* fix(qa): use mock patch execution evidence

* fix(qa): preserve workspace templates in full syncs

* fix(qa): make rejected patch fixtures deterministic

* fix(qa): prove apply-patch workspace containment

* fix(qa): expose runtime prompt-cache usage

* fix(codex): confine forced private QA patch turns

* fix(qa): verify native patch execution and sandbox precedence

* fix(qa): execute native patches and prove disk mutation

* fix(codex): avoid duplicate native patch registration

* perf(agents): keep code mode catalog guidance compact

* fix(qa): make native Codex patch evidence deterministic

* fix(qa): recognize native sandbox denial errors

* fix(qa): advertise native Codex mock model capabilities

* fix(qa): seed native Codex mock model catalog at startup

* fix(qa): recognize native Codex patch denial results

* fix(ci): repair Codex harness parity checks

* fix(qa): distinguish unknown prompt-cache measurements

* fix(qa): accept native Codex project patch denials

* fix(ci): isolate runtime parity report contracts

* fix(codex): eliminate native runtime transport overhead

* fix(qa): consume runtime parity report contract

* fix(qa): compare matched runtime timing captures

* fix(qa): type native response delta context

* fix(qa): satisfy native codex websocket lint
2026-07-27 19:24:52 -04:00
Peter Steinberger
69e8d406f0 fix: CJK tool results stay within context budgets (#114755)
* fix(agents): make tool-result budgets CJK-aware

Use one weighted, UTF-16-safe budget across live truncation, aggregate recovery, persisted sessions, and the mid-turn context guard. Preserve ASCII behavior, bound mixed blocks, and add a real Gateway QA scenario.\n\nFixes #103847.

* fix(agents): satisfy tool-budget lint

* test(qa): require exact CJK scenario reply

* test(auto-reply): preload reply runtimes without a synthetic turn
2026-07-27 18:35:57 -04:00
Peter Steinberger
e5e77b656a fix: keep dynamic model switching and agent catalogs reliable (#114760)
* fix: keep dynamic model switching and agent catalogs reliable

* test: use schema-valid dynamic model regression fixtures

* test: align utility completion with configured model fallback
2026-07-27 18:30:40 -04:00
Peter Steinberger
960b050add refactor(extensions): remove orphaned shadow trial and retired config aliases (#114709)
* refactor(memory-core): remove orphaned shadow trials

* refactor(qqbot): migrate direct voice upload formats

Release note: QQBot configs using voiceDirectUploadFormats now migrate through openclaw doctor --fix to audioFormatPolicy.uploadDirectFormats at root and account scope. Existing nested uploadDirectFormats values win conflicts, and runtime reads only the nested policy.

* refactor(feishu): migrate tools base alias

Release note: Feishu configs using tools.base now migrate through openclaw doctor --fix to tools.bitable at root and account scope. Existing bitable values win conflicts, and runtime accepts only the canonical key.

* refactor(extensions): remove dead runtime state

* chore(config): refresh bundled channel metadata

* refactor(codex): keep realtime fallback type private

* test(ci): align QA compatibility scenario count
2026-07-27 17:12:41 -04:00
Peter Steinberger
f0371e8d88 fix: stop blocked tool loops stalling until timeout (#114673)
* fix(agents): make global loop breaker reachable

Record loop-detector vetoes as typed no-progress outcomes so repeated blocked calls continue the existing streak without colliding with plugin or approval denials. Extract streak accounting into its own owner module and keep completed veto records out of argument reconciliation.\n\nFixes #109435.

* test: harden isolated project routing

Route registry-sensitive UI tests through the isolated project for both focused and broad runs, centralize the isolated file list, and register the Codex prewarm test in the full extension shard.

* test(qa): prove global loop breaker runtime

Drive 31 identical read attempts through the real QA Gateway agent loop and verify the typed veto streak reaches the global circuit breaker before the turn returns a final marker.

* test: keep isolated UI files out of shared runs

Always exclude registry-sensitive files from the shared UI project and reject broad watch targets that would span shared and isolated projects.
2026-07-27 16:02:28 -04:00
Peter Steinberger
c8ebf57731 feat(agents): advertise searchable tool capabilities (#114508) 2026-07-27 06:33:21 -04:00
Peter Steinberger
dda4883a4c fix(auto-reply): prevent duplicate rewritten-command replies (#114379)
* fix(auto-reply): dedupe settled block finals

* chore: leave release note to release flow
2026-07-27 02:49:23 -04:00
Dallin Romney
c1c231ced9 fix(qa): reject runtime tool intent without result evidence (#113502)
* fix(qa): require runtime tool result evidence

* fix(qa): preserve meaningful tool coverage gates

* refactor(qa): colocate runtime parity projection

* fix(qa): keep passing tool totals evidence-backed
2026-07-27 11:00:59 +08:00
Peter Steinberger
fe847911c0 test(qa): wait for durable fanout completion (#114080) 2026-07-26 05:26:33 -04:00
Peter Steinberger
8684e7ce03 fix: restore beta runtime release gates (#114064)
* test(qa): fix release runtime recovery gates

* test(qa): typecheck restart execution assertions
2026-07-26 03:58:41 -04:00
PollyBot13
ad7f927e40 fix: show provider 503 failures in group and channel chats (#113656)
* fix(auto-reply): surface provider HTTP 503 failures

* fix(auto-reply): preserve safe 503 retry

* test(qa): validate all 503 channel replies

---------

Co-authored-by: Altay <altay@hey.com>
2026-07-25 22:59:29 +03:00