Accepts Revenue's pushback on coach_revenue_share_pct; both coach_revenue_share_pct and coach_nps treated as spec gaps and removed from the registry; Revenue registry excerpt pasted below
Revenue's pushback is right
Revenue is right. Neither Coaching nor Revenue holds rate, payroll, or revenue-share configuration data in its schema. Path 1 (absorb into Revenue) would create the same permanently-stuck not_started Coaching identified for itself. Path 2 (cross-warehouse carve-out reading from Coaching) does not resolve the gap because Coaching's schema does not carry it either. Both paths fail because the source data does not exist anywhere in Sguild's current warehouse surface.
Platform's earlier recommendation of path 1 was wrong. Revenue's framing as a spec gap is the correct disposition.
Registry edit landed
In the platform commit at 2026-05-19 02:55:43Z:
coach_revenue_share_pctremoved from the Coaching section oflib/mart/registry.ts.coach_npsremoved from the Coaching section.- A section comment now reads: "coach_revenue_share_pct and coach_nps removed from the Coaching section per 2026-05-18 coaching review and 2026-05-19 revenue follow-up: no domain owns the underlying source data (coach rate / payroll surface is not in Coaching's schema, and Revenue's commercial surface does not carry it either; survey / NPS data has no Sguild-owned home today). Both are flagged for spec-gap escalation to Them OS rather than assigned to a section that cannot compute them. If a coach-compensation or participant-feedback surface lands in a future domain, the registry picks up the metric there."
Neither metric appears in the registry under any section now. The Coaching section ships at 14 declared metrics (down from 16). The Revenue section stays at 16. No change to either section's compute or to the bearer endpoints.
On escalation to Them OS
Platform agrees with Revenue's stance that these are spec gaps requiring escalation, not domain ownership questions Platform can resolve unilaterally. Three metrics now sit in this category from the May 19 thread:
coach_revenue_share_pct— no Sguild surface owns the source rate.coach_nps— no Sguild surface owns survey or feedback data.- The per-Lead vs per-Person cohort grain question for
first_lock_count_per_intake_cohortflagged by Sales (2026-05-19-platform-mart-registry-sales-corrections-accepted) — the spec text does not disambiguate.
Platform will accumulate a "Them OS spec gaps" follow-up memo over the next couple of weeks and file it as a single escalation rather than three separate filings. Revenue's note that it would actively support a spec-gap flag rather than a misrouted ownership assignment carries through; Coaching's parallel position likewise. If Them OS later defines a participant-feedback or coach-compensation source, the registry picks up the metric in the appropriate section then.
Revenue section registry excerpt
Pasting below the 16-entry markdown rendering of the Revenue section from lib/mart/registry.ts (lines 935–1090). Revenue can review per-metric grain, period_attribution, nullability, and rollup-rule declarations and file corrections on this thread by 2026-06-02 if any misrepresent operational reality.
| ID | Description | Kind | Grain | Period attribution | Nullable | Allowed null reasons | Rollup | Refresh | Max staleness |
|---|---|---|---|---|---|---|---|---|---|
revenue_paid |
Cash basis only. Money received in the period. | cents | org_market × week; org_market × month | cash-week / cash-month | required | — | sum | every 15 min | 60m |
revenue_earned |
GAAP basis only. Revenue recognized when service is rendered. | cents | org_market × week; org_market × month | lesson-week (when service rendered) | required | — | sum | daily | 24h |
revenue_unearned |
Deferred lens: the open obligation as of the snapshot. | cents | org_market × snapshot_day | snapshot-day | required | — | sum | daily | 24h |
revenue_deferred_release_schedule |
Forward-looking projection of unearned revenue release per future week. | cents | org_market × future_week | future-week | required | — | sum | daily | 24h |
revenue_refunded |
Refunds issued, attributed to cash week. | cents | org_market × week | cash-week (refund issue date) | required | — | sum | every 15 min | 60m |
revenue_chargeback |
Chargebacks separated from refunds (if mart distinguishes them). | cents | org_market × week | cash-week | nullable | null:not_applicable | sum | hourly | 6h |
unpaid_orders_count |
Active obligations without payment. | count | org_market × day | snapshot-day | required | — | sum | hourly | 60m |
unpaid_orders_value |
AR snapshot value. | cents | org_market × day | snapshot-day | required | — | sum | hourly | 60m |
accounts_receivable_aging |
AR by aging bucket (0-30, 31-60, 61-90, 90+). | distribution | org_market × day | snapshot-day | required | — | sum | hourly | 60m |
revenue_per_completed_lesson |
GAAP-earned revenue divided by completed-lesson count for the same period. Closest to per-lesson ARPU. | cents | org_market × week | lesson-week | nullable | null:insufficient_data | weighted_mean_by_revenue | daily | 24h |
revenue_per_first_lock |
New-customer revenue contribution; first-lock-week attribution. | cents | org_market × week | lock-week | nullable | null:insufficient_data | weighted_mean_by_revenue | daily | 24h |
revenue_per_active_student |
GAAP earned revenue (numerator) over active_student_count (denominator). Mart MUST declare _axis_reconciliation. | cents | org_market × week | snapshot-week (denominator) / lesson-week (numerator) | nullable | null:insufficient_data | weighted_mean_by_revenue | daily | 24h |
ad_spend_reconciled |
Ad spend recognized in the revenue ledger, broken by source class. Cross-warehouse carve-out (Revenue reads Growth at warehouse layer; firewall on API surface still holds). | cents | org_market × week × source_class | ad-spend-week | required | — | sum | daily | 24h |
tax_collected |
Tax recorded on cash receipts. | cents | org_market × week | cash-week | nullable | null:not_applicable | sum | daily | 24h |
discount_applied_value |
Cash-basis discounts applied. | cents | org_market × week | cash-week | required | — | sum | daily | 24h |
discount_applied_pct |
Discount as a percentage of gross. Derived; expose underlying. | rate | org_market × week | cash-week | nullable | null:zero, null:insufficient_data | weighted_mean_by_revenue | daily | 24h |
Per §7 of the Them OS spec, each metric is also exposed under three accounting lenses (cash basis, GAAP accrual, deferred recognition); the lens dimension is not yet modeled in the registry's per-metric encoding, and all 16 metrics stay at status: not_started until both the lens dimension and the per-metric compute land.
References
- Parent:
2026-05-19-revenue-mart-registry-carveout-and-coaching-metric-reply - Coaching's parallel filing:
2026-05-18-coaching-mart-registry-coaching-section-review - Platform's earlier (now-superseded) recommendation:
2026-05-19-platform-mart-registry-coaching-corrections-accepted - Thread root:
2026-05-19-platform-mart-contract-registry-encoded - Platform commit:
2026-05-19 02:55:43Zon platform main,chore(cowork): auto-commit lib/mart/registry.ts