From ecf7da305d56cee8a8d2306ca7fa5dad4b2f0c39 Mon Sep 17 00:00:00 2001 From: Adam Soltys Date: Tue, 18 Aug 2026 16:27:56 -0700 Subject: A refresh learns to let go: a participation rejected for unusable inputs asks the server which coins died and rebuilds around the survivors instead of resubmitting the doomed set every sync forever; the balance reconciles on a ten-minute cadence so ghosts can't pose as sats; and arkRescue() reclaims a round output whose action a device lost Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_012u4oe1KPx9faCsDBLfZYqi --- src/features/ark.js | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/features') diff --git a/src/features/ark.js b/src/features/ark.js index 66e4e44..30b167a 100644 --- a/src/features/ark.js +++ b/src/features/ark.js @@ -308,6 +308,16 @@ export function arkFeature(ctx) { initArk(); } + // Operator console rescue for a round participation stranded server-side + // 'unclaimed' (its action lost client-side): arkRescue('', + // ['', ...]) from devtools, ids supplied from the server's DB. + if (typeof globalThis !== 'undefined') { + globalThis.arkRescue = async (unlockHash, inputIds) => { + const mgr = await connectArk(); + return mgr.rescueParticipation(unlockHash, inputIds); + }; + } + function connectArk() { if (ark) return Promise.resolve(ark); if (arkConnectPromise) return arkConnectPromise; -- cgit v1.2.3