Skip to content

Bump payjoin to version 1.0.0-rc.6 - #1758

Merged
spacebear21 merged 1 commit into
payjoin:masterfrom
DanGould:bump-payjoin-1-0-rc-6
Jul 23, 2026
Merged

Bump payjoin to version 1.0.0-rc.6#1758
spacebear21 merged 1 commit into
payjoin:masterfrom
DanGould:bump-payjoin-1-0-rc-6

Conversation

@DanGould

@DanGould DanGould commented Jul 23, 2026

Copy link
Copy Markdown
Member

Release the bitcoin_uri public-API insulation along with the pre-1.0
SessionOutcome seal and the proposal txid stability accessor. Bump the
payjoin dependency requirement in the workspace crates and refresh the
minimal and recent lock files. See CHANGELOG.md for the full notice.

(cherry picked from commit 69e5dad4ea3edd985d5b3548b795198c7d68b796)

Disclosure: Co-authored by Claude Code

@DanGould
DanGould marked this pull request as ready for review July 23, 2026 10:30
@DanGould DanGould mentioned this pull request Jul 23, 2026
18 tasks
@DanGould
DanGould requested a review from chavic July 23, 2026 10:33
@coveralls

coveralls commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

Coverage Report for CI Build 30009871065

Coverage remained the same at 86.49%

Details

  • Coverage remained the same as the base build.
  • Patch coverage: No coverable lines changed in this PR.
  • No coverage regressions found.

Uncovered Changes

No uncovered changes found.

Coverage Regressions

No coverage regressions found.


Coverage Stats

Coverage Status
Relevant Lines: 16196
Covered Lines: 14008
Line Coverage: 86.49%
Coverage Strength: 340.54 hits per line

💛 - Coveralls

@chavic

chavic commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

@DanGould The branch forks from eccaccb, predating #1756, given #1718 and #1747's semantic conflict followed the same pattern, a rebase before merging seems worth the extra CI cycle.

@chavic

chavic commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator

The rc.6 notice says #1747 "seals the persisted SessionOutcome as #[non_exhaustive] and drops its unused witness payload". Rereading the code that landed, the entry describes a different change than the one that was made, in three ways.

  1. The enum is not #[non_exhaustive], by design. The derive line has no such attribute (session.rs#L223-L224 (
    #[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
    pub enum SessionOutcome {
    )), and the doc comment directly above it states the opposite intent: "This enum is deliberately exhaustive... A new unhandled variant should error at compile-time" (session.rs#L220-L222 (
    /// This enum is deliberately exhaustive: a terminal outcome is a closed set, and a wildcard arm
    /// has no meaningful semantics for a caller deciding what a session's conclusion was. A new
    /// unhandled variant _should_ error at compile-time.
    )). What Pre-1.0 Doorkeeper for SessionOutcome in #1747 actually did is reserve Unrecognized(Txid) ahead of the freeze precisely so the enum could stay exhaustive without a post-1.0 semver break (session.rs#L235-L241 (
    /// The contested outpoints were settled by an unrecognized transaction (neither the
    /// Payjoin nor the fallback), identified by its txid.
    ///
    /// NOTE: Nothing in this release produces this variant. It is reserved now because this enum is
    /// deliberately exhaustive, so a new variant after 1.0 would be a semver-breaking API
    /// change; naming it before the freeze lets the settlement classifier land additively.
    Unrecognized(bitcoin::Txid),
    )). A reader following the changelog would add a wildcard arm, which is exactly what the design intends to prevent; payjoin-cli instead added concrete arms (v2/mod.rs#L116 (
    ReceiverSessionOutcome::Unrecognized(_) =>
    ), #L769 (
    ReceiveSession::Closed(ReceiverSessionOutcome::Unrecognized(_)) => {
    )).
  2. The new variant is not mentioned, but callers must handle it. Since the enum stays exhaustive, Unrecognized(Txid) is an API addition every consumer matching on SessionOutcome has to write code for, even though nothing produces it yet. That seems worth a line in the notice on its own.
  3. "Drops its unused witness payload" understates a persisted-format change. Success changed payload from Vec<(ScriptBuf, Witness)> to bitcoin::Txid (Pre-1.0 Doorkeeper for SessionOutcome in #1747 diff), and SessionOutcome is serialized inside SessionEvent::Closed in the event log with plain derived serde, no fallback. An rc.5 log containing a Closed(Success(...)) event will fail to deserialize under rc.6. For a release framed as the last one before the database-compatibility freeze, that consequence seems like the headline of this entry rather than a subordinate clause.

@benalleng

Copy link
Copy Markdown
Collaborator

(cherry picked from commit 69e5dad4ea3edd985d5b3548b795198c7d68b796)

Also this is not a commit that exists here on github. Going to rebase this and update the Changelog to be more precise to the changes that made it into the final commit

@chavic
chavic force-pushed the bump-payjoin-1-0-rc-6 branch from c52cec0 to ea0ea0d Compare July 23, 2026 13:07
Release the bitcoin_uri public-API insulation along with the pre-1.0
SessionOutcome seal and the proposal txid stability accessor. Bump the
payjoin dependency requirement in the workspace crates and refresh the
minimal and recent lock files. See CHANGELOG.md for the full notice.

(cherry picked from commit 69e5dad4ea3edd985d5b3548b795198c7d68b796)
@benalleng
benalleng force-pushed the bump-payjoin-1-0-rc-6 branch from ea0ea0d to 09d7a1c Compare July 23, 2026 13:28
@chavic
chavic requested a review from spacebear21 July 23, 2026 13:37

@spacebear21 spacebear21 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ACK

@spacebear21
spacebear21 merged commit dee54d6 into payjoin:master Jul 23, 2026
37 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants