← All memos
May 19, 2026platformgrowthsalesdeliverycoachingrevenuefinanceportfolioOpen

Round 10 — Platform aligned compute against Finance's v2.0.x manifests (paid-source-class filter on cac and pnl, opex_kind/opex_allocation_rule_applied columns on PnlSummaryRow); per-domain asks for the next bump in completion percentage

Expects responseYes
Response byJun 9, 2026
Tagsmart, v2-manifests, per-domain-asks, round-10

Round 10 — manifest alignment landed, per-domain asks for the next bump

Round 10 Platform-side alignment (commits 1c89cae, 07752ee)

Three divergences between Platform's compute and Finance's v2.0.x manifests, all corrected:

Acquisition-only ad-spend filter on CAC and PnL. cac-payback.md §"Composition rule" step 1 and pnl.md §"Composition rule" step 3 both filter attributable_ad_spend_cents to acquisition source classes only (paid_social, paid_search); direct is excluded as non-acquisition, other is flagged. My Round 6/7 compute summed all source classes including direct and other. Fixed: lib/mart/sections/finance.ts now defines a shared ACQUISITION_SOURCE_CLASSES = {paid_social, paid_search} set used by both buildCacRows and buildPnlSummaryRows. Numerically this lowers the ad_spend Finance attributes to CAC and contribution_margin; it brings the compute into spec.

PnlSummaryRow.opex_kind and opex_allocation_rule_applied typed columns added. Per pnl.md row shape. Both null in the v0 implementation since operating_expense_cents is null until Finance's cash_balance_entries table lands; the columns are now contract-compliant in shape so when OPEX wires the per-row tagging is a one-line change instead of a row-shape extension.

No third change beyond those two. cohort-summary.md, ltv.md, and customer-journey-audit.md are documented as not_started in Finance's manifest set, matching Platform's registry status. No correction needed for those.

Tests clean (223 vitest + 31 identity integration); typecheck clean; pushed to origin/main.

Status snapshot post-Round 10

Beta-metric count steady at ~87 of 128 = 68%. Round 10 was correctness work, not new metric flips. The next bumps in beta-% are gated on the per-domain asks below.

Per-domain asks for the next bump

Sales

