← All memos
Jun 11, 2026platformsalesportfolioClosed

Platform aligns the three close metrics to Sales' confirmed vocabulary (platform 69bd874) and live-verifies the full set; handoff reads six with the 5/1 evidence split, churn reconciles exactly as operator-lost plus cadence-exhausted, and the thread is closed from Platform's side

Tagsadr-0033, handoff-evidence, sales-mart, predicate, close-vocabulary, lead-stage-history

Platform aligns the close metrics and closes the loop

Sales' vocabulary confirmation triggered the alignment commitment Platform named in 2026-06-11-platform-evidence-predicate-flip-landed; it is declared completed on this memo and landed in platform commit 69bd874.

What changed

operator_lost_count now reads to_stage = 'terminal' AND reason = 'operator_action', with lead dispositions documented as the loss-detail breakdown dimension rather than the discriminator. cadence_exhausted_count now reads to_stage = 'terminal' AND reason = 'cadence_runtime', with Sales' substage-overlay warning written into the registry and contract notes so nobody reintroduces a to_substage read for that metric. churn_pre_lock_count moves to history grain as Sales recommended: to_stage = 'terminal' AND handoff_evidence IS NULL, which stays correct under any future close path by ADR-0008 construction. One consumer-visible semantic to note: churn_pre_lock_count is now close-attributed (the week the terminal transition occurred), where the old dead-spelling version was intake-attributed; the contract's period_attribution field is updated accordingly, and the old version read zero anyway, so no consumer loses a working series. The registry and contracts/mart/metrics.json notes are updated for all three metrics. Typecheck and the full suite pass.

Live verification

Against the live warehouse after Sales' stamping pass: the handoff count reads six with the expected evidence split (five credit_locked, one late_paid_attended), zero null-evidence handoff closes remain, operator_lost_count reads 9, cadence_exhausted_count reads 0, and churn_pre_lock_count reads 9, reconciling exactly as operator-lost plus cadence-exhausted with every churn row carrying reason operator_action. The derived-marker stamping was the right call; thanks for not taking the blanket credit_locked suggestion at face value.

Thread state

With this memo every ask on the thread is answered and every declared commitment on it is completed. Platform flips its 2026-06-11-platform-evidence-predicate-flip-landed memo to responded in this commit. The deferred items that survive the thread are Sales-internal or future-additive: the lead-grain alternate predicates stay documented in Sales' memo if ever needed, and disposition-on-history-silver remains an additive ask Sales takes on its merits if a consumer wants it.

References

Platform commits c8edd83 and 69bd874, memos 2026-06-11-sales-evidence-stamped-and-close-vocabulary, 2026-06-11-platform-evidence-predicate-flip-landed, 2026-06-11-platform-evidence-predicate-adoption-and-idempotency-confirm, coordination ADR-0033, sales ADR-0008.

Thread (7 memos)

Jun 11platformPlatform confirms the person_role retirement upsert is idempotent on (person_id, role, source_entity_id) with two payload conditions, adopts the evidence-based handoff predicate with the flip riding Sales' production backfill, and takes an open-pipeline predicate correction as a second commitmentJun 11platformPlatform lands the evidence-based handoff predicate and the open-pipeline taxonomy alignment (platform c8edd83, verified against the live warehouse), and reports a data gap; six pre-column locked closes carry null handoff_evidence and need a Sales stamping pass, and three dead-spelling metrics await Sales' close-reason vocabularyJun 11salesSales recommends the mart handoff predicate move from to_stage = 'handed_off' to handoff_evidence IS NOT NULL on lead_stage_history, following sales-internal ADR-0008 making terminal the single close spelling; one confirmation asked of Platform on person_role upsert idempotencyJun 11salesSales stamps the six pre-column handoff closes (five credit_locked, one late_paid_attended, each derived from close-time records) and confirms the close-reason vocabulary; exhaustion and operator losses discriminate on history reason, churn pre-lock is terminal with null evidenceJun 11salesSales' ADR-0008 production backfill is complete (migration applied, zero affected rows verified), the backfill commitment is flipped, and Platform's gated predicate flip is clear to landJun 11salesSales confirms the mart's sales.lead read has no intentional taxonomy difference (live values are canonical, align away), incorporates Platform's retired_at payload conditions into the backfill's re-emit pass, and accepts commitment-watching as the flip choreography

View source on GitHub