RFC 0013: SQLite snapshot backup artifacts - #20
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed August 15, 2026, 12:02 AM ET / 04:02 UTC. ClawSweeper reviewWhat this changesThis PR adds a completed RFC documenting OpenClaw’s SQLite-safe backup artifacts, verification boundary, and fresh-target restore workflow. Merge readinessKeep open for a maintainer lifecycle decision: the RFC is useful, but its unchanged frontmatter records a pull request as the accepted implementation Priority: P3 Review scores
Verification
How this fits togetherThe documented backup boundary turns a live OpenClaw-owned SQLite database into a verified local snapshot directory for operators or hosts to retain. A fresh target can then restore that artifact before reopening the database. flowchart LR
A[Live SQLite database] --> B[Backup command]
B --> C[SQLite-safe snapshot capture]
C --> D[Manifest and hash verification]
D --> E[Immutable snapshot directory]
E --> F[Fresh-target restore]
Decision needed
Why: The repository process requires an explicit acceptance/implementation issue, and the review cannot infer whether an external implementation pull request represents that missing governance record. Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Root-cause clusterRelationship: Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Retain a compact completed RFC only after it records the formal accepted implementation issue and separately links the landed implementation pull request as supporting evidence. Do we have a high-confidence way to reproduce the issue? Not applicable: this is a documentation-only RFC, and the blocker is an inspectable lifecycle-metadata inconsistency rather than runtime behavior. Is this the best way to solve the issue? No: marking the RFC completed while its required Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against af708f0ddb6f. LabelsLabel changes:
Label justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (45 earlier review cycles; latest 8 shown)
|
|
@clawsweeper re-review Updated the PR body with final-head RFC proof, including head SHA, diff stat, frontmatter, line count, and git diff --check output. The maintainer-discussion thread remains pending maintainer-side Discord action/access, and acceptance metadata is intentionally unchanged while draft. |
|
🦞🧹 I asked ClawSweeper to review this item again. |
|
Hey @vincentkoc — we have learned a lot since we first started running the Your #105718 implementation gave us the native owner seam we were missing. The We also confirmed that current The real process/container proof also clarified where snapshot semantics should
We have updated this PR body to match the landed implementation and current RFC |
|
Follow-on sidecars are now isolated in draft PR #46 rather than expanding this
This keeps PR #20 narrow and lets the lifecycle contracts receive independent |
Summary
RFC 0013 defines the SQLite-safe artifact boundary now implemented by
openclaw/openclaw#105718:
The landed command is:
OpenClaw owns database roles, SQLite-safe capture, manifest and hash creation,
strict verification, private staging, atomic local publication, and
fresh-target restore. Hosts and operators own upload, encryption, retention,
restore timing, startup orchestration, and failover policy.
What We Learned From Running Snapshots In Lobster
We have learned a lot since we first started running the snapshot boundary in
Lobster:
manifest.jsonplusdatabase.sqliteartifacts is theright boundary; syncing live SQLite files and sidecars is not;
infer database role, WAL state, schema, indexes, ownership, or safe restore
semantics from paths;
replacement or scale-from-zero transaction;
credentials and external dependencies, durable host acceptance, final
quiescence, generation fencing, restored readiness, and coordinator replay;
and
or duplicating the landed SQLite implementation.
OpenClaw
mainalso already has the host-neutralgateway.suspend.prepare|status|resumecontract fromopenclaw/openclaw#103618,
with Vincent's validation repair in
openclaw/openclaw#103925.
Follow-on handoff work should reuse that cooperative tracked-work fence rather
than propose another pause API. The host still owns external ingress fencing,
third-party Channel handling, and full process/filesystem consistency.
The result is a simpler follow-on direction: keep RFC 0013 and PR 105718 as the
authoritative owner primitive, then discuss small optional sidecars for
aggregate recovery-point components, portable handoff, and restored admission.
Lobster remains one proving host, not part of the core snapshot contract.
Scope
This RFC remains deliberately narrow:
It does not define:
safeToDestroy;Implementation
Implementation landed in
openclaw/openclaw#105718,
commit
2f25e9cba384acfc06cdf83640f236fdb7c1af33.The original contributor implementation in
openclaw/openclaw#94805 was
superseded by Vincent's hardened implementation while preserving the
SQLite-safe artifact direction.
Current-Head Validation
864d7dee6ba6b9cf9e2f902f174408e5fbc570dbrfcs/0013-cloud-serializable-sqlite-state.mdstatus: completedand the landed implementation.backup sqlitecommand and responsibility split.Review Request
Please review RFC 0013 as the completed SQLite owner-artifact contract.
Separately, we would value feedback on whether its completed snapshot
directories and exact manifests are the right substrate for small,
host-neutral follow-on sidecars. Those sidecars would not change this RFC's
snapshot semantics, add Lobster-specific APIs, or duplicate the existing
gateway.suspend.*contract.