Files
openclaw/qa/scenarios/runtime/cloud-worker-disappearance.yaml
Peter Steinberger f6298bf84d fix(workers): preserve disappeared-worker failures across restarts (#121122)
* fix(workers): persist placement terminal failures

* fix(workers): refresh placement protocol clients

* refactor(workers): isolate error formatting

* fix: integrate cloud terminal state with current main

* chore(plugin-sdk): refresh API baseline

* refactor(ui): inline one-use cloud terminal-reason banner helper

Keeps the Control UI startup JS bundle inside its 317 KiB gzip budget
(the helper + type-only import tipped it by 16 bytes).

* refactor(ui): trim terminal-reason lookup to type-erased optional access

Recovers the last gzip byte of the Control UI startup budget
(324609 B vs the 324608 B limit).
2026-08-10 00:36:52 -07:00

36 lines
1.8 KiB
YAML

title: Cloud worker disappearance recovery
scenario:
id: cloud-worker-disappearance
surface: gateway
category: gateway.session-apis
coverage:
secondary:
- gateway.session-apis-sessions-list
- gateway.restart-and-stop-gateway-restart
objective: Prove an isolated Gateway records an unexpected worker disappearance as a durable per-session failure and keeps another session on the same environment isolated.
successCriteria:
- A real qa-channel turn succeeds through the mock OpenAI provider before worker state is injected.
- The static-SSH mock worker provider reports its seeded active lease as unknown during restart reconciliation.
- The active placement becomes failed with a bounded cloud-worker-disappeared terminal reason and timestamp.
- A second failed session referencing the same environment retains its own distinct terminal reason.
- Two additional Gateway replacements preserve both terminal reasons and the original terminal timestamps.
- environments.list continues to expose the environment-scoped orphaned error independently.
docsRefs:
- docs/gateway/cloud-workers.md
- docs/concepts/qa-e2e-automation.md
- docs/channels/qa-channel.md
codeRefs:
- src/gateway/worker-environments/placement-pending-failure.ts
- src/gateway/worker-environments/placement-dispatch-recovery.ts
- src/gateway/worker-environments/placement-projector.ts
- test/e2e/qa-lab/runtime/cloud-worker-disappearance-proof.ts
execution:
kind: script
path: test/e2e/qa-lab/runtime/cloud-worker-disappearance-proof.ts
summary: Runs qa-channel and mock OpenAI through an isolated child Gateway, seeds a static-SSH lease that becomes unknown, restarts three times, and writes a per-session isolation verdict.
timeoutMs: 240000
args:
- --artifact-base
- ${outputDir}