Skip to content

Prepare, inspect, and abort BOLT11 Batch Mint Operations #424

Description

@Egge21M

What to build

Expose the pre-submission Batch Mint Operation workflow for caller-selected BOLT11 Mint Quotes. A caller can prepare an exact batch, inspect it by operation or Quote Identity, list in-flight batches, and abort it before submission. Preparation owns one aggregate deterministic output set and performs no mint submission.

Use the method-neutral Batch Mint Operation service seam while delivering BOLT11 first. Keep standalone Mint Operations unchanged and do not add Background Watcher or Mint Operation Processor batching.

Acceptance criteria

  • The public interface exposes batch prepare, abort, get, listByQuote, listInFlight, and recovery.run under mint operations.
  • Preparation accepts an exact ordered group of at least two unique canonical Mint Quotes from one mint, method, and unit.
  • Preparation rejects unsupported NUT-29 capability, groups above the advertised safety-capped limit, unclaimable members, amount mismatches, and any invalid member before durable output allocation.
  • A fixed BOLT11 quote with a nonterminal standalone Mint Operation is ineligible.
  • A BOLT11 batch can mix unlocked quotes and Coco-owned NUT-20-locked quotes, with one persisted signature per locked member and no persisted private keys.
  • Preparation persists exact caller order, aggregate amount, one denomination-optimized output set, blinded messages, keyset facts, and signed request material before returning prepared.
  • The complete membership and reservation are admitted atomically under stable Quote Identity lock ordering.
  • Prepared operations hold reservations, perform no network call, and do not expire automatically.
  • Abort is allowed only before submission, records a failed aborted outcome, releases reservations, and never reclaims deterministic counter positions.
  • Recovery resumes an interrupted init preparation but leaves prepared operations unsubmitted.
  • Reads return hydrated ordered members and prepared recovery material without private keys.
  • Distinct batch lifecycle events and one aggregate batch-mint history entry are emitted after durable transitions.
  • Existing Mint Operation behavior, history, events, and persistence remain unchanged.

Blocked by

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status
    Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions