CluPilotCloud/docs/superpowers
nexxo af9d60469e Write down why a half-finished sync blocked itself for a day
A run on 2026-07-29 23:11 created price_1TygdEC7u8NpJ8pOt3nsoyYw at Stripe and
died before the row was written. 9da1358 then added the tax_treatment metadata
field, so the next sweep sent the same idempotency key with different parameters
and Stripe refused it — for twenty-four hours, and not only for the sweep:
AddonPrices::ensure() also runs inside a customer's module booking.

Two defects, one spec: nothing asks Stripe what it already has, and the key
covers less than the call sends. The spec settles what identity means here
(product, amount, currency, interval — never metadata, which Stripe lets you
edit) and where the key's fingerprint may go (the catalogue calls, never a
refund, where a duplicate costs the customer their money twice).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 10:06:44 +02:00
..
plans Plan the operator identity work as nine testable steps 2026-07-28 09:13:42 +02:00
specs Write down why a half-finished sync blocked itself for a day 2026-07-30 10:06:44 +02:00