Skip to content

Add snapshot SQLite stress harness#94967

Closed
giodl73-repo wants to merge 19 commits into
giodl/snapshot-restore-proof-pr4from
giodl/snapshot-stress-pr5
Closed

Add snapshot SQLite stress harness#94967
giodl73-repo wants to merge 19 commits into
giodl/snapshot-restore-proof-pr4from
giodl/snapshot-stress-pr5

Conversation

@giodl73-repo

@giodl73-repo giodl73-repo commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Depends on #94805.RFC: openclaw/rfcs#20Related: #94675, #94646## Summary- Adds an opt-in SQLite snapshot stress harness for the core snapshot work.- Exercises snapshot create/copy/restore while a concurrent writer commits transaction batches into the same source SQLite database.- Covers both Phase 1 DB units: --target global and --agent <id>.- Keeps writer lifecycle monitoring attached for the full snapshot loop so worker result/error/exit states fail deterministically instead of being missed.- Supports repeated runs against the same --state-dir by continuing batch IDs and using run-scoped sync/restore scratch paths.- Adds package scripts for smoke/default/large profiles.## ScopeThis is measurement and validation plumbing only. It does not add WAL bundles, scheduling, object storage, failover orchestration, or CI-gated long stress runs.## Real behavior proofBehavior or issue addressed:Core snapshot artifacts need a repeatable stress harness that proves restored safe-sync files remain SQLite-valid and do not expose partial writer transactions while the source DB is being mutated. This update also addresses review findings by keeping a single writer monitor attached from start through stop and making documented --state-dir reuse repeatable.Real environment tested:Windows checkout at giodl/snapshot-stress-pr5 (50bc0b102e), stacked on PR #94805 head 86f92a1e70, Node v22.22.3, source harness using node:sqlite, OpenClaw local SQLite state databases, and the stacked core snapshot provider from this PR stack. Node prints the expected experimental warning for node:sqlite.Exact steps or command run after this patch:1. node scripts/run-vitest.mjs run test/scripts/bench-snapshot-sqlite.test.ts2. pnpm exec oxlint scripts/bench-snapshot-sqlite.ts test/scripts/bench-snapshot-sqlite.test.ts3. pnpm exec oxfmt --check scripts/bench-snapshot-sqlite.ts scripts/bench-snapshot-sqlite.mjs test/scripts/bench-snapshot-sqlite.test.ts package.json4. git diff --check5. Repeat-run proof: run node --import tsx scripts/bench-snapshot-sqlite.mjs --profile smoke --state-dir <same-dir> --output <one.json>, then run the same command again with <two.json>.6. pnpm test:snapshot:stress7. pnpm test:snapshot:stress:large8. node --import tsx scripts/bench-snapshot-sqlite.mjs --profile default --agent main --output .artifacts/snapshot-stress/agent-default.json9. node --import tsx scripts/bench-snapshot-sqlite.mjs --profile large --agent main --output .artifacts/snapshot-stress/agent-large.jsonEvidence after fix:Focused validation passed:textTest Files 1 passed (1)Tests 5 passed (5)Duration 900msRepeated --state-dir smoke proof passed twice in the same directory:textSNAPSHOT_STRESS_PROFILE=smokeSNAPSHOT_STRESS_TARGET=globalSNAPSHOT_STRESS_ITERATIONS=3SNAPSHOT_STRESS_RESTORES_VERIFIED=3SNAPSHOT_STRESS_WRITER_ROWS=32SNAPSHOT_STRESS_SNAPSHOT_P95_MS=25.832SNAPSHOT_STRESS_RESTORE_P95_MS=9.431SNAPSHOT_STRESS_SNAPSHOT_BYTES_MAX=962560SNAPSHOT_STRESS_WAL_BYTES_AFTER=0--- second ---SNAPSHOT_STRESS_PROFILE=smokeSNAPSHOT_STRESS_TARGET=globalSNAPSHOT_STRESS_ITERATIONS=3SNAPSHOT_STRESS_RESTORES_VERIFIED=3SNAPSHOT_STRESS_WRITER_ROWS=32SNAPSHOT_STRESS_SNAPSHOT_P95_MS=25.595SNAPSHOT_STRESS_RESTORE_P95_MS=9.664SNAPSHOT_STRESS_SNAPSHOT_BYTES_MAX=962560SNAPSHOT_STRESS_WAL_BYTES_AFTER=0Global default proof:textSNAPSHOT_STRESS_PROFILE=defaultSNAPSHOT_STRESS_TARGET=globalSNAPSHOT_STRESS_ITERATIONS=20SNAPSHOT_STRESS_RESTORES_VERIFIED=20SNAPSHOT_STRESS_WRITER_ROWS=736SNAPSHOT_STRESS_SNAPSHOT_P95_MS=22.898SNAPSHOT_STRESS_RESTORE_P95_MS=10.462SNAPSHOT_STRESS_SNAPSHOT_BYTES_MAX=995328SNAPSHOT_STRESS_WAL_BYTES_AFTER=0Global large proof:textSNAPSHOT_STRESS_PROFILE=largeSNAPSHOT_STRESS_TARGET=globalSNAPSHOT_STRESS_ITERATIONS=100SNAPSHOT_STRESS_RESTORES_VERIFIED=100SNAPSHOT_STRESS_WRITER_ROWS=7648SNAPSHOT_STRESS_SNAPSHOT_P95_MS=22.478SNAPSHOT_STRESS_RESTORE_P95_MS=14.069SNAPSHOT_STRESS_SNAPSHOT_BYTES_MAX=1290240SNAPSHOT_STRESS_WAL_BYTES_AFTER=0Agent default proof:textSNAPSHOT_STRESS_PROFILE=defaultSNAPSHOT_STRESS_TARGET=agent:mainSNAPSHOT_STRESS_ITERATIONS=20SNAPSHOT_STRESS_RESTORES_VERIFIED=20SNAPSHOT_STRESS_WRITER_ROWS=528SNAPSHOT_STRESS_SNAPSHOT_P95_MS=16.522SNAPSHOT_STRESS_RESTORE_P95_MS=6.868SNAPSHOT_STRESS_SNAPSHOT_BYTES_MAX=147456SNAPSHOT_STRESS_WAL_BYTES_AFTER=0Agent large proof:textSNAPSHOT_STRESS_PROFILE=largeSNAPSHOT_STRESS_TARGET=agent:mainSNAPSHOT_STRESS_ITERATIONS=100SNAPSHOT_STRESS_RESTORES_VERIFIED=100SNAPSHOT_STRESS_WRITER_ROWS=5248SNAPSHOT_STRESS_SNAPSHOT_P95_MS=15.794SNAPSHOT_STRESS_RESTORE_P95_MS=8.328SNAPSHOT_STRESS_SNAPSHOT_BYTES_MAX=348160SNAPSHOT_STRESS_WAL_BYTES_AFTER=0Observed result after fix:The harness created snapshots while a writer committed transaction batches, copied each snapshot to a simulated synced location, restored every copied artifact to a separate SQLite file, verified PRAGMA integrity_check, and rejected partial batch visibility. The current Windows default/large runs verified 240 restores across global and per-agent targets with 13,160 committed writer rows total. The writer lifecycle monitor now stays attached throughout the snapshot loop, and repeated --state-dir runs no longer collide on stress table batch IDs or sync/restore output paths.Supporting validation passed:- node scripts/run-vitest.mjs run test/scripts/bench-snapshot-sqlite.test.ts- pnpm exec oxlint scripts/bench-snapshot-sqlite.ts test/scripts/bench-snapshot-sqlite.test.ts- pnpm exec oxfmt --check scripts/bench-snapshot-sqlite.ts scripts/bench-snapshot-sqlite.mjs test/scripts/bench-snapshot-sqlite.test.ts package.json- git diff --checkWhat was not tested:Cross-platform stress, object-storage sync, WAL bundle/delta behavior, and production failover orchestration are intentionally left for later validation. Local Crabbox/Testbox proof was not run because this Windows/WSL machine does not currently have the Crabbox wrapper binary available in the expected WSL locations.Post-rebase validation on 50bc0b1:- ode scripts/run-vitest.mjs run test/scripts/bench-snapshot-sqlite.test.ts passed 1 file / 5 tests.- pnpm exec oxlint scripts/bench-snapshot-sqlite.ts test/scripts/bench-snapshot-sqlite.test.ts passed.- pnpm exec oxfmt --check scripts/bench-snapshot-sqlite.ts scripts/bench-snapshot-sqlite.mjs test/scripts/bench-snapshot-sqlite.test.ts package.json passed.- git diff --check giodl/snapshot-restore-proof-pr4...HEAD passed.- pnpm test:snapshot:stress:smoke passed on the rebased stack.
Post-rebase refresh on 50bc0b102e over #94805 head 86f92a1e70:

  • node scripts/run-vitest.mjs run test/scripts/bench-snapshot-sqlite.test.ts passed 1 file / 5 tests
  • pnpm exec oxlint scripts/bench-snapshot-sqlite.ts test/scripts/bench-snapshot-sqlite.test.ts passed
  • pnpm exec oxfmt --check scripts/bench-snapshot-sqlite.ts scripts/bench-snapshot-sqlite.mjs test/scripts/bench-snapshot-sqlite.test.ts package.json passed
  • git diff --check giodl/snapshot-restore-proof-pr4...HEAD passed
  • pnpm test:snapshot:stress:smoke passed with 3 snapshots/restores verified, 32 writer rows, snapshot p95 25.814 ms, restore p95 9.590 ms, max artifact bytes 962560, WAL bytes after 0
  • codex review --base origin/giodl/snapshot-restore-proof-pr4 returned no discrete correctness issue

