• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

KarpelesLab / libwallet / 28570944831
25%

Build:
DEFAULT BRANCH: master
Ran 02 Jul 2026 06:47AM UTC
Jobs 1
Files 131
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

02 Jul 2026 06:44AM UTC coverage: 23.792% (+0.07%) from 23.719%
28570944831

push

github

MagicalTux
wltwallet: bound reshare TSS rounds + tenacious RemoteKey share upload

Two hardenings from the field-reported device-recovery hang (FROST reshare
stuck forever after "ready for TSS rounds") and the setGeneratedKey http2
timeout that caused it.

1. Reshare rounds deadline (all four protocols: GG18, EdDSA, FROST, dkls23).
   The ceremony's party goroutines already select on ctx.Done() but the host
   call carries no deadline, so a remote participant going silent after init
   hung the ceremony — and the host UI — forever. Bound the window at 2
   minutes via reshareRoundsContext: sized to spotPeer.Start's legitimate
   worst case (3 init attempts x (15s selectPeer + 15s query) ~= 90s) plus
   rounds headroom (healthy rounds run 2-20s in live probes). Our own
   deadline surfaces as a descriptive "participant stopped responding …
   committee unchanged" error; a caller-initiated cancel passes through
   untouched. Placed after GG18's slow pre-param generation so low-end
   devices aren't penalized.

2. Tenacious setGeneratedKey (restDoRetryCritical). The RemoteKey share
   upload is the one reshare step whose abandonment can desync server-side
   state: an interrupted upload may still land after the client gives up,
   overwriting the live share on the same crws record while the local wallet
   keeps the old committee — which is exactly what produces the silent
   remote participant in (1). restDoRetry only retried rest-level 5xx and
   gave up after one transport failure (the field case: a single 90s http2
   "timeout awaiting response headers"). The critical variant also retries
   transport-level errors with exponential backoff (2s..30s) for up to 5
   minutes, and on final failure the error spells out the recovery step
   (re-run the reshare from a device holding the local shares). 4xx still
   fails immediately; ctx cancellation is honored.

Verified against the live fleet: full wltwallet suite green including
TestRemoteWallet (dkls old-side wdrone... (continued)

40 of 74 new or added lines in 3 files covered. (54.05%)

8 existing lines in 1 file now uncovered.

4827 of 20288 relevant lines covered (23.79%)

94.96 hits per line

Uncovered Changes

Lines Coverage ∆ File
18
44.58
-10.98% wltwallet/restretry.go
15
39.1
0.97% wltwallet/reshare.go
1
52.88
0.0% wltwallet/walletkey.go

Coverage Regressions

Lines Coverage ∆ File
8
44.58
-10.98% wltwallet/restretry.go
Jobs
ID Job ID Ran Files Coverage
1 28570944831.1 02 Jul 2026 06:47AM UTC 131
23.79
GitHub Action Run
Source Files on build 28570944831
  • Tree
  • List 131
  • Changed 3
  • Source Changed 3
  • Coverage Changed 3
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #28570944831
  • ba8af6fd on github
  • Prev Build on master (#28423940504)
  • Next Build on master (#28571495386)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc