Repository navigation
Conversation
3b6ae95 to
24399fd
Compare
93e23b4 to
85557d9
Compare
Dependency GuardThis PR changes dependency-related files. Maintainers should confirm these changes are intentional. Changed files:
Maintainer follow-up:
|
85557d9 to
469d91e
Compare
Dependency graph changes are blockedOpenClaw does not accept dependency graph changes through PRs unless security explicitly authorizes the current head SHA. Dependency updates are generated internally by maintainers so external PRs cannot change the resolved graph. Detected dependency graph changes:
Auto-scrub was not attempted because this PR changes package manifest dependency graph fields:
Dependency graph changes must be reviewed by security or handled by maintainers internally. Please remove lockfile changes manually if they are not needed. To remove lockfile changes, restore them from the target branch: git fetch origin
git checkout 'origin/main' -- '.github/release/clawhub-cli/package-lock.json' '.github/release/vercel-cli/package-lock.json'
git commit -m 'chore: remove dependency lockfile change'
git pushIf this PR intentionally needs a dependency graph change, ask a member of The action will approve the current head SHA ( |
469d91e to
ca894ef
Compare
commented
Sep 2, 2026
|
Rebuilt from openclaw/openclaw's currently-open PRs via Included:
Excluded:
New head: To resync again later: run |
ca894ef to
d47a635
Compare
commented
Sep 2, 2026
|
Rebuilt again to pick up main's latest 10 commits (base advanced from New head: |
d47a635 to
79e3ab1
Compare
commented
Sep 2, 2026
|
Rebuilt: openclaw#134550 now carries the P1 scaling-defect fix (ClawSweeper findings clean, awaiting a maintainer's retention-policy call). openclaw#131568 dropped — closed upstream (openclaw#131568), disk cleanup already done by hand, follow-up tracked at openclaw#136284. Same openclaw#128848 exclusion as before (draft, still blocked on the same maintainer decision, still conflicts). New head: |
79e3ab1 to
7d0c87f
Compare
commented
Sep 5, 2026
|
Rebuilt from openclaw/openclaw's currently-open PRs by Included (unchanged from before):
Included, re-merged from scratch after excluding stale siblings:
Newly excluded this run (found stale against current
Note: openclaw#139037 (sessions_spawn pre-execution-block fix) merged upstream earlier today, so it's no longer "open" and naturally dropped out of this rebuild — that's expected, not a regression. New head: To resync again later: run |
commented
Sep 5, 2026
Findings from this rebuildConcrete, verified discoveries from combining the current open-PR set — not just a diff summary. openclaw#128633 is stale against current
|
7d0c87f to
dd28740
Compare
commented
Sep 6, 2026
|
Rebuilt after closing openclaw#137544 (root-cause diagnosis was wrong — see close comment on that PR) and after PR openclaw#139139's second-review fixes landed. Removed: openclaw#137544 (closed) New head: To resync again later: run |
dd28740 to
5087c65
Compare
commented
Sep 6, 2026
|
Re-added openclaw#128633 — good catch that it was wrongly excluded. Its production code is sound (it's what my own live deployment actually runs for HTTP continuation to work); the issues found earlier were purely test-suite staleness against current
New head: To resync again later: run |
Follow the intentional Android wording change in 4288881. That commit already regenerated the source inventory; update the stale test expectation while preserving nested-interpolation extraction coverage. Proof: the live-source inventory test fails before this change and all 43 native i18n tests pass afterward (7.00s runner duration). Targeted lint and formatting are clean.
…#159852) Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
…openclaw#159535) WKWebView starts a Screen Time configuration observer once it is in a window with an HTTP(S) main frame. ScreenTime delivers configuration via KVO on WebKit's private update queue while -[WKWebView dealloc] removes the observer on the main thread, so tearing a web view down during its initial reply throws NSInternalInconsistencyException and aborts the Swift Testing process (macos-swift run 36289828982, job 108537817128). Link a test-only OpenClawWebKitTestSupport target into OpenClawIPCTests that replaces WebKit's Screen Time install hook with a recorder, add a regression test for windowed HTTP web views, and document the guard. Product builds keep Screen Time.
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
…aw#159622) The fixture awaited a continuation resumed from the main queue. UIKit's keyboard task queue can spin a nested main run loop inside updateUIView while the retiring composer is cleared as first responder, so the test body resumed mid-SwiftUI-update, found the retired editor still attached, and typed into it while its programmatic-update guard was set (failure at :196; on current main the same interleaving can also wedge the run). Wait synchronously and only when the waiter's own run loop is about to sleep, until the committed composer swap is visible, then assert the editor identity. Drops the render-phase boundary and its re-entrant layoutIfNeeded. The CI :197 failure on the openclaw#159350 merge ref was a separate product bug, fixed in 7f43b35. Proof (Xcode 27.0, iOS 26.5 sim): with a 16-turn nested-loop injection at that UIKit point, main's fixture fails 3/4 and hangs 1/4, this fixture passes 5/5; the new regression fails 3/3 against the old awaited wait; 40 iterations pass 80/80.
…claw#158136) * fix(cli): keep gateway model runs out of local state migration * fix(cli): use parsed transport for Gateway model startup Keep Gateway model invocations on non-observing validation while retaining local/default preparation. Cover flag-shaped prompts through real Commander parsing. Preserve bounded browser diagnostics and correct the TUI fixture to assert the loaded target frame rather than appended prior-session redraws. Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com> * fix(workboard): carry canonical generated asset refresh Keep the generated Control UI manifest consistent with the unchanged canonical asset builder. The regenerated manifest exactly matches main commit 559b4f8 after the protocol activity schema update; no capabilities or permissions change. Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com> --------- Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com>
Failing check: checks-node-compact-small-3 (core-tooling-11), immutable upgrade targets 2026.6.35 and 2026.7.33 in upgrade-survivor-assertions. Tasks retirement added a static native-assignment-summary import to the trusted diagnostics module, but frozen scenario staging omitted that helper. Copy it beside the existing diagnostics helpers. Preserve the selected historical runner and assertions; no runtime API or test changes. The two reported core test type errors were already fixed by 0b6f02f. Proof on ff3c3cb plus this patch: - Reproduced exactly the two missing-module failures before the fix. - All ten graphs from core-test stripes 3 and 5 passed. - pnpm tsgo:core:test (all 25 graphs) and pnpm tsgo:core passed. - Upgrade-survivor assertions and six siblings: 344 tests passed. - Media retention, ACP preactive cancellation and accepted ownership: 24 tests passed. - Changed-file gate, bash syntax, diff check and Codex P2 autoreview passed. Broader sibling observations, unrelated to this one-line staging repair: - docker-build-helper: 352 passed, 2 skipped, 2 June bundle-MCP failures. Focused six-case replay moved the failure to log-removal cleanup. The unchanged bundle-MCP runner's git archive | tar -x pipeline produced empty-stderr SIGPIPE 141 in 15/30 standalone macOS trials despite correct extracted bytes; --ignore-zeros passed 30/30. Left as a separate follow-up. - Planner/mac/tooling selection: 2024 passed; mixed package/plugin consumer planning timed out at 120 seconds, again on isolated reproduction. Its inputs and planner are unchanged. The performance cause remains unresolved; no timeout or assertion was weakened.
openclaw#159785) ## What Problem This Solves Fixes Russian questions about past conversations not starting deep recall in Active Memory's default escalation mode. Closes openclaw#159746 ## User Impact Russian users can recall prior conversations without switching to always-on recall. Ordinary Russian messages and future-cued requests without retrospective context skip deep recall. Existing languages, configuration, defaults, and permissions are unchanged. As with the existing English recall-word heuristic, an untimed “do you remember” request can trigger recall; this is not a grammatical intent parser or a reminder scheduler. ## Why This Change Was Made Add one Russian `{ intent, future, retrospective }` entry to the existing localized matcher, using the same decision as Chinese, Japanese, and Korean: `intent && (!future || retrospective)`. This replaces the earlier Russian-only clause parser and prospective-task exceptions rather than adding more exceptions for individual phrasings. Maintainer-intent check: No overlap with Pash/Sarah changes. ## Evidence Built and ran an isolated Gateway using the repository's mock OpenAI provider over HTTP/SSE and real WebSocket `chat.send`, with Active Memory enabled and `mode` omitted. The baseline used `escalation.ts` from origin/main at 559b4f8. The final candidate was rebuilt at cac1299 after merging the main CI repair. - `Помнишь, что я говорил про отпуск?`: baseline skipped with `no-recall-intent`; candidate started and completed deep recall. - `Привет, как дела?`: baseline and candidate skipped with `no-recall-intent`. - `Ты помнишь завтра отправить отчёт?`: candidate skipped with `no-recall-intent`. - `Ты помнишь, что нужно будет отправить отчёт?`: candidate skipped with `no-recall-intent`; future forms of `быть` are grammatical future cues. - `Помнишь, что мы решили развернуть завтра?`: candidate started and completed deep recall, preserving retrospective context despite a future cue. - `Do you remember what I said about vacation?`: baseline and candidate started and completed deep recall. All six candidate main turns completed successfully. Gateway logs and actual model requests confirmed the recall sub-agent runs. The empty synthetic corpus returned `no_relevant_memory`; this proves escalation, not retrieval quality against live memories. All proof processes are stopped. Focused verification: all 87 escalation cases passed (1.59s wall), and both Chinese/Russian default-mode hook cases passed (33.28s wall, including cold compilation after the main merge). The new grammatical-future regression failed before the cue was added. `git diff --check` passed. Commands: `node scripts/run-vitest.mjs extensions/active-memory/escalation.test.ts` and `node scripts/run-vitest.mjs extensions/active-memory/index.test.ts -t 'escalates retrospective'`. Co-authored-by: Ayaan Zaidi <hi@obviy.us>
6edbb47 replaced native terminal RPC assertions with cancelTurn spies and a mocked cleanup callback. That concealed the inventory-only authority regression introduced by 6652f7e and reported in CI run 36339991265. Unsandboxed authority cannot terminate concrete processes through cancelTurn. ad76f83 restores thread-owned terminal cleanup outside the sandbox. Restore the original protocol assertions and fixture responses so the tests again join terminal listing, termination, and empty-inventory confirmation before releasing cancellation. Keep cleanup failure propagation and the activation/Computer Use cancellation checks at the real app-server boundary. Latest-main reproduction: five failures across the three affected files, including two unanswered terminal-list RPCs and three assertions rejecting required cleanup. No new test cases, retries, timeouts, or production seams. Validation: 34 tests pass across the three repaired files and both native process-authority neighbors with one worker (430.31s wrapper wall, including cold imports). The two restored terminal-cleanup cases take 1.99s combined; the existing 15-case cleanup file takes 47.43s of test time, dominated by its unchanged lifecycle cases. The real RPC boundary is needed to catch the skipped-cleanup regression that cancelTurn mocks missed. Independent P2 review is clean.
…ed (openclaw#159848) Crabbox records provider resources that are not yet attached to a repository with an empty repoRoot (ClaimLeaseTargetForConfig with allowEmptyRepoRoot), and refuses to replace an attached root without --reclaim. The staging claims inventory required every repoRoot to be absolute, so one unattached claim anywhere in the local namespace made the whole inventory "unsupported or malformed" and held every staging entry, including the automatic end-of-run recovery. Accept the empty root and skip it during source matching; it names no staging source and must not be resolved against the process cwd.
…GPIPE (openclaw#159849) The PR tooling subreaper fixture raised "tool descendant did not exit successfully" both when an adopted descendant was still running and when one exited non-zero, so a rare Linux CI failure could not name its cause. tsx starts an esbuild service per worker thread. When the provisioner closes its state database it terminates those workers; a worker terminated mid-import leaves its service to fail its response write and die by SIGPIPE. Node does not reap children spawned from a terminated worker's event loop, so the zombie is adopted by the test's subreaper once the provisioner exits. That status is esbuild's host-loss behavior, never part of the tooling contract: the runner releases only after every operation thread is a zombie. Record adopted exits with their status, pid and comm, and fail only on a descendant still running after the command, naming its pid, state, comm and argv. Add a Linux regression that hands the reaper a SIGPIPE zombie and a live orphan without timing.
The request helper used Node's global HTTP agent. A keep-alive response marks its request destroyed before user end handlers run, so req.destroy() did not remove the pooled socket. A later retired-port probe could reuse that socket and get ECONNRESET without accepting any new connection. Use a one-shot agent and remove the ineffective cleanup. Warm a keep-alive health response immediately before retirement in the existing regression. The strict ECONNREFUSED, graceful drain, forced-reset, and transport ownership assertions remain unchanged; production behavior is unchanged. Reproduced the exact reset/refusal failure on main ff3c3cb with the health warmup before fixing the helper (12 pass, 1 fail). Native Node instrumentation confirmed reusedSocket=true and zero connection/request events after retirement; fresh connections got ECONNREFUSED. Original failure: CI run 36337704399, job 108672334094. Proof: 20 standalone runs; original 34-file shard three times (888 tests per run); 26 plugin HTTP sibling tests; all changed-file checks; independent Codex P0-P2 autoreview clean. No retries or timeout changes. Measured pnpm test src/gateway/server/plugin-legacy-listeners.test.ts --maxWorkers=1: 80.64s wall after, 121.78s failing regression before; retirement case 12ms after. Repeated shard runners: 170.69/166.23/159.51s; 20 standalone runners: 477.96s combined. macOS, Node 26.9.0.
…w#159874) * test(cli): deslop s674 tests * test(cli): deslop s676 tests * test(cli): deslop s675 tests * test(cli): deslop s689 tests * test(cli): deslop s690 tests * test(update): deslop s691 tests * test(update): deslop s696 tests * test(update): deslop s694 tests * test(update): deslop s703 tests * test(doctor): deslop s709 tests
…es its case (openclaw#159846) In the Vitest threads pool, SqliteReclamationWorker cannot retire an escaped lease: its fallback cleanup requires the host SQLite broker (main thread). A fixture that only schedules the worker close with the synchronous closeOpenClawAgentDatabasesForTest() lets the lease release overlap later cases and the runner teardown, where an unsettled close fails the file and retains SQLite custody for the rest of the worker. openclaw#159445 already drains agent workers before the conversation teardown. channel-inbound still used the fire-and-forget close, and its maintenance case's worker was still closing through the next four cases. Await the agent and shared-state async closes there too, and guard both fixtures so no agent database async resource escapes the case that admitted it.
Avoid main-only refreshes and repeated blocked routes. Add explicit prior-CI admin admission for reviewed conflict repairs, pinned to current preparation, verified earlier CI and current review/security requirements. Preserve honest operator validation evidence in the native retained merge outcome and dispatch through the protected SHA-pinned REST squash endpoint. Pass complete CI changed-path manifests through files so large PRs retain Node planning inputs beyond the 64 KiB Actions output limit. Keep frozen-target compatibility and reject missing or malformed current manifests. Validation: reproduced the historical oversized-manifest failure; 570 CI scope and workflow cases pass (241.60s wall). Fifteen native admission/dispatch cases pass (45.90s wall), four existing admission/recovery cases pass (52.48s), and wrapper inventory passes (21.89s). New manifest cases add subsecond test time; native process cases cover actual pinned dispatch, authority and receipt gates. Type checks, typed lint, workflow validation, formatting and source ratchets pass. Review corrections cover absent or wrong-publisher security checks and ref-suffixed workflow paths; all three fail against the previous predicates.
…159733) * improve(android): move context usage into chat actions Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com> * docs(android): describe context in chat actions Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com> --------- Co-authored-by: IWhatsskill <284122573+IWhatsskill@users.noreply.github.com>
…enclaw#159819) * fix: complete Task retirement test and harness cleanup * test: finish retirement selector and async fixture cleanup
…penclaw#159840) * fix(cron): preserve unknown webhook delivery outcomes * test(cron): complete webhook outcome job fixture * chore(cron): satisfy webhook change lint guards * fix(cron): surface unknown delivery in CLI status
…aw#159843) * fix: preserve authenticated chat identity in execution audits * refactor: finish reply admission owner cutover
* fix(ui): derive the switch off state from theme tokens * fix(ui): center the switch thumb
openclaw#159179 moved this fixture from TaskFlow records to the plugin-state worker client. Plugin state keeps cause text out of its public error message, so the "offline maintenance" refusal now arrives as the error cause and the three maintenance-resource cases failed on main. Assert the refusal through the cause chain; production behavior is unchanged.
…to a config option, default 90m
…ation (openclaw#134425) Combined-deploy squash of openclaw#134425. See that PR for the full commit history, review discussion, and live-verification evidence.
749dd65 to
29aea52
Compare
commented
Sep 27, 2026
|
Rebuilt from openclaw/openclaw's currently-open PRs by Removed (closed/merged/landed on openclaw/openclaw, or no longer open):
New head: To resync again later: run |
commented
Oct 2, 2026
|
Closing: all source PRs (openclaw#128848, openclaw#134425) are now merged into openclaw/openclaw main. No open PRs remain to combine; this deploy branch has served its purpose. Rebuild via rebuild-combined-pr.sh if a new combined-deploy need comes up. |
What this is
Combined deployment branch: current
openclaw/openclaw:main, with every currently-open PR authored by the operator merged on top (squash), so one build carries everything in flight.Rebuilt by
rebuild-combined-pr.sh openclaw(kept at/data/code/claudeon the operator's machine, off-repo). Re-run/data/code/claude/rebuild-combined-pr.sh openclaw --pushany time a source PR changes to resync this branch -- it re-discovers the open-PR set live viagh, so it needs no other context. See MISTAKES.md next to the script for why this exists.PRs included