openclaw/scripts/e2e
Peter Steinberger 1ea2640f54
refactor(state): consolidate wide rows, plugin index, workspace attestations, and shared auth singletons at schema v13 (#130466)
* refactor(state): make cron and subagent rows JSON-canonical

* refactor(state): make gateway origin device tokens canonical at v13

The lazy ensure predates the table joining the canonical schema; at the
v13 bump the schema owns creation, so the feature-local DDL, WeakSet
dedupe, and lazy-list entry retire. The legacy-file guard the ensure
carried stays at each call site.

* test: drop obsolete lazy-ensure coverage for origin device tokens

The table is canonical at v13; same-version lazy creation no longer
exists to protect. Origin CRUD, isolation, and rotation coverage remains
in the surviving cases.

* refactor(state): fold installed_plugin_index into config_machine_state

The singleton index row becomes one JSON value under
plugins.installedIndex with its rollback-fencing revision inside the
value; reads, CAS restore, and the lease-held write transactions use
direct Kysely on config_machine_state so the state_leases assertion
stays in-transaction. The v13 migration imports the row and drops the
table; the additive workspace_dir entry folds with it. Doctor guidance,
docker staging, and the e2e probes name the machine-state row.

* refactor(state): merge workspace_attestations into workspace_setup_state

One row per workspace now carries both setup milestones and the
attestation clock: nullable setup columns represent attestation-only
workspaces (replaceWorkspaceAttestation can precede any setup write) and
setupExists derives from a non-null version. The bootstrap-hash FK
repoints to the merged table; migration receipts keep the historical
workspace_attestations discriminator string. The v13 migration grows and
rebuilds the table, merges attestation rows (orphans without a path
alias drop — their hashes re-derive at the next bootstrap attestation),
and the consolidation kind is renamed state-consolidation-v13 to cover
the batch.

* test(state): cover the workspace merge and consolidation fallout

The v12-to-v13 regression seeds merged, attestation-only, and orphan
attestation workspaces; the 13-to-12 downgrade fixture recreates
workspace_attestations and installed_plugin_index from the folded data;
the fold-in migration gates the additive workspace_dir column for
pre-additive rows; the workspace merge now triggers on the setup table's
own shape so stable-era databases without an attestations table still
reshape; the consolidation applied-message covers the batch.

* refactor(state): fold shared auth profile singletons into config_machine_state

The shared-state auth_profile_stores/auth_profile_state rows (fixed key
'shared') become authProfiles.store/authProfiles.state machine-state
values; the agent-DB tables of the same names are untouched. Git-backup
redaction moves from table-drop to the authProfiles. secret prefix with
seeded-secret absence proof; migration receipts keep the historical
table-name discriminators; the shared-auth relocation and receipt
verification project the KV cells back to the receipt-era row shapes so
persisted digests stay byte-compatible. mcp_oauth_stores stays a table —
its multi-key fold is a named follow-up.

* test(state): finish shared-auth fold coverage and annotate boundary casts

Auth seeders and assertions across the e2e/scripts/secrets suites target
the authProfiles machine-state cells; the v12-to-v13 regression proves
payload-byte fidelity, non-shared-row drop, and insert-if-absent
precedence; the downgrade fixture recreates and repopulates both v12
tables. Boundary type assertions in the plugin-index store carry SAFETY
invariants per the ratchet.

* chore: shrink assertion-safety baseline for plugin-index store

* refactor(doctor): delete the dead onboarding-recommendations migration

Its input — the unscoped 'primary' onboarding row — existed only between
9a93a52a8a and 473962b7de, a two-day beta window; no shipped stable
can produce it and the runtime table folded away at v12. The audit
backup list keeps recognizing system-agent.jsonl artifacts because beta
installs that ran that import may still carry its backups.

* docs: sync the 13-to-12 downgrade example with the executable fixture

* style: format the synced downgrade example

* style: drop unused import and duplicate union constituent

* fix(state): keep orphan attestations across the v13 workspace merge

The merged workspace_setup_state required a workspace path, but legacy
orphan hashed-key attestations never recorded one. workspace_path is now
nullable (setup rows still enforce it via CHECK), the v13 migration and
the doctor file import keep orphans with a NULL path that heals on the
next live access, and the 13-to-12 downgrade keeps attestation-owned
hashes. Doctor test seeds move to the folded KV row.

* perf(state): retire unused cron indexes

* fix(state): preserve v13 migration recovery

* fix(state): preserve v12 lazy-table upgrade

* docs(state): document v13 auth relocation

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-08-27 15:26:14 +08:00
..
lib refactor(state): consolidate wide rows, plugin index, workspace attestations, and shared auth singletons at schema v13 (#130466) 2026-08-27 15:26:14 +08:00
parallels fix(parallels): main install and update smoke cannot complete (#130658) 2026-08-26 21:24:22 -07:00
agent-bundle-mcp-tools-docker.sh
agents-delete-shared-workspace-docker.sh fix(ci): start gateway for agent delete Docker smoke (#122714) 2026-08-13 01:12:54 +08:00
browser-cdp-snapshot-docker.sh
browser-plugin-profiles-docker.sh fix(browser): preserve locale, timezone, and device overrides (#119695) 2026-08-05 12:29:26 -07:00
build-image.sh
bun-global-install-smoke.sh improve: verify packaged runtime on Bun 1.4 (#129552) 2026-08-25 23:41:05 -07:00
bundled-plugin-install-uninstall-docker.sh
cli-installer-distribution-docker.sh chore: refresh dependencies after seven-day cooldown (#128414) 2026-08-24 03:01:54 -07:00
codex-media-path-docker.sh
codex-npm-plugin-live-docker.sh test(release): preserve Codex follow-through finality (#125619) 2026-08-18 08:53:48 -07:00
codex-on-demand-docker.sh fix(release): stage Codex for npm onboarding candidates (#130360) 2026-08-26 16:58:45 -07:00
compose-setup.sh test(qa): prove container health endpoints (#119012) 2026-08-04 08:49:51 +08:00
config-reload-source-docker.sh
cron-cli-docker.sh fix(cron): reject unsupported generic timeout edits (#119899) 2026-08-06 19:45:59 +08:00
cron-mcp-cleanup-docker-client.ts ci(release): restore full validation after config migrations (#112740) 2026-07-23 08:46:55 -04:00
cron-mcp-cleanup-docker.sh
cron-mcp-cleanup-seed.ts refactor(config): config-surface reduction tranche 3 — product consolidations (review request) (#111527) 2026-07-21 20:28:43 -07:00
docker-openai-seed.ts
docker-package-install.sh fix(release): normalize package tarball modes and prove non-root install (#130335) 2026-08-26 13:24:13 -07:00
docker-selected-plugins.sh refactor(qqbot): install plugin from Tencent package (#107295) 2026-08-11 15:10:27 -07:00
Dockerfile chore: refresh dependencies after seven-day cooldown (#128414) 2026-08-24 03:01:54 -07:00
Dockerfile.qr-import chore: refresh dependencies after seven-day cooldown (#128414) 2026-08-24 03:01:54 -07:00
doctor-install-switch-docker.sh
gateway-concurrency-docker.sh fix(gateway): keep loaded conversations responsive under heavy load (#130071) 2026-08-26 05:42:01 -07:00
gateway-network-docker.sh fix(qa): resolve Docker harness script entrypoints (#121548) 2026-08-12 01:23:20 +08:00
kitchen-sink-plugin-docker.sh
kitchen-sink-rpc-docker.sh fix(qa): resolve Docker harness script entrypoints (#121548) 2026-08-12 01:23:20 +08:00
kitchen-sink-rpc-walk.mjs refactor(scripts): migrate JavaScript tools to TypeScript (#121005) 2026-08-09 07:21:35 -07:00
kitchen-sink-rpc-walk.mts refactor: consolidate coercion ownership (#122692) 2026-08-12 09:25:28 -07:00
live-plugin-tool-docker.sh
mcp-app-conformance-server.mjs chore: update dependencies across workspace (#115677) 2026-07-29 05:16:42 -04:00
mcp-channel-limits.ts
mcp-channels-docker.sh
mcp-channels-seed.ts fix(mcp): repair channel lifecycle ownership (#126592) 2026-08-20 01:14:43 -07:00
mcp-code-mode-gateway-client.ts improve(code-mode): call tools as global functions (#126262) 2026-08-20 12:18:23 -07:00
mcp-code-mode-gateway-docker.sh
mcp-code-mode-gateway-live-docker.sh
mcp-code-mode-gateway-seed.ts fix(agents): harden code mode module isolation (#114742) 2026-07-27 16:38:44 -04:00
mock-openai-server.mjs feat(e2e): record provider media content facts for Mantis proofs (#127830) 2026-08-22 16:30:30 +05:30
multi-node-update-docker.sh
npm-onboard-channel-agent-docker.sh fix(release): stage Codex for npm onboarding candidates (#130360) 2026-08-26 16:58:45 -07:00
npm-telegram-live-docker.sh fix(release): bind prerelease plugins into package Telegram QA (#129784) 2026-08-26 13:17:30 +08:00
npm-telegram-live-runner.ts fix(qa): run explicitly selected Telegram RTT scenarios (#128795) 2026-08-24 10:26:30 -07:00
onboard-docker.sh test(qa): cover CLI onboarding and plugin install sources (#118882) 2026-08-04 06:54:42 +08:00
openai-chat-tools-docker.sh
openai-image-auth-docker.sh
openai-web-search-minimal-docker.sh
openwebui-docker.sh chore: refresh dependencies after seven-day cooldown (#128414) 2026-08-24 03:01:54 -07:00
openwebui-probe.mjs refactor: consolidate coercion contracts (#122458) 2026-08-11 23:26:37 -07:00
parallels-linux-smoke.sh
parallels-macos-smoke.sh
parallels-npm-update-smoke.sh
parallels-windows-prepare.sh fix(parallels): main install and update smoke cannot complete (#130658) 2026-08-26 21:24:22 -07:00
parallels-windows-smoke.sh
plugin-binding-command-escape-docker.sh fix(ci): stabilize compact node shards (#129702) 2026-08-27 11:52:20 +08:00
plugin-binding-command-escape.Dockerfile chore: refresh dependencies after seven-day cooldown (#128414) 2026-08-24 03:01:54 -07:00
plugin-lifecycle-matrix-docker.sh
plugin-update-unchanged-docker.sh
plugins-docker.sh fix(e2e): expose redacted packaged plugin failures (#113635) 2026-07-25 04:48:08 -07:00
qa-cli-onboarding.mjs fix(qa): fail onboarding when required assertions are missing (#128277) 2026-08-23 09:40:41 -07:00
qa-plugin-install-sources.mjs test(qa): cover CLI onboarding and plugin install sources (#118882) 2026-08-04 06:54:42 +08:00
qr-import-docker.sh
release-media-memory-docker.sh
release-plugin-marketplace-docker.sh
release-typed-onboarding-docker.sh
release-upgrade-user-journey-docker.sh
release-user-journey-docker.sh
sandbox-browser-sidecar-docker.sh fix(agents): serialize sandbox provisioning (#115645) 2026-07-29 14:50:15 +08:00
session-runtime-context-docker-client.ts fix(ci): keep full release validation aligned with runtime state (#116653) 2026-07-31 23:03:02 +08:00
session-runtime-context-docker.sh
skill-install-docker.sh
status-corrupt-plugin-deps.sh refactor: remove expired plugin compatibility surfaces (#111451) 2026-07-19 11:04:48 -07:00
system-agent-first-run-docker.sh fix(onboarding): honor external gateway supervision (#119846) 2026-08-06 17:26:43 +08:00
system-agent-first-run-spec.json feat(anthropic): complete Claude Opus 5 rollout (#113392) 2026-07-24 14:55:36 -07:00
system-agent-rescue-docker-client.ts refactor(config): config-surface reduction tranche 3 — product consolidations (review request) (#111527) 2026-07-21 20:28:43 -07:00
system-agent-rescue-docker.sh
telegram-bot-api-proxy.ts feat(mantis): programmable proof boundaries with recipe library (#127782) 2026-08-22 11:06:06 +05:30
telegram-bot-api.ts refactor: consolidate coercion helpers (#121366) 2026-08-11 00:02:18 -07:00
telegram-desktop-crabbox.ts refactor(mantis): give Codex open-ended Telegram proof control (#128197) 2026-08-24 11:47:26 +05:30
telegram-desktop-recorder-contract.ts refactor(mantis): give Codex open-ended Telegram proof control (#128197) 2026-08-24 11:47:26 +05:30
telegram-desktop-recorder.ts refactor(mantis): give Codex open-ended Telegram proof control (#128197) 2026-08-24 11:47:26 +05:30
telegram-mantis-lane.ts chore: refresh dependencies after seven-day cooldown (#128414) 2026-08-24 03:01:54 -07:00
telegram-mantis-sut.ts feat(mantis): give the proof agent a developer shell and gateway restart (#128094) 2026-08-23 10:20:45 +05:30
telegram-user-crabbox-proof.ts feat(e2e): record provider media content facts for Mantis proofs (#127830) 2026-08-22 16:30:30 +05:30
telegram-user-credential-io.ts refactor(tooling): unify benchmark and process helpers (#125491) 2026-08-17 19:08:22 -07:00
telegram-user-credential-paths.ts
telegram-user-credential.ts feat(mantis): keep QA leases alive and stage fixture plugins (#127804) 2026-08-22 14:09:28 +05:30
telegram-user-driver.py fix(qa): replace Linux-only /proc probes in the Telegram proof harness (#127718) 2026-08-21 17:45:12 -07:00
update-channel-switch-docker.sh fix(release): preserve native prebuilds in git fixtures (#128210) 2026-08-23 05:33:05 -07:00
update-corrupt-plugin-docker.sh
update-run-package-self-upgrade-docker.sh chore(gateway): cover update and setup RPCs 2026-08-04 09:15:55 +08:00
upgrade-survivor-docker.sh fix(release): bind prerelease plugins into package Telegram QA (#129784) 2026-08-26 13:17:30 +08:00