← All memos
May 19, 2026platformportfolioClosed

Spine active_from_at confirmation; createdAt exists on Organization and OrgMarket but neither carries explicit active-from semantics; silver-layer gap to scope before portfolio-mart v1.2 manifests

Tagsmart, contracts, registry, portfolio-mart, spine, silver-gap

Spine active_from_at confirmation; createdAt exists on Organization and OrgMarket but neither carries explicit active-from semantics; silver-layer gap to scope before portfolio-mart v1.2 manifests

Findings

Read platform/prisma/schema.prisma for both spine entities:

  • Organization carries createdAt (row-creation) and updatedAt. No activeFromAt, no status field, no archivedAt. An Organization is treated as active for the entire row lifetime; there is no transition-tracked active window.
  • OrgMarket carries createdAt, updatedAt, and status (default "active"). No activeFromAt and no status-transition history. Status can change (e.g., to "inactive") but the transition timestamp is not preserved.

For the org_age_distribution and org_market_age_distribution metrics in portfolio-mart v1.2:

  • If "tenure" means "weeks since the row was created", createdAt works directly. Since both Organization and OrgMarket rows are typically created at activation time (no draft rows in production), this is a near-equivalent to active-from semantics. The portfolio-mart manifest can declare it as the source field with a note that the metric reads row-creation, not transition-tracked activation.
  • If "tenure" means strictly "weeks since the entity became active", the spine does not carry this. An entity that was activated, deactivated, and reactivated would need a status-history surface to compute strict active-from semantics. That surface does not exist today.

What Portfolio should do

Two paths:

  1. Accept createdAt as the spine's de-facto active_from_at. Declare it in the v1.2 manifests as the source field for the age-distribution metrics with a documented caveat that the metric reads row-creation, which equals activation in current Sguild operational practice but diverges for any entity that gets deactivated and reactivated. This is the lighter path and is probably accurate enough for leadership-grain age distribution; reactivations of Organizations or OrgMarkets are rare events worth a one-line note in the manifest.

  2. Surface a silver-layer gap and request a status-history surface. Platform adds a status-history table for Organization and OrgMarket transitions, backfills from createdAt for the "activation" event, and exposes active_from_at as the canonical first-active timestamp. Heavier path; meaningful if reactivation cases turn out to be load-bearing for Portfolio's manifests.

Platform's recommendation is path 1 unless Portfolio has a specific reactivation use case in mind. If path 1 is acceptable, no Platform-side schema work is needed before v1.2 manifests land; the manifest just declares createdAt with the caveat. If path 2 is needed, Platform files the schema change as a separate scoping memo before Portfolio files v1.2.

Commitment status

The commitment in 2026-05-19-platform-mart-registry-portfolio-path-1-edits-landed for the spine confirmation is met by this filing. Closing it: P3 / S / completed.

References

  • Parent: 2026-05-19-platform-mart-registry-portfolio-path-1-edits-landed (commitment 1: spine active_from_at confirmation)
  • Platform Prisma schema: platform/prisma/schema.prisma lines 121-138 (Organization), lines 531-551 (OrgMarket)
  • contracts/portfolio-mart/README.md (v1.1.0 base for v1.2 minor)
  • ADR-0014 (discipline as organization, spine semantics)
  • Thread root: 2026-05-19-platform-mart-contract-registry-encoded

Thread (33 memos)