@openclaw-barnacle openclaw-barnacle Bot added scripts Repository scripts size: L maintainer Maintainer-authored PR labels Jun 19, 2026
@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Codex review: found issues before merge. Reviewed July 1, 2026, 3:37 PM ET / 19:37 UTC.

Summary
Adds an opt-in SQLite snapshot stress harness, package scripts, runner, and focused helper tests for global and per-agent snapshot targets.

PR surface: Tests +76, Config +3, Other +712. Total +791 across 4 files.

Reproducibility: yes. for the PR finding: source inspection gives a high-confidence path, run smoke against a reused state dir and then default or large against the same dir. The second run restores older batches with a different row count and validates them against only the current profile's rowsPerBatch.

Review metrics: 2 noteworthy metrics.

  • Package Stress Scripts: 3 added. These become maintainer-invoked automation entry points, so false failures and stacked-base dependencies matter before merge.
  • Open Snapshot Dependency: 1 open upstream PR. The harness imports the snapshot provider from the unmerged core snapshot command stack, so the target contract is not yet stable on main.

Root-cause cluster
Relationship: canonical
Canonical: #94967
Summary: This PR is the canonical snapshot stress-harness item; related snapshot PRs are prerequisites, earlier slices, or broader SQLite-state context rather than replacements.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🦐 gold shrimp
Proof: 🦞 diamond lobster
Patch quality: 🦐 gold shrimp
Result: needs maintainer review before merge.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

