@odla-ai/chapter 0.42.4 → 0.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@odla-ai/chapter",
3
- "version": "0.42.4",
3
+ "version": "0.43.0",
4
4
  "description": "A leader/follower foundation for branded membership sites: shared CRM, admin, auth, payments, booking, and explicit record delivery from one defineChapter config.",
5
5
  "license": "MIT",
6
6
  "homepage": "https://odla.ai/docs/packages/chapter",
@@ -581,6 +581,17 @@ this release. Preserve a host UI/route for non-USD or mismatched pricing. Test
581
581
  successful payment, duplicate webhook, failure, refund, and subscription
582
582
  cancellation before switching the UI.
583
583
 
584
+ For a shared Stripe account, preserve Chapter's closed partition metadata on
585
+ every new customer, subscription, payment intent, and refund: app, chapter,
586
+ environment, data environment, and stable runtime. Do not infer ownership from
587
+ the Stripe account or Price alone. The signed webhook must apply an exact target
588
+ once, acknowledge a fully tagged sibling with zero local writes, quarantine an
589
+ unmatched event for operators, and accept a metadata-free legacy object only
590
+ when its Stripe customer, subscription, or gift id is already linked to this
591
+ chapter and runtime. Exercise all four paths in development, including a replay
592
+ of the identical body and an event-id collision with changed content, before
593
+ removing any legacy payment adapter.
594
+
584
595
  ### Calendar and email
585
596
 
586
597
  Complete dev Google booking consent, reconnecting any grant from the retired
@@ -778,6 +778,18 @@ non-USD or unmatched pricing needs a host UI/route and cannot use the stock
778
778
  payment presentation. Never accept money until the provider equality check and
779
779
  webhook test prove authoritative paid/refunded state and idempotent replay.
780
780
 
781
+ Chapter tags every newly created Stripe customer, subscription, payment intent,
782
+ and refund with its app, chapter, environment, data environment, and stable
783
+ runtime identity. Do not replace or omit those fields in a host payment route.
784
+ The signed webhook acknowledges a fully tagged sibling event without a local
785
+ write, accepts an untagged legacy event only when the referenced Stripe object is
786
+ already linked to a local application or gift intent, and records a content-free
787
+ receipt for each applied or unmatched event. Prove all three dispositions with
788
+ synthetic test objects: exact target applies once, a sibling target writes zero
789
+ rows, and an unmatched legacy event is quarantined and observable. Replaying the
790
+ same event body must be a no-op; reusing its event id with different content must
791
+ raise a collision signal and must not apply.
792
+
781
793
  ### Google Calendar
782
794
 
783
795
  Complete the human Google booking consent from provisioning, then: