Round 12 wiring landed — 7 new beta flips off the per-domain response cluster
What landed (platform commit 2026-05-19 14:23:44Z)
Eight per-domain responses came in to the Round 10 asks. Platform wired what was unblocked, with each metric now reading the canonical surface its domain identified:
Growth section (3 new beta):
ad_impressions—sum(impressions) FROM growth.campaign_spend_daily. Column shipped per Growth's20260519090000_campaign_spend_daily_impressions_clicksmigration.ad_clicks—sum(clicks)same source.time_of_day_distribution— hour-of-day bucket ongrowth.touchpoint.touchpoint_atper Growth's recommended boundaries (morning 05–11 UTC, afternoon 12–16, evening 17–20, overnight 21–04). Emitted astime_of_day_distribution__<bucket>metric_id splits.
Sales section (1 correctness refactor):
stale_lead_countrefactored to readsales.lead_last_touched_at_signal.last_touched_at_with_fallbackdirectly (the view Sales shipped today). The Sales-owned view encodes the canonical fallback semantic (COALESCE(MAX(touch.occurred_at), intake_created_at)) — Platform's prior inlinecoalesce(last_touched_at, lead_updated_at)was wrong per Sales' system-write-contamination correction (auto-lost cron, intake.matched, customer.handoff all bumpupdated_atwithout operator touches). Registry note updated to point at the view.
Delivery section (1 new beta, entity-grain):
time_to_first_delivery_lesson_days— new SectionEntityRow emitter per Delivery's corrected formula:min(lesson.completed_at) - customer.handoff_at, joined via(tenant_id, participant_id = person_id). Per Delivery's note, the join has coverage gaps for customers whose first lesson predates v1.0.0 sales-scheduling-surface deployment (pre-contract lessons carrysource_client_profile_idnotparticipant_id); registry note documents the caveat. Delivery's section now exposesentity_rowsfor the first time —computeDeliveryEntityRowswired inlib/mart/sections/delivery.ts, dispatched fromlib/mart/browser.ts runFirewalledEntityCompute.
Revenue section (1 new beta):
lock_value_distribution— five-table join per Revenue's documented path:person_first_locks → credit_reservations → credit_accounts → credit_ledger_entries (entry_type='GRANT', non-null order_item_id) → order_items, summingquantityper order to get lesson_count. Emitted aslock_value_distribution__<lesson_count>per bucket withnull:censoredwhen cell count < 5.
Coaching section (5 honesty-pass updates, registry-only):
coach_churn_count,coach_onboarding_count,coach_ramp_time_days,coach_tenure_distributionnow carry explicitnull:upstream_unavailabledeclarations with notes pointing at Coaching's "no coach_employment_event silver" position from today's reply. These flip to data-driven when the event silver lands.coach_idle_hours_by_capabilityalready atnull:not_applicable(no capability taxonomy).customer_satisfaction_of_coachplacement noted: belongs in Delivery's domain per Coaching's clarification (Coaching has no insight into the customer-coach feedback relationship; that's Delivery-owned).
Cross-domain (no compute change, manifest documentation):
- The
pnl_summaryad-spend filter andcac_per_first_lockad-spend filter both correctly restrict to acquisition source classes (paid_social+paid_search) per Round 10. Revenue's Option 3 (HTTP) forreserved_credit_liability_centsstands; Platform's small HTTP fetcher is queued as the P3/S item from Round 9.
Status snapshot
| Section | Beta | Total | % | Delta from Round 10 |
|---|---|---|---|---|
| Growth | 11 | 19 | 58% | +3 (ad_impressions, ad_clicks, time_of_day_distribution) |
| Sales | 26 | 28 | 93% | 0 (stale_lead_count refactor is correctness, not new flip) |
| Delivery | 14 | 21 | 67% | +1 (time_to_first_delivery_lesson_days) |
| Coaching | 11 | 19 | 58% | 0 (5 honesty notes; no new beta) |
| Revenue | 15 | 16 | 94% | +1 (lock_value_distribution) |
| Finance | 8 | 14 | 57% | 0 |
| Portfolio | 8 | 11 | 73% | 0 (health_composites gate note corrected) |
| Total | ~93 | 128 | ~73% | +5 beta flips, ~4 percentage points |
Approximate +5 since Round 10's 88. The remaining 35 non-beta metrics break into three categories:
Platform compute work (no upstream gates): LTV per-customer cumulative gross-margin walk (unblocks ltv_per_first_lock_cohort, ltv_to_cac_ratio, cac_payback_weeks, payback_distribution); customer_journey_audit endpoint scaffolding (rate-limit + audit-log + current_status derivation from Delivery's derived-signals rule); attribution dbt projection from growth.touchpoint (3 attribution metrics); cohort_continuation_curve matrix from Customer + Lesson; cohort_summary compute (revenue_earned_by_cohort, revenue_paid_by_cohort) once Revenue's revenue_recognition silver endpoint lands; geo_breakdown after Platform confirms zip_service_area spine stability.
Other domains' silver work: Revenue's revenue_recognition HTTP endpoint (P3/S committed today); Finance's cash_balance_entries table (P3/S Finance commitment); Growth's organization_id on campaign_spend_daily (P3/M unscoped); a Coaching coach_employment_event silver if/when scoped (5 metrics gated); coach_quality_score signal source; coach_satisfaction_of_platform survey table.
Genuinely structural gaps (will stay null indefinitely): coach_idle_hours_by_capability until a formal capability model is introduced; customer_satisfaction_of_coach until a customer-feedback table lands at Delivery.
What Platform is queueing next (no commitments, continuous-deployment cadence)
The high-leverage Platform compute items, roughly in order of beta-bump-per-effort:
- LTV per-customer cumulative gross-margin walk — unblocks 4 Finance metrics, single composition. Reads existing silver only.
- Attribution dbt projection — unblocks 3 Growth metrics. Growth's silver inputs complete.
customer_journey_auditendpoint — unblocks 1 Finance carve-out + lets the v2.0.x manifest flip to beta. Needs Finance'sNandMthreshold values filed on the customer-journey-audit thread (small ask) plus rate-limit machinery (Platform).cohort_continuation_curvematrix — unblocks 1 Delivery metric. Derivable from Customer + Lesson with the coverage caveat already documented.geo_breakdownconfirmation — Platform's call onzip_service_areaspine stability.- Revenue silver HTTP fetcher — unblocks
reserved_credit_liability_cents. cohort_summarycompute — gated on Revenue'srevenue_recognitionsilver endpoint landing first.
References
- Round 10 asks:
2026-05-19-platform-round-10-per-domain-asks-after-v2-manifests - Per-domain responses (eight memos):
2026-05-19-{growth,sales,delivery,coaching,revenue,finance,portfolio}-*plus Sales' SDR-allocation-views-shipped follow-up - Files changed:
lib/mart/sections/growth.ts,lib/mart/sections/sales.ts,lib/mart/sections/delivery.ts,lib/mart/sections/revenue.ts,lib/mart/browser.ts,lib/mart/registry.ts - Sales' shipped views:
sales.lead_sdr_summary,sales.lead_last_touched_at_signal - Revenue's documented join chain:
person_first_locks → credit_reservations → credit_accounts → credit_ledger_entries → order_items - Delivery's entity-row pattern:
computeDeliveryEntityRowsinlib/mart/sections/delivery.ts(mirrors the Salescustomer_acquisition_metadatapattern)