Risk before merge

  • [P1] Running --profile smoke --state-dir <dir> followed by --profile default --state-dir <dir> can falsely fail restored invariant checks because old 8-row batches are checked against the default profile's 16-row expectation.
  • [P1] Landing before Add SQLite snapshot artifacts under backup #94805 settles would publish package stress scripts tied to an open, draft snapshot command/provider stack.
  • [P1] The PR is draft, protected by the maintainer label, and not maintainer-editable, so maintainer adoption or author follow-up is needed before merge.

Maintainer options:

  1. Fix Cross-Profile State Reuse (recommended)
    Scope validation to batches produced by the current run, or store expected rows per batch, then add a smoke-to-default same-state-dir regression before merge.
  2. Settle The Snapshot Base First
    Review, land, or maintainer-adopt Add SQLite snapshot artifacts under backup #94805 before publishing package scripts that depend on its snapshot provider contract.
  3. Pause If The Core Contract Changes
    If maintainers decide the core snapshot command should be paused or moved, keep this harness paused or rework it against the accepted replacement surface.

Next step before merge

  • [P2] Manual handling is needed because the PR is draft, protected, not maintainer-editable, stacked on an open snapshot base, and still has a source-level defect for the author or adopter to fix.

Security
Cleared: No concrete security or supply-chain concern found; the diff adds no dependencies, lockfile changes, workflows, secrets handling, downloads, or publishing path, and the Worker eval source is static benchmark code.

