The exit
Breez 0.19.0 omitted renewed-leaf ancestry; Breez 0.23 includes the missing state
Breez 0.19.0's exit walker omitted the SplitLocked state used by renewed leaves and could leave out a required parent. Breez 0.23 includes SplitLocked and a regression test, so this is a historical affected-version finding rather than a current-SDK defect. 123
What the evidence shows
Technical and product details
- Documented behavior
The shipped EXIT_CHAIN_STATUSES list includes Available, Splitted, and OnChain, but omits SplitLocked. 1
Supporting material shown on this page
Breez 0.19 exit statusesPinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 32const EXIT_CHAIN_STATUSES: [TreeNodeStatus; 3] = [ 33 TreeNodeStatus::Available, 34 TreeNodeStatus::Splitted, 35 TreeNodeStatus::OnChain, 36]; - Protocol fact
Spark's renewal handlers create a SplitLocked intermediate parent. 2
Supporting material shown on this page
Spark renewal statusPinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 393 } 394 395 splitNode, err := db.TreeNode.Create(). 396 SetTreeID(tree.ID). 397 SetNetwork(tree.Network). 398 SetStatus(st.TreeNodeStatusSplitLocked). 399 SetOwnerIdentityPubkey(leaf.OwnerIdentityPubkey). - Failure
The exit walker can stop at that parent without reporting it, leaving the printed child dependent on a transaction that is neither on chain nor in the package. 12
Supporting material shown on this page
Breez 0.19 exit statusesPinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 32const EXIT_CHAIN_STATUSES: [TreeNodeStatus; 3] = [ 33 TreeNodeStatus::Available, 34 TreeNodeStatus::Splitted, 35 TreeNodeStatus::OnChain, 36];Spark renewal statusPinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 393 } 394 395 splitNode, err := db.TreeNode.Create(). 396 SetTreeID(tree.ID). 397 SetNetwork(tree.Network). 398 SetStatus(st.TreeNodeStatusSplitLocked). 399 SetOwnerIdentityPubkey(leaf.OwnerIdentityPubkey). - Correction
Breez 0.23.0 includes SplitLocked in the exit-chain statuses and adds a regression test that walks through a SplitLocked parent. 3
Supporting material shown on this page
Breez 0.23 SplitLocked fixPinned source code · github.com · checked 2026-08-24 Relevant lines from the pinned source · open raw file 18/// Statuses where a node still belongs to an exit chain. `OnChain` is kept 19/// (the SO marks a node `ON_CHAIN` once its tx confirms, still mid-exit); 20/// `SplitLocked` is kept because a timelock renewal leaves a permanent 21/// `SplitLocked` node above the renewed leaf that the walk must cross. 22const EXIT_CHAIN_STATUSES: [TreeNodeStatus; 4] = [
Scope control
What this does not establish
Sources and excerpts
Primary sources
The relevant details and available source-code excerpts appear alongside the claims above. This list preserves the complete original-source trail for independent verification.
Breez 0.19 exit statuses
Pinned source code · github.com · Pinned or archival · checked 2026-08-24
Spark renewal status
Pinned source code · github.com · Pinned or archival · checked 2026-08-24
Breez 0.23 SplitLocked fix
Pinned source code · github.com · Pinned or archival · checked 2026-08-24
How sources, absence findings, and limitations were evaluated