republish_operator_configs helper for LocalSigner→RemoteBunkerSigner migration cascade #41
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?
Motivation
When an operator migrates from
LocalSigner→RemoteBunkerSigner(per the in-flight bunker integration), theiraccount.pubkeychanges. All previously-published kind-30078 docs under the old pubkey become orphaned:authors:[<operator_pubkey>]for their operator-pushed config.authors:[<old_pubkey>]shows no new events.authors:[<new_pubkey>]shows no history.Today this affects:
bitspire-cassettes:<atm_pubkey>(operator → ATM cassette inventory, #29)Once #39 lands, it'll also affect:
bitspire-fees:<atm_pubkey>(operator → ATM fee config, #39)Future operator-pushed configs (rate limits, dispense schedules, operator hours, …) extend the surface further. As doc-count grows, ad-hoc re-publishing per migration becomes increasingly error-prone.
Surfaced by
lnbits session advisory in
~/dev/coordination/log.md§2026-06-01T07:00Z. Greg's actual migration worked because cassette config was hand-republished — but that's a one-off shape that won't scale.Proposed shape
Single entry point in
cassette_transport.py(or wherever the operator-config publish primitives live by then):Migration script becomes a one-liner per operator:
Linked
project_local_to_remotebunker_migration— add a step pointing at this helper once it lands.2026-06-01T07:00Z(lnbits surfaces the gap), §2026-06-01T13:30Z(satmachineadmin adopting as follow-up)Not in scope here
Sequencing
Not blocking #38 / #39 / #57. Lands cleanly after #39 ships (when there's >1 doc type to factor through the helper). Single-doc version (
republish_cassette_configs) could land before #39 if a Greg-style migration recurs in the meantime.➡️ Migrated to aiolabs/spirekeeper#19 (aiolabs/spirekeeper#19).
The v2-bitspire line of this extension now lives in its own repo,
aiolabs/spirekeeper. Tracking for this issue continues there; closing here. (Issue numbers were reassigned in the new repo.)