Review findings

  • [P2] Scope state-dir validation to current-run batches — scripts/bench-snapshot-sqlite.ts:522-528
Review details

Best possible solution:

Scope restored invariant checks to the current run or persist per-batch expected row counts, add a focused cross-profile reused-state-dir regression, and merge only after the upstream snapshot command contract is accepted or adopted.

Do we have a high-confidence way to reproduce the issue?

Yes for the PR finding: source inspection gives a high-confidence path, run smoke against a reused state dir and then default or large against the same dir. The second run restores older batches with a different row count and validates them against only the current profile's rowsPerBatch.

Is this the best way to solve the issue?

No: the harness is in the right scripts/package-script boundary, but the reusable-state-dir invariant should be scoped to current-run batches or explicit per-batch metadata. Keeping the current global batch-count check would make a supported reuse path report false partial transactions.

Full review comments:

  • [P2] Scope state-dir validation to current-run batches — scripts/bench-snapshot-sqlite.ts:522-528
    --state-dir reuse continues batch ids after the previous max batch, but this query still scans every historical batch and compares it to the current profile's rowsPerBatch. A smoke run followed by a default or large run in the same state dir can report the old complete smoke batches as partial transactions, so the documented reusable state-dir path can fail before validating the current run.
    Confidence: 0.9

Overall correctness: patch is incorrect
Overall confidence: 0.9

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 24d94a54a516.

Label changes

Label justifications:

  • P2: This is normal-priority validation tooling with limited production blast radius but meaningful maintainer automation value.
  • merge-risk: 🚨 automation: The diff adds package-level stress automation that can currently fail incorrectly under cross-profile --state-dir reuse and depends on an open stacked snapshot branch.
  • rating: 🦐 gold shrimp: Overall readiness is 🦐 gold shrimp; proof is 🦞 diamond lobster and patch quality is 🦐 gold shrimp.
  • status: ⏳ waiting on author: ClawSweeper has contributor-facing work open and is waiting for author action. Sufficient (live_output): The PR body and comments include after-fix live output for same-profile repeated state-dir smoke runs plus global and per-agent default/large stress profiles; that proof is useful but does not cover the remaining cross-profile reuse defect.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body and comments include after-fix live output for same-profile repeated state-dir smoke runs plus global and per-agent default/large stress profiles; that proof is useful but does not cover the remaining cross-profile reuse defect.
Evidence reviewed

PR surface:

Tests +76, Config +3, Other +712. Total +791 across 4 files.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 1 76 0 +76
Docs 0 0 0 0
Config 1 3 0 +3
Generated 0 0 0 0
Other 2 712 0 +712
Total 4 791 0 +791

What I checked:

  • Repository policy read: Root AGENTS.md and scoped scripts/test guides were read fully; script wrapper guidance and protected-label/manual-review policy apply to this PR. (AGENTS.md:24, 24d94a54a516)
  • Scoped scripts policy read: The scripts guide says new package-script automation should prefer existing wrappers and keep generated-artifact helper rules aligned. (scripts/AGENTS.md:5, 24d94a54a516)
  • Live PR state: Live GitHub data shows this PR is open, draft, based on the open giodl/snapshot-restore-proof-pr4 stack, carries the protected maintainer label, has maintainerCanModify=false, and is at head 50bc0b1. (50bc0b102eb3)
  • Current main absence: Current main lacks test:snapshot:stress, runSnapshotStressCli, and the core snapshot provider command surface, so this PR is not implemented on main. (24d94a54a516)
  • Package automation surface: The PR adds three package-level stress entry points for smoke/default/large snapshot stress runs. (package.json:1872, 50bc0b102eb3)
  • Cross-profile state-dir defect: The worker resumes after MAX(batch)+1, but restored validation still scans every historical batch and compares each to the current profile's rowsPerBatch, so smoke-to-default reuse can flag old complete batches as partial. (scripts/bench-snapshot-sqlite.ts:522, 50bc0b102eb3)

