diff options
| author | Adam Soltys <[email protected]> | 2026-08-18 11:49:56 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-08-18 11:49:56 -0700 |
| commit | c553ea40de4aecd9453272599d450310d6e306b0 (patch) | |
| tree | 5c1b4f3c919826333c4f836b632fa47dc48b650d /src/features | |
| parent | e1d4f0e0dcf8e13a79ed94b6c696805e8568318d (diff) | |
| download | coinosv3-c553ea40de4aecd9453272599d450310d6e306b0.tar.gz coinosv3-c553ea40de4aecd9453272599d450310d6e306b0.zip | |
Money stops arriving without a story: the mailbox checkpoint stays local reading progress (a merged one skipped every unprocessed message), vtxos that beat their message here get a backfilled receive, and the commit stamp takes its own footer line
Co-Authored-By: Claude Fable 5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01JtaatFfAbx91Nh3xqKVqKz
Diffstat (limited to 'src/features')
| -rw-r--r-- | src/features/ark.js | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/src/features/ark.js b/src/features/ark.js index bff84a9..66e4e44 100644 --- a/src/features/ark.js +++ b/src/features/ark.js @@ -183,7 +183,11 @@ export function mergeArkStates(a, b) { else { lg.claimed = lg.claimed || rg.claimed; lg.revoked = lg.revoked || rg.revoked; } } out.gifts = [...gifts.values()]; - out.mailboxCheckpoint = Math.max(a.mailboxCheckpoint || 0, b.mailboxCheckpoint || 0); + // The checkpoint is READING PROGRESS, not state: adopting a remote one + // skips every message this device never processed — balance appears (the + // vtxo unions in) but its receive movement and celebration never happen. + // Keep the local checkpoint; re-read messages dedupe harmlessly. + out.mailboxCheckpoint = a.mailboxCheckpoint || 0; out.nextKeyIndex = Math.max(a.nextKeyIndex || 1, b.nextKeyIndex || 1); out.nextLnRecvIndex = Math.max(a.nextLnRecvIndex || 0, b.nextLnRecvIndex || 0); out.receiveAckTs = Math.max(a.receiveAckTs || 0, b.receiveAckTs || 0); |
