openclaw/docs
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
..
.generated feat(channels): post a grounded introduction when the bot joins a group room (#130103) 2026-08-26 21:02:26 -07:00
.i18n docs(memory): add memory provenance and deletion concepts page (#130278) 2026-08-26 11:36:39 -07:00
announcements feat(plugins): externalize iMessage channel (#117101) 2026-08-01 08:01:18 +08:00
assets
automation docs(hooks): clarify setup and execution contracts (#130734) 2026-08-26 23:12:06 -07:00
channels fix(matrix): show recovery key availability in text status (#128051) 2026-08-26 21:38:32 -07:00
clawhub fix(skills): provide safe workspace-specific malicious skill remediation (#118969) 2026-08-03 14:39:02 -07:00
cli 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
concepts fix: filter watched-session presence for each recipient (#130764) 2026-08-27 00:07:48 -07:00
debug chore(scripts): remove resolved investigation tools and orphans (#113532) 2026-07-25 02:47:40 -07:00
diagnostics docs: retire config keys that strict validation rejects (#113956) 2026-07-25 18:24:02 -07:00
gateway fix: hide unsupported cloud machine class overrides (#130766) 2026-08-27 00:03:45 -07:00
help feat(models): add configurable model selection scopes (#127813) 2026-08-26 14:31:56 -07:00
images
install 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
maturity docs: compact generated maturity scorecard rows (#130331) 2026-08-26 14:32:19 -07:00
nodes fix(apple): load chat media behind reverse-proxy paths (#130755) 2026-08-27 00:21:17 -07:00
plan feat(gateway): auto-suspend idle cloud workers with suspendAfter (#130242) 2026-08-26 11:30:25 -07:00
platforms fix(macos): detect screen recording permission after granting access (#130530) 2026-08-26 18:20:26 -07:00
plugins 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
providers fix(github-copilot): preserve catalog thinking efforts in requests (#107834) 2026-08-26 21:09:21 -07:00
refactor 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
reference 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
releases docs: repair spellcheck and anchor drift (#122960) 2026-08-12 20:50:56 -07:00
security feat(cron): enable automation triggers by default (#125025) 2026-08-17 01:12:10 -07:00
snippets/plugin-publish chore(deps): refresh dependencies after seven-day cooldown (#130296) 2026-08-26 16:13:18 -07:00
specs improve: stream native sessions as hosts finish (#110211) 2026-07-17 23:59:57 +01:00
start docs(start): add trust-boundary, policy-chain, and secrets diagrams to Why OpenClaw (#130776) 2026-08-27 00:21:12 -07:00
tools docs(hooks): clarify setup and execution contracts (#130734) 2026-08-26 23:12:06 -07:00
web fix(ui): expose complete cloud failure diagnostics (#130672) 2026-08-26 22:22:41 -07:00
agent-runtime-architecture.md refactor: own model discovery by runtime lifecycle (#111173) 2026-07-19 05:30:54 -07:00
AGENTS.md feat(docs-ci): validate docs config examples against the schema (#121336) 2026-08-10 07:57:56 -07:00
auth-credential-semantics.md fix(auth): honor shared-store ownership in temp-state exec and agent deletion (#130437) 2026-08-26 16:09:33 -07:00
brave-search.md
ci.md fix(ci): unify release-gate runner profile (#130095) 2026-08-27 13:24:23 +08:00
CLAUDE.md
date-time.md docs: correct timezone configuration contract (#116102) 2026-07-30 06:23:50 +08:00
docs.json docs(start): add Why OpenClaw enterprise architecture page (#130709) 2026-08-26 23:12:01 -07:00
docs_map.md docs: generate docs map at publish time (#117398) 2026-08-01 07:01:43 -07:00
index.md refactor(canvas): make the panel a widget presenter (#126030) 2026-08-19 08:21:07 -07:00
logging.md fix: preserve source code in tool results (#127697) 2026-08-22 13:30:45 +05:30
nav-tabs-underline.js
network.md refactor(canvas): make the panel a widget presenter (#126030) 2026-08-19 08:21:07 -07:00
openclaw-agent-runtime.md
perplexity.md
prose.md refactor(plugins)!: remove OpenProse (#128494) 2026-08-24 10:39:46 +05:30
style.css fix(docs): expose generated taxonomy links 2026-07-15 07:28:58 -04:00
tts.md
vps.md docs: align systemd host tuning with managed policy (#128752) 2026-08-24 08:38:27 -07:00
whatsapp-openclaw.jpg