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
Peter Steinberger
fdb511f5a1
fix(ci): repair beta performance and mention gates ( #113795 )
2026-07-25 11:56:00 -07:00
Peter Steinberger
7f70fb3521
test(qa): restore session turn ordering coverage ( #113653 )
...
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 05:39:03 -07:00
Peter Steinberger
c8e6adc929
fix(qa): run documented channel message flows on supported drivers ( #113642 )
...
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 05:09:13 -07:00
Peter Steinberger
3890a5efb6
fix(qa): restore current scenario source and documentation references ( #113639 )
...
Co-authored-by: Peter Steinberger <steipete@golden-gate.local >
2026-07-25 05:04:05 -07:00
Peter Steinberger
f43fac21c7
fix(gateway): stop showing retired HEARTBEAT.md in the agent files editor ( #113621 )
...
* fix(gateway): drop retired HEARTBEAT.md from agent core files
* fix(ci): stop asserting retired HEARTBEAT.md in docker release smoke
* docs: align HEARTBEAT.md references with cron scratch
* docs(agents): drop retired HEARTBEAT.md from workspace read comment
2026-07-25 04:58:31 -07:00
Dallin Romney
13039109a3
fix(qa): retarget generic channel coverage evidence ( #113486 )
2026-07-25 17:51:52 +08:00
Dallin Romney
078a08c820
fix(qa): correct Slack and Discord coverage attribution ( #113468 )
2026-07-25 11:22:19 +08:00
Vincent Koc
4e83914748
fix(qa): track sessions_spawn parity coverage gap
2026-07-25 06:06:25 +08:00
Peter Steinberger
5bea268128
feat(anthropic): complete Claude Opus 5 rollout ( #113392 )
...
* feat(models): add Claude Opus 5 support
* test(models): align Opus 5 setup fixtures
* test(models): update ambient Opus 5 detection
* fix(models): reconcile Opus 5 support with main
2026-07-24 14:55:36 -07:00
Peter Steinberger
7d5fb6f242
test(release): align extension prerelease contracts ( #113381 )
2026-07-25 02:30:35 +08:00
Dallin Romney
9d2d5d111c
test(qa): align Matrix scenario coverage ( #112837 )
2026-07-24 15:05:42 +08:00
Dallin Romney
b48bcde17f
test(qa): retarget WhatsApp access coverage ( #112834 )
2026-07-24 15:04:28 +08:00
joshavant
8287e21445
fix(cron): enforce caps across CLI backends
2026-07-24 01:24:03 -05:00
joshavant
d8f1f098e5
fix(cron): honor explicit authority for senderless runs
2026-07-24 01:24:03 -05:00
Peter Steinberger
acd92f6a3d
chore(deps): refresh repository dependencies ( #112453 )
...
* build(deps): update QA broker dependency
* build(deps): refresh repository dependencies
* build(deps): reconcile rebased shrinkwraps
* test(plugins): remove stale loader test state
* test(deps): stabilize updated dependency coverage
* fix(swift): use caller-isolated TaskLocal overload
* build(deps): regenerate rebased shrinkwraps
* test(msteams): preserve DNS validation in fetch helper
* fix(deps): avoid vulnerable optional image stack
* test(deps): validate generated LRU override
* refactor(ui): extract chat resizable divider
* test(ui): update divider ownership path
* fix(matrix): retain restart-compatible SDK
* style(cron): format update test
2026-07-23 16:17:13 +00:00
Peter Steinberger
525a7f4c96
ci(release): restore full validation after config migrations ( #112740 )
...
* fix(browser): preserve scoped CDP authority policy
* test(release): migrate canonical config fixtures
* ci(release): repair acceptance harness drift
* ci(release): extend Anthropic setup budget
* test(release): align remaining CI contracts
* test(release): align Docker and QA contract tests
* docs(release): preserve validation evidence inputs
* test(plugins): align unprepared metadata reads
* ci(release): separate QA live suite filters
* test(release): bind cron MCP cleanup device
2026-07-23 08:46:55 -04:00
Dallin Romney
19d17bc3c4
refactor(qa): canonicalize runtime-pair lanes ( #112603 )
2026-07-23 10:06:12 +09:00
Dallin Romney
eccf02f04a
fix(qa): apply Matrix thread override in flow setup ( #112815 )
2026-07-23 09:47:27 +09:00
joshavant
c004cac6df
fix(cron): finalize settled announce turns
2026-07-22 06:04:27 -05:00
joshavant
8636bb6981
fix(agents): continue settled empty post-tool turns
2026-07-22 06:04:27 -05:00
Josh Avant
3acc168c4f
fix(cron): persist explicit scheduled tool authority ( #112483 )
...
* fix(cron): persist explicit scheduled tool authority
* test(cron): cover explicit scheduled authority
* fix(cron): preserve legacy authority on routine edits
* test(cron): add explicit authority e2e matrix
* test(cron): harden explicit authority live proof
2026-07-22 02:28:49 -05:00
Dallin Romney
132d91e427
refactor(qa): make taxonomy coverage ids unique ( #110280 )
2026-07-22 16:28:44 +09:00
Peter Steinberger
c24a215fe4
fix: prevent announce restart recovery cascades ( #112534 )
...
* fix(agents): stop announce restart recovery cascades
Reconcile interrupted completion handoffs from existing run and transcript provenance, and keep their CLI, embedded, and Codex execution tool-free.\n\nCo-authored-by: Moeed Ahmed <moeedahmed@users.noreply.github.com >
* chore: preserve prior-art credit
Co-authored-by: Moeed Ahmed <moeedahmed@users.noreply.github.com >
* fix(agents): prefer explicit restart recovery runs
* fix(agents): revalidate announce recovery ownership
* test(agents): consolidate announce recovery cases
* fix(agents): preserve silent announce fallback
---------
Co-authored-by: Moeed Ahmed <moeedahmed@users.noreply.github.com >
2026-07-22 00:05:18 -07:00
Peter Steinberger
591c6ce327
test(cron): honor built-in trigger interval in QA ( #112491 )
2026-07-21 20:36:35 -07:00
Peter Steinberger
edecdbd05e
refactor(config): config-surface reduction tranche 3 — product consolidations (review request) ( #111527 )
...
* refactor(config): consolidate media model lists
* refactor(config): unify memory configuration
* refactor(config): consolidate TTS ownership
* refactor(config): move typing policy to agents
* refactor(config): retire product-level config surfaces
* refactor(config): share scoped tool policy type
* chore(config): refresh generated baselines
* fix(config): honor agent typing overrides
* fix(config): migrate sibling config consumers
* refactor(infra): keep base64url decoder private
* fix(config): strip invalid legacy TTS values
* chore(config): refresh rebased baseline hash
* fix(doctor): route legacy messages.tts.realtime voice to talk during tts move
* refactor(config): polish final layout names
* refactor(config): freeze retired tuning defaults
* feat(config): add fast mode default symmetry
* refactor(config): key agent entries by id
* docs(config): update final layout reference
* test(config): cover final layout migrations
* chore(config): refresh final layout baselines
* fix(config): align final layout runtime readers
* fix(config): align remaining readers
* fix(config): stabilize final layout migrations
* fix(config): finalize config projection proof
* fix(config): address final layout review
* docs(release): preserve historical config names
* fix(config): complete keyed agent migration
* fix(config): close final migration gaps
* fix(config): finish full-branch review
* fix(config): complete runtime secret detection
* fix(config): close final review findings
* fix(config): finish canonical docs and heartbeat migration
* fix(config): integrate latest main after rebase
* refactor(env): isolate test-only controls
* refactor(env): isolate build and development controls
* refactor(env): collapse process identity indirection
* refactor(env): remove duplicate config and temp aliases
* docs(env): define the operator-facing allowlist
* ci(env): ratchet production variable count
* fix(env): remove stale provider helper import
* fix(env): make ratchet sorting explicit
* test(env): keep test seam in dead-code audit
* test(env): cover ratchet growth and boundary; document surface budgets
* docs(config): document tier-eval consolidations
* docs(config): clarify speech preference ownership
* test(memory): align retired tuning fixtures
* refactor(memory): freeze engine heuristics
* refactor(config): apply tier-eval tranche
* refactor(tts): move persona shaping to providers
* refactor(compaction): move prompt policy to providers
* test(config): align hookified prompt fixtures
* chore(deadcode): classify test-only exports
* chore(github): remove unused spawn helper
* chore(deadcode): classify queue diagnostics
* chore(deadcode): remove unused lane snapshot export
* chore(plugin-sdk): ratchet consolidated surface
* fix(config): integrate latest main after rebase
2026-07-21 20:28:43 -07:00
Josh Avant
33720886c8
fix(agents): keep sender-scoped tools in delegated runs ( #110345 )
...
* fix(agents): preserve requester policy across delegation
* fix(agents): keep policy types internal
* test(codex): cover delegated policy forwarding
* fix(agents): harden delegated policy contract
* fix(agents): preserve split-owner completion policy
* fix: version delegated requester snapshots
* fix: refresh delegated policy protocol artifacts
2026-07-20 19:42:06 -05:00
Peter Steinberger
3a85143d97
fix(qa): align ask-user protocol shape ( #111429 )
2026-07-19 07:03:47 -07:00
Peter Steinberger
96c9cc112c
fix(cron): preserve script state and stop stale runs after restart ( #111292 )
...
* fix(cron): preserve script execution boundaries
* chore: keep release changelog unchanged
2026-07-19 01:24:19 -07:00
Marcus Castro
d5cb708623
fix(qa): repair WhatsApp live scenario regressions ( #110754 )
...
* fix(qa): make WhatsApp scenarios account-aware
* test(qa): cover configured WhatsApp SUT account
* refactor(qa): centralize QA target encoding
* fix(qa): configure scenario policies at startup
2026-07-19 01:43:38 -03:00
Peter Steinberger
b96d5cf554
fix(qa): resume channel cursor after gateway restart ( #111096 )
2026-07-18 18:16:14 -07:00
Peter Steinberger
4d683904df
fix(agents): restore ask_user roundtrip in Gateway chats ( #110961 )
...
* fix(agents): restore ask_user channel roundtrip
* test(qa): derive ask_user proof from answers
* test(qa): isolate mock reply directives
* test(qa): wait for complete ask_user reply
* fix(agents): fail closed on stale ask_user prompts
* chore: remove release-owned changelog entry
* fix(agents): satisfy ask_user CI contracts
2026-07-18 22:55:46 +01:00
Dallin Romney
917bec3987
fix(qa): stabilize Matrix maturity scenarios ( #110398 )
2026-07-18 10:46:44 -07:00
Peter Steinberger
d55c91c918
test: add subagent handoff failure diagnostics
...
Related: #110572
2026-07-18 09:50:33 +01:00
Dave Morin
4b3ee5e7eb
feat: let agents remember across private conversations ( #100140 )
...
* feat(memory): remember across private conversations
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com >
* chore(docs): regenerate config baseline
* fix(memory): restore recall configuration wiring
* fix(memory): scope recall transcript indexing
* test(memory): repair conversation recall fixtures
* test(memory): split session visibility coverage
* style(memory): format type imports
---------
Co-authored-by: Vincent Koc <25068+vincentkoc@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-18 08:21:43 +01:00
Peter Steinberger
b116ae5a43
fix: stop mock Control UI QA from hanging in live suites ( #110481 )
...
* fix(qa): keep transcript boundary scenario mock-only
* fix(qa): filter scenario-pinned provider lanes
* test(qa): narrow transcript scenario execution type
2026-07-18 07:51:58 +01:00
Peter Steinberger
eea38748be
test(ui): cover plan-snapshot replay on reconnect end to end ( #110091 )
...
* test(ui): cover plan-snapshot replay on reconnect end to end
QA follow-up to the plan-replay work: the mock gateway scenario can now
serve an inFlightRun snapshot plus session run state through chat.history
and chat.startup, and a Playwright suite proves the checklist seeds from
the replayed snapshot on load, is replaced in place by a newer live plan
event, clears on the terminal outcome, and survives a mid-run page
reload. Registered as QA scenario control-ui-plan-replay-reconnect.
* test(ui): satisfy plan replay e2e lint
2026-07-18 07:10:15 +01:00
Peter Steinberger
ab0277946d
fix(qa): isolate active memory migration ( #110358 )
2026-07-18 06:50:13 +01:00