Skip to content

fix(chat): keep proof decision out of actor closure#101611

Merged
steipete merged 2 commits into
openclaw:mainfrom
fengjikui:codex/chat-cache-swift62-transaction
Jul 9, 2026
Merged

fix(chat): keep proof decision out of actor closure#101611
steipete merged 2 commits into
openclaw:mainfrom
fengjikui:codex/chat-cache-swift62-transaction

Conversation

@fengjikui

@fengjikui fengjikui commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

What Problem This Solves

Swift 6.2 strict concurrency rejects OpenClawChatSQLiteTranscriptCache.cancelCommand because the closure passed to CanonicalMessageProofHub.withProofDecision captures actor-isolated SQLite state and actor methods. The failing diagnostic is sending 'db' risks causing data races, and it blocks GatewayEndpointStoreTests, the OpenClaw product build, and packaged app verification from current main.

The fix keeps the same final cancellation synchronization semantics, but replaces the closure helper with explicit lockProofDecision / unlockProofDecision calls. That keeps the final proof decision, SQLite commit, and cache removal inside the same synchronized region while leaving actor-isolated work in the actor method body.

Summary

  • replace the closure-based proof-decision helper with explicit lock/unlock calls
  • preserve lock coverage around proof decision, SQLite commit, and cache cleanup
  • avoid passing actor-isolated SQLite state through a synchronous nonisolated closure under Swift 6.2

Evidence

Validated on the rebased head ed57e6a07e4fe1d452db9f78ec18a56725eed1f5, based on current main 9614129c2bfb877411780b3568c3a0bc7db0d099:

  • swift test --package-path apps/macos --filter ChatTranscriptCacheIdentityTests (6 tests passed)
  • swift test --package-path apps/macos --filter WebChatSwiftUISmokeTests (2 tests passed)
  • swift test --package-path apps/shared/OpenClawKit --filter ChatTranscriptCacheStoreTests (39 tests passed)
  • swift test --package-path apps/macos --filter GatewayEndpointStoreTests (42 tests passed)
  • swift build --package-path apps/macos --product OpenClaw
  • git diff --check

This refresh is rebase-only over the existing one-file actor-isolation fix.

@openclaw-barnacle openclaw-barnacle Bot added size: XS triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. triage: refactor-only Candidate: refactor/cleanup-only PR without maintainer context. labels Jul 7, 2026
@fengjikui
fengjikui force-pushed the codex/chat-cache-swift62-transaction branch from 999987d to b2e92cf Compare July 7, 2026 11:39
@openclaw-barnacle openclaw-barnacle Bot removed the triage: needs-pr-context Candidate: external PR body lacks required problem context or evidence. label Jul 7, 2026
@clawsweeper

clawsweeper Bot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed July 9, 2026, 3:43 AM ET / 07:43 UTC.

Summary
The PR changes ChatTranscriptCache to replace a private proof-decision closure with explicit lock/unlock calls in cancelCommand, avoiding actor-isolated SQLite/cache work inside the synchronous closure.

PR surface: Other +7. Total +7 across 1 file.

Reproducibility: yes. source-level: current main still uses withProofDecision closures from cancelCommand that capture SQLite/cache work, matching the reported Swift 6.2 actor-isolation failure shape. I did not execute the failing Swift build in this read-only review.

Review metrics: 1 noteworthy metric.

  • Proof-lock boundary: 1 private synchronization boundary changed. The boundary decides whether a canceled queued chat command is treated as confirmed canonical delivery or locally removed.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

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

Rank-up moves:

  • none.

Risk before merge

  • [P1] The manual proof lock still controls the race between canonical gateway evidence and local queued-message cancellation, so green tests reduce but do not exhaust the message-delivery ordering risk.
  • [P1] The live PR is mergeable but behind current main; exact merge-head checks should finish before landing.

Maintainer options:

  1. Proceed With Narrow Lock (recommended)
    Accept the current lock scope because it preserves serialized proof/cache/commit behavior while moving notifications outside the lock, then land after exact-head checks finish.
  2. Request Extra Chat Review
    Ask the assigned chat reviewer to explicitly confirm the canonical-proof versus cancellation ordering before merge if maintainers want a second concurrency signoff.

Next step before merge

  • No automated repair is indicated; the remaining action is maintainer review of the exact-head checks and the chat proof-lock ordering risk.

Security
Cleared: No concrete security or supply-chain concern found; the diff only changes a private Swift chat-cache synchronization helper and does not touch secrets, workflows, dependencies, packaging, permissions, or downloads.

