chore: fold release upgrade Docker lanes into QA#97689
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 29, 2026, 2:50 AM ET / 06:50 UTC. Summary PR surface: Other +255. Total +255 across 7 files. Reproducibility: not applicable. This PR is QA evidence wiring around existing Docker lanes rather than a reported runtime bug. Source inspection verifies the catalog and script-runner paths that would exercise the new scenarios. Review metrics: 1 noteworthy metric.
Stored data model Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Security Review detailsBest possible solution: Keep the Docker shell scripts authoritative and land the QA wrappers after either a representative wrapper lane is run in Docker/Testbox or maintainers intentionally accept wrapper-only validation for this cleanup. Do we have a high-confidence way to reproduce the issue? Not applicable; this PR is QA evidence wiring around existing Docker lanes rather than a reported runtime bug. Source inspection verifies the catalog and script-runner paths that would exercise the new scenarios. Is this the best way to solve the issue? Yes, this is an appropriate owner-boundary fix: QA Lab gets thin scenario wrappers while the existing Docker shell scripts remain authoritative. A representative wrapper run would reduce the only material proof gap before merge. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against b01e6127d96c. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Other +255. Total +255 across 7 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
What Problem This Solves
Release and update Docker E2E lanes already proved package install, release upgrade, update restart, update status, and plugin convergence behavior, but QA Lab could not select them as scenario evidence for the existing maturity coverage IDs.
Why This Change Was Made
This adds QA scenario YAML wrappers for the existing Docker E2E lanes and one tiny
scripts/qa/docker-e2e-lane.tsdispatcher that invokes those existing shell entrypoints. The Docker shell scripts stay authoritative for setup and assertions; this PR only makes them selectable throughpnpm openclaw qa suite --scenario ...and visible in QA coverage inventory.Primary coverage added:
docker-release-user-journey:docker.release-path-installbecause it installs the packed tarball in Docker and verifies onboarding, agent turn, plugin install/uninstall, ClickClack messaging, Gateway restart, and doctor.docker-release-upgrade-user-journey:docker.release-path-install,docker.release-workflowbecause it installs a published baseline, upgrades to the candidate tarball, then reruns the release journey through agent/plugin/channel/Gateway assertions.docker-update-channel-switch:cli.install-kind-switching,cli.update-status-and-rpcbecause it switches package -> git -> package and assertsopenclaw update status --jsonafter each switch.docker-update-restart-auth:cli.managed-gateway-restartbecause it runs the update-restart-auth upgrade-survivor lane where update owns the managed Gateway restart without caller-owned Gateway auth env.docker-upgrade-survivor:cli.update-status-and-rpcbecause it runs update/doctor over dirty user state and asserts Gateway health, readiness, andgateway status --require-rpc --jsonafter the update.docker-update-migration:cli.plugin-convergencebecause it runs the plugin-deps-cleanup upgrade-survivor variant and requires candidate update plus doctor to clean legacy plugin dependency roots before final probes pass.User Impact
Maintainers can now include these existing release/update Docker proofs in QA Lab evidence runs without duplicating the Docker tests or changing the taxonomy.
Evidence
node scripts/run-vitest.mjs extensions/qa-lab/src/scenario-catalog.test.ts --reporter=verbosepassed: 30 tests.node scripts/run-oxlint.mjs --tsconfig tsconfig.json scripts/qa/docker-e2e-lane.tspassed.node scripts/run-tsgo.mjs -p tsconfig.json --pretty falsepassed.git diff --checkpassed.pnpm openclaw qa coverage --match docker-release --jsonshoweddocker-release-user-journeyanddocker-release-upgrade-user-journeywith the expected coverage IDs.pnpm openclaw qa coverage --match docker-update --jsonshowed update-channel-switch, update-restart-auth, and update-migration with the expected coverage IDs.pnpm openclaw qa coverage --match docker-upgrade --jsonshowed upgrade-survivor with the expected coverage IDs..agents/skills/autoreview/scripts/autoreview --mode localpassed with no accepted/actionable findings.Not run locally: the Docker lanes themselves. This PR does not change their Docker/runtime logic; it wires existing heavy lanes into QA Lab scenario metadata.