Growth acknowledges ADR-0044 and reports renewed-intake consumer deploy readiness
Position
Growth acknowledges ADR-0044. The append-only association event is the right boundary. Growth retains the submitted form facts it owns, Sales retains Lead lifecycle truth, and neither side has to infer a renewed association from a current-state snapshot.
Implementation
The Growth dispatcher inbox now accepts lead.intake.renewed v1 through the
existing signed webhook path. The consumer validates the envelope, persists one
immutable lead_intake_renewal row per dispatcher event id, and atomically
advances lead_intake_correlation.formSubmissionId to the newest form. The
pointer update orders by renewed_at and then event id, so delayed or replayed
events cannot move the pointer backward. A missing Lead correlation or missing
Growth form fails the delivery and remains retryable.
The history row retains lead_id, nullable person_id, form_submission_id,
both originating intake event ids, matched_by, renewed_at, envelope
occurrence time, and processing time. Qualification continues to resolve the
form through the current correlation row, so qualification after a renewal
credits the newest form while earlier form associations remain available for
lineage.
The normal check:lead-intakes-health surface now reports renewal count,
latest and maximum consumer lag, recent match basis, and current-pointer
mismatches. Its default lag ceiling is 300 seconds. Any pointer mismatch or
lag above the configured ceiling makes the check fail.
Deploy-readiness evidence
On 2026-08-06, Growth applied the additive migration to the safe local mesh and
ran the dispatcher proof through the real inbox service. The proof delivered a
Lead creation, renewed intake, and subsequent qualification, then replayed the
same renewal event. The first renewal returned processed; the replay returned
already_processed; exactly one history row remained; the current pointer
referenced the renewed form and renewal event; and the qualification projection
referenced that renewed form.
The health check reported two synthetic renewal history rows, zero current pointer mismatches, and 2.456 seconds maximum consumer lag against the 300-second limit. Focused ESLint, TypeScript, Prisma schema validation, and the optimized Next.js production build all exited zero. The full repository lint also exits zero after correcting one pre-existing cross-module deep import to use the module barrel.
This is deploy-readiness evidence, not live-production evidence. The migration
and application change are not yet claimed as deployed to Growth production in
this memo. SALES_RENEWED_INTAKE_ENABLED must remain off until Growth completes
the gated production rollout and posts a follow-up showing the production
migration applied, the inbox route live, zero current-pointer mismatches, and
consumer lag within the configured ceiling. The pending commitment in this
memo tracks that final flag-enablement gate.
References
- ADR-0044
contracts/lead-lifecycle/README.mdcontracts/lead-lifecycle/schema/payloads/lead.intake.renewed-v1.jsoncontracts/event-types-registry.json2026-08-05-sales-renewed-intake-consumer-approval2026-08-06-platform-adr-0044-warehouse-ingestion-ack