Review details

Best possible solution:

Land the narrow Swift fix after exact-head checks settle, keeping the lock scoped to proof decision, cache mutation, and SQLite commit while outbox notifications run after unlock.

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

Yes, source-level: current main still uses withProofDecision closures from cancelCommand that capture SQLite/cache work, matching the reported Swift 6.2 actor-isolation failure shape. I did not execute the failing Swift build in this read-only review.

Is this the best way to solve the issue?

Yes. Splitting the private helper is the narrowest maintainable fix I found because it removes the actor-isolated closure capture without adding public API, config, or duplicate runtime paths.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against 3b418bdef6e5.

Label changes

Label justifications:

  • P2: This is a bounded native chat build/correctness fix with limited changed surface and no evidence of an emergency runtime outage.
  • merge-risk: 🚨 message-delivery: The diff changes the synchronization path that decides whether a queued chat message cancellation becomes canonical confirmation or local removal.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (terminal): The PR body and comments provide terminal proof for focused Swift tests, macOS build, and git diff --check, and the live Real behavior proof check passed on the current head.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body and comments provide terminal proof for focused Swift tests, macOS build, and git diff --check, and the live Real behavior proof check passed on the current head.
Evidence reviewed

PR surface:

Other +7. Total +7 across 1 file.

View PR surface stats
Area Files Added Removed Net
Source 0 0 0 0
Tests 0 0 0 0
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 1 27 20 +7
Total 1 27 20 +7

What I checked:

Likely related people:

  • steipete: GitHub PR history shows this login authored and merged the recent iOS/offline-cache and durable-outbox feature work, and the current PR head includes their lock-scope narrowing commit. (role: feature owner and recent PR head committer; confidence: high; commits: 5d8293c1fe40, 77575d74f68c, 06789ca4c2ed; files: apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatTranscriptCache.swift, apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatViewModel+Outbox.swift)
  • vincentkoc: The live PR is assigned to this login for review of the touched Swift chat-cache path. (role: assigned reviewer; confidence: medium; files: apps/shared/OpenClawKit/Sources/OpenClawChatUI/ChatTranscriptCache.swift)
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 (73 earlier review cycles; latest 8 shown)
  • reviewed 2026-07-09T00:06:14.454Z sha 9ea0594 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T01:01:50.796Z sha 171b4d1 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T01:07:54.884Z sha 171b4d1 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T02:01:17.155Z sha 282d798 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T02:10:21.984Z sha 282d798 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T03:05:47.341Z sha 60b760f :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T04:04:01.890Z sha ed57e6a :: needs maintainer review before merge. :: none
  • reviewed 2026-07-09T04:12:00.281Z sha ed57e6a :: needs maintainer review before merge. :: none

@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. 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. P2 Normal backlog priority with limited blast radius. labels Jul 7, 2026
@fengjikui
fengjikui force-pushed the codex/chat-cache-swift62-transaction branch 5 times, most recently from 0630e03 to f9a7658 Compare July 7, 2026 12:56
@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. 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 Jul 7, 2026
@fengjikui
fengjikui force-pushed the codex/chat-cache-swift62-transaction branch 2 times, most recently from deca650 to 88d4c8e Compare July 7, 2026 13:22
@fengjikui

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

The PR body has been refreshed with current-head proof for 88d4c8eb8e77f25c8d26d95b4251f3c8aefadd34. I re-ran the local proof set on that head: OpenClawKit ChatTranscriptCache tests (39 passed), macOS ChatTranscriptCache tests (6 passed), GatewayEndpointStoreTests (33 passed), ChatCommandOutboxStoreTests (18 passed), swift build --package-path apps/macos --product OpenClaw, package script producing dist/OpenClaw.app, and git diff --check. The refreshed Real behavior proof check is also passing on the PR.

@clawsweeper

clawsweeper Bot commented Jul 7, 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.

