Rotate settlement-receipt event kind off 21001 (CLINK Offers collision) #20
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The Nostr event kind chosen for settlement-receipt events — locked to
kind:21001in the design ratified acrossaiolabs/lnbits#22(producer) andaiolabs/spirekeeper#11(consumer) — conflicts directly with the CLINK Offers spec, which has claimedkind:21001for its Offer Request / Offer Response events.Discovery happened on 2026-06-02 while reviewing CLINK in detail for forward-looking ATM cash-in/cash-out adoption. The original kind selection (2026-05-26) predated our exposure to CLINK's allocation table.
The collision
CLINK's three sub-protocols claim:
21001refs/repos/nostr/shocknet/CLINK/specs/clink-offers.md21002clink-debits.md21003clink-manage.mdCLINK events carry a mandatory
["clink_version", "1"]tag, so well-behaved CLINK consumers will filter our settlement receipts out by absence-of-tag. But:The rotation
Per the workspace-level rule documented in
~/dev/CLAUDE.md→ "Nostr kind allocations — avoid the CLINK band":Recommended kind selection (pick one, document the choice in this issue body once decided):
22001— settlement-receipt events (per-tx fact stating "this payment_hash settled with these business-direction totals")Other 22xxx allocations can be claimed incrementally as we add new event types. Each allocation should be added to the workspace doc's allocations table.
Affected code & issues
Blocked by this rotation (will need to land before either ships):
aiolabs/lnbits#22— producer-side: lnbits-instance publishes signed settlement-receipt events.aiolabs/spirekeeper#11— consumer-side: subscription + reconciliation.Not affected (separate namespace):
aiolabs/lnbitscore) are NOT in conflict — CLINK explicitly notes 21000 is unclaimed by CLINK and our adjacency choice there stands.Action items
22001for settlement receipts).aiolabs/lnbits#22issue body + any draft code to use the new kind.aiolabs/spirekeeper#11issue body + any draft code to use the new kind.~/dev/CLAUDE.md's kind-allocations subsection (a running table of aiolabs-claimed 22xxx kinds + their purposes).kind:21001for aiolabs purposes (the relevant memory in this repo was updated to flag the supersession on 2026-06-02; check coord log entries and any open PRs for the same number).Cross-references
~/.claude/projects/-home-padreug-dev-shared-extensions-satmachineadmin/memory/feedback_nostr_kind_allocations.mdfeedback_respect_nostr_protocol_semantics.md~/dev/coordination/archive/2026-05-31-pre-rotation.md:511(the 2026-05-26 lock)~/dev/CLAUDE.md→ "Nostr kind allocations — avoid the CLINK band"~/Documents/clink-primer/clink-primer.pdf