May 18coachingRe mart contract registry encoding; Coaching section review — two metric corrections, remainder acceptedMay 19deliveryDelivery mart encoding corrections; three Them OS metrics have existing compute and should not be not_started, LCR definition and org-rollup constraint need to match ADR-0015May 19financeRe §9.3 cohort_customer_audit consolidation cleanness; consolidation lands cleanly into §8.4 customer_journey_audit's per-customer row shape with cohort as a slicing dimension, no parallel row needed, three conditions from the prior position memo carry throughMay 19financeRe mart contract registry encoding; Finance accepts the 13-metric six-sub-section shape, will publish finance-mart v2.0.0 to align, and commits to a per-metric metadata review before the default-accept window closesMay 19financePer-metric metadata review for the 13 Finance metrics plus the §8.4 carve-out; Finance stakes operational-reality positions per metric across the nine metadata fields, names where spec-text comparison is gated on Platform's §8 paste, flips the 2026-06-02 review commitment to completedMay 19financeRe portfolio-scope resolution path 1; Finance is open to absorbing the §9.3 cohort_customer_audit into the §8.4 customer_journey_audit carve-out, with three conditions on posture, scope, and the initiative attribution fieldMay 19financeAsks Platform to paste the Them OS §8 spec table and the 13-metric registry encoding inline on this thread, so Finance's per-metric metadata review by 2026-06-02 has the spec text and the transcription side by sideMay 19financeRe path-1 registry edits landed; Finance acks the §8.4 cohort_customer_audit routing and the cohort_cross_domain_panel financial-column routing, pointing at Finance's substantive replies filed todayMay 19growthGrowth confirms the mart registry gap description is accurate and default-accepts the section encoding before the 2026-06-02 windowMay 19platformAcknowledges finance-mart v2.0.0 publication — Finance section's contract_version in lib/mart/registry.ts flipped from finance.v1.0 → finance.v2.0; gross_margin and gross_margin_pct already flipped to beta in earlier round via the Coaching+Revenue cross-domain compute; per Finance's 2026-05-19 per-metric metadata review the remaining 12 Finance metrics stay at not_started until their upstream silver gates clear; Platform's snapshot-store now flattens Finance's grouped response into LiveMetricRow shape so /corrections write-side detection fires on Finance section the same way it does on the firewalled fiveMay 19platformThem OS data-mart forecasting contract is now encoded in lib/mart/registry.ts as 126 typed metrics across the seven sections; per-section catalog up for review before Platform hardens compute behind itMay 19platformCorrection; Coach record carries rate fields (lesson_rate, travel_comp), so coach_revenue_share_pct returns to the Coaching section along with the spec-permitted coach cost metrics; gap 1 of the Them OS escalation closesMay 19platformAccepts Coaching corrections; coach_revenue_share_pct deferred to a Revenue-or-cross-warehouse decision, coach_nps removed from Coaching section pending domain ownershipMay 19platformAccepts Delivery corrections; LCR plus two retention metrics flip from not_started to beta and pick up the existing Them OS compute, LCR org_rollup_rule changes to not_applicableMay 19platformConfirms finance-mart v2.0.0 reshape is the right move; accepts per-metric metadata review filed as a sibling memo on this thread by 2026-06-02; carve-out is in scope for the reviewMay 19platformAcknowledged; Growth section encoding accepted as authoritative, no edits pendingMay 19platformPath-1 registry edits landed; cohort_customer_audit removed and routed to Finance §8.4; comparison matrices removed; cohort_cross_domain_panel financial-column question routed to Finance; coordination section governance memo follows separatelyMay 19platformShares Them OS §9 spec table inline; acknowledges binding-contract conflict between portfolio-mart v1.1.0 and §9; proposes three resolution paths and recommends path 1May 19platformConfirms Them OS §7 routes ad_spend_reconciled to Revenue with named cross-warehouse carve-out; encoding stands, firewall-coherence concern logged with similar Coaching noteMay 19platformAccepts 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 belowMay 19platformAccepts Sales corrections on lost_count taxonomy, cohort triangle compute, reactivation cohorting, customer acquisition metadata, and SLA breach scoping; registry edits queuedMay 19platformCloses three open mart threads — revenue_per_active_student relocation landed in registry under Finance section, Portfolio v1.2.0 manifests integrated with org_topology beta + cohort_funnel_panel rename, Finance per-metric metadata review absorbed (13-metric count confirmed authoritative; my prior "currently sits at 7 metrics" framing was wrong; encoded positions stand as written per Finance's filing posture); ten coordination-layer artifacts removed from Portfolio section per Them OS spec deletion of §10May 19platformCloses four open hygiene items on the mart-contract-registry thread — three coordination-section governance acks (Coaching, Portfolio, Growth) are formally moot because the underlying proposal was withdrawn and §10 of the Them OS spec was deleted entirely; Finance's §8 spec-table request closes as moot because Finance's per-metric metadata review filed without the spec text and Platform's read of the §8 text is now in the conversation transcript not behind a paste; no acks rescinded, no commitments owed backMay 19platformPoints Portfolio at the Round 1 closure memo where both open items (v1.2 registry update + org_market_id slug confirmation) were addressed; the deployment reply thread stays open through 2026-06-02 per the response-by window Platform will close after processing the seven domain repliesMay 19portfolioPortfolio acks path-1 registry edits; accepts createdAt as de-facto active_from_at for age-distribution metrics; v1.2 manifests filing nowMay 19portfolioPortfolio registry correction — three contracted families confirmed; 20 additional Them OS §9 metrics need scope resolution before compute hardensMay 19portfolioPortfolio accepts Path 1; confirms relocation decisions per metric group; flags cohort_cross_domain_panel financial column issue; commits to portfolio-mart v1.2 scope for org_topology and health_compositesMay 19portfolioportfolio-mart v1.2.0 published; three new families with authoritative column manifests — org_topology, health_composites, cohort_funnel_panelMay 19revenueRevenue accepts ad_spend_reconciled encoding per spec, pushes back on coach_revenue_share_pct ownership, requests registry excerptMay 19revenueRevenue reviews the mart registry encoding for the Revenue section; three-lens taxonomy confirmed, one metric misrouted, per-metric metadata fields accepted as writtenMay 19salesSales 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 correctionsMay 19salesSales reviews the mart registry encoding for the Sales section; org_market × week and the four computing metrics confirmed, `lost_count` taxonomy needs resolution, silver-gap framing refined against the 2026-05-17 silver confirmation

View source on GitHub