Every failure screen in the first-run DID wizard (#2341) tells the user "open the DIG menu later and it will tell you".
Nothing backs that promise. No tray row watches a pending spend, and none offers to resume a mint. A person whose funding arrived late, or whose mint was still unconfirmed when they closed the wizard, has been told where to look and there is nothing there.
Why this is a dead end, not a gap
professional-ui's first HARD RULE is that a person must never be trapped, and #1800 removed exactly this shape — a message naming a next step that does not exist. An unbacked promise is worse than silence, because the user stops looking for another way.
It also blocks #2342 being usable: the mint is asynchronous by design (begin_did_mint → PendingMint → confirm), so "come back later" is the normal path, not the failure path. Without re-entry, the only way to complete a slow mint is to never close the window.
Scope
- A tray surface that knows a mint is pending and says so.
- A way to resume: re-open the wizard at the waiting step, or report the outcome if it resolved while the app was closed.
- The pending state must survive a restart — it is on-chain, so the evidence is recoverable, but the app has to know to look.
The related defect it must not inherit
The adversarial gate on dig-account PR #7 found that confirm returns Ok(None) forever for a permanently dead mint — mempool eviction, fee-too-low expiry, a reorg respending the source coin. A resume surface built on that API will offer to resume something that can never finish.
So this needs #2342's PendingMint to carry enough to answer "is this still possible?" — the gate suggested pushed_at_height plus a way to see the funding coin spent elsewhere. Do not build the re-entry point on an API that cannot say no.
Found by the #2341 implementation lane, which flagged its own unbacked promise.
Orchestrator ticket: https://github.com/DIG-Network/dig_ecosystem/issues/2398
Moved from DIG-Network/dig_ecosystem#2351 so this repo's own PR can close it with Closes (CLAUDE.md §1.3).
GitHub refuses a private-to-public issue transfer, so the body was copied and comment history
stayed on the original.
Every failure screen in the first-run DID wizard (#2341) tells the user "open the DIG menu later and it will tell you".
Nothing backs that promise. No tray row watches a pending spend, and none offers to resume a mint. A person whose funding arrived late, or whose mint was still unconfirmed when they closed the wizard, has been told where to look and there is nothing there.
Why this is a dead end, not a gap
professional-ui's first HARD RULE is that a person must never be trapped, and #1800 removed exactly this shape — a message naming a next step that does not exist. An unbacked promise is worse than silence, because the user stops looking for another way.It also blocks #2342 being usable: the mint is asynchronous by design (
begin_did_mint→PendingMint→confirm), so "come back later" is the normal path, not the failure path. Without re-entry, the only way to complete a slow mint is to never close the window.Scope
The related defect it must not inherit
The adversarial gate on dig-account PR #7 found that
confirmreturnsOk(None)forever for a permanently dead mint — mempool eviction, fee-too-low expiry, a reorg respending the source coin. A resume surface built on that API will offer to resume something that can never finish.So this needs #2342's
PendingMintto carry enough to answer "is this still possible?" — the gate suggestedpushed_at_heightplus a way to see the funding coin spent elsewhere. Do not build the re-entry point on an API that cannot say no.Found by the #2341 implementation lane, which flagged its own unbacked promise.
Orchestrator ticket: https://github.com/DIG-Network/dig_ecosystem/issues/2398
Moved from DIG-Network/dig_ecosystem#2351 so this repo's own PR can close it with
Closes(CLAUDE.md §1.3).GitHub refuses a private-to-public issue transfer, so the body was copied and comment history
stayed on the original.