Skip to content

fix(ark): stop telling users an exit finishes while the app is closed - #209

Open
CypherBoxLLC wants to merge 1 commit into
mainfrom
fix/ark-exit-copy-needs-you
Open

fix(ark): stop telling users an exit finishes while the app is closed#209
CypherBoxLLC wants to merge 1 commit into
mainfrom
fix/ark-exit-copy-needs-you

Conversation

@CypherBoxLLC

Copy link
Copy Markdown
Owner

Closes the copy half of #196.

What was wrong

Three user-facing strings promised the exit completes on its own:

Settings.tsx:1535  'Emergency exit started ... Funds will sweep automatically once the timelock expires.'
Settings.tsx:2174  '{sats} sats pending exit. Funds sweep automatically once the ~24h CSV timelock expires.'
Settings.tsx:2184  'Started {date}. Funds sweep to the destination when the timelock expires ...'

None of that is true. progressArkExits, syncArkExits and claimArkExitsToAddress are reached only from useArkSync, a foreground React hook, and the one background entry point bails deliberately while an exit is active.

Measured, not argued

From the 44-hour mainnet exit against a deliberately dead ASP:

  • every stretch the app spent closed produced zero progress on capsules still broadcasting, while capsules already in AwaitingDelta advanced normally, because the chain does that part
  • the final claim fired only because the app happened to be open at block 963652

A user who read the old copy and closed the app got a stalled exit and no signal that anything was wrong.

What it says now

The actual contract: it is publishing now, it does not progress while closed, reopen after the timelock to collect.

It deliberately does not promise a notification. Nothing schedules one yet, that is #199, and promising it here would replace one false claim with another.

Also removes an em dash that was sitting in shipped UI copy.

Wording

Draft, expected to be rewritten. The intent is the constraint, not the words.

Verification

One earlier run in bail mode reported a single failure, but bail truncated the output before naming the test and it did not reproduce across two subsequent full runs. Recording it rather than hiding it.

Copy-only, no logic touched. Not device-verified yet.

Not closed by this

#196 also asks for a notification (tracked as #199) and for opportunistic background execution, which that issue itself says must never be relied on. This PR addresses the part that was actively misleading users.

Three user-facing strings claimed the funds sweep automatically once the
timelock expires. They do not. The drive that broadcasts each exit tree
level and fires the claim is foreground-only, and the one background
entry point deliberately bails while an exit is active.

Measured on a 44-hour mainnet exit against a dead ASP: every stretch the
app spent closed produced zero progress on capsules still broadcasting,
and the final claim landed only because the app was open at the right
block. A user who read this copy and closed the app got a stalled exit
and no signal.

The replacement states the actual contract: it is publishing now, it does
not progress while closed, reopen after the timelock to collect. It
deliberately does NOT promise a notification, because nothing schedules
one yet; promising that would swap one false claim for another.

Also drops an em dash that was sitting in shipped UI copy.

Copy is a draft for the product owner to rewrite. The intent is the
constraint, not the wording.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant