Commit Graph

6841 Commits

Author SHA1 Message Date
Vincent Koc 0d45efd5da fix(ci): retry transient artifact API reads (#120654) 2026-08-09 02:05:04 +08:00
Vincent Koc a07d0e249d fix(maintainers): parse merge comment URL structurally (#120649) 2026-08-09 01:58:11 +08:00
Vincent Koc 3e0504d50f fix(scripts): stabilize dependency pin timeout test (#120642) 2026-08-09 01:08:48 +08:00
Vincent Koc 49161dee60 fix(release): unblock deferred Telegram beta validation (#120630)
* fix(release): allow deferring package Telegram validation

* fix(qa): mount taxonomy in package Telegram harness

* fix(release): restrict Telegram deferral to beta
2026-08-09 01:03:02 +08:00
Vincent Koc 0fd3ee6929 fix(ci): isolate performance gateway fixture (#120620) 2026-08-09 00:56:01 +08:00
Peter Steinberger 7fd723b515 fix(agent): apply steering before unstarted tools (#120470)
* fix(agent): apply steering before unstarted tools

Restore steering checkpoints before sequential tool launches and before parallel batch launch. Preserve paired synthetic tool results, async callback compatibility, and Code Mode outcome handling.

* fix(agent): delay tool loop admission commits

Commit loop-detection history only for calls crossing the final launch checkpoint. Release steering-skipped markers, add repeated-steer coverage, and align remaining steering contract text.

* fix(agent): keep tool admission lifecycle internal

Attach delayed admission callbacks through the private internal-hooks seam so steering history remains correct without widening the public Agent Core or Plugin SDK contract.

* fix(agent): preserve steering API contracts

Keep public steering callbacks Promise-based and protocol error kinds unchanged. Use private synchronous draining and structured skip details to retain launch-boundary behavior without API or generated protocol drift.

* test(gateway): use canonical steering fixture config

Use keyed agent entries in the real gateway steering harness so current main does not migrate the fixture during startup.

* fix(agent): remove unused lifecycle re-export

* fix(agent): gate tool launch after wrapper preflight

Split OpenClaw tool execution into private prepare and launch phases so steering is checked after policy, approval, validation, and reconciliation but before the original side effect. Preserve final arguments, voice grants, loop admission, context wrappers, and direct tool execution.

* fix(agent): preserve steering callback receiver

Invoke public steering callbacks with their AgentLoopConfig receiver and cover method-style implementations that read config-owned queue state.
2026-08-08 09:52:10 -07:00
Vincent Koc 13322b2adc fix(ci): run every changed-scope routing suite (#120625) 2026-08-09 00:50:17 +08:00
Peter Steinberger a413b16ee6 test(qa): derive diagnostics package version (#120636) 2026-08-08 09:44:37 -07:00
Peter Steinberger 40385bb5c1 test(e2e): isolate shared build artifacts (#120628) 2026-08-08 09:21:50 -07:00
Peter Steinberger 2bce06e1e7 refactor(pr): remove unreachable fork push retry (#120565)
* refactor(pr): remove unreachable fork push retry

* refactor(pr): simplify missing fork branch handling
2026-08-08 08:48:44 -07:00
Peter Steinberger 7ecdef6e2e fix: prefer Crabbox inspect SSH host (#120611) 2026-08-08 08:30:07 -07:00
Peter Steinberger 18dd70cec0 fix(release): dispatch validation through a client-pushed target ref (#120613) 2026-08-08 08:22:17 -07:00
Vincent Koc b5180b6816 fix(codex): support app-server 0.147.0 (#120594)
* fix(codex): support app-server 0.147.0

* docs(codex): clarify marketplace version provenance
2026-08-08 23:07:05 +08:00
Peter Steinberger 6176c0a79d feat(macos): control motorized camera pan, tilt, and zoom (#120511)
* feat(macos): add native camera PTZ controls

Add physical UVC pan, tilt, and zoom through the signed Mac app, with camera.ptz.control kept behind dangerous-command approval. Verified against real Insta360 Link 2 Pro hardware.

* refactor(agents): split message tool display config

* fix(mac): harden camera PTZ contracts
2026-08-08 08:04:29 -07:00
Peter Steinberger 9a2f91a79a fix(release): keep prerelease companions exact in cross-OS checks (#120556)
* fix(release): install exact cross-os companion artifacts

* fix(release): derive companion package type from resolver

* fix(release): produce provider-owned companion registries

* fix(release): preserve companions for npm candidates

* refactor(release): simplify companion registry flow

* test(release): align package acceptance contracts

* fix(release): guard optional registry JSON parsing

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-08 21:45:16 +08:00
Peter Steinberger caa50686ea fix(ci): clear Mantis reactions with app identity (#120523) 2026-08-08 05:00:08 -07:00
Peter Steinberger d1dea39bbb fix(maintainers): route PR reads through Octopool (#120525)
* fix(maintainers): route PR reads through Octopool

* test(maintainers): cover PR transport ownership

* fix(maintainers): scope merge wait to CI run
2026-08-08 03:56:36 -07:00
Peter Steinberger 95ea82b1e5 fix(ci): restore deterministic main checks (#120501)
* fix(plugin-sdk): stabilize session catalog baseline

* test(doctor): isolate bind persistence inventory

* fix(ci): prepare max-lines base during checkout

* test(sessions): align freshness regression fixtures

* style(tests): format context usage fixture

* fix(ci): preserve token provenance and isolate fork credentials

Finish the canonical token-provenance fixtures while preserving the
latest maintainer-owned unavailable-usage ordering. Limit the diff-base
GitHub token to manual non-release comparisons and guard that fork
isolation invariant in the existing workflow regression test.

Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com>

* test(ui): identify actual managed image eviction

* fix(ci): reuse the validated protocol comparison base

Consume the immutable diff base already resolved and validated by
preflight for every CI event. Remove the dead duplicate manual
GitHub lookup and unreachable fallbacks, and guard the single
authoritative path without changing fork credential isolation.

* test(sessions): preserve stale total expectation

* test(ui): arm reconnect deferral before disconnect

---------

Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com>
2026-08-08 03:36:35 -07:00
Peter Steinberger d9080cfff8 fix(agents): transfer requester wake ownership across yield and deflake survivor registry setup (#120538) 2026-08-08 01:42:33 -07:00
Peter Steinberger c7b7fe4c32 fix(codex): restore continuity test coverage (#120452)
* test(codex): align run history fixture identity

* test(ci): repair gateway fixture checks
2026-08-07 23:39:26 -07:00
Peter Steinberger 733512b612 fix(e2e): expose beta companions in survivor registries and unbind ReDoS timing from shell startup (#120479) 2026-08-07 22:12:00 -07:00
Peter Steinberger c98bd2287b ci(release): retry child-run adoption through read-after-write lag (#120477) 2026-08-07 22:00:25 -07:00
Peter Steinberger b855934ee4 fix(test): isolate embedded runner SQLite state (#120459) 2026-08-07 21:35:11 -07:00
Peter Steinberger 263ad629c1 fix(build): keep CLI help fallback asynchronous (#120454) 2026-08-07 21:28:52 -07:00
Peter Steinberger 8b8058a68b fix(release): supply exact Codex companions to cross-OS checks and repair legacy node-host metadata (#120442)
* fix(release): supply exact Codex companions to cross-OS checks and repair legacy node-host metadata

* test(release): align async run title rejection
2026-08-07 20:06:53 -07:00
Dallin Romney 2f1692c955 fix(release): accept verified companion plugin packages (#120186) 2026-08-07 19:18:20 -07:00
Peter Steinberger 6a6cd7859f test(qa): cover session and Workboard managed-worktree lifecycles; fix symlinked state-dir lock blindness (#120362)
* fix(agents): canonicalize managed worktree paths

* test(qa): cover managed worktree owner lifecycles

* test(agents): split worktree canonical-path regression into focused file

* fix(doctor): canonicalize persisted managed-worktree paths for symlinked state dirs

* fix(doctor): keep worktree path migration detection read-only

* test(doctor): bound managed-worktree migration product proof

* fix(doctor): keep worktree path detection from creating state dirs

* test(doctor): allow state migration detection under CI load

* test(agents): split embedded-runner steering runs into focused file

Unblocks the check-lint gate broken by #120285's max-lines overflow.
2026-08-07 18:57:36 -07:00
Peter Steinberger dba9fb8509 fix(queue): deliver queued steers in arrival order across turn boundaries (#120420)
* fix(queue): deliver queued steers in arrival order across turn boundaries

* test(queue): align steer fallback with pre-dispatch injection
2026-08-07 18:52:46 -07:00
Peter Steinberger 67f1baea58 fix(ci): honor env- and config-selected Windows targets in crabbox run transforms (#120395) 2026-08-07 18:50:54 -07:00
Peter Steinberger cd53ac012d fix(ci): harden hydrated dead-export scans (#120365)
* fix(ci): harden hydrated dead-export scans

* fix(ci): satisfy lint and test-type gates for hydrated scan hardening
2026-08-07 17:20:05 -07:00
Peter Steinberger 7016b9c81d fix(ci): adopt dispatched release validation runs (#120342)
* fix(ci): adopt dispatched release validation runs

* test(ci): update release child validation guard

* fix(ci): cancel mismatched release children
2026-08-07 16:44:12 -07:00
joshavant 5cc2fa6249 fix(agents): defer recovered followups until drain 2026-08-07 18:42:57 -05:00
joshavant 7bcdb5823e test: prove repeated request recovery through gateway 2026-08-07 18:42:57 -05:00
joshavant 07680362ff Revert "refactor(agents): propagate exact attribution across runtimes"
This reverts commit df31882c38.
2026-08-07 18:40:17 -05:00
joshavant 2c8923fe94 Revert "fix(packaging): recognize owner-restricted plugin aliases"
This reverts commit a90c8d81df.
2026-08-07 18:40:17 -05:00
joshavant d4c9a4d8f1 Revert "feat(audit): preserve exact agent execution provenance"
This reverts commit 79b8775bc9.
2026-08-07 18:40:17 -05:00
Peter Steinberger fb0812c857 fix(qa): prevent false update-restart package failures (#120300)
* test(qa): expose update restart process exits

* test(qa): supervise update restart gateway

* test(qa): isolate supervised gateway environment

* test(qa): diagnose restart plugin convergence

* test(qa): mount trusted upgrade harness

* test(qa): include upgrade runtime companions

* test(qa): remove temporary restart diagnostics

* test(qa): enforce systemd restart budget

* test(qa): honor systemd stop timeout

* test(qa): tighten package fixture ownership

* test(qa): preserve unrelated lane shapes

* test(qa): complete service fixture boundaries
2026-08-07 14:46:59 -07:00
Vincent Koc 9195bd55c2 fix(ci): retire dead ClawSweeper commit dispatch (#120281)
* fix(ci): retire dead ClawSweeper commit dispatch

* docs(ci): preserve offline ClawSweeper review path
2026-08-08 05:39:08 +08:00
Peter Steinberger 45b1dbf962 test(qa): add managed-worktrees CLI lifecycle scenario coverage (#120335)
* test(qa): add managed-worktrees CLI lifecycle scenario coverage

Managed worktrees had zero QA scenario-pack coverage despite being a
headline feature. Mint agent-runtime.managed-worktrees-lifecycle in the
taxonomy, add a runtime scenario, and prove the real child CLI through
create with .worktreeinclude provisioning and the .openclaw setup hook,
dirty removal pinning a snapshot ref, restore rebuilding tracked,
untracked, and provisioned files with their modes, and gc preserving
manual worktrees.

* fix(qa): align model-switch catalog assertion with expectedAlternate flow

qa/scenarios/models/model-switch-follow-up.yaml switched to
expectedAlternate.model in 5a795f4dda but the catalog test still greps
for the retired alternate?.model literal; the test is outside the PR
change-classification lanes, so the break only surfaces on direct runs.

* test(qa): narrow managed-worktrees taxonomy description to proven manual-owner gc

ClawSweeper P2 on #120335: the scenario proves manual-owner gc retention
only; session and Workboard cleanup lifecycles are not exercised, so the
coverage description must not claim them.
2026-08-07 14:18:12 -07:00
Vincent Koc 3a0216ce29 fix(ci): accept neutral draft gate runs (#120310)
* fix(ci): accept neutral draft gate runs

* fix(ci): retain decisive gate success

* fix(ci): keep pending gate runs authoritative

* fix(ci): order hosted gates by creation
2026-08-08 04:53:10 +08:00
Vincent Koc 588d8bb853 fix(qa): preserve script evidence coverage (#120286) 2026-08-08 04:42:21 +08:00
Vincent Koc 8c68f74ef9 fix(ci): align hosted gates with workflow applicability (#120313) 2026-08-08 03:59:27 +08:00
Peter Steinberger 2fa9a29c77 test(plugins): add Agent Plugins gateway e2e with model-driven MCP tool call (#120303)
* test(plugins): add Agent Plugins gateway e2e with model-driven MCP tool call

* fix(test): wire Agent Plugins gateway E2E and assert activation
2026-08-07 11:47:07 -07:00
Peter Steinberger dcb125d202 fix: remove retired insecure auth guidance (#120295) 2026-08-07 09:45:48 -07:00
Vyctor H. Brzezowski b738e25780 docs: promote Release and CI navigation (#119802) 2026-08-07 09:21:57 -07:00
SunnyShu 3bc188efe5 fix(diagnostics-otel): keep telemetry exporting across in-process restarts (#120131)
* [AI] fix(diagnostics-otel): keep telemetry exporting across in-process restarts

Owned diagnostics-otel generations previously registered their OpenTelemetry
providers globally and only shut the providers down on stop. The pinned
sdk-node registers globals without override and never unregisters them, so a
second in-process generation (config-watcher reload, OPENCLAW_NO_RESPAWN=1,
containers) kept exporting through the first, already-shutdown providers and
telemetry silently stopped.

Switch owned mode to private BasicTracerProvider + MeterProvider instances
whose handles are injected directly into the existing recorder runtime, and
keep the preloaded (OPENCLAW_OTEL_PRELOADED=1) mode on the host's global
providers without ever registering or replacing globals. Resource detection
honors the pinned NodeSDK OTEL_NODE_RESOURCE_DETECTORS contract (unset
defaults to env+process+host; none/subset/all are respected), and the unused
@opentelemetry/sdk-node dependency is removed with a minimal lockfile update.

Adds a real-SDK two-generation restart regression, real-SDK resource-detector
selection coverage, migrates the unit mocks to the provider lifecycle, and
updates the OpenTelemetry docs.

Fixes #119997

Co-Authored-By: glm-5.2 <noreply@anthropic.com>

* [AI] test(diagnostics-otel): restore OpenTelemetry globals after restart test

The restart regression disables global context, metrics, propagation, and
trace APIs and forces OPENCLAW_OTEL_PRELOADED=0, but its cleanup only reset
diagnostic events, so a later test in the same worker could inherit no-op
providers. Snapshot the prior global registrations and preloaded env at
module load, and re-register/restore them in afterEach, matching the
existing exporter-health integration test pattern.

Co-Authored-By: glm-5.2 <noreply@anthropic.com>

* [AI] fix(diagnostics-otel): reconcile private providers with OTEL_SDK_DISABLED

Rebase onto main after #119961 (honor OTEL_SDK_DISABLED) changed the
disabled admission path to return before SDK construction. Restore the
removed getBooleanFromEnv import, drop the stale ownedNodeSdkDisabled
guard, and update disabled-mode tests to the new semantics (all routes
off, disabled runtime registered) plus the private-provider signal
path for the integration suite.

Related to #119997

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(diagnostics-otel): isolate restartable provider generations

* test(diagnostics-otel): prove same-pid generation routing

* test(diagnostics-otel): use supported watcher reload mode

* test(diagnostics-otel): satisfy ownership proof gates

* test(diagnostics-otel): use managed proof cleanup

* test(diagnostics-otel): verify injected trace ancestry

---------

Co-authored-by: glm-5.2 <noreply@anthropic.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-07 22:24:18 +08:00
Peter Steinberger aa7cf44c75 fix(install): Windows installer no longer reports failed doctor migration as complete (#120033)
* fix(install): Windows installer surfaces doctor migration failures

Invoke-OpenClawCommand ignored the child exit code, so a failed
'openclaw doctor --non-interactive' still printed '[OK] Migration complete'.
The wrapper now throws on nonzero exit and Run-Doctor reports the failure
with the exact command to rerun instead of claiming success.

* chore: re-fire CI

* chore: re-fire CI against fixed main baseline
2026-08-07 01:19:59 -07:00
Peter Steinberger 40ef8c5e68 test(gateway): restore startup environment after servers (#120137)
* fix(test): restore gateway startup environment

* fix(test): centralize gateway startup env cleanup

* test(gateway): restore live startup environment

* fix(test): complete gateway startup env lifecycle

* test(gateway): restore raw server owner environment

* test(qa): restore gateway producer environment
2026-08-07 01:06:16 -07:00
Vincent Koc 79b8775bc9 feat(audit): preserve exact agent execution provenance 2026-08-07 15:27:14 +08:00
Vincent Koc a90c8d81df fix(packaging): recognize owner-restricted plugin aliases 2026-08-07 15:07:12 +08:00