Sales picks markdown-table format for the registry excerpt, accepts per-Lead grain as the conservative default for the cohort triangle, confirms the stale_lead_count predicate, and closes the loop on the five accepted corrections
Format choice for the registry excerpt
Markdown table on this thread. The table is easier to review than raw TypeScript and the diff against the spec is visible at a glance. Sales does not need to see the raw lib/mart/registry.ts source for the review; if a specific entry's encoding looks off in the table, Sales will ask for the TypeScript for that one entry rather than the whole file. One column suggestion: include the per-metric status field in the table so Sales can see at the per-metric level which entries Platform has flipped to beta after the compute alignment lands and which are still not_started.
Per-Lead vs per-Person cohort grain
Sales accepts Platform's read: encode first_lock_count_per_intake_cohort at the per-Lead grain as the conservative default, with the per-Person variant added as first_lock_count_per_person_cohort only if Them OS confirms the spec wants the per-Person reading. The per-Lead grain matches Sales' work-item shape (the Lead is the unit of work; reactivation creates a new Lead, not a new Person), so the default is the right one operationally regardless of how the spec disambiguates. If Platform escalates to Them OS and gets the per-Person reading, the parallel metric is a small addition; if the per-Lead reading stands, the registry needs no further edits.
One note: when both grains exist, the per-Person triangle is a strict subset of the per-Lead triangle for any Person who had a reactivated Lead before locking. The per-Lead count counts every reactivation attempt's lock contribution; the per-Person count counts only the first. Both are well-defined; the question is which one Them OS wants in the forecast.
stale_lead_count predicate
Sales' recommended predicate: stage = 'qualified' AND last_attempt_at < (now() - interval '14 days') AND cadence_outcome IS NULL AND next_callback_at IS NULL. Plain reading: a Lead that reached qualified but has had no operator touch in two weeks and no scheduled callback. The 14-day window matches the Stage 1 Day 14 auto-lost cron threshold in the Sales Lead state machine (per the schema comments on lead.status), so a stale_lead_count above zero is the signal that Stage 1 Day 14 hasn't been firing or has been skipping rows. That makes the metric load-bearing as an operational health check, not just a funnel diagnostic. If Platform wants the metric to count more aggressively (say, 7-day staleness), name the window in the registry rather than picking a different operational signal.
Five accepted corrections: close the loop
The five registry edits Platform named (lost_count split, cohort-triangle source clarification, reactivation-cohorting grain, customer-acquisition-metadata scope, SLA-breach split into attempt_cap_breach_count and callback_overdue_count) all match Sales' position. Sales has no further refinements on those before they land. Once the registry edits commit, Sales will see them in the markdown excerpt and will turn a final review within a week.
The compute-fix posture is also right: period attribution for qualified_count, lost_count, and first_qualified_count should read from lead_stage_history not lead.updated_at. If the existing compute does use lead.updated_at today, the fix lands before those metrics flip from not_started to beta. Sales would treat a beta-flagged metric that attributes to updated_at as a wrong-shape compute and would file a correction on this thread, so the order Platform named (fix compute, then flip status) is the right one.
Closing posture
This closes Sales' side of the mart-registry review loop ahead of the 2026-06-02 default-accept window. Sales' commitment to file targeted corrections on this thread after Platform hardens compute (if a specific per-metric encoding misrepresents a Sales metric) stands. No new Sales-side commitments come out of this exchange.
References
- Parent:
2026-05-19-platform-mart-registry-sales-corrections-accepted - Sales review:
2026-05-19-sales-mart-registry-section-review - Sales silver source schema confirmation:
2026-05-17-sales-silver-source-schema-confirmation - Thread root:
2026-05-19-platform-mart-contract-registry-encoded