Likely related people:

  • vincentkoc: Merged SQLite alignment and recent state path-helper history are adjacent to the global/per-agent database layout this harness exercises. (role: recent database-first SQLite contributor; confidence: high; commits: 65eb2ccd4ae2, e085fa1a3ffd; files: src/state/openclaw-state-db.ts, src/state/openclaw-agent-db.ts, src/state/openclaw-state-db.paths.ts)
  • sunlit-deng: Current-main blame/logs show recent work touching the sibling SQLite benchmark and state-helper area, though not this new stress harness. (role: recent adjacent contributor; confidence: medium; commits: ce4a259485f2; files: scripts/bench-sqlite-state.ts, src/state/openclaw-state-db.paths.ts)
  • galiniliev: Maintainer review on the upstream snapshot command stack identified and verified snapshot artifact contract issues that this harness depends on. (role: snapshot contract reviewer; confidence: medium; files: packages/memory-host-sdk/src/host/sqlite-snapshot.ts, src/snapshot/local-repository.ts, src/snapshot/snapshot-provider.test.ts)
  • giodl73-repo: Beyond this PR, Gio carried the related snapshot command stack and responded to prior review findings, so contributor-side follow-up naturally routes there unless maintainers adopt the branch. (role: snapshot stack contributor; confidence: medium; commits: b4500f6e56de, ee34b55765a0, 50bc0b102eb3; files: scripts/bench-snapshot-sqlite.ts, scripts/bench-snapshot-sqlite.mjs, test/scripts/bench-snapshot-sqlite.test.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

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
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.
Review history (1 earlier review cycle)
  • reviewed 2026-06-22T01:21:03.974Z sha 50bc0b1 :: found issues before merge. :: [P2] Scope state-dir invariants to the current run

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. labels Jun 19, 2026
@giodl73-repo
giodl73-repo force-pushed the giodl/snapshot-stress-pr5 branch from ff7dd74 to 764107b Compare June 19, 2026 14:44
@giodl73-repo
giodl73-repo force-pushed the giodl/snapshot-stress-pr5 branch from 764107b to 14eacb6 Compare June 19, 2026 15:57
@giodl73-repo
giodl73-repo force-pushed the giodl/snapshot-stress-pr5 branch from 14eacb6 to adac64c Compare June 19, 2026 18:51
@giodl73-repo
giodl73-repo force-pushed the giodl/snapshot-stress-pr5 branch from adac64c to bf54af8 Compare June 19, 2026 20:11

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Addressed the worker lifecycle finding at 6c7a8c5d0f.

What changed:

  • replaced ready-only/stop-only worker listeners with a single lifecycle monitor attached for the full run
  • worker result, error, and exit states are now observed continuously
  • every snapshot iteration races against premature writer completion/failure
  • normal stop after the snapshot loop resolves cleanly
  • PR body now points at PR Add SQLite snapshot artifacts under backup #94805 head ff6f396ca0 and includes current-head stress proof

Validation passed:

  • node scripts/run-vitest.mjs run test/scripts/bench-snapshot-sqlite.test.ts
  • pnpm exec oxlint scripts/bench-snapshot-sqlite.ts test/scripts/bench-snapshot-sqlite.test.ts
  • pnpm exec oxfmt --check scripts/bench-snapshot-sqlite.ts scripts/bench-snapshot-sqlite.mjs test/scripts/bench-snapshot-sqlite.test.ts package.json
  • git diff --check
  • pnpm test:snapshot:stress:smoke
  • pnpm test:snapshot:stress
  • pnpm test:snapshot:stress:large
  • agent default and large stress runs

@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Updated PR #94967 again at 868ee86505 after Codex review found reusable --state-dir issues.

Additional fixes:

  • repeated --state-dir runs now continue stress batch IDs after existing rows instead of colliding on (batch, ordinal)
  • sync/restore scratch output now lives under a per-run directory, so repeated runs do not collide with prior synced/snapshot-* or restored/restore-*.sqlite outputs
  • PR body refreshed with current-head repeated-state-dir proof and default/large stress numbers

Validation passed:

  • node scripts/run-vitest.mjs run test/scripts/bench-snapshot-sqlite.test.ts
  • pnpm exec oxlint scripts/bench-snapshot-sqlite.ts test/scripts/bench-snapshot-sqlite.test.ts
  • pnpm exec oxfmt --check scripts/bench-snapshot-sqlite.ts scripts/bench-snapshot-sqlite.mjs test/scripts/bench-snapshot-sqlite.test.ts package.json
  • git diff --check
  • repeated --state-dir smoke run twice in the same directory
  • pnpm test:snapshot:stress
  • pnpm test:snapshot:stress:large
  • agent default and large stress runs
  • codex review --base origin/giodl/snapshot-restore-proof-pr4 returned no actionable correctness issues

@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@giodl73-repo
giodl73-repo force-pushed the giodl/snapshot-stress-pr5 branch from 868ee86 to 8701065 Compare June 19, 2026 21:25
@giodl73-repo
giodl73-repo force-pushed the giodl/snapshot-stress-pr5 branch from 8701065 to 50bc0b1 Compare June 19, 2026 21:44

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Updated PR #94967 to current head 50bc0b102e, rebased on #94805 head 86f92a1e70.

Post-rebase validation passed:

  • node scripts/run-vitest.mjs run test/scripts/bench-snapshot-sqlite.test.ts
  • pnpm exec oxlint scripts/bench-snapshot-sqlite.ts test/scripts/bench-snapshot-sqlite.test.ts
  • pnpm exec oxfmt --check scripts/bench-snapshot-sqlite.ts scripts/bench-snapshot-sqlite.mjs test/scripts/bench-snapshot-sqlite.test.ts package.json
  • git diff --check giodl/snapshot-restore-proof-pr4...HEAD
  • pnpm test:snapshot:stress:smoke
  • codex review --base origin/giodl/snapshot-restore-proof-pr4 returned no discrete correctness issue

@clawsweeper

clawsweeper Bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. labels Jun 19, 2026
@clawsweeper clawsweeper Bot added rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action. and removed rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jun 26, 2026
@giodl73-repo
giodl73-repo force-pushed the giodl/snapshot-restore-proof-pr4 branch from af2abc2 to 409d541 Compare July 7, 2026 01:05
@vincentkoc vincentkoc self-assigned this Jul 12, 2026
@vincentkoc

Copy link
Copy Markdown
Member

Thanks, Gio. The useful cross-process SQLite stress-harness direction from this PR has now been adapted to the current snapshot/state APIs and landed in #105740:

d8380b8

We could not land this branch in place because maintainerCanModify=false, its base is another contributor branch rather than current main, and the implementation targets APIs that were replaced by the verified snapshot repository work. The landed version therefore uses a bounded writer, current global/per-agent database owners, copied-repository verification, committed-WAL and held-transaction proofs, and current restore validation.

Your contribution is preserved in the landed commit with:

Co-authored-by: Gio Della-Libera <[email protected]>

Closing this PR as superseded by the landed canonical implementation.

@vincentkoc vincentkoc closed this Jul 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

maintainer Maintainer-authored PR merge-risk: 🚨 automation 🚨 May affect CI, automerge, proof capture, label sync, or maintainer automation. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🦐 gold shrimp Decent PR readiness signal, but merge confidence is limited. scripts Repository scripts size: L status: ⏳ waiting on author ClawSweeper has contributor-facing work open and is waiting for author action.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants