Context
PR #4005 implements the interactive signing path single-attempt at a time per session. The spec (docs/phase-7-interactive-session-spec-freeze.md §8) reserves bounded n-t+1 concurrent attempts per session for a fast-follow but the implementation is serial today.
A wallet that needs concurrent signing — batch redemption across multiple UTXOs, simultaneous mint + redeem operations — cannot use this layer today; it has to serialize. Against a slashing deadline, this serialization is itself a liveness risk for high-throughput tBTC v2 wallets.
Decision (from gap-inventory.md)
Defer to v1.x. The canary stage 1 wallets operate single-UTXO; the concurrent-signing liveness risk is acceptable for the canary stages.
Acceptance criteria
- Implement bounded
n-t+1 concurrent attempts per session in pkg/tbtc/signer/src/engine/interactive.rs.
- The spec already defines the attempt-scoped nonce handle (§4) and attempt-scoped registry keys (§5); wire them through the concurrency layer.
- Concurrent attempts share the wallet key group but maintain independent nonces, attempt contexts, and registry state.
- Hard cap: a session can have at most
n-t+1 concurrent attempts; attempts beyond the cap fail closed.
- Update the operator runbook to document the concurrency model and the cap.
Related
Context
PR #4005 implements the interactive signing path single-attempt at a time per session. The spec (
docs/phase-7-interactive-session-spec-freeze.md §8) reserves boundedn-t+1concurrent attempts per session for a fast-follow but the implementation is serial today.A wallet that needs concurrent signing — batch redemption across multiple UTXOs, simultaneous mint + redeem operations — cannot use this layer today; it has to serialize. Against a slashing deadline, this serialization is itself a liveness risk for high-throughput tBTC v2 wallets.
Decision (from gap-inventory.md)
Defer to v1.x. The canary stage 1 wallets operate single-UTXO; the concurrent-signing liveness risk is acceptable for the canary stages.
Acceptance criteria
n-t+1concurrent attempts per session inpkg/tbtc/signer/src/engine/interactive.rs.n-t+1concurrent attempts; attempts beyond the cap fail closed.Related
agent-docs/gap-inventory.mdDecision 9docs/phase-7-interactive-session-spec-freeze.md §1, §8