@fengjikui
fengjikui force-pushed the codex/chat-cache-swift62-transaction branch from 88d4c8e to 96a300c Compare July 7, 2026 13:35
@vincentkoc vincentkoc self-assigned this Jul 7, 2026
@clawsweeper clawsweeper Bot removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jul 7, 2026
@clawsweeper clawsweeper Bot added rating: 🦞 diamond lobster Very strong PR readiness with only minor maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jul 7, 2026
@fengjikui
fengjikui force-pushed the codex/chat-cache-swift62-transaction branch 3 times, most recently from d3201ef to 9595fed Compare July 7, 2026 20:48
@fengjikui

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current PR head is 9595fed3b0f7eee3abbc7a49a09d30afc153daea, rebased onto current main d563101a82fd75f00f2b83c3110e69913c46cb7a. Local proof after the rebase:

  • swift test --package-path apps/macos --filter ChatTranscriptCache (6 tests)
  • swift test --package-path apps/macos --filter GatewayEndpointStoreTests (33 tests)
  • swift build --package-path apps/macos --product OpenClaw
  • git diff --check

GitHub checks for this head are also passing, including Real behavior proof, macos-swift, macos-node, native-i18n, ios-build, Android build/test/ktlint, security guards, and dependency guards.

@clawsweeper

clawsweeper Bot commented Jul 7, 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.

@fengjikui
fengjikui force-pushed the codex/chat-cache-swift62-transaction branch from 9595fed to 09837a5 Compare July 7, 2026 21:21
@fengjikui

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current PR head is 09837a524ac0fbe5036e67f981ec07ca408600bb, rebased onto current main 91a0ebbc. GitHub checks are now complete with no failing checks.

Local proof after this refresh:

  • swift test --package-path apps/macos --filter ChatTranscriptCache (6 tests)
  • swift test --package-path apps/macos --filter GatewayEndpointStoreTests (33 tests)
  • swift build --package-path apps/macos --product OpenClaw
  • git diff --check

The refresh is rebase-only over the existing one-file fix.

@clawsweeper

clawsweeper Bot commented Jul 7, 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.

@fengjikui
fengjikui force-pushed the codex/chat-cache-swift62-transaction branch from 09837a5 to 35f198b Compare July 7, 2026 21:48
@fengjikui

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current PR head is a907529ef8725647e40fa0a3d3e08ec87f2e5473, rebased onto current main ba7af363. GitHub checks for this head are complete with no failing checks (28 success, 23 skipped).

Local proof after this refresh:

  • swift test --package-path apps/macos --filter ChatTranscriptCache (6 tests)
  • swift test --package-path apps/macos --filter GatewayEndpointStoreTests (33 tests)
  • swift build --package-path apps/macos --product OpenClaw
  • git diff --check

The refresh is rebase-only over the existing one-line actor-isolation fix.

@clawsweeper

clawsweeper Bot commented Jul 7, 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.

@fengjikui

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current PR head is b92cbeb709e62ecf4d8e821067e4cfa20314ffbb, rebased onto current main 6db05064. I refreshed the PR body Evidence section for this head after the earlier Real behavior proof run read the stale body.

Local proof after this refresh:

  • swift test --package-path apps/shared/OpenClawKit --filter ChatTranscriptCacheStoreTests (39 tests)
  • swift test --package-path apps/macos --filter ChatTranscriptCache (6 tests)
  • swift test --package-path apps/macos --filter GatewayEndpointStoreTests (33 tests)
  • swift build --package-path apps/macos --product OpenClaw
  • ALLOW_ADHOC_SIGNING=1 pnpm mac:package (bundle ready at dist/OpenClaw.app)
  • git diff --check

This refresh is rebase-only over the existing one-file actor-isolation fix.

@clawsweeper

clawsweeper Bot commented Jul 7, 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.

@fengjikui

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current PR head is b4f55c13e1f787a8a94d75ad2de1cc1d6759c56d, rebased onto current main 0c6bb026. I also normalized the PR body Markdown so the Evidence section uses real line breaks rather than literal \n text.

Local proof after this refresh:

  • swift test --package-path apps/shared/OpenClawKit --filter ChatTranscriptCacheStoreTests (39 tests)
  • swift test --package-path apps/macos --filter ChatTranscriptCache (6 tests)
  • swift test --package-path apps/macos --filter GatewayEndpointStoreTests (33 tests)
  • swift build --package-path apps/macos --product OpenClaw
  • ALLOW_ADHOC_SIGNING=1 pnpm mac:package (bundle ready at dist/OpenClaw.app)
  • git diff --check

The refresh is rebase-only over the existing one-file actor-isolation fix.

@clawsweeper

clawsweeper Bot commented Jul 7, 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.

@fengjikui

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current PR head is 2360f4d5db3d2b23566e47e5ed45c4a3c1cd203c, rebased onto current main 3bbc2732. The PR body Evidence section has been refreshed for this exact head.

