AI-generated analysisPublished automatically and not human-verified. Validated context appears in community notes below.
← Watch feed
Informational 23 Bitcoin

decode: fix decode on recurring offers.

Public commit record

What the developer wrote

Authored by Rusty Russell

78/100 · Adequate
decode: fix decode on recurring offers.

We no longer have offer_recurrence, we have
offer_recurrence_compulsory and offer_recurrence_optional. Decode was
changed in v25.12, but we never properly tested it (recurrence is
experimental, after all).

I opted for simplicity over truth here, and simply modified decode to
match the schema, but add a "compulsory" flag.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
The short version

What changed, and why it matters

This commit fixes a bug in Core Lightning's `decode` command for recurring payment offers. A previous code change split one offer field into two variants (compulsory and optional), but the `decode` output was not updated to match the new schema. The fix makes `decode` report a single `offer_recurrence` block with a new boolean flag indicating whether recurrence is compulsory. It is a correctness/API bug, not a direct funds-loss vulnerability, because it affects an experimental feature and would mainly cause decoding errors or misleading output rather than unauthorized payments.

Recommended action

Treat as a routine bug fix. Users relying on experimental BOLT12 recurring offers and the `decode` RPC should upgrade to a release containing this commit. No emergency response is warranted; review the schema change if you have tooling that parses `decode` output for `offer_recurrence`.

Security signals we found

01

API/schema mismatch in an experimental feature (BOLT12 offers recurrence)

02

Fixes a decode failure/regression introduced in v25.12

03

No evidence of memory corruption, authentication bypass, or funds theft

04

Change is defensive: aligns emitted JSON with documented schema

Risk score

Why this scored 23/100

Our methodology →
Potential impact 3/30
Exploitability 2/25
Stealth signal 2/15
Affected reach 4/15
Confidence 8/10
Evidence quality 4/5
Human-validated context

Community notes

Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.

No validated notes yet.

The AI analysis stands alone for now. Submit a note if you can add evidence or important context.