Repository navigation
fix(deploy): stop numbering re-sent phone requests as new steps - #556
Merged
Merged
Conversation
When the phone doesn't answer a signing request, bulletin-deploy times out and calls signTx again for the same operation, often while the first call is still pending. The step counter numbered every request, so a user who had approved nothing saw "step 3: Link content" on a two-approval deploy. The DotNS label advanced per call too, so a re-sent commitment was shown as "Finalize domain". - createSigningCounter numbers approvals: a request that repeats the label of an uncompleted one is the same step, next attempt. - wrapDotnsSigner advances the DotNS label on completed signatures only, shared by deploy and decentralize (which carried its own copy). - phoneApprovalCopy.ts holds the re-send notice for PhoneApprovalCallout and the --yes output, replacing the label-keyed attempt map that only reached the headless deploy path.
Contributor
|
Dev build ready — try this branch: |
Contributor
E2E Test Pass · ✅ PASSTag:
Sentry traces: view spans for this run |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
When the phone doesn't answer a signing request, the deploy re-sends it. Every re-send was numbered as the next step, so a user who had approved nothing saw
approve step 3: Link content (DotNS setContenthash)on a deploy that needs two approvals (Link content, then the registry publish). Reported live on v0.48.0.Two bugs
1. The step counter numbered requests, not approvals. bulletin-deploy times out an unanswered request and calls
signTxagain for the same operation, often while the first call is still pending. So a request that never completed is the signal, not a rejection. #549 fixed the wording, but only in the--yesoutput ofdeploy. The interactive deploy screen,decentralize, contract deploys, and the headless contract/decentralize paths all still printed the raw request number.2. The DotNS label advanced per call, too.
maybeWrapAuthForSigningpickedlabels[seen]withseencountingsignTxcalls. So for a new domain, a re-sent "Reserve domain" request was relabelled "Finalize domain".decentralizecarried its own copy of the same logic.Changes
createSigningCounternumbers approvals: a request that repeats the label of an uncompleted one is the same step, next attempt. A completed step with a repeated label (the DotNS fallback label) is still a new step, and a late completion of an earlier step can't close the current one.wrapDotnsSigner(new, insigningProxy.ts) advances the label only on a completed signature (max(completed, index + 1), so an abandoned attempt that completes late can't skip a label). Bothdeployanddecentralizenow use it.phoneApprovalCopy.tsholds the re-send notice shared byPhoneApprovalCalloutand the line output. This replaces the label-keyed module-state map indeploy/index.ts, which also misread two legitimately separate operations with the same label as a retry.A re-send now renders as:
This only changes what the CLI reports. It doesn't change why the phone showed no prompt; the usual cause is the app not being in the foreground.
Verification
pnpm format:check✓ ·pnpm lint:license✓ ·tsc --noEmit0 errors (run directly) ·vitest1043 passed.The new tests reproduce the live report: three unanswered Link content requests are step 1, attempts 1–3, and the publish that follows is step 2. Checked by mutation: restoring the old counter fails 7 of the new tests, and restoring per-call labelling fails 2.
🤖 Generated with Claude Code