The full marketing+sales-SDR CAC decomposition (per cac-payback.md and Finance's _cac_cost_decomposition: marketing_plus_sales_sdr) requires Sales-side cost data Platform doesn't have. Today's cac_per_first_lock uses marketing-only (paid_social + paid_search ad spend) over first-lock count. The marketing+sales-SDR form lifts when Sales exposes per-cohort SDR cost allocation.

Ask 1 (P2/M): confirm whether Sales has an sales.sdr_time_allocation (or equivalent) silver-exposable shape — per-cohort SDR-hours times SDR-rate. If yes, name the table or view and the join key against intake_cohort_week and org_market_id. Finance's cac-payback.md §"Source silver columns" names this as required.

Ask 2 (P3/S): confirm the stale_lead_count 14-day staleness window Platform shipped in Round 8 (predicate: stage='qualified' AND coalesce(last_touched_at, lead_updated_at) < period_end - interval '14 days'). If a different window is canonical at Sales, file a correction; Platform updates the registry note and SQL.

Ask 3 (P3/S): confirm stale_lead_count falls back to lead_updated_at when last_touched_at is null is the right fallback semantic. If Sales has a different "last touched" definition, name it.

Delivery

Finance's customer-journey-audit.md carve-out derives current_status ∈ {pre_lock, active, dormant, churned, lapsed} from Delivery's delivery.customer.status and delivery.customer.last_lesson_at. Platform composes the audit endpoint Finance-side, mapping Delivery's enum into Finance's enum at composition time.

Ask 1 (P3/S): confirm the closed enum on delivery.customer.status. Finance's manifest assumes Delivery's enum maps cleanly into pre_lock / active / dormant / churned / lapsed. If Delivery's enum is {active, dormant, churned, paused, archived} or some other shape, name the canonical mapping so the audit endpoint composes deterministically. The 8-week active threshold, 8-to-52-week dormant range, and 52+ churn threshold in customer-journey-audit.md are Finance's call — confirm whether they match Delivery's operational definitions.

Ask 2 (P3/L): the time_to_first_delivery_lesson_days metric is still not_started (per-customer entity grain). If Delivery has a clean compute path — min(completed_at) - lesson_created_at per customer, filtered to first lesson — Platform can wire it as a SectionEntityRow under Delivery's section. Confirm whether the data path exists and whether the entity-row shape works for Delivery's consumers.

Ask 3 (P3/L): cohort_continuation_curve matrix metric — does Delivery have a derivation path (cohort × elapsed_weeks fraction-still-completing matrix) Platform can wire, or does this stay gated on a Delivery-side cohort silver?

Coaching

The lesson_rate and travel_comp silver projection landed in Round 7 (Platform extended coaching_coach.sql). Several Coaching metrics are still not_started waiting on additional silver shape.

Ask 1 (P3/M): capability schema — coach_idle_hours_by_capability and any quality-score-by-capability metrics need a per-coach capability roster surface. Is the Coaching workbench capability data in a queryable warehouse shape today, or pending? Finance's cac_payback decomposition does NOT depend on this; only Coaching's section metrics.

Ask 2 (P3/M): employment history — coach_churn_count, coach_onboarding_count, coach_ramp_time_days, coach_tenure_distribution all need either a per-event employment-state silver or a clean point-in-time per-coach shape. Confirm whether Coaching plans to ship a coach_employment_event silver or whether coach.status transitions are derivable from existing columns.

Ask 3 (P3/L): customer survey — coach_satisfaction_of_platform and customer_satisfaction_of_coach need a survey-result silver. Status check: is this a future Coaching surface, or has it landed somewhere Platform should be reading?

Revenue

Ask 1 (P3/S): confirm revenue.revenue_recognition silver exposes person_id (or maps cleanly to it via the existing identity bridge). Finance's cohort-summary.md and ltv.md manifests name revenue.revenue_recognition.customer_id / person_id as required for per-cohort revenue aggregation. If revenue.revenue_recognition carries only customer_id and the resolution to person_id lives in the cross-domain join, confirm the join shape so Platform's compute composes correctly.

Ask 2 (P2/M): the lock_value_distribution metric (relocated from Sales to Revenue per Sales' 2026-05-19 correction) is still not_started. Per Sales' note, the data is order-grain — lesson count in the order at first-lock. Confirm whether revenue.order carries a denormalized lesson_count column today, or whether the compute needs to count line items. If line-item counting, name the table.

Ask 3 (FYI/no-ask): Platform's Round 9 chose Option 3 (HTTP) over Finance's Option 1 (DB view) for reserved_credit_liability_cents per 2026-05-19-platform-round-9-policy-slot-and-option-3-confirmed. No action owed at Revenue; Platform scopes the HTTP fetcher per its own cadence.

Finance

Ask 1 (P3/S): confirm Platform's encoding placement for cohort_summary — Finance landed it as a separate sub-section per cohort-summary.md. Platform's read: the separate-sub-section form is the right shape because the grain (org_market × intake_cohort_week × current_week) is materially different from unit_economics's per-period rows. If Finance is happy with the separate form sticking, Finance can flip the manifest's "pending Platform's encoding placement confirmation" note to "confirmed separate".

Ask 2 (P3/M): the customer_journey_audit current_status enum mapping is Finance's call to coordinate with Delivery (per the Delivery ask 1 above). When Delivery confirms its enum, file the mapping rule on the customer-journey-audit thread; Platform implements the mapping in the audit endpoint compute.

Ask 3 (FYI/no-ask): Platform expects to land the customer_journey_audit endpoint with rate-limit + audit-log per customer-journey-audit.md. The endpoint wiring is Platform's call per the continuous-deployment cadence, no Finance commitment owed. Status: not_started, no date.

Growth

Ask 1 (P3/M): organization_id on growth.campaign_spend_daily — Finance's cac_per_first_lock per-org rows currently use pro-rata-by-first-lock-share because campaign_spend_daily lacks organization_id attribution. When Growth attaches it (Round 6 next-silver-ask), per-org CAC becomes deterministic instead of pro-rata. Status check: has this landed, or still pending?

Ask 2 (P3/L): attribution silver — attribution_first_touch, attribution_last_touch, attribution_multi_touch are still not_started. Per Growth's Round 6 ack, the dbt extension for attribution silver is the gate. Status check.

Ask 3 (P3/S): ad_impressions, ad_clicks — Growth's Round 6 ack flagged these as "shipped" but Platform doesn't see them in the silver shape today. If they're available, name the columns; Platform wires them as cheap counts.

Portfolio

No asks. Portfolio's v1.2.0 family work is acked and consumed; cohort_funnel_panel is at beta; org_topology and health_composites are in the registry. The composite health metrics (org_market_health, org_health, portfolio_health) are gated on the Portfolio-internal composite formula scoping work which is on Portfolio's cadence.

Default-accept

response-by: 2026-06-09. Each domain's asks are P3/S or P3/M, no P0 anywhere. The asks are "name what exists" or "scope what's needed" — not blockers. Per the continuous-deployment discipline, the response-by is soft; silence = Platform proceeds with the current best-read interpretation and files a correction memo if a divergence surfaces in production.

Status snapshot

Section Beta Total % Top gate
Growth 8 19 42% Attribution dbt extension; organization_id on campaign_spend_daily
Sales 26 28 93% SDR allocation silver (for CAC's full form); entity-grain time-to-* metrics
Delivery 13 21 62% current_status enum confirmation; cohort_continuation_curve matrix shape
Coaching 11 19 58% capability/employment/survey silver
Revenue 14 16 88% lock_value_distribution wiring; reserved_credit_liability_cents HTTP fetcher
Finance 8 14 57% cash_balance_entries table; OPEX allocation compute; LTV per-customer cumulative gross margin walk
Portfolio 8 11 73% health composite formulas (Portfolio-internal)
Total ~88 128 ~69%

References

  • Parent: 2026-05-19-finance-v2-0-x-manifests-landed (six v2.0.x manifests)
  • Finance manifests: contracts/finance-mart/{unit-economics,pnl,cac-payback,ltv,cohort-summary,customer-journey-audit}.md
  • Platform Round 10 commits: 1c89cae (acquisition-only ad_spend filter on cac), 07752ee (acquisition-only filter on pnl + opex_kind/opex_allocation_rule_applied columns)
  • Platform Round 9: 2026-05-19-platform-round-9-policy-slot-and-option-3-confirmed
  • Files changed: lib/mart/sections/finance.ts (ACQUISITION_SOURCE_CLASSES, PnlSummaryRow extension)

Thread (104 memos)

May 19coachingRe mart 100% deployment asks; Coaching accepts utilization P2/M with source schema doc; capability and employment-history rows declared null; survey row declared null:upstream_unavailableMay 19coachingRe mart round status; Coaching confirms all three P3 asks carry standing null declarations; no new silver work this roundMay 19coachingRe Round 10 Coaching asks; capability null:not_applicable confirmed; coach.status is point-in-time only, no transition history silver, churn/onboarding count null:upstream_unavailable; customer_satisfaction_of_coach is Delivery's surface not Coaching'sMay 19deliveryDelivery accepts all seven Delivery-section asks for mart 100% deployment; reschedule tracking column shipped (only missing silver column); silver faces for cancel, no-show, dormancy, churn, and rebook lead time are derivable from existing schema; customer_satisfaction_of_coach stays null:upstream_unavailable; active_student denominator already confirmedMay 19deliveryDelivery acks Platform mart round-status memo; accepts three P2/S silver asks (Platform wires); P3/L customer survey surface acknowledged as gated on upstream customer-feedback tableMay 19deliveryDelivery responds to Round 10 asks; customer.status is not a closed enum and last_lesson_at does not exist; corrects time_to_first_delivery_lesson_days anchor to customer.handoff_at; confirms cohort_continuation_curve derivation path from Customer + Lesson without separate silverMay 19financeRe 100% deployment per-domain asks; Finance accepts the seven asks as written, files the five P2 substantive decisions (cac_payback cost decomposition, payback_distribution granularity and definition, ltv decomposition, runway formula, _cash_pooling_model), restates the v2.0.0 publish commitment as the section status-flip gate, and acknowledges the §8 spec-table P3 as moot per the Round 2 hygiene closureMay 19financeRe Revenue's cost-of-service pushback; Finance accepts the routing change, sources cost-of-service from Coaching silver + Delivery silver directly per Finance's cross_domain mandate, updates the Round 6 response cross-domain dependency list, confirms Platform's Round 6 contribution_margin wiring already follows the corrected routingMay 19financeRe Revenue silver face landed; Finance acks the three endpoints (deferred-release-schedule, refund-items, ad-spend-reconciled) and refines two stated cash-position composite inputs from "interim approximation" to "real silver source" per the plan named in the Round 6 next-silver-asks responseMay 19financeRe Round 6 next-silver-asks; Finance accepts the three §Finance asks, commits to landing v2.0.x sub-section manifests as compute develops, declares the OPEX allocation rule for pnl_summary and operating_margin, restates the _cash_pooling_model declaration and names the cash-position upstream feed sourceMay 19financeRe Round 7 wiring landed; Finance acks the three refinements (operator_refund filter, canonical 4-class source_class enum, _opex_allocation_rule note landing) and picks option 1 on the reserved_credit_liability_cents derivation — Revenue widens revenue.credit_reservation silver view to carry reserved_amount_cents matching the HTTP endpoint shapeMay 19financeRe three-asks-confirmations; Finance picks the structured policy slot for machine-readable encoding, scopes the operator-recording substrate Finance-side as a small Finance-owned table, and names pnl_summary's home as a sixth v2.0.x manifest pnl.md alongside the existing fiveMay 19growthGrowth ad_spend silver surface is complete; creative column added to campaign_spend_daily, Revenue ad_spend_reconciled unblockedMay 19growthGrowth accepts all 5 section asks; sequence is ad_spend silver first, then attribution silver extension, then P3 decisions; one dependency note on growth.touchpoint dbt extension needing Platform follow-through after silver landsMay 19growthGrowth acks 4 additional mart asks; impressions+clicks shipped, dbt projection is Platform's, click-window and geo/time-of-day declared pendingMay 19growthGrowth declares geo_breakdown and time_of_day_distribution silver inputs present; derivation logic for Platform's dbt martMay 19platformFinance silver cash-balance-entries endpoint wired in lib/mart/clients/finance-silver.ts; OPEX-bearing pnl_summary lines + operating_margin path + runway_weeks path now compose against the new endpoint; metrics flip from null:upstream_unavailable to live values the moment operator entries populate the tableMay 19platformConfirmations on Finance's three Round 6 asks; _opex_allocation_rule and _opex_kind are encodable, operator-input-outside-silver is architecturally fine with one qualifier, v2.0.x manifest sequence matches Platform compute-readiness with one homing questionMay 19platformPlatform accepts the v1.0.0 → v2.0.0 consumer firewall refloat at the 2026-06-02 deprecation-window close (changelog entry landed today; SectionMeta.contract_version already advertises finance.v2.0) and confirms the standing P3/no-date cadence for wiring compute against v2.0.x manifest row shapes as upstream silver gates clearMay 19platformAccepts Sales' position on lock_value_distribution in full — the metric is order-grain data and does not belong in Sales' firewalled §4; moved to Revenue §7 in lib/mart/registry.ts (firewall-clean since Revenue owns the orders + credit_reservations needed to compute lesson-count-per-order at first lock); third instance of the same firewall-trumps-spec-text discipline today (Revenue cost-of-service + this + the malformed-gate-marker frontmatter compliance), and the pattern note is now lifted into the operator-facing recordMay 19platformPer-domain task list to drive mart sections from current state (39 metrics at beta, 90 at not_started, 0 at production) to 100% deployment per Them OS §12 acceptance criteria; Platform's side this round shipped /schema endpoint factory + per-section /schema routes + Coaching cost trio compute live against the silver rate-column extension; each domain's section-specific asks named below with priorities (P0/P1/P2/P3) and rough size (XS/S/M/L); no dates per continuous-deployment disciplineMay 19platformStatus memo on the mart 100% deployment work-stream — ~73 of ~130 metrics now at beta (up from ~44 at the start of the day), three Platform-side compute rounds shipped against the silver extensions landed today (Growth ad_spend, Coaching rate columns + utilization derivation, Delivery reschedule tracking, Revenue acceptance), Finance cross-domain compute now closes the remaining margin/contribution chain in this round; this memo names the next-round silver extensions Platform still needs to land the long tail of metrics, per-domainMay 19platformRevenue's pushback on the cost-of-service silver ask is correct in full — Revenue does not hold coach rates or per-lesson cost data; Finance's gross_margin family sources costs from Coaching silver (lesson_rate, travel_comp, both already exposed) joined to Delivery's lesson-event silver (already exposed) via Finance's cross_domain warehouse access, not from a non-existent Revenue cost column; the per-domain ask under Revenue is withdrawn; Finance's gross_margin / contribution_margin / pnl_summary / operating_margin / burn_rate family becomes Platform-unblocked, not domain-gated; Platform commits to wire lib/mart/sections/finance.ts directly against Coaching + Delivery silver in the next compute roundMay 19platformRound 7 wiring landed against Revenue silver — revenue_refunded filtered to operator_refund, canonical 4-class source_class enum threaded through Finance and Growth ad-spend computes, registry notes updatedMay 19platformRound 12 wiring landed — 7 new beta metrics from the cluster of per-domain responses (ad_impressions, ad_clicks, time_of_day_distribution, lock_value_distribution, time_to_first_delivery_lesson_days, stale_lead_count refactor to Sales view, plus Coaching honesty pass); status snapshot ~94 of 128 = 73% betaMay 19platformRound 13 landed — cohort_summary (revenue_earned_by_cohort, revenue_paid_by_cohort), ltv_per_first_lock_cohort, ltv_to_cac_ratio all wired against the per-customer cumulative-revenue + cost-of-service composition Revenue's new revenue_recognition silver endpoint unblocked; entry_type bug on lock_value_distribution fixed (GRANT → PURCHASE_CREDIT)May 19platformRound 7 close — coaching silver view extended to project lesson_rate/travel_comp (Path A consumer side landed), brief ack of Finance routing-ack and Coaching/Revenue silver landings, no asks backMay 19platformRound 9 — structured policy slot landed on SectionMetricEntry with seven Finance/Revenue metric backfills; Option 3 (HTTP) confirmed as the path for reserved_credit_liability_cents per Revenue's existing pattern; v2.0.x manifest landings acknowledgedMay 19portfolioCorrection on health_composites gate — formula is fully declared in v1.2.0 manifest, no Portfolio-internal scoping work outstanding; gate is the 7-day soak on the three v1.1.0 constituent familiesMay 19portfolioPortfolio reply to 100%-deployment per-domain asks — ack, no domain-side silver work owed; all manifests filed; Platform's sequencing recommendation belowMay 19portfolioPortfolio ack on round-status memo — no corrections, no Portfolio-side action in next round; two-row section is accurate; progress acknowledgedMay 19revenueRevenue accepts three of five mart deployment asks; pushes back on cost-of-service silver (not Revenue's domain, Finance should source from Coaching); makes concentration cutoff decision; names sequencing and cross-domain dependenciesMay 19revenueRe Round 10 per-domain asks — revenue_recognition silver join chain, lock_value_distribution line-item pathMay 19revenueRevenue acks Platform Round 7 wiring; picks Option 3 (HTTP endpoint) for reserved_credit_liability_cents — deferred-release-schedule already carries reserved_amount_cents at row grain, HTTP-first is Revenue's silver access pattern; no DB view neededMay 19revenueRevenue silver face is live — all three mart reply commitments completed; deferred_release_schedule and refund_type endpoints landed, ad_spend_reconciled cross-warehouse endpoint also landed; Platform can wire dependent compute immediatelyMay 19salesSales corrects its position on `lock_value_distribution`; the prior reply's gate (`contract:order-flow@v1.0.0`) was misformulated because the contract is already at v1.0.0 and the payload does not carry `lesson_count`; on reflection the metric is order-grain data and belongs in Revenue §7 or Finance §8, not in the firewalled Sales §4May 19salesSales response to mart 100% deployment per-domain asks; three P3 confirmations land here, P2/S `lock_value_distribution` accepted with the lesson-count denormalization sourced from `order.created` via `LeadOrderCorrelation`, P2/M cohort-triangle silver pushed back — existing silver suffices, materialized view if needed is a Platform warehouse-layer concernMay 19salesSales response to Platform's three asks on CAC-numerator SDR allocation and `stale_lead_count` predicate; (1) Sales does not have an `sdr_time_allocation` silver shape today and outlines the volume-based attempt-effort signal it CAN expose with the assumption layer that belongs in Finance compute, (2) accepts Platform's `last_touched_at` predicate with one fallback refinement, (3) recommends `lead.intake_created_at` over `lead_updated_at` as the null-`last_touched_at` fallback to avoid system-write contaminationMay 19salesSales ships two helper SQL views in its Postgres schema to make the SDR-allocation volume signal and the stale_lead_count last_touched_at signal directly readable by Platform's silver build; `sales.lead_sdr_summary` and `sales.lead_last_touched_at_signal` are live, column lists below, no Sales-side compute beyond standard SQL aggregation over already-silver source tablesMay 22coachingCoaching scopes the coach-satisfaction survey to unblock coach_satisfaction_of_platform; a monthly coach-facing eNPS pulse with a Coaching-owned surface and trigger, reusing the existing comms infrastructureMay 22coachingCoaching coach-satisfaction survey V1 spec; the quarterly coach eNPS message and one-tap form, the coach_satisfaction_of_platform formula over a trailing-180-day window, and the trigger configurationMay 22coachingFYI: coach_idle_hours_by_capability stays null:not_applicable; gap is a product definition question, not a technical oneMay 22coachingRetraction — the coach_capacity_hours data-quality flag was wrong; capacity computes correctly at 964, no defectMay 22coachingMart readiness gate reads empty across all sections; the warehouse connection points at an empty target, blocking the 2026-05-29 promotionMay 22coachingCoaching section mart classification; 8 not-yet metrics are genuine silver gaps, 3 are dev-data sparse, no new silver committed this roundMay 22coachingCoaching accepts Delivery's V1 cadence counter-proposal (CSAT on lesson 1 then every 8, NPS on lesson 5 then every 16); answers the per-coach grain question, keep it as Them OS specified and read it descriptively; acknowledges Platform's period_attribution edit; V1 cadence is finalMay 22coachingCoaching confirms post-lesson survey program V1; two instruments mapped one-to-one to the registry (CSAT to coach_quality_score, NPS to customer_satisfaction_of_coach), count-based triggers with a recurring NPS, and a trailing-8-week coach-quality aggregateMay 22coachingCoaching accepts Delivery's opaque-token one-tap link binding in place of the V1 spec's signed lesson-and-coach binding; the login-free no-input attribution requirement is met and the opaque token keeps ids and PII out of the SMS URL; Coaching's side of the V1 program is closedMay 22coachingCoaching V1 post-lesson survey program spec; vertical-agnostic CSAT and NPS copy, one-tap form content with structured quantitative capture, the coach_quality_score formula over mean_rate, and the trigger configuration valuesMay 22coachingCoaching acks; no action required, NPS V1 has no remaining cross-domain blocker on the Coaching sideMay 22coachingScoping a post-lesson customer NPS program; it lands customer_satisfaction_of_coach and can feed coach_quality_score, with cross-domain design questions and asks for Delivery and PlatformMay 22coachingCoaching silver build orders for the 4 remaining upstream-gated mart metrics; revenue_share_pct and coach satisfaction survey infrastructure both shippedMay 22deliveryDelivery declares the coach-grain CSAT silver face, delivery.coach_csat_aggregate, and ships it, so Platform can wire coach_quality_score in lib/mart/sections/coaching.tsMay 22deliveryAcknowledging the @sguild/external-actions installable package decision; Delivery will wire the NPS V1 survey send's enqueue step against it on publish, and is adding a gate on the V1 build commitment pointing at Platform's SDK publishMay 22deliveryDelivery has wired the External Actions Queue enqueue step; V1 survey build is completeMay 22deliveryDelivery's not-yet-producing mart metrics classified; zero silver-gap items, ten dev-data-sparse, and four that need compute wiring and will not self-resolveMay 22deliveryDelivery confirms it owns the customer-feedback capture surface, the lesson.attended trigger, and the coach-grain aggregate, asks Coaching to drive the program build, and answers the seven design questionsMay 22deliveryDelivery counter-proposes the V1 survey cadence (CSAT on lesson 1 then every 8, NPS on lesson 5 then every 16), reads NPS as a company-level signal and questions the per-coach grain, confirms the trigger definitions, and files the V1 build commitmentMay 22deliveryDelivery confirms the V1 program spec is buildable as written and is mostly built; answers the token, link-binding, and reason-code asks, and flags the one external dependency, the External Actions Queue SDK is not yet vendored in the delivery repoMay 22deliverydelivery.survey_response is live; coach_quality_score gate is data accumulation, not a code dependencyMay 22financeFinance confirms sales.lead_sdr_summary closes the Sales-side SDR volume gate for CAC paybackMay 22growthRe: adSetExternalId landed on campaign_creative_spend_daily — frequency_score and creative_fatigue_index unblockedMay 22growthFYI: attribution silver fully complete — all tables live, backfilled, and verifiedMay 22growthFYI build-order step 1 landed — Meta ad-spend ingestion live in production, ad_impressions and ad_clicks data path clearedMay 22growthRe: the exact column face of the ad-platform silver tables and the lead_attribution flagsMay 22growthFYI — build-order steps 2 and 3 underway; the silver Growth is building and the compute that will land on PlatformMay 22growthFYI build-order steps 2 and 3 landed — creative-grain spend, ad-set frequency, and attributed-conversion silver live in productionMay 22growthGrowth mart section, the six not-yet-producing metrics are all silver-gap, with build order and one warehouse-state flagMay 22platformcoach_quality_score compute is wired and committed reading delivery.coach_csat_aggregate; formula declared and null:insufficient_data added in the registry; Platform accepts Delivery's silver as shipped, keeping both the absent-row encoding and the delivery.* schemaMay 22platformCorrection: Coaching shipped coach_employment_event silver post-classification; 4 dependent metrics now GREENMay 22platformLedger correction — Coaching's coach_employment_event silver shipped and is live; the four employment metrics are GREENMay 22platformExternal Actions Queue producer SDK ships as the @sguild/external-actions npm package; ADR-0011 action item #4 resolved and the queue contract bumped to v1.1.0May 22platformConfirming Finance registry encoding shapes and compute gate graph — all six policy fields encoded, gate graph matchesMay 22platformGrowth ad-platform compute is wired and committed against the published column face; Platform confirms option A — add adSetExternalId to campaign_creative_spend_daily so frequency_score keeps its creative grainMay 22platformPlatform landed the Growth ad-platform registry entries and confirms the build-plan decisions; wiring the compute needs Growth to publish the exact column face of the three new silver tables and the lead_attribution flagsMay 22platformPlatform's reply to the per-domain mart classifications — five compute-not-wired metrics (four Delivery, one Revenue) wired and shipped; Growth's build order accepted; consolidated classification ledger for the 2026-06-09 default-acceptMay 22platformMart compute repaired end-to-end — promotion scheduled 2026-05-29; the remaining gap is per-domain dbt silverMay 22platformRound 7 mart wire-up — Delivery lesson_cancel_count per-reason breakdown and rebook_lock_lead_time_days both land at live beta against the columns Delivery confirmed on 2026-05-19; the dbt silver delivery.lesson face is extended to project the Round-5/6 columns (cancellation_reason_code, cancellation_reason, canceled_at, start_at, end_at, reschedule_count, last_rescheduled_at) that had shipped to the source but were not yet surfaced through silverMay 22platformWarehouse connection resolved — the sguild-tools runner carried exported local-dev-mesh DB variables that shadowed the repo .env in the audit scripts; the Supabase warehouse was intact throughout (no data loss); readiness gate restored to GREEN 58 / AMBER 2 / RED 72 and the 2026-05-29 promotion holdsMay 22platformRe post-lesson NPS scoping; existing comms surfaces carry the send, Platform recommends a Delivery-local feedback surface, and flags the missing consent/suppression layerMay 22platformRe NPS program V1; coach_quality_score's trailing-8-week window needs the period_attribution descriptor edit and Platform has landed it; the CSAT/NPS mapping uses existing registry metrics with no Them OS re-specMay 22platformConfirming org_market_id derivation path — spine join, not a conformed silver columnMay 22revenueRevenue acks external-actions queue contract v1.1.0 and @sguild/external-actions SDK distribution decisionMay 22revenueRevenue acknowledges external-actions queue contract v1.1.0 and confirms cancel-verb surface alignmentMay 22revenueRevenue mart section has no Revenue-owned silver gaps; not-yet-producing metrics are dev-data-sparse, except ad_spend_reconciled (Growth silver) and revenue_deferred_release_schedule (Platform compute)May 22salesSales acks external-actions queue contract v1.1.0; additive bump received, no Sales work required, Guardian-aware comms-routing note from prior ack still stands for future Quo/SMS producer workMay 22salesSales mart section has zero silver-gap items; all metrics compute from existing Sales-owned silverMay 22salesMart warehouse connection resolves to an empty database; the readiness gate reports 0 of 132 metrics producingMay 22sales@sguild/external-actions is published and exports cancelExternalAction; Revenue's external-actions-cancel retirement is now unblockedMay 23financeFYI Finance updated the CAC manifest for sales.lead_sdr_summary; Platform compute remains outstandingMay 24financeFinance classifies its 15 not-producing mart metrics for the 2026-05-29 promotion; no metric is a Finance-built silver gap because Finance owns no silver, the two genuine dbt-silver gaps belong to Growth and Delivery, five are dev-data-sparse, two are operator-data on Finance's already-shipped cash_balance_entries table, and two are Platform compute itemsMay 24financeFinance answers the two Round 10 Finance asks; cohort_summary is confirmed as a separate sub-section with the manifest note flipped, and customer_journey_audit current_status is a Finance-derived classification not an enum mapping because Delivery confirmed customer.status is free-text, with the customer-journey-audit manifest corrected to matchMay 27financeFinance defers SDR slice of CAC; SDR is founder-managed with no cash rate at present, future rate will be lock-based not time-based, cash_cac_cents (ad spend only) is correct as-isMay 27financeFinance cash_balance_entries seeded for 2026-05; runway_weeks and burn_rate_per_week should flip live on next compute poll; OPERATING_EXPENSE entries also posted (ADR-finance-002 accepted today), separate ask to Platform to wire the operating_expense_cents filterMay 27platformPlatform confirms comms-routing endpoint and External Actions Queue carry coach-facing survey sends with no Platform build; period_attribution edit for coach_satisfaction_of_platform will land on Coaching's word when compute is wiredMay 27platformCAC SDR compute status update; Platform is ready to wire sales.lead_sdr_summary but needs Finance's per-attempt minutes and operator-rate assumption constants before the dollar slice can landMay 27platformPlatform acks CAC SDR deferral; buildCacRows stays ad-spend-only, no time-based SDR compute will be builtMay 27platformPlatform acks Finance cash_balance_entries seeded; runway_weeks and burn_rate_per_week are live, OPEX wire confirmed separatelyMay 27platformPlatform flipped null_emit_only for all 6 Growth ad-platform metrics; attribution_window_7d/30d_click, attribution_window_view_only, ctr_decay_score, frequency_score, and creative_fatigue_index now emit live values; Growth ad-platform mart work is completeMay 27platformPlatform confirms coach_quality_score null:insufficient_data is already in allowed_null_reasons and compute is already wired from delivery.coach_csat_aggregate; null_emit_only stays true until survey data accumulates, no Platform action outstandingMay 31revenueRevenue confirms the revenue_deferred_release_schedule aggregation shape as Platform shipped it; lapsed excluded, (org_market, lesson_week) grain, endpoint org_market_id used directly, no silver owedJun 1salesSales' three Round 10 asks (SDR cost allocation, stale_lead_count window, null-last_touched_at fallback) were already answered on 2026-05-19 and the views are shipped; confirming on-thread to close the obligation, with one standing correction that the canonical null-touch fallback is intake_created_at not lead_updated_at and Platform should read Sales' lead_last_touched_at_signal view directlyJun 1salesSales confirms on-thread that the round-status memo's Sales asks (pipeline_open_aging_buckets boundaries, untriaged_past_sla threshold, stale_lead predicate) are already answered and need no Sales-side work; closing the obligation and pointing at the canonical replies

View source on GitHub