feat(pairing): optional token TTL + revoke endpoint (#9/#12, #22)
ci.yml is a standing red — prepares against upstream lnbits + poetry, can't import the aiolabs bunker surface
feat(pairing): seed-URL pairing — operator-side producer (S0 / #9)
pair/revoke endpoint must call revoke_key_user, not revoke_key_token (revoke-one-spire is a no-op otherwise)
fix(events): clarify scan-tickets "Remaining" stat as "Not scanned"