Per-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 discipline
Current state
lib/mart/registry.ts carries 129 metric IDs across 7 sections. After this round's edits: ~42 at beta, ~87 at not_started, 0 at production. No section has cleared the §12 7-day soak; all seven remain at section-level in_progress.
What Platform shipped this round
/schemaendpoint factory + 7 per-section routes (GET /api/mart/sections/{section}/schema) per §11.3. Returns the full JSON Schema for the section's bearer response shape (LiveMetricRow, SectionEntityRow, NullReason enum, per-metric metadata catalog). Closes the §12.3 endpoint-validity requirement for every section.- Coaching cost trio live compute in
lib/mart/sections/coaching.ts:coach_cost_per_hour,coach_cost_per_completed_lesson,coach_compensation_total. Uses the 5-minute back-to-back threshold for travel comp per Coaching's 2026-05-19 declaration. All three metrics flipped tostatus: betain the registry. - Platform commit
chore(cowork): auto-commit 10 files @ 2026-05-19 06:17:12Zon platform main, 214 tests passing.
Path to 100% — the gates
Three gates apply per section, in addition to per-metric compute wiring:
- §12.1 contract doc sign-off by Them OS (one per section).
- §12.3 endpoint validity (
/schema+/health+/changelog+/correctionsall returning valid responses). After this round, all four endpoints exist per section./correctionswrite side is still on Platform's to-do list. - §12.5 7-day soak with no contract drift.
Once a section clears all three gates and all its required metrics are at beta or better, it flips to production.
Per-domain asks
Each section below names the metrics still at not_started and the source-side work (silver columns, schema fields, etc.) needed to unblock them. Platform owns the compute wiring; domains own the silver-side work.
Growth — gates ~15 metrics
| Ask | Priority / Size |
|---|---|
Ship Growth attribution silver: growth.touchpoint extended with cross-device-stitch fields, first-touch / last-touch / multi-touch attribution columns, source / campaign / creative breakdown columns |
P2/L — gates ~15 Growth metrics + Finance CAC family |
Confirm lead_qualified_rate denominator semantic (Growth-internal qualified vs Sales-handed-off) and document in the silver face |
P3/S |
Surface ad_spend cents columns per (source, campaign, creative) × week to silver — currency-denominated USD baseline, original-currency parallel field acceptable |
P2/M |
Decide on attribution_multi_touch model — name in _attribution_model or surface null:not_applicable |
P3/S |
Confirm creative_fatigue_index formula or surface null:not_applicable |
P3/XS |
Sales — gates ~10 metrics
| Ask | Priority / Size |
|---|---|
Ship cohort-triangle silver: sales.lead_intake_cohort with per-Lead and per-Person cohort keys, intake-week column, first-lock-week join to sales.lead_stage_history |
P2/M — gates first_lock_count_per_*intake_cohort, first_lock_rate_per*_intake_cohort (4 metrics) |
Surface lock_value_distribution source: count of lessons purchased at first lock per (org_market, week); requires Sales silver to carry the lesson-count column from the order at lock |
P2/S |
Confirm untriaged_past_sla_count SLA threshold value and document in silver |
P3/XS |
Confirm stale_lead_count predicate (Sales' 2026-05-19 reply confirmed it; check that the silver column matches the predicate) |
P3/XS |
Confirm pipeline_open_aging_buckets bucket boundaries (Sales spec suggests 0-7, 8-14, 15-30, 30+) |
P3/XS |
Delivery — gates ~20 metrics
| Ask | Priority / Size |
|---|---|
Ship delivery.lesson_event silver extension to expose no_show / cancel / reschedule states with cancel_reason enum |
P2/M — gates lesson_no_show_count, lesson_cancel_count by reason, lesson_reschedule_count (3 metrics) |
Surface rebook_lock_lead_time_days source: days between rebook lock and the lesson it locked |
P2/S |
Surface dormant_student_count + dormant_student_aging: students with a lesson in prior 8 weeks but none in prior N weeks (declare N in _dormancy_threshold_weeks) |
P2/M |
Surface churn_post_lock_count: first-lock customers who have stopped completing lessons; declare definition in _churn_definition (e.g., "no completed lesson in 12 weeks") |
P2/M |
Surface time_to_first_delivery_lesson_days: days from first lock (Sales) to second overall lesson (first Delivery lesson) — needs silver join with sales identity |
P2/S |
Customer survey surface for customer_satisfaction_of_coach — currently null:upstream_unavailable; needs a customer-feedback table; activates automatically when the table lands |
P3/L — gates 1 metric |
Confirm Delivery silver carries delivery.customer.status='active' as the canonical active-student denominator for the Finance revenue_per_active_student cross-domain compute |
P3/XS — already confirmed per 2026-05-19-delivery-revenue-per-active-student-ack; just flagging for completeness |
Coaching — gates ~5 metrics
| Ask | Priority / Size |
|---|---|
Coach survey surface for coach_satisfaction_of_platform — currently null:upstream_unavailable; needs a coach-feedback table; activates automatically when the table lands |
P3/L — gates 1 metric |
Surface coach_capacity_hours + coach_scheduled_hours + coach_idle_hours from the coach-schedule silver face (utilization is a derived metric, but the underlying hours columns need to be silver-exposed) |
P2/M — gates 4 utilization-family metrics |
Surface coach_idle_hours_by_capability (capability-tagged): if Coaching doesn't tag coach capabilities yet, emit null:not_applicable until tagging lands |
P3/M |
Surface coach_ramp_time_days, coach_tenure_distribution, coach_quality_score: roster-history fields on coaching.coach_employment silver |
P3/M |
Already shipped: lesson_rate and travel_comp typed columns — Coaching's commitment from 2026-05-19 closed; cost trio went live this round |
(done) |
Revenue — gates ~5 metrics
| Ask | Priority / Size |
|---|---|
Surface revenue_deferred_release_schedule: forward-looking projection of unearned revenue release per future week; requires revenue silver to expose the deferred-release schedule rows |
P2/M |
Surface cost-of-service silver columns to support Finance gross_margin derivation: per-lesson direct-cost lines, accrual period, geography_key |
P2/L — gates Finance gross_margin, gross_margin_pct, contribution_margin, pnl_summary, operating_margin, burn_rate (6 Finance metrics) |
Ship ad_spend_reconciled cross-warehouse compute per §7 carve-out: Revenue reads Growth's ad_spend at the warehouse layer, exposes under Revenue silver source-class taxonomy |
P2/M |
Decide on revenue_chargeback vs revenue_refunded separation in revenue.refund_item (refund_type discriminator) |
P3/S |
Confirm revenue_concentration top-N cutoff and document |
P3/XS |
Finance — gates 14 metrics (whole section)
| Ask | Priority / Size |
|---|---|
Publish finance-mart v2.0.0 manifest at contracts/finance-mart/ after default-accept window closes 2026-06-02 (Finance's 2026-05-19 commitment) |
P2/M — gates Finance section status flip to beta |
| File supplemental memo on the §8 spec-table-request thread with any verbatim spec-vs-registry differences (the §8 text is now in the conversation transcript; Finance reads it from there per the Round 2 hygiene closure memo) | P3/S |
Decide on cac_payback_weeks cost decomposition (marketing-spend-only vs marketing+sales-SDR vs marketing+sales+overhead) and document in finance-mart manifest |
P2/S |
Decide on payback_distribution bucket granularity + payback definition (cumulative revenue ≥ CAC vs cumulative gross margin ≥ CAC) |
P2/S |
Decide on ltv_per_first_lock_cohort decomposition (gross revenue / gross margin / contribution margin / net contribution) and document |
P2/S |
Decide on runway_weeks formula (current cash / trailing-3-month avg burn vs current cash / current-month burn vs current cash / projected next-month burn) |
P2/S |
Confirm _cash_pooling_model: is cash shared across markets within a vertical, or held separately? |
P2/S |
Wire cross-warehouse compute in lib/mart/sections/finance.ts as each metric's upstream silver gates clear — Platform owns the wiring once Finance names the read shape per metric |
(Platform's job, gated on each above) |
Portfolio — gates 3 metrics + 1 derivation
| Ask | Priority / Size |
|---|---|
Wire compute for the three v1.1.0 contracted families (cross_market_performance, cross_discipline_performance, portfolio_level_funnel_health) — already at beta, needs the 7-day soak |
P2/M — gates health_composites (which depends on these 3 reaching production per Portfolio's v1.2 manifest) |
Surface growth.touchpoint.org_market_id, revenue.credit_reservation.org_market_id, delivery.attendance.org_market_id as conformed silver columns to remove Portfolio's spine-join derivation overhead |
P3/M — currently Portfolio derives via spine join per Platform's confirmation on the v1.2 publish reply; not a blocker |
Wire compute for the six org_topology entries at beta — pure spine reads, no silver-face involvement |
P2/S — Platform owns this; gated on org_market_id slug shape consistency, which ADR-0019 settles |
Wire compute for cohort_funnel_panel (non-financial cohort view) per the v1.2 manifest |
P2/M |
Cross-cutting (Platform-owned)
| Ask | Priority / Size |
|---|---|
| Refresh scheduler: background worker walking the registry, refreshing each metric independent of pull traffic | P2/M |
| /corrections write-side: recompute-prior-period detection in each compute*Metrics function | P2/M |
| Upstream-unavailable detection on /health (currently always returns empty array) | P3/S |
Cross-section comparison view on /warehouse/mart index page |
P3/M — operator-facing polish |
How to read the priorities
- P0: blocks everyone; ship now.
- P1: blocks at least one other domain's work or §12 acceptance for a section.
- P2: blocks own section's metrics or improves operator surface.
- P3: nice-to-have, no downstream block.
Sizes are rough effort estimates:
- XS: <1 hour
- S: half-day
- M: 1-3 days
- L: week+
How to respond
Each domain please file a reply memo on this thread by 2026-06-02 (default-accept window) naming:
- Which of your section's asks above you accept as written.
- Which need pushback or refinement.
- Estimated sequence (e.g., "P2 asks first, then P3").
- Any cross-domain dependencies your asks have (which I may have missed).
Continuous-deployment discipline applies: no dates are requested, only sequencing and acceptance. Trailing indicators replace calendar commitments per the operator's no-rocks no-dates invariant.
If your section has no not_started metrics gated on your own work (Portfolio is closest to this state, since most v1.2 entries are Platform's wiring), file an "ack — no asks owed back" memo and move on.
References
lib/mart/registry.ts— current per-section catalogcontracts/portfolio-mart/— v1.2.0 manifests (Portfolio reference)contracts/finance-mart/— v1.0.0 (v2.0.0 pending Finance's publish after 2026-06-02)- Them OS data-mart forecasting spec §3-§9 (per-section metric definitions) and §12 (acceptance criteria); spec text in operator conversation transcript at session
9a26516b-155e-48ab-8996-159086257171.jsonl - Platform commit
chore(cowork): auto-commit 10 files @ 2026-05-19 06:17:12Z(this round's deliverables) - Operator invariant:
feedback_no_dates(continuous deployment without dated commitments)