Local proof after this refresh:

  • swift test --package-path apps/shared/OpenClawKit --filter ChatTranscriptCacheStoreTests (39 tests)
  • swift test --package-path apps/macos --filter ChatTranscriptCache (6 tests)
  • swift test --package-path apps/macos --filter GatewayEndpointStoreTests (33 tests)
  • swift build --package-path apps/macos --product OpenClaw
  • ALLOW_ADHOC_SIGNING=1 pnpm mac:package (bundle ready at dist/OpenClaw.app)
  • git diff --check

The refresh is rebase-only over the existing one-file actor-isolation fix.

@clawsweeper

clawsweeper Bot commented Jul 8, 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.

@fengjikui

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current PR head is 57a4e26490679339132410eceb6f44a6ca8b38b7, rebased onto current main cc083e5f. The PR body Evidence section has been refreshed for this exact head.

Local proof after this refresh:

  • swift test --package-path apps/shared/OpenClawKit --filter ChatTranscriptCacheStoreTests (39 tests)
  • swift test --package-path apps/macos --filter ChatTranscriptCache (6 tests)
  • swift test --package-path apps/macos --filter GatewayEndpointStoreTests (33 tests)
  • swift build --package-path apps/macos --product OpenClaw
  • ALLOW_ADHOC_SIGNING=1 pnpm mac:package (bundle ready at dist/OpenClaw.app)
  • git diff --check

The refresh is rebase-only over the existing one-file actor-isolation fix.

@clawsweeper

clawsweeper Bot commented Jul 8, 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.

@fengjikui

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current PR head is 876674940a320975da49396b926e620596649fdd, rebased onto current main 1aee742d230e5e50f6f580e19655fa22b21eefee. The PR body Evidence section has been refreshed for this exact head.

Local proof after this refresh:

  • swift test --package-path apps/shared/OpenClawKit --filter ChatTranscriptCacheStoreTests (39 tests)
  • swift test --package-path apps/macos --filter ChatTranscriptCache (6 tests)
  • swift test --package-path apps/macos --filter GatewayEndpointStoreTests (33 tests)
  • swift build --package-path apps/macos --product OpenClaw
  • ALLOW_ADHOC_SIGNING=1 pnpm mac:package (bundle ready at dist/OpenClaw.app)
  • git diff --check

The refresh is rebase-only over the existing one-file actor-isolation fix.

@clawsweeper

clawsweeper Bot commented Jul 8, 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.

@fengjikui

fengjikui commented Jul 8, 2026

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Current PR head is 5ca6a6dfdd666469fc0b9a87debfefa23822f277, rebased onto current main eb721b0b306f371c223882fdd5aa1dfc6654cf1d. GitHub checks for this head are complete with no failing checks (macos-swift, macos-node, native-i18n, ios-build, android-test-play, android-test-third-party, android-build-play, android-ktlint, Real behavior proof, and guard checks all passed or skipped as expected). I also refreshed the PR body Evidence section for this head.

Local proof on the same head:

  • swift test --package-path apps/shared/OpenClawKit --filter ChatTranscriptCacheStoreTests (39 tests passed)
  • swift test --package-path apps/macos --filter ChatTranscriptCache (6 tests passed)
  • swift test --package-path apps/macos --filter GatewayEndpointStoreTests (33 tests passed)
  • swift build --package-path apps/macos --product OpenClaw
  • git diff --check

@clawsweeper

clawsweeper Bot commented Jul 8, 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.

@steipete

steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Maintainer review and fixup complete on exact head 106bf64cdc9a1f0037a671bbe2c0cc76d91dd82a.

What changed:

  • kept the Swift 6.2 actor-isolation fix: actor-owned SQLite work no longer crosses the synchronous proof closure
  • narrowed the explicit proof lock to the canonical evidence read, cache mutation, and SQLite commit
  • released the proof lock before actor-local tombstone bookkeeping and outbox notifications

Best-fix judgment: yes. This preserves the original canonical-proof/SQLite cancellation invariant without moving database ownership, changing storage behavior, or adding compatibility paths.

Proof:

Known gap: no separate manual simulator scenario was added because this is a compiler-concurrency refactor with unchanged cancellation behavior; the existing cache/outbox regression suite ran in macos-swift.

@steipete

steipete commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Merged via squash.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-risk: 🚨 message-delivery 🚨 May drop, duplicate, misroute, suppress, or wrongly target messages. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: XS status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. triage: refactor-only Candidate: refactor/cleanup-only PR without maintainer context.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants