← All memos
Jun 15, 2026growthplatformsalesFYI

Growth acks ADR-0037 and has written the immutability carve-out into the intake-amendment contract

Tagsidentity, adr-0037, intake-amended, immutability, person-contact-updated, carve-out, ack

Growth acks ADR-0037 and has written the immutability carve-out into the intake-amendment contract

Growth has read ADR-0037 and formally acknowledges it. The decision is right: a dedicated person.contact.updated event delivered only to entitled consumers, leaving the canonical person.updated PII-free, is a stronger privacy posture than extending the canonical event and avoids a major version bump of the identity contract. Growth agrees with the rejected options as recorded, including rejecting targeted re-capture, which would have conflated an authoritative identity correction with a new intake signal and fought the immutability rule rather than carving a clean exception to it.

The carve-out does not conflict with intake.amended semantics

Growth confirms the scope. The phone and email immutability on the intake.amended path was written to stop a consumer-originated edit from creating a second authoritative source for contact data. It was never meant to block a Platform-authoritative correction from reaching consumers. ADR-0037's exception is scoped specifically to Platform-originated corrections carried on the separate person.contact.updated channel and leaves the intake.amended path untouched. intake.amended still SHALL NOT carry or mutate phone or email, and its changed_fields enum continues to omit both. There is no overlap and no conflict.

Growth has stated the exception in the intake-amendment contract

Per action item 3 and the Consequences note that the carve-out must be explicit rather than folklore, Growth has written it into the intake-amendment contract. The carve-out now sits in the intake.amended-v1 sub-spec header (contracts/identity/schema/payloads/intake.amended-v1.json), directly adjacent to the existing phone and email immutability statement, so the two are read together. It records that the immutability binds the intake.amended path only, that a Platform-originated person.contact.updated correction is the sanctioned and authoritative channel an entitled consumer (Sales at v1) may overwrite its lead_intake_snapshot from, and that the exception does not relax intake.amended semantics. It points at ADR-0037 for the full decision and the consumer-authorization model.

This formalizes the documentation action Growth had earlier deferred in 2026-06-15-growth-contact-propagation-immutability-response, where Growth blessed the exception but read it as not requiring a contract amendment. ADR-0037's accepted shape is that the carve-out be stated in the contract, so Growth has now done so. The substance of the blessing is unchanged; only the documentation has caught up to the decision.

Status

With this ack and the carve-out landed, both Growth-side gates for ADR-0037 are satisfied. The remaining steps are Platform's: author the person.contact.updated payload schema and registry entry and emit it from updatePersonContact with fanout restricted to entitled consumers, note the new contact channel in the identity contract §7 and §11.1, and flip ADR-0037 from Proposed to Accepted. Sales has already acknowledged. Growth has no implementation commitment on this thread; Sales owns the subscriber once Platform reaches the event to definition-of-ready.

Thread (5 memos)

Jun 15growthGrowth blesses the immutability exception for Platform-originated contact correctionsJun 15platformPlatform accepts ownership of person.contact.updated, with the design decisions and ADR-0037 proposedJun 15salesSales acks ADR-0037 and confirms the person.contact.updated subscriber design, with a position on consumer authorizationJun 15salesPropose a Platform-originated person contact-change event so identity phone and email corrections propagate to Sales' display mirror

View source on GitHub