openclaw/test
Vincent Koc 3ca2b4e370
fix(plugins): retain update authority through doctor effects (#144316)
* refactor(test): centralize worker declaration metadata

Replay the reviewed first tooling layer on the current frozen main base. Keep package activation declarations reserved for the later owning layers; preserve the inherited main build graph and test coverage.

* fix(update): bind recovery admission to existing authority

Replay the reviewed authority layer on current main, preserving the diagnostics import owner. Retain Json (fuller-stack-dev) rollback-journal and Bun regression coverage; restore NORMAL reader policy after rollback-mode admission so retained Bun statements do not hold locks after settlement. Later FD3 custody remains in its owning layer.

* fix(config): retain authority across config persistence

Replay the accepted config authority layer without behavioral changes. Preserve producer-owned write guards through backup, snapshot, persistence, reread, and error settlement.

* fix(plugins): fence convergence with lifecycle authority

Replay the accepted plugin authority layer without behavioral changes. Keep install-record, peer-link, retention, doctor repair, and cohort operations under their existing canonical lease owners.

* fix(plugins): preserve first authority refusal during repair

Keep authority failures outside filesystem warning conversion, retain the first callback refusal through normalized installer outcomes, and join admitted peer repairs before rejection. Preserve the synchronous peer guard and lease-bound index CAS finalizer.

Adapt the Doctor and convergence ownership pattern from Jason Sy in #144130. Focused red/green: 23 failures became 32 passes; full peer and retention controls pass 37 cases. Native review raised an overlapping async callback scenario; source review rejects it because the current per-invocation Doctor path is serial. Root final-effect and installed integration gates remain open.

Co-authored-by: Jason (Json) <263060202+fuller-stack-dev@users.noreply.github.com>

* fix(config): refuse guarded include writes before effects

Reject include-owned mutations carrying inherited authority, explicit assertCurrent, or beforeCommit before Root preparation and backup effects. Remove the unreachable guarded include publisher and retain ordinary include publication and custom-root IO ownership.

Three missing-refusal regressions reproduced before the repair. All 107 cases in mutate, io.write-lock and io.write-reread pass, including ordinary include exclusion and compensation controls. Native P1 review is scoped-clean. The fs-safe final-effect contract and installed candidate integration remain separate draft gates.

* fix(config): retain update authority through runtime activation

* fix(plugins): repair leased authority CI coverage

Remove the unused unleased record writer and seed test fixtures through the canonical store producer. Keep compiled Doctor fixture module identity and direct leased-writer assertions.

Bind registry authority callbacks and correct the focused fixture typing and lint errors without weakening refusal checks. Independent source review and native P0/P1 review passed; runtime and hosted CI qualification remain pending.

* test(plugins): omit redundant deferred type arguments

Use the existing void generic default for the three deferred test controls. The correction emits byte-identical JavaScript and preserves all assertions.

This trivial test-only delta was independently verified after the full L4 P0/P1 review. The earlier focused 295-test and selected typecheck passes remain source-bound; the failed lint surface and unrun export scans still require qualification.

* test(plugins): cover synchronous host-link admission turns

Retain the three filesystem API-entry scheduling controls contributed by Jason Sy (@fuller-stack-dev) in https://github.com/openclaw/openclaw/pull/144316#issuecomment-5632474077.

Cover missing node_modules, stale symlink, and package-copy replacement while preserving the existing synchronous authority contract and test seed helper. These controls observe API-entry timing, not native filesystem-effect atomicity or an observed regression on this source.

Independent exact-block review and fresh full L4 native P0/P1 review passed. Targeted execution of these added cases remains pending.

* fix(plugins): retain updater authority through package settlement

* test(plugins): verify publication across updater revocation

* fix(test): satisfy updater authority lint rules

* test(plugins): isolate explicit update home fixture

* refactor(plugins): centralize installed update options

* style(plugins): format retained settlement fixture

* test(plugins): accept capabilities in retained settlement proof

* test(plugins): type retained settlement controls

* fix(plugins): preserve lifecycle refusal across persistent effects

Latch ownership refusal within install-record commits and forward the composed plugin lease to post-core peer effects. Add real-boundary regression controls for transient lease reads and raw plugin lease revocation.

Independent and native source reviews passed. Matching targeted formatting passed; runtime, type, lint, and packaged qualification remain pending.

* refactor(plugins): consolidate successful update records

Keep source-specific install metadata while recording capability consent and the completed install through one shared path. Protect installed-version precedence over embedded ClawHub metadata.

* test(update): join legacy finalization fixtures before cleanup

* test(update): use supported parameterized timeout options

* fix(plugins): share lifecycle refusal with package settlement

Keep the first lifecycle authority refusal visible to outer retained
package transactions after metadata publication, including transient
lease reads. Preserve ordinary-error and fresh-owner recovery paths.

---------

Co-authored-by: Jason (Json) <263060202+fuller-stack-dev@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-09-13 15:26:58 -06:00
..
contracts fix: ask_user suggests tapping options without buttons (#137978) 2026-09-06 08:36:57 -07:00
e2e fix(plugins): retain update authority through doctor effects (#144316) 2026-09-13 15:26:58 -06:00
fixtures test(tailscale): speed up startup timeout coverage (#146520) 2026-09-12 16:54:22 -07:00
helpers refactor(reply): share export output line formatting (#147140) 2026-09-14 02:20:18 +08:00
mocks
plugins fix(session-share): hide subagents and tool activity (#146598) 2026-09-12 18:19:41 -07:00
scripts fix(memory): emit one JSON result for command failures (#147366) 2026-09-13 14:25:55 -07:00
tsconfig improve(model-catalog): avoid duplicate manifest planning during preparation (#143502) 2026-09-13 22:37:41 +08:00
type-contracts refactor: check pure type contracts without runtime test cases (#143888) 2026-09-10 04:39:37 -07:00
vitest fix(gateway): continue on Gateway with pending offline results (#147390) 2026-09-14 02:33:23 +05:30
agent-exec-code-mode.live.test.ts fix: skip official setup approvals and default to Astra (#145646) 2026-09-12 00:34:25 -07:00
AGENTS.md
appcast.test.ts fix(release): run Sparkle CLI through symlinked checkouts (#142315) 2026-09-08 09:27:03 -07:00
architecture-smells.test.ts
buzz-account-config-mutation.test.ts
canonical-descendant.integration.test.ts improve: use compiled Doctor contracts in built checkouts (#144676) 2026-09-11 00:49:15 -07:00
CLAUDE.md
clawrouter-managed-gateway.e2e.test.ts test(clawrouter): refresh catalog before asserting models (#143692) 2026-09-10 00:10:48 -07:00
cli-json-stdout.agents.e2e.test.ts
cli-json-stdout.automation.e2e.test.ts
cli-json-stdout.config.e2e.test.ts
cli-json-stdout.e2e.test.ts fix(cli): keep qr --setup-code-only --json machine-readable (#137209) 2026-09-06 00:13:05 -07:00
cli-json-stdout.gateway.e2e.test.ts
cli-json-stdout.hooks.e2e.test.ts
cli-json-stdout.models.e2e.test.ts
cli-json-stdout.plugins.e2e.test.ts fix(plugins): keep diagnostic details in Doctor JSON (#147020) 2026-09-13 07:06:02 -07:00
cli-json-stdout.sessions.e2e.test.ts
cli-json-stdout.skills.e2e.test.ts
cli-json-stdout.test-support.ts
cli-state-sqlite.e2e.test.ts
copilot-tool-policy-handoff.integration.test.ts fix(agents): preserve disabled tools at plugin handoff (#142093) 2026-09-09 18:13:53 +05:30
copilot-tool-policy-handoff.live.test.ts fix(agents): preserve disabled tools at plugin handoff (#142093) 2026-09-09 18:13:53 +05:30
cron-edit-trigger-preservation.e2e.test.ts
discord-live-policy.integration.test.ts fix(discord): apply access policy during active Control UI turns (#140929) 2026-09-07 00:23:28 -07:00
doctor-copied-state-migration.e2e.test.ts
doctor-legacy-whatsapp-ack-migration.e2e.test.ts
dreaming-startup-cleanup.e2e.test.ts
embedded-transcript-cursor.e2e.test.ts
extension-import-boundaries.test.ts perf: share extension boundary check inventory (#146771) 2026-09-12 23:27:30 -07:00
extension-test-boundary.test.ts feat: manage and reload plugins without Gateway restarts (#145484) 2026-09-11 23:12:58 -07:00
external-script-modules.d.ts
gateway-account-history.e2e.test.ts
gateway-cold-agent-abort.e2e.test.ts
gateway-copied-codex-session-resume.e2e.test.ts fix(plugins): retain update authority through doctor effects (#144316) 2026-09-13 15:26:58 -06:00
gateway-external-state-ownership.e2e.test.ts fix(test): preserve release fixture runtime contracts (#147158) 2026-09-13 13:36:59 -07:00
gateway-hook-concurrency.e2e.test.ts fix(gateway): expose agent hook completion outcomes (#139155) 2026-09-06 01:36:46 +09:00
gateway-no-op-mutation.e2e.test.ts
gateway-openai-compaction-replay.e2e.test.ts
gateway-queued-session-rotation.e2e.test.ts
gateway-restored-requester-settle.e2e.test.ts fix(subagents): let requester follow-ups finish after child completion (#138966) 2026-09-05 14:05:14 -04:00
gateway-rpc-exporters.test.ts
gateway-session-end-shutdown.e2e.test.ts
gateway-steer-fifo.e2e.test.ts fix: canceled steering messages still reach active runs (#145809) 2026-09-12 10:08:06 +01:00
gateway-widget-restart.live.test.ts fix: preserve tool context across agent backends (#139840) 2026-09-06 00:12:50 -07:00
gateway.multi.e2e.test.ts fix(gateway): preserve one elapsed node invocation budget (#137147) 2026-09-10 12:13:09 +05:30
git-hooks-pre-commit-boundaries.test.ts
git-hooks-pre-commit.test-support.ts
git-hooks-pre-commit.test.ts
github-cli-preflight.e2e.test.ts
huggingface-local-app-openclaw.e2e.test.ts
image-generation.infer-cli.live.test.ts
image-generation.runtime.live.test.ts
jsdom-custom-elements.test.ts
jsdom-custom-elements.ts
line-question-gateway.test.ts feat(line): let a LINE tap answer the question an agent asked (#133421) 2026-09-10 20:31:40 -07:00
linux-dashboard-recovery.test.ts fix(linux): explain FreeBSD desktop setup prerequisites (#147211) 2026-09-14 02:49:27 +08:00
linux-quickchat-stream.test.ts fix(linux): recover completed Quick Chat replies without resending (#146048) 2026-09-14 02:16:00 +08:00
loopback-ask-user-telegram-channel.test.ts fix(test): await Telegram loopback prompt reception (#141204) 2026-09-07 05:22:57 -07:00
mcp-show-redact.e2e.test.ts
non-isolated-runner.mock-resolution-fixtures.ts fix(gateway): classify opening timeouts and repair lifetime checks (#146508) 2026-09-12 17:13:42 -07:00
non-isolated-runner.test-api-fixtures.ts refactor(ai): remove Responses transport test global (#143850) 2026-09-10 01:54:29 -07:00
non-isolated-runner.test.ts fix(runtime): support Bun across tooling suite (#146807) 2026-09-13 03:33:13 -07:00
non-isolated-runner.ts fix(gateway): classify opening timeouts and repair lifetime checks (#146508) 2026-09-12 17:13:42 -07:00
npm-publish-plan.test.ts fix(ci): check publication registries before FRV fanout (#147184) 2026-09-14 02:07:41 +08:00
oauth-refresh-authority-chain.e2e.test.ts fix(auth): fence shared OAuth refresh generations (#141477) 2026-09-09 02:08:10 +08:00
official-channel-catalog.test.ts
onboard-plugin-warnings.e2e.test.ts
openai-model-discovery-auth-order.test.ts fix(models): make discovered models available to new turns (#145726) 2026-09-12 17:09:10 +05:30
openai-onboarding.live.test.ts fix: skip official setup approvals and default to Astra (#145646) 2026-09-12 00:34:25 -07:00
openclaw-launcher-version.e2e.test.ts fix(update): report the built runtime instead of the unbuilt source version (#143538) 2026-09-10 16:06:37 -07:00
openclaw-launcher.e2e.test.ts fix: preserve child signal termination during CLI respawn (#144838) 2026-09-11 12:05:59 +01:00
openclaw-npm-postpublish-verify.test.ts chore(deps): advance cooled dependencies and major upgrades (#146258) 2026-09-12 13:28:12 -07:00
openclaw-npm-prepublish-verify.test.ts
openclaw-npm-release-check.test.ts fix(release): allow shipped Markdown guides in npm checks (#143699) 2026-09-09 23:18:18 -07:00
openclaw-prepack.test.ts fix(runtime): support Bun across tooling suite (#146807) 2026-09-13 03:33:13 -07:00
outbound-sanitize-text-delivery.test.ts
package-manager-config.test.ts chore(test): migrate to stable Vitest 5 (#138264) 2026-09-06 04:17:59 +09:00
package-scripts.test.ts fix(update): complete plugin runtime artifacts on first Git update (#145664) 2026-09-12 07:46:15 -07:00
plugin-clawhub-metadata.test.ts fix(release): publish frozen plugins with valid ClawHub categories (#144615) 2026-09-11 00:22:21 -07:00
plugin-clawhub-release.test.ts fix(ci): check publication registries before FRV fanout (#147184) 2026-09-14 02:07:41 +08:00
plugin-cron-registry-owner.e2e.test.ts fix(test): align recovery and history fixtures with runtime contracts (#139733) 2026-09-05 23:04:10 -07:00
plugin-extension-import-boundary.test.ts
plugin-npm-package-manifest.test.ts feat: give every plugin a compact chat activity icon (#147333) 2026-09-13 13:49:51 -07:00
plugin-npm-release.test.ts fix(ci): check publication registries before FRV fanout (#147184) 2026-09-14 02:07:41 +08:00
plugin-npm-runtime-build.test.ts feat: give every plugin a compact chat activity icon (#147333) 2026-09-13 13:49:51 -07:00
pr111899-accepted-run-transport-loss.e2e.test.ts fix(cli): identify accepted runs after agent transport loss (#111899) 2026-09-08 22:22:59 +05:30
pr119473-real-runtime-proof.e2e.test.ts
pr126853-heartbeat-visible-lane-proof.e2e.test.ts
pr142176-real-runtime-proof.e2e.test.ts fix(agents): retry silent malformed tool rejections (#142176) 2026-09-09 08:54:18 +05:30
progress-card-channel-literals.integration.test.ts fix(channels): show progress-card notes in drafts (#144790) 2026-09-13 21:08:45 +05:30
qa-channel-message-tool-delivery.test.ts
qa-convex-credential-payload-validation.test.ts
release-check.test.ts fix(npm): verify plugin-owned runtime chunks (#141876) 2026-09-08 00:11:14 -07:00
release-version.test.ts
repository-test-api-publications.ts refactor(tests): retire Doctor sandbox test bridge (#147214) 2026-09-13 13:50:34 -07:00
runtime-agent.codex-initialization.integration.test.ts
setup-home-isolation.test.ts
setup-openclaw-runtime.ts fix: close prepared model runtimes before auth teardown (#141280) 2026-09-07 09:08:23 -07:00
setup.env.ts
setup.extensions.ts perf(sessions): keep cleanup responsive and reuse workers (#140897) 2026-09-13 05:06:06 -07:00
setup.shared.ts
setup.signal.ts fix(signal): refuse account deletion that activates a shadowed identity (#145981) 2026-09-12 20:54:39 +05:30
setup.ts fix: prepare Bun SQLite before Vitest workers (#145198) 2026-09-11 13:08:29 -07:00
skills-proposal-manual-target.e2e.test.ts fix(qa): align auth and Workshop proofs with runtime contracts (#142280) 2026-09-08 08:49:35 -07:00
slack-outbound-permanent-rejection-loopback.test.ts
stable-release-closeout.test.ts refactor: split release changelogs and synchronize docs mirrors (#145464) 2026-09-11 21:19:18 -07:00
status-shared-state-readonly.e2e.test.ts fix(plugins): retain update authority through doctor effects (#144316) 2026-09-13 15:26:58 -06:00
subagent-announce-origin.integration.test.ts fix: keep subagent completions on the selected conversation (#144704) 2026-09-11 03:00:41 -07:00
subagent-requester-owner.e2e.test.ts fix(subagents): completion can fail when requester key is unscoped (#141480) 2026-09-08 16:39:42 +05:30
system-agent-managed-auth.e2e.test.ts fix(setup): New Agent fails with protected provider credentials (#141586) 2026-09-07 17:40:04 -07:00
talk-browser-defaults.test.ts feat(openai): support GPT-Live and default Talk by account (#145382) 2026-09-11 20:42:25 -07:00
telegram-outbound-permanent-rejection-loopback.test.ts fix(telegram): replies are lost when the HTTP proxy refuses the tunnel (#140388) 2026-09-10 02:31:34 +05:30
telegram-question-gateway.test.ts feat(codex): add plugin setup, status, refresh, and catalog search (#132158) 2026-09-09 19:56:41 -07:00
telegram-recovery-notice-send.test.ts fix(agents): announce channel turns resumed after restart (#141797) 2026-09-13 13:04:00 -04:00
telegram-reply-conversation.test.ts fix(auto-reply): preserve automation conversation and delivery ownership (#133323) 2026-09-05 03:12:22 -07:00
test-env.state-lifetime.test.ts refactor(tests): import SQLite cleanup from native owners (#145731) 2026-09-12 00:29:25 -07:00
test-env.test.ts fix(gateway): install despite stale Linux session bus addresses (#146569) 2026-09-13 06:45:35 -07:00
test-env.ts fix(gateway): install despite stale Linux session bus addresses (#146569) 2026-09-13 06:45:35 -07:00
test-helper-extension-import-boundary.test.ts
test-home-context.mts
test-home-policy.mts
transcripts-discord-audio.integration.test.ts improve(gateway): reduce redundant startup work (#147165) 2026-09-13 09:55:36 -07:00
transcripts-tool.discord-lifecycle.integration.test.ts fix(release): publish frozen plugins with valid ClawHub categories (#144615) 2026-09-11 00:22:21 -07:00
transcripts-tool.discord-provider.integration.test.ts fix(discord): keep recording independent of voice conversations (#139658) 2026-09-05 23:20:29 -07:00
tsconfig.json
twitch-message-tool-delivery.test.ts
ui.presenter-next-run.test.ts
vitest-boundary-config.test.ts
vitest-cli-ownership.test.ts
vitest-dependency-resolution.test.ts
vitest-light-paths.test.ts
vitest-performance-config.test.ts chore(test): migrate to stable Vitest 5 (#138264) 2026-09-06 04:17:59 +09:00
vitest-projects-config.test-support.ts improve(test): avoid full builds for session history HTTP checks (#143096) 2026-09-09 22:04:58 +09:00
vitest-projects-config.test.ts refactor(workboard): keep SQLite work off the Gateway event loop (#146976) 2026-09-13 09:56:53 -07:00
vitest-reporters-config.test.ts perf(test): resolve the root project graph once in its owner (#141908) 2026-09-07 23:11:28 -07:00
vitest-scoped-config.test.ts fix: keep SQLite worker tests on fork hosts (#146991) 2026-09-13 08:04:53 -07:00
vitest-ui-e2e-config.test.ts fix(ci): avoid overloaded jobs when runtime test groups grow (#147095) 2026-09-13 09:09:28 -07:00
vitest-ui-e2e-prebuilt.test.ts fix(update): keep old updaters able to restart the Gateway (#142195) 2026-09-08 10:43:46 -07:00
vitest-ui-package-config.test.ts chore(test): migrate to stable Vitest 5 (#138264) 2026-09-06 04:17:59 +09:00
vitest-unit-config.test.ts
vitest-unit-fast-config.test.ts perf(test): scope fast-test source analysis to CLI selections (#142912) 2026-09-09 00:41:31 -07:00
vitest-unit-paths.test.ts