CluPilotCloud/docs/handoffs
nexxo dba5df5d1e One row per Stripe price on the module side too
The plan register has had this since 2026_07_30_110000. The module register
never did, so two rows could claim one Price and archiving the one would have
withdrawn the Price the other was still selling — Block D of the real-run
handoff.

It is also the net under the adoption step: at a VAT rate of nought both
treatments charge the same amount, and the check that refuses an already-claimed
Price is then the only thing keeping the two apart.

Duplicates are deleted, not archived. An archived row goes on claiming the id
and a unique index knows nothing about archived_at; the row rebuilds itself on
the next ensure(), and subscription_addons holds the Stripe id as text rather
than a foreign key, so no booking loses its price.

AddonPrices::remember()'s catch comment described the guard as the only thing
standing between two rows and one Price; now that the index exists, rewritten
to describe it as the net under that guard instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 12:47:34 +02:00
..
2026-07-25-clupilot-engine-v1.0-handoff.md docs: provisioning engine v1.0 build handoff (standalone fleet + cluster-per-DC target) 2026-07-25 09:31:51 +02:00
2026-07-25-clupilot-state-handoff.md Ask the tunnel gateway where it actually listens 2026-07-27 14:43:23 +02:00
2026-07-27-portal-design-handoff.md Write the handoff, and rescue the approved templates into the repo 2026-07-27 20:18:20 +02:00
2026-07-28-operator-identity-handoff.md Hand off with the effort rule at the top, not the feature list 2026-07-28 16:13:08 +02:00
2026-07-28-session-handoff.md Hand off with the process failure at the top, not the feature list 2026-07-28 21:44:04 +02:00
2026-07-30-real-run-handoff.md One row per Stripe price on the module side too 2026-07-30 12:47:34 +02:00