Gate 3: Wallet signer BTC operations#22
Conversation
Close V29 Gate 3 with BTD-owned BTC fee quote lifecycle, signer-session recovery, blocked-readiness receipts, and operation posture. Expose operation posture through the BTC fee route and add a source-safe Terminal Wallet/BTC detail section with focused package, route, UI, spec, and gate-quality coverage.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d026802851
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| if (!signerRecovery.canSign) { | ||
| return blockedPosture({ | ||
| quote, | ||
| receipt, | ||
| signerRecovery, |
There was a problem hiding this comment.
Preserve receipt finality when signer session is absent
buildBtcFeeOperationPosture short-circuits to blocked whenever signerRecovery.canSign is false, before it considers an existing receipt. In this commit, buildBtdBtcFeeTransactionSettlement now always emits operationPosture, but non-prepare actions (mark_signed/mark_broadcast/observe) do not require a live payerSession, so settled receipts can be reported as blocked purely because the session is missing or expired. That misclassifies already-broadcast/confirmed transactions and can hide true finality state in downstream UI/read models.
Useful? React with 👍 / 👎.
| normalized === 'blocked' || | ||
| normalized === 'not_prepared' || | ||
| normalized === 'quote_pending' | ||
| ) { | ||
| return normalized === 'prepared' ? 'psbt_ready' : normalized; |
There was a problem hiding this comment.
Map quoted operation phase instead of downgrading to quote_pending
The terminal projection normalizer does not accept the backend operationPosture.phase value quoted, so accepted-quote/no-receipt posture falls through and is displayed as quote_pending. In this commit, backend posture explicitly uses phase: 'quoted' for a ready-to-prepare state, so this omission causes the Wallet/BTC card summary/state to regress from “ready for PSBT preparation” to “quote still needed.”
Useful? React with 👍 / 👎.
Summary
Validation