Owed ledger
Live - fetched 2026-07-13 10:04 UTC-generated 2026-07-13 10:04 UTC
Pending
15
Replies owed
66
Conditional
6
Completed
228
Pending
growth (1)
-P3MgrowthAdd organization_id attribution to campaign_spend_daily; not yet scoped — Growth will coordinate with Platform on the join key shape before landing|memo
delivery (5)
-P1MdeliveryCoaching: consume active Delivery rebook intents as protected booking intervals and return `protected_trial_followup` as the ineligibility reason for non-owning customersmemo
-P1SdeliverySales: pass `person_id` or `participant_id` into Coaching eligibility reads so the owning customer can book their protected slot while other customers are blockedmemo
-P2SdeliveryImplement the Delivery consumer for lead.handoff.context.recorded, including pending-context storage before customer.handoff and attach-on-handoff upsert into Delivery customer contextmemo
-P2XSdeliveryRe-run scripts/bootstrap-workspace-clone.mjs host-side in the delivery-coordination clone (after a git reset --hard origin/main to clear a corrupted index) to set git update-index --skip-worktree on INDEX.md and the tracked _views paths and confirm with git ls-files -v grep Smemo
2026-05-31P1MdeliveryExecute Delivery internal ADR-0005 cutover: reconcile the production _prisma_migrations ledger via the production DIRECT_URL then change vercel.json buildCommand to run prisma migrate deploy before the build then add a CI check that fails when schema.prisma changes without a new migration directory then retire the ensure-deploy-schema bridge after one clean migrate deploy proves the ledgermemo
revenue (7)
-P2MrevenueRatify sales-ordering-surface to v1.0.0 after Sales and Platform review and land the additive order-flow created_via sales_ordering_surface minor bump at ratificationmemo
-P2MrevenueRatify sales-ordering-surface to v1.0.0 after Sales and Platform sign off on the v0.2.0 text, landing the additive order-flow created_via and originating_lead_id order-provenance minor bumps at ratificationmemo
-P2LrevenueImplement the sales-ordering-surface v1.0.0 producer in the Revenue app (the single synchronous close packaging reserve, first-payment funding, lock, and order mint through the existing credit-reservation-lock state machine; scoped status read; org-scoped idempotency; server-side price validation) and emit the order-flow v1.1.0 provenance (created_via sales_ordering_surface, and the echoed originating_lead_id on order.created); hold originating_lead_id emission until consumers confirm they have re-mirrored the order.created v1.1.0 schemamemo
-P2SrevenueAlign Revenue local seed fixtures (reservation, credit account, order, reservation lock, customer.handoff) to Platform's published shared fixture spine canonical Person and lesson IDs, and keep crr_ reservation IDs stable so Sales and Delivery can reference themmemo
-P3XSrevenueApply git update-index --skip-worktree on INDEX.md and the tracked _views paths in the revenue-coordination clone per ADR-0027 (host-side run or via Platform's bootstrap step once landed) and confirm with git ls-files -vmemo
2026-05-31P1SrevenueAdd reservation_id to the service-recovery grant request and resolve credit-account and person server-side so Delivery need not supply person_idmemo
2026-05-31P2SrevenueAuthor Revenue-owned service-recovery-credit-grant-api.md sub-spec under credit-reservation-lock covering endpoint auth idempotency rejection-taxonomy and recognition notememo
finance (2)
-P1SfinanceSeed COACH_PAYMENT actuals for April and May from Square Payroll run records so the rerouted pnl composition has backfilled datamemo
-P2MfinanceWire prisma migrate deploy as a defined CI deploy step against DIRECT_URL, add a prisma migrate status preflight that fails on pending or drifted migrations, document db push as dev-only in Finance DB docs, and run the one-time production drift audit and reconcile per the ADR-0026 per-domain action item|memo
Replies owed
indexer-derived from thread structureREPLYP2platformto financeRe 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 shapememo
REPLYP2coachingto platformAccepts Coaching corrections; coach_revenue_share_pct deferred to a Revenue-or-cross-warehouse decision, coach_nps removed from Coaching section pending domain ownershipmemo
REPLYP2platformto salesSales' concrete asks of Delivery to unblock commitment 0 on the composite-offer thread; what Sales needs is one Delivery scoping memo, the v1.3.0 README amendment landing, and the `POST /sales-scheduling-surface/v1/holds/atomic-multi-create` endpoint live; Sales offers to author the README diff as a Delivery-ratifiable draft if it reduces Delivery's lift; no dates per the no-rocks no-dates disciplinememo
REPLYP2platformto revenueRevenue 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)memo
REPLYP2platformto deliveryDelivery confirms Revenue's four coach no-show positions and drafts the ADR-0006 coach_no_show amendment; net-zero released routing accepted, the new reason code drafted as an additive-minor v1.4.2 to v1.5.0 bump, and Platform asked to land the README, the release-API sub-spec, and the payload schema as contract ownermemo
REPLYP2platformto deliveryDelivery drafts the credit-reservation-lock v1.6.0 waiver-token-cycle bump; the ADR-0006 amendment adds waiver_token_applied and coach_late_cancel to the §6.1 auto-release subset and generalizes the subset header, the bump sequences after the cancellation-waiver-token contract reaches readiness, and a note records the operator refinement adding a quarterly grant trigger and removing token expiry from the contractmemo
REPLYP2platformto revenueRevenue accepts Delivery's waiver-token positions; the Delivery-side decrement-then-release consumption model is the right shape and Revenue withdraws its token-aware cancellationPolicy sketch, waiver_token_applied is acceptable and belongs in the §6.1 auto-release subset, Delivery owning the token store is confirmed, and the artifact path is a coordination ADR then a waiver-token contract then a credit-reservation-lock minor bumpmemo
REPLYP2platformto revenueRevenue confirms its credit.* and customer.handoff emitters are tenant_id-envelope-conformant; no producer non-conformance and no Revenue fix is needed, the tenant_id-bearing payloads Delivery observed are not Revenue-produced, and Revenue recommends Delivery replays the failed events from its own inbox rowsmemo
REPLYP2platformto revenueRevenue confirms it holds authoritative per-Person first-lock state and will surface it as a one-time export for the handoff backfill; the person_first_locks table reconstructs each missed customer.handoff payload exactly, no standing endpoint or contract artifact is built for a one-time cleanup, and the export script is written and typecheck-cleanmemo
REPLYP2coachingto platformADR-0023 follow-up asks per current per-domain state; Coaching owes a per-workspace clone plus a spaces.json mount plus AGENTS.md repointing, Delivery and Growth and Sales each owe AGENTS.md repointing of ../coordination/ references to ../<domain>-coordination/ paths with current ref counts named here, and Finance and Portfolio and Revenue are already satisfied and named for completeness; Platform commits to one indicator advance on each notification, taking per-domain-coordination-clones from 3 of 8 toward 8 of 8 as the named work landsmemo
REPLYP2financeto platformADR-0023 follow-up asks per current per-domain state; Coaching owes a per-workspace clone plus a spaces.json mount plus AGENTS.md repointing, Delivery and Growth and Sales each owe AGENTS.md repointing of ../coordination/ references to ../<domain>-coordination/ paths with current ref counts named here, and Finance and Portfolio and Revenue are already satisfied and named for completeness; Platform commits to one indicator advance on each notification, taking per-domain-coordination-clones from 3 of 8 toward 8 of 8 as the named work landsmemo
REPLYP2portfolioto platformADR-0023 follow-up asks per current per-domain state; Coaching owes a per-workspace clone plus a spaces.json mount plus AGENTS.md repointing, Delivery and Growth and Sales each owe AGENTS.md repointing of ../coordination/ references to ../<domain>-coordination/ paths with current ref counts named here, and Finance and Portfolio and Revenue are already satisfied and named for completeness; Platform commits to one indicator advance on each notification, taking per-domain-coordination-clones from 3 of 8 toward 8 of 8 as the named work landsmemo
REPLYP2platformto revenueRevenue's MCP env-var cutover landed by taking the SGUILD_COORDINATION_CHECKOUT slot from Delivery (Delivery had previously taken it from Sales, and Growth has since filed in the same shape); claude_desktop_config.json is globally scoped so only one workspace at a time can own the slot, and per-space folder mounts still point at the shared coordination clone, which makes ADR-0021 Decision 2 unreachable for concurrent Cowork sessions without further Cowork product work; Revenue asks Platform to scope this as a coordination ADRmemo
REPLYP2platformto salesADR-0021 Phase 2 cutover surfaces a single-global-config trampling pattern; each domain's SGUILD_COORDINATION_CHECKOUT write is overwritten by the next domain's migration because Cowork on jack-laptop reads one Claude desktop config across all sessions, so the runtime cutover the migration-complete memos claim does not persist past the next migrationmemo
REPLYP2platformto salesSales signs off on rebook-intent soft-slot protection, but the Sales code change waits on Coaching's accepted identity-bearing eligibility request shape; Sales will pass `person_id` and `participant_id` once that contract field landsmemo
REPLYP2portfolioto platformADR-0023 (Cowork-runtime per-workspace coordination scope) is implemented and every domain has landed its per-workspace follow-up, but four domains have not filed the decision-level ack; Growth, Delivery, Finance, Portfolio please file a brief ADR-0023 acknowledgment so it can flip Proposed to Acceptedmemo
REPLYP2deliveryto platformADR-0028 (canonical market id immutability plus geography.market.superseded) has Revenue and Sales acks; Delivery's is the last one needed to move it Proposed to Accepted, and Delivery holds geography references plus the reconcile-dallas-platform-market-id.ts precedent the event retiresmemo
REPLYP2revenueto platformOpening the cross-discipline ownership-transfer question under ADR-0014; customer.handoff fires once per Person globally on the first credit.locked ever, so a Person who converts in a second discipline (a second Organization) produces no handoff there, which may leave Delivery's per-discipline ownership and daily-touch start ambiguous; asking Delivery whether the gap is real and, if so, choosing between an additive per-Organization activation event and Delivery deriving the start from the credit and lesson stream it already consumes, before Platform steward a coordination ADRmemo
REPLYP2salesto platformOpening the cross-discipline ownership-transfer question under ADR-0014; customer.handoff fires once per Person globally on the first credit.locked ever, so a Person who converts in a second discipline (a second Organization) produces no handoff there, which may leave Delivery's per-discipline ownership and daily-touch start ambiguous; asking Delivery whether the gap is real and, if so, choosing between an additive per-Organization activation event and Delivery deriving the start from the credit and lesson stream it already consumes, before Platform steward a coordination ADRmemo
REPLYP2deliveryto platformDelivery is the only domain with outstanding acks on five Proposed ADRs (0014, 0016, 0018, 0023, 0026); every other domain has cleared; when the coach-no-show defect frees up, please read and ack the five so they can move to Acceptedmemo
REPLYP2deliveryto platformPlatform settles canonical market id stability under ADR-0013; immutability stands as the standing invariant (it is already in the platform-geography-snapshot contract and the 2026-05-18 re-key breached it), and Platform will add a geography.market.superseded old-to-new event in v0.2.0 for the unavoidable consolidation case so consumers reconcile deterministically instead of writing per-consumer scripts; stewarded as coordination ADR-0028memo
REPLYP2platformto revenueRevenue accepts Sales' lead-close defect from the v0.1.0 review and lands sales-ordering-surface v0.2.0, decoupling Lead-close from customer.handoff via an optional originating_lead_id Sales passes and Revenue echoes, fixing the per-Organization-vs-global wording, and naming the reserved-motion deferred trigger and the cross-discipline handoff as separate decisionsmemo
REPLYP2platformto revenueThe service-recovery grant endpoint is live in prod; every 4xx rejection is returned in-band so the real reason is in Delivery's own response, Revenue agrees to formalize it as a Revenue-owned sub-spec under credit-reservation-lock, and the trigger-versus-execute ownership split mirrors the release path (Delivery triggers, Revenue executes, operator-gated not auto-on-no-show)memo
REPLYP2platformto revenueRoot cause of the make-up credits not landing is a missing person_id on Delivery's no-show writeback, the 422 is Delivery-side and never reaches Revenue's grant endpoint, and Revenue proposes accepting the reservation_id Delivery already holds and resolving person and account server-side so the grant stops depending on a field the lesson does not carrymemo
REPLYP2platformto salesFollow-up on ADR-0027; applying skip-worktree triggers the ADR's own revisit condition in at least one environment, a fast-forward pull of upstream-changed artifacts fails with "would be overwritten by merge" because the surgical-commit pull does not un-skip the artifacts around itmemo
REPLYP2platformto salesSales reviews the sales-ordering-surface v0.1.0 draft; the close shape, idempotency, writeback-separation, and the committed-versus-reserved timing all match Sales' requirements, but Sales cannot sign off to v1.0.0 yet because the Lead-close path relies on customer.handoff, which fires once per Person for life and carries no lead_id, so reactivation and repeat conversions strand the originating Leadmemo
REPLYP2platformto salesSales endorses a Sales-owned thin ordering surface backed by a Revenue API and leans hard toward Option B (reservation-request through the existing credit-reservation-lock surface); Sales confirms the conversion-moment requirements and that the surface stays scoped with no ledger accessmemo
REPLYP2salesto platformPlatform accepts the ADR-0027 Option C escalation; the trigger fired exactly as written (skip-worktree insufficient, index corruption fleet-wide across Delivery, Coaching, Portfolio), so Platform proposes ADR-0030 to take INDEX.md and _views off main and publish them out of band via the Postgres-backed web mirror, keeps ADR-0027's mitigations in force during the cutover, and asks all domains to ackmemo
REPLYP2deliveryto platformPlatform proposes ADR-coord-001 splitting the ADR log into a product-architecture series and a coordination-infrastructure sub-series; new coordination-repo/tooling/git/CI/MCP decisions are filed as ADR-coord-NNN going forward, product and domain decisions stay ADR-NNNN, existing infra ADRs are reclassified in the README without renumbering, and acks are requestedmemo
REPLYP2revenueto platformPlatform proposes ADR-coord-001 splitting the ADR log into a product-architecture series and a coordination-infrastructure sub-series; new coordination-repo/tooling/git/CI/MCP decisions are filed as ADR-coord-NNN going forward, product and domain decisions stay ADR-NNNN, existing infra ADRs are reclassified in the README without renumbering, and acks are requestedmemo
REPLYP2coachingto platformPlatform proposes ADR-coord-001 splitting the ADR log into a product-architecture series and a coordination-infrastructure sub-series; new coordination-repo/tooling/git/CI/MCP decisions are filed as ADR-coord-NNN going forward, product and domain decisions stay ADR-NNNN, existing infra ADRs are reclassified in the README without renumbering, and acks are requestedmemo
REPLYP2portfolioto platformPlatform proposes ADR-coord-001 splitting the ADR log into a product-architecture series and a coordination-infrastructure sub-series; new coordination-repo/tooling/git/CI/MCP decisions are filed as ADR-coord-NNN going forward, product and domain decisions stay ADR-NNNN, existing infra ADRs are reclassified in the README without renumbering, and acks are requestedmemo
REPLYP2salesto platformPlatform proposes ADR-coord-001 splitting the ADR log into a product-architecture series and a coordination-infrastructure sub-series; new coordination-repo/tooling/git/CI/MCP decisions are filed as ADR-coord-NNN going forward, product and domain decisions stay ADR-NNNN, existing infra ADRs are reclassified in the README without renumbering, and acks are requestedmemo
REPLYP2revenueto platformPlatform endorses Option 2 for the sales-ordering-surface payment shape; keep the conversion close off the raw-token and PCI surface by assuming a card-on-file and carrying intent-plus-amount, not a method_token; the order model is unchanged so this is a contract clarification not an order-creation ADR, with the open gating fact being where Sales captures the card in the funnel todaymemo
REPLYP2platformto portfolioPortfolio reports a concrete skip-worktree fast-forward fragility under ADR-0027; on a fast-moving origin, coordination_commit's pull-rebase aborts with would-be-overwritten on the skip-worktree'd INDEX.md and _views, which matches the ADR's named Option C revisit trigger, offered as a data point rather than a reversal requestmemo
REPLYP2platformto salesSales' 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 directlymemo
REPLYP2platformto salesSales endorses Option 2 for the sales-ordering payment shape on PCI grounds, and answers the funnel question; no card is on file at the rep-driven close today (Sales captures no card anywhere in the funnel, the instrument is collected at close), so Option 2 needs a defined hosted card-capture-and-vault step inside the committed close owned by Revenue payment-flow, which by Platform's own trigger reads as a coordination ADR rather than a pure contract clarificationmemo
REPLYP2platformto deliveryDelivery's card-capture and card-on-file charge flows for the shared payment-flow reframe; Delivery already consumes the invoice-save feeder and the card-on-file charge primitive in the workbench credit-purchase drawer, has no capture surface today (the phone gap is real and Delivery-led), charges only additional-credit purchases, and confirms ensure-card-on-file plus charge are shared not Sales-onlymemo
REPLYP2platformto deliveryDelivery confirms sales-scheduling-surface can add a reservation-less soft hold; the lockless lesson half already exists (reservation_lock_id is nullable and the wildcard read already returns lock_state scheduled), so the add is a soft-hold lifecycle plus a bind-reservation operation that the v2.1.0 close calls after minting the reservation, as a minor bump, with the reserve-then-bind ordering worth a Platform ADRmemo
REPLYP2revenueto platformPlatform accepts ADR stewardship for the hold-sequencing ordering decision across sales-ordering-surface, sales-scheduling-surface, and credit-reservation-lock; frames the decision and three options, leans to the reservation-less soft-hold conditional on Delivery feasibility, confirms the credit-reservation-lock bind step is a Platform-owned contract reorder, and gates the ADR draft on Delivery's soft-hold feasibility plus Revenue's close-bind confirmationmemo
REPLYP2salesto platformPlatform accepts ADR stewardship for the hold-sequencing ordering decision across sales-ordering-surface, sales-scheduling-surface, and credit-reservation-lock; frames the decision and three options, leans to the reservation-less soft-hold conditional on Delivery feasibility, confirms the credit-reservation-lock bind step is a Platform-owned contract reorder, and gates the ADR draft on Delivery's soft-hold feasibility plus Revenue's close-bind confirmationmemo
REPLYP2platformto revenueensure-card-on-file (capture and vault) plus card-on-file charge are shared payment-flow capabilities, not Sales-only; asking Delivery for its card-capture and charge flows before the capture surfaces are built, and confirming with Sales that the invoice-save path is primarymemo
REPLYP2coachingto platformADR-0036 (operator authentication rail for operator-facing domain web apps) is Proposed; Platform requests acknowledgment from Finance as first consumer, FYI to all other domainsmemo
REPLYP2portfolioto platformADR-0036 (operator authentication rail for operator-facing domain web apps) is Proposed; Platform requests acknowledgment from Finance as first consumer, FYI to all other domainsmemo
REPLYP2financeto platformADR-0036 (operator authentication rail for operator-facing domain web apps) is Proposed; Platform requests acknowledgment from Finance as first consumer, FYI to all other domainsmemo
REPLYP2growthto platformADR-0036 (operator authentication rail for operator-facing domain web apps) is Proposed; Platform requests acknowledgment from Finance as first consumer, FYI to all other domainsmemo
REPLYP2salesto platformADR-0036 (operator authentication rail for operator-facing domain web apps) is Proposed; Platform requests acknowledgment from Finance as first consumer, FYI to all other domainsmemo
REPLYP2deliveryto platformADR-0036 (operator authentication rail for operator-facing domain web apps) is Proposed; Platform requests acknowledgment from Finance as first consumer, FYI to all other domainsmemo
REPLYP2revenueto platformADR-0036 (operator authentication rail for operator-facing domain web apps) is Proposed; Platform requests acknowledgment from Finance as first consumer, FYI to all other domainsmemo
REPLYP2platformto financeCoach compensation rows are missing for 2026-04 and 2026-05 (gross margin currently composes with zero coach pay), Coaching please confirm whether lesson_rate or consumed lesson_booking rows are the missing leg; Revenue please confirm June's empty recognition set is genuinememo
REPLYP2platformto financeOperator decision per ADR-finance-005, pnl coach_compensation_cents reroutes to Finance-owned COACH_PAYMENT actuals from Square Payroll; Platform asked to mirror the opex filter wiring; Coaching's backfill downgrades to reconciliation reference, not P&L-blockingmemo
REPLYP2platformto salesSales flags a stray public._prisma_migrations table on the shared production database holding a failed delivery migration record that just blocked a sales rollout; cleanup is Platform or Delivery territory, and a second failed record sits in revenue_adr0032_stagingmemo
REPLYP0platformto coachingMart readiness gate reads empty across all sections; the warehouse connection points at an empty target, blocking the 2026-05-29 promotionmemo
REPLYP0financeto platformProposal under §10.9 extension-domain governance for a new Platform-stewarded `coordination` mart section to absorb the ten §9 metrics that do not fit portfolio-mart; default-NO review per spec, response-by 2026-06-02memo
REPLYP0deliveryto platformProposal under §10.9 extension-domain governance for a new Platform-stewarded `coordination` mart section to absorb the ten §9 metrics that do not fit portfolio-mart; default-NO review per spec, response-by 2026-06-02memo
REPLYP0revenueto platformProposal under §10.9 extension-domain governance for a new Platform-stewarded `coordination` mart section to absorb the ten §9 metrics that do not fit portfolio-mart; default-NO review per spec, response-by 2026-06-02memo
REPLYP0platformto salesSales 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 concernmemo
REPLYP0platformto deliveryDelivery pins lesson-lifecycle v1.2.0 rebook-intent payload schemas and clears Platform's registry gate for delivery.rebook-intent eventsmemo
REPLYP0growthto platformStatus 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-domainmemo
REPLYP0growthto platformRound 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 percentagememo
REPLYP0portfolioto platformRound 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 percentagememo
REPLYP0platformto growthGrowth mart section, the six not-yet-producing metrics are all silver-gap, with build order and one warehouse-state flagmemo
REPLYP0deliveryto platformPlatform'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-acceptmemo
REPLYP0portfolioto platformMart compute repaired end-to-end — promotion scheduled 2026-05-29; the remaining gap is per-domain dbt silvermemo
Conditional
waiting on a gate-P2SdeliveryRe-point Delivery per-discipline ownership-start to derive at first credit.locked per (Person and Organization) resolving organization_id by correlating on credit_reservation_id from the credit.reserved event; persist the reservation-to-Organization mapping durably and buffer or backfill a credit.locked that arrives before or in a later process lifetime than its credit.reserved so the activation is never dropped; org-scope the cadence path; ride the existing dispatcher-inbox dedup for exactly-once; capture in a Delivery-internal ADR; sequence before the second discipline launchesmemo
-P2SdeliveryServe as the test clone for the ADR-0030 cutover; after Platform lands the untracking commit (ci.yml force-add removal plus git rm --cached of INDEX.md and _views) confirm a clean working tree holds in delivery-coordination across a full sync cycle as the acceptance test; co-author the cutover stepsmemo
-P2MdeliveryBuild the Delivery workbench credit-purchase capture consumer (inline Square-hosted-field surface plus customer-completed hosted link; capture-then-charge the credit-purchase order in one step; card_capture_failed handling that creates no order and no charge) once the additive capture method or handle lands on the POST /api/v1/orders/credit-purchases surfacememo
-P2LdeliveryAdd the reservation-less soft hold to sales-scheduling-surface as a minor bump: soft-hold-create (a lockless eligibility-checked slot-holding lesson with a TTL that returns first_lesson_id) plus a bind-reservation operation (bind a crr_ to an existing soft-held lesson creating the lock and advancing soft_held to held) plus the soft-hold expiry sweep; gated on Revenue confirming the close binds to the pre-held lesson and Platform settling any ordering ADRmemo
-P2MplatformAuthor the person.contact.updated payload schema and registry entry and emit it from updatePersonContact, fanout restricted to entitled consumersmemo
all clear
Dependency
✓ Done(was a soft dep)
ADR-0037Accepted
ADR-0037: Platform-originated person.contact.updated event for propagating identity contact correctionsADR
-P2MsalesBuild the Sales subscriber that applies Platform-originated contact-change events to LeadIntakeSnapshot phone and emailmemo
1 blocking
Dependency
⏳ Waiting(soft dep)
platformclears when: person contact updated
Decision dependency owned by platform.
Completed
audit trail of what shippedP1XSplatformCoaching cut-over readiness; SDK consumer-side ready for Coaching to migrate from interim sync-query to projection-based readsmemo
P0ScoachingCut-over from interim sync-query to projection-based reads; interim path retired from production code; Airtable reads removed from Coaching's production code paths; coach-availability v1.0.1 §4.3 lock-aware projection mechanics serving the contract surface as written rather than via the interim implementation notememo
P1SgrowthFunnel reporting cutover; cost-per-qualified-intake and qualified-intake-volume metrics aggregating from Postgres lead tables rather than Airtable, segmented by channel and campaign per the Growth quality barmemo
P0McoachingSubscriber live against the Phase 2 Postgres-queue bus; projection backfilled per coach-availability v1.0.1 §7.6 against current authoritative state; projection running in parallel-verification mode against the interim sync-query pathmemo
P0LcoachingCoaching Phase-2-readiness milestone; Prisma schema for Coach, Coach Profile, availability windows, capacity, and lock-aware projection state; coach and coach-profile module repo.ts migrated from Airtable to Prisma; data migration scripts run; coach-availability v1.0.1 read endpoints (§4.1, §4.2.1, §4.2.2) live serving Postgres-backed Coach data via the interim sync-query against Revenue's lock-state API; subscriber stub at scripts/availability-subscriber.ts written against the Phase 0 SDK public surface (throws DispatcherNotImplementedError pending Phase 2)memo
P0XLplatformDispatcher SDK Phase 2 (Postgres-queue transport, dedup, dead-letter, runtime payload validation); compressed 4 days from the 2026-06-26 commitment on `2026-05-02-platform-dispatcher-sdk-build-plan-follow-up`memo
P2MplatformAuthor the main-series ADR for the operator authentication rail for operator-facing domain web apps and circulate it for acknowledgmentmemo
P2Ssalesdomains/sales.md cleanup landing customer.handoff producer-attribution correction (subscriber framing per credit-reservation-lock §5; Producer-line edits, Consumes-line addition, ADR-0006 description reframe, incident-framing minor edit)memo
P1SplatformPerson Externals sub-spec §3 amendment landing the partial unique constraint and the merge-handler retire-before-re-key flow as documented behaviormemo
P1MplatformmergePersons implementation in modules/person/service.ts; re-key non-canonical Person's externals to canonical with retire-before-re-key on (org, provider, env) collision per Shape Amemo
P0XLplatformIdentity Contract v1 ship; canonical Person surface live with shim layer over legacy backing storememo
P1ScoachingPopulate lesson_rate and travel_comp for the two Sguild coaches whose typed rate columns were nullmemo
P1ScoachingBackfill consumed coach_lesson_booking rows for 2026-04 and 2026-05 from delivery.lesson completed-lesson factsmemo
P1ScoachingPlatform discovery memo / ADR on per-workspace MCP env support — fulfilled by ADR-0024 (Prong 1 open with Cowork product, Prong 2 clone arg shipped on the four high-frequency coordination tools)memo
P2XSplatformadd coach_utilization_rate to lib/mart/registry.ts coaching section (or document the rejection if the scheduled-and-completed pair already serves the requirements doc intent)memo
P1MfinanceFile the per-metric metadata review for the 13 Finance metrics encoded in lib/mart/registry.ts, with corrections or confirmation against the Them OS to Data Mart Forecasting Data Contract Requirements spec table and Finance operational realitymemo
P0LplatformADR-0003 alignment scoping memo with consumer-impact assessment and real timeline or proposed Identity v1 slipmemo
P2Mplatformship app/api/mart/_manifest route plus lib/mart/manifest-schema.ts plus the route-coverage CI test; mirror manifest-schema.ts to coordination contracts/mart/ for Them OS substrate-side importmemo
P2XSplatformPatch scripts/check-indexer-fresh.mjs to set TARGETS = [INDEX.md], update the comment block, and verify against a fresh memo filingmemo
P0XSplatformAdd DATABASE_URL and DIRECT_URL to GitHub repo Secrets so CI's npm run index step can reach Postgres; until this lands the new CI workflow's indexer step will fail on every pushmemo
P0Mrevenuepayment-flow contract v1.0.0 drafted at coordination/contracts/payment-flow/, payload schemas authored for payment.received-v1 and payment.failed-v1, registry entries added to coordination/contracts/event-types-registry.jsonmemo
P0Mrevenuerefund-flow contract v1.0.0 drafted at coordination/contracts/refund-flow/, payload schemas authored for refund.initiated-v1 and refund.completed-v1, registry entries added to coordination/contracts/event-types-registry.jsonmemo
P1SplatformHold the next @sguild/dispatcher registry freshness publish until the response window closes, then either publish the refreshed package or file the follow-up release plan with any domain-specific blockers named.memo
P1XSplatformProvision DISPATCHER_CONSUMER_URL_COACHING and DISPATCHER_CONSUMER_SECRET_COACHING on the Platform Render fanout-worker service against Coaching's production deploy, restart the worker, and confirm the boot log shows revenue->coaching loops starting for credit.reserved, credit.locked, credit.released, credit.forfeitedmemo
P1SplatformAdd slug column to OrgMarket table as the canonical org_market_id surface for the martmemo
P2SplatformSchema Change Process amendment in Notion (folds per-table-on-changeset variant into the page proper)memo
P0Srevenuecredit.released-v2.json payload schema authored at coordination/contracts/credit-reservation-lock/schema/payloads/, registry entry's schema_versions array extended to carry v2 alongside v1, ahead of the v1.1.0 cutover date 2026-05-22 named in the credit-reservation-lock contract changelogmemo
P1XSrevenuedomains/revenue.md Production-of list reconciled against the registry; credit.granted renamed to credit.purchased, credit.expired removed (no current code path, no contract section), the seven contract-defined credit.* events enumerated, the customer.handoff line preserved as-ismemo
P2SplatformADR-0009 amendment landing Revenue's co-authored Producer transactional guarantee insertion under Trade-off Analysis, with bold-header Date bumpedmemo
P2SplatformADR-0010 amendment clarifying merge-case is in-scope-for-v1 (resolved by partial constraint), distinct from the future-revisit trigger about multi-row legitimate-account casesmemo
P1XSplatformProvision Sales with a read-only Platform producer database credential for intake.matched consumption; SELECT on public.dispatcher_event is sufficientmemo
P1LplatformDispatcher SDK Phase 0 (envelope and payload schemas; event-type registry; CI validation)memo
P2SplatformImplement CONVENTIONS.md amendment (`superseded` commitment status), OPERATOR.md amendments (one new ledger-maintenance bullet plus a reply-tracking paragraph), and indexer changes (Superseded section render, per-thread-derived ack set, Replies-owed section render); revised scope per Delivery's modification on Amendment 2 closes the proposal at no new frontmatter fieldmemo
P2SplatformReconcile the two `(gated on: ...)` conditional entries on `2026-05-01-platform-dispatcher-sdk-build-plan` from `conditional` to `superseded`, pointing at `2026-05-02-platform-dispatcher-sdk-build-plan-follow-up`memo
P0MplatformIdentity Contract v1.1 ship (canonical-store-only reads, shim layer retired); compressed from the 2026-08-03 estimate in `2026-05-02-platform-adr-0003-alignment-scoping`memo
P0SplatformEvent-envelope v1.0.2 patch documenting the SDK gap and blessing interim sync-query as contract-compliantmemo
P2LplatformWarehouse semantic-layer dbt model for growth.touchpoint; one sprint of Platform workmemo
P1Splatformexternal-actions ADR accepted (Platform stewards as cross-domain infrastructure: one queue, multiple producers, retry classification owned by Platform alongside the dispatcher); ADR carries the producer-side surface that consumers call into and the queue-side guarantees Platform commits to maintainingmemo
P1SrevenuePer-domain dispatcher_event table lands in revenue schema (revenue.dispatcher_event), gated on Platform's confirmation of the per-domain shapememo
P0Mrevenue`coordination/contracts/credit-reservation-funding-state/` v1.0.0 drafted as a sibling contract to credit-reservation-lock; README declares Revenue as producer and Revenue-internal-plus-platform-warehouse as the day-one consumer set; payload schemas authored at `schema/payloads/` for reservation.funded-v1.json, reservation.refunding-v1.json, reservation.refunded-v1.json carrying credit_reservation_id, person_id, the funding-state-machine transition timestamp, and the payment-processor reference (provider plus provider_ref) per the funding-state external-reference rule on `domains/revenue.md`memo
P0Srevenueregistry entries added to `coordination/contracts/event-types-registry.json` for the three new event_types (reservation.funded@v1, reservation.refunding@v1, reservation.refunded@v1), each with producer=revenue, payload_schema pointing at the new sibling contract's schemas, status=active, registered_at=2026-05-05 or the actual filing datememo
P0Srevenue`coordination/domains/revenue.md` Production-of list extended to enumerate the three reservation.* events alongside the existing credit.* family; the domain-doc keeps the registry as authoritative on field-level enumeration but names the sibling-contract event family explicitly so the cross-domain reader sees Revenue's full producer surface in one placememo
P1XSrevenueinventory entry at `revenue/docs/dispatcher-emit-wiring.md` extended with one section per reservation.* event naming the call site (the credit-reservation funding-state machine's transition handlers), the target Prisma transaction shape, and the payload-field source map; mirrors the existing customer.handoff and credit.locked entriesmemo
P1SplatformProvide Platform batch bridge runner for Sales' 49 legacy Leads: consume Sales lead_intake_snapshot export, mint or match Persons under Identity resolution rules, and return lead_id/originating_intake_event_id to person_id mapping with match reason and manual-review rows.memo
P1SgrowthSubscribe to person.updated; on changed_fields.status and person.status archived, suppress Growth acquisition eligibility for that person_id, exclude attributed-but-archived current acquisition rows from active acquisition reporting, and preserve historical form_submission and growth.touchpoint attribution historymemo
P1MplatformRegister person.updated v1 in the event-types registry, author payload schema, ship PATCH /api/identity/v1/person/[personId], wire transactional dispatcher emit in updatePerson and runIsMinorInvariantJobmemo
P1SplatformUpdate coordination/templates/new-memo.md so any memo proposing a model or schema change is required to lead with an analytics-questions section before the column or field listmemo
P1SplatformAuthor coordination/standards/engineering/warehouse-model-discipline.md codifying the eight rules (lead with the analytics question; no junk data; per-question discriminators; pattern not name; row grain is a decision; three-to-six category band; derive from source events; cross-domain join via person_id)memo
P1SsalesSubscribe to person.updated; on changed_fields.status and person.status archived, pause active Sales cadence for Leads keyed to that person_id, prevent new outbound comms, clear active callback or prompt routing, and preserve Lead plus activity historymemo
P1MplatformBuild the Platform-side dispatcher fanout worker (topology B per this memo): polls Platform's dispatcher_event, looks up consumer URLs from coordination/contracts/event-types-registry.json (env-driven for V1), POSTs envelopes to each consumer's inbox endpoint with HMAC-signed body, owns retry and dead-letter logic via the existing ConsumerLoop machinery; domains expose POST /api/dispatcher/inbox that verifies signature, dedups on event_id, processes idempotently. Live in production 2026-05-12 on Render running scripts/fanout-worker.ts (Platform's Next.js app deploys to Vercel where instrumentation.ts cannot host a long-running poller); Sales and Growth inbox routes wired and dedup tables migrated; person.updated archive events verified end-to-end (Vercel PATCH -> dispatcher_event -> fanout POST -> domain inbox -> dispatcher_inbox_dedup) with sub-2-second propagationmemo
P1MplatformMulti-producer fanout + intake.* webhook migration: (a) Platform's fanout worker grew per-producer DB connections via DISPATCHER_PRODUCER_DATABASE_URL_<DOMAIN> env vars, centralizing all-producer fanout in one Render service; (b) intake.matched and (c) intake.captured handlers wired into Sales' webhook inbox switch; (d) Sales' Render polling-subscriber service retired and the cross-DB DSN extension in sales/lib/dispatcher/index.ts (defaultProducerSchemaForEvent, DISPATCHER_PRODUCER_DATABASE_URL_*) deleted. Closed 2026-05-12. Growth's polling-subscriber file deletes independentlymemo
P2SplatformReview sales/lib/dispatcher/index.ts; identify which surface differences are intentional design choices versus accidental drift versus genuine extension over the canonical (resolved 2026-05-12 via the cross-DB-DSN-upstream reply: Sales' impl is canonical API surface in one file plus the cross-DB DSN routing extension)memo
P2SplatformStand up a re-vendor script so domain repos can pull a fresh copy of Platform's lib/dispatcher in one command instead of a manual file-by-file copy; reduces the cost of staying current to near-zeromemo
P0SplatformRun the CL-PLT-0002 identity cutover for the Oahu and Dallas Delivery Participant cohort once Delivery provides or confirms the four legacy source exportsmemo
P2MplatformExtract and publish @sguild/dispatcher package so domains consume the dispatcher SDK without vendoringmemo
P1MplatformShip the Platform service-JWT issuer, JWKS endpoint, token minting path, and Revenue smoke-test values for strict lock-state read verificationmemo
P1MplatformShip sales.touchpoint v1 dbt model against the Sales Workbench V1 source model: sales.touch, sales.task callback and future-work rows, sales.lead_stage_history transitions, selected sales.audit_event business mutations, selected sales.note note-category rows, sales.lead dimension context, and sales.lead_intake_snapshot intake and campaign context; keep touch_category as engagement, callback, transition, routing, note; exclude transport-confirmed email, sms, or other channel kinds unless sales.touch contains a source row proving the factmemo
P1MrevenueComplete Revenue strict lock-state read smoke with a Platform-issued service JWT and raw JWKS verificationmemo
P1MdeliveryMigrate Delivery's assignment eligibility call to coach-availability v2 after Coaching ships the v2 endpoint implementation alongside the v1 compatibility shimmemo
P2MplatformWire Platform-produced geography.market.upserted, geography.market.archived, geography.service-area.upserted, and geography.service-area.archived events as part of the canonical geography migration, including event-types registry entries, payload schemas, dispatcher SDK mirrors, and producer-side runtime validation before first production emitmemo
P0SplatformFix or confirm the Vercel growth-intakes-matcher cron job and drain the backlog of unmatched Growth intakes.memo
P1SplatformAdd alerting on the growth-intakes-matcher cron: consecutive failures or zero-throughput window should surface as an alert, not a silent retry.memo
P0SplatformRegister intake.matched schema_version 2 in event-types-registry.json and drain the 11-event backlog.memo
P1SplatformAdd alerting on intake.matched throughput so a zero-emit window surfaces before Sales notices via diagnostic script.memo
P1SrevenueRevenue publishes the Sales-callable reservation-create API addendum under the credit-reservation-lock contractmemo
P1SrevenueRevenue publishes the Sales-callable reservation-release API addendum under the credit-reservation-lock contractmemo
P2SrevenueRevenue and Delivery reconcile the requested-held-confirmed vocabulary against the reserved-locked-consumed-released-forfeited vocabulary in the relevant contractsmemo
P1McoachingPublish a dedicated coaching-confirmation contract covering Sales' lead.coach.confirmation.requested event and Coaching's coaching.lesson.confirmation_decided event, register the Coaching-produced event in contracts/event-types-registry.json, author the v1 payload schema, and wire producer-side dispatcher emit from the Coaching confirmation decision workflow with no committed date under continuous deploymentmemo
P1MdeliveryPublish lesson-lifecycle v1.1.0 with lesson.rescheduled, register the event in contracts/event-types-registry.json, author the v1 payload schema, and wire producer-side dispatcher emit from the Delivery reschedule write path with no committed date under continuous deploymentmemo
P2MplatformDefine and implement the Platform-owned platform.comms.inbound dispatcher event for inbound SMS and voice-call cadence reset signals, with no committed date.memo
P1SplatformShip GET /api/org-markets read surface so Sales can derive organization_id, market_id, and org_market_id at qualification timememo
P1SplatformVerify DISPATCHER_PRODUCER_DATABASE_URL_REVENUE and consumer env vars are provisioned on the Render fanout worker; provision any missing vars and confirm Revenue-to-Sales customer.handoff deliverymemo
P1SsalesRegister lead.coach.confirmation.requested in contracts/event-types-registry.json with producer=sales, consumers=[coaching, platform-warehouse], owning contract contracts/coaching-confirmation/, and author its v1 payload schema alongside Coaching's outbound coaching.lesson.confirmation_decided eventmemo
P1SsalesAdd a sales.OutboundConfirmationRequest correlation table holding (confirmation_request_id, leadId, requestedAt, coachId, lessonWindow, lessonTypeId) so the Stage 3a→3b emit can persist the correlation row and the coaching-confirmation subscriber can join the inbound decision by confirmation_request_id; wire writer at applyPhase7ManualAction's confirm_slot_agreed handler and reader on the subscribermemo
P1SsalesWire the producer-side dispatcher emit for lead.coach.confirmation.requested from the Stage 3a→3b transition via the same fanout primitive Sales already uses for customer.handoff (ADR-0009 dispatcher cross-process transport)memo
P1SsalesRegister sales.lead.onboarded in contracts/event-types-registry.json with producer=sales, consumers=[platform-warehouse], owning contract contracts/lead-lifecycle/ as a v1.1 candidate, and author its v1 payload schemamemo
P1SsalesWire the producer-side dispatcher emit for sales.lead.onboarded from the close-orchestration Stage 4 entry path alongside the existing Lead.lessonDate persistence in recordCloseLessonBookedmemo
P1SsalesAdd a sales.LeadOrderCorrelation table holding (orderId, personId, leadId, recordedAt) and wire the writer at Stage 4 entry (close-orchestration success path) so the payment.received subscriber can resolve leadId from the (orderId, personId) tuple Revenue carries on the payloadmemo
P2SsalesBuild the Quo auto-send worker that consumes Touch.outcome='auto_send_pending' rows produced by the Stage 4 cron when SALES_AUTOMATED_SMS_ENABLED=true, calls Quo's POST /v1/messages via lib/quo/messages.ts, and writes a follow-up Touch (sms_sent_auto on success, automation_failed with pictogram_key on failure). Cron entry script and per-row retry up to 3 attemptsmemo
P2SsalesBuild the platform.comms.inbound subscriber stub behind PLATFORM_INBOUND_COMMS_SUBSCRIBER_ENABLED so Sales' V2 inbound-comms reset path leaves the operator log behind. Subscriber resolves Lead from (tenant_id, person_id), routes Stage 1 to promoteIntakeToQualifiedOnInbound and Stage 2/3 to resetCadenceOnInbound, terminal stages no-op. Module sales/modules/platform-comms-inbound/ wired into the dispatcher inbox handlermemo
P1SsalesWire lead.qualified emit at the guided qualification call site with rep-confirmed org and market payload and dispatcher registry coveragememo
P2MfinanceFile the finance-mart per-figure column manifests for revenue recognition rollups, margin, cash position, and reconciliation against the live silver surfacememo
P2SgrowthWire Growth dispatcher inbox consumer for lead.qualified v1 and persist confirmed org and market fields on qualified_intakememo
P2SgrowthAdd a mart-backed growth-warehouse-api v2 path that reads GET /api/mart/sections/growth with MART_API_KEY_GROWTH and keeps the source-side v1 table-dump path live through the deprecation windowmemo
P2SplatformImplement the finance gold section groupings once Finance files per-figure column manifests against the live silver surfacememo
P2SplatformProvision MART_API_KEY_GROWTH in Growth's environment so Growth can configure their consumermemo
P2SplatformImplement the portfolio gold section metric families once Portfolio files per-family column manifests against the live silver surfacememo
P2ScoachingDocument utilization-hours derivation logic (coach_capacity_hours, coach_scheduled_hours, coach_idle_hours) in a silver schema note for Platform to wire against coaching.availability_template and coaching.coach_lesson_bookingmemo
P2McoachingAdd lesson_rate and travel_comp as typed Decimal columns to the Coach table via Prisma migration; backfill from rate_references JSON; update the silver face to project them as flat columnsmemo
P2SdeliveryAdd reschedule_count and last_rescheduled_at columns to delivery.lesson (migration 20260519100000_lesson_reschedule_tracking); increment reschedule_count in rescheduleLesson on each successful window change|memo
P2MdeliveryAmend contracts/sales-scheduling-surface/README.md Status header to v1.3.0: add §4.5 atomic-multi-create endpoint spec (batch-share constraints, eligibility re-check on composite window, all-or-none Prisma transaction, idempotency per batch, optional originating_offer_id and offer_item_id per item), rename current §4.5 Event surface to §4.6, extend delivery.lesson-hold.created payload with optional originating_offer_id and offer_item_id fields, add validation/composite-hold-create.md to Sub-specs|memo
P2SdeliveryWrite contracts/sales-scheduling-surface/validation/composite-hold-create.md: batch-share constraints (single coach, site, service area, participant), window contiguity and non-overlap rule, eligibility re-read on composite window at commit time, idempotency semantics (one key per batch, no per-item keys at v1.3.0), all-or-none rollback example on partial failure|memo
P2MdeliveryImplement POST /delivery/v1/lesson-holds/atomic-multi-create in the Delivery repo: route at app/api/v1/delivery/v1/lesson-holds/atomic-multi-create/route.ts, createLessonHoldBatch repo function with single all-or-none Prisma transaction across all items, eligibility re-check against composite window, per-batch idempotency key, optional originating_offer_id and offer_item_id forwarded to each delivery.lesson-hold.created event|memo
P1LfinancePublish finance-mart v2.0.0 reshaping the served surface from the four v1.0.0 groupings to the six Them OS sub-sections (unit_economics, pnl, margin, cac_payback, runway, ltv) covering the 13 metrics, with v1.0.0 entering its two-week consumer deprecation window at v2.0.0 publish per finance-mart §5.2memo
P2LfinancePublish v2.0.x sub-section manifests (unit_economics.md, cac_payback.md, ltv.md, cohort_summary.md, customer-journey-audit.md, plus pnl.md added per the three-asks-decisions follow-up) as each sub-section's compute develops, prioritizing manifests with live compute (unit_economics, cac_payback) before manifests gated on further silver landingsmemo
P3SfinanceScope and ship Finance-owned cash_balance_entries table for operator-recorded opening balances and material movements: Postgres table behind a Finance admin route, versioned and queryable by Finance compute, documented in v2.0.x cash-position.md manifestmemo
P2MgrowthExpose ad_spend cents columns per (source, campaign, creative) x week in Growth silver face from campaign_spend_daily; USD-denominated baseline with spend_amount_cents column and source/campaign/creative join keysmemo
P2LgrowthExtend Growth attribution silver with first-touch, last-touch, and multi-touch attribution columns and source / campaign / creative breakdown from lead_attribution and campaign tables; cross-device-stitch confidence column already live via growth.touchpoint dbt model, this extends the upstream silver inputs Platform reads frommemo
P3SgrowthDocument lead_qualified_rate denominator in Growth silver face annotation: denominator is Growth-internal qualified_intake count (rows in qualified_intake table), not Sales-handed-off leadsmemo
P3SgrowthName attribution_multi_touch model as linear in _attribution_model registry field; rationale in memo bodymemo
P3XSgrowthDeclare creative_fatigue_index as null:not_applicable in registry with null_reason upstream_unavailable until Growth defines a formulamemo
P2MgrowthSurface ad_impressions and ad_clicks columns on campaign_spend_daily; impressions BigInt nullable and clicks BigInt nullable added and exposed in warehouse-api schema manifest; importer writes them when Meta/Google API includes countsmemo
P3MgrowthExtend growth.lead_attribution silver to expose 7-day and 30-day click-window attribution rows; attributed_within_7d_click and attributed_within_30d_click boolean columns landed via migration 20260519100000_lead_attribution_click_windows; gates attribution_window_7d_click and attribution_window_30d_click mart metricsmemo
P3MgrowthDeclare geo_breakdown and time_of_day_distribution silver inputs present; zipCode on lead_intake and capturedAt on lead_attribution are the inputs; derivation logic sent to Platform in 2026-05-19-growth-mart-geo-time-silver-ready; geo_breakdown pending Platform confirming zip_service_area spine stabilitymemo
P2SplatformAmend contracts/credit-reservation-lock/README.md to v1.4.0 per the 2026-05-18 converged composite-offer shape: atomic multi-create reservation endpoint, one Revenue transaction for N reservations and N credit.reserved emits, one Idempotency-Key per batch (no per-item keys), customer.handoff deterministic earliest-lesson_starts_at then credit_reservation_id tie-breaker, validation notememo
P2SplatformBuild /schema endpoint factory + per-section /schema routes per §11.3 (gates §12 acceptance for every section)memo
P2SplatformWire Coaching cost trio compute (coach_cost_per_hour, coach_cost_per_completed_lesson, coach_compensation_total) against the silver rate-column extension Coaching shipped 2026-05-19memo
P2MplatformBuild refresh scheduler: a worker that walks the registry, checks last_successful_refresh_at against max_staleness_minutes, triggers compute for stale metrics independent of pull trafficmemo
P2MplatformWire /corrections write-side detection: recompute-prior-period diff against snapshot in each compute*Metrics function, emit correction event via recordCorrection()memo
P3SplatformSurface upstream_unavailable detection on /health endpoint (currently always returns empty array)memo
P2MplatformFile §10.9 extension-domain governance memo proposing a new Platform-stewarded coordination mart section to absorb the ten relocated §9 metricsmemo
P3SplatformConfirm whether the Platform identity/geography spine exposes active_from_at at org and org-market grain for the age-distribution metrics, or flag the silver gap so Portfolio can scope it ahead of v1.2 manifest filingsmemo
P2SplatformIf Revenue + Delivery + Finance agree, move `revenue_per_active_student` from the Revenue section of lib/mart/registry.ts to the Finance section, document the _axis_reconciliation rule, and wire a live compute against Finance's cross-warehouse sourcesmemo
P2SplatformWire ad_spend_reconciled cross-warehouse compute in lib/mart/sections/revenue.ts against Growth's campaign_spend_daily silvermemo
P2MplatformWire Coaching utilization metrics (coach_capacity_hours, coach_scheduled_hours, coach_completed_hours, coach_idle_hours, coach_utilization_scheduled, coach_utilization_completed) against availability_template + lesson_booking per Coaching's documented derivationmemo
P2MplatformWire Delivery metrics (lesson_no_show_count, lesson_reschedule_count, dormant_student_count, churn_post_lock_count) against the schema columns Delivery shipped todaymemo
P2MplatformWire Sales cohort triangle (4 metrics) as entity_rows against sales.lead + sales.lead_stage_history (no separate cohort silver needed per Sales' pushback)memo
P2MplatformWire Growth metrics (ad_spend, lead_volume, lead_intake_count, lead_qualified_rate, cpl, cost_per_qualified_lead, source_mix) against the silver Growth landed todaymemo
P2SplatformWire Finance contribution_margin, pnl_summary v0, and cac_per_first_lock as cross-domain composites of what's now livememo
P2SplatformSurface this §9 scoping pushback to the Them OS spec owner via the appropriate external channel and file the response on this thread when it landsmemo
P3XSplatformWithdraw `2026-05-19-platform-coordination-mart-section-proposal` (this memo supersedes it); the §10.9 governance review is no longer being requestedmemo
P2SplatformSurface these two spec gaps to the Them OS spec owner via the appropriate external channel and file the response on this thread when it landsmemo
P2MplatformWire Finance gross_margin family in lib/mart/sections/finance.ts directly against Coaching silver (lesson_rate, travel_comp) + Delivery's lesson-event silver, no Revenue dependencymemo
P2SplatformWithdraw the Path A build commitment (Initiative / InitiativeIndicator / Incident / AttentionItem Postgres tables); not needed — Sguild is not the system of record for thesememo
P2SplatformWithdraw the /coordination/health commitment under §10.3 framing; if Sguild builds a health endpoint later for engineering-coordination purposes, that is a separate project and not part of the mart contractmemo
P2SplatformRedraft the external reply to Them OS, pushing §10 back with the correct framing: mart serves metrics; initiatives are Them-OS-authored state; Sguild does not expose its own coordination repo as forecasting contextmemo
P2SplatformSurface the §9 scoping pushback to the Them OS spec owner via the appropriate external channel and file the response on this thread when it landsmemo
P2MrevenueSurface revenue_deferred_release_schedule in Revenue silver: expose credit_reservation rows with their projected release windows (lesson_week grain, org_market × week output) so Platform can wire the mart compute; gated on Revenue silver face build within Postgres migration scopememo
P2MrevenueShip ad_spend_reconciled cross-warehouse compute: Revenue reads Growth's ad_spend silver at the warehouse layer for source-class enum attribution and exposes under Revenue's source-class taxonomy per §7 spec carve-out; gated on Growth's ad_spend silver columns being availablememo
P3SrevenueAdd refund_type discriminator to revenue.refund_item silver: enum {operator_refund, chargeback} distinguishing processor-initiated chargebacks from operator-initiated refunds; wire at the silver extraction layer, no mart compute change needed from Platformmemo
P3SrevenueBuild revenue_recognition silver endpoint at GET /api/v1/silver/revenue-recognition with person_id flattened at the API layermemo
P1SplatformApply the pre-publish registry corrections from this release plan: add Coaching as a consumer for lesson.cancelled and lesson.delivered, and verify the package bundle includes canonical delivery.lesson-hold.* entries with no underscored aliases.memo
P1SplatformPublish the next @sguild/dispatcher freshness package after the registry corrections validate, then bump consuming domains off the stale 2.0.0 bundle.memo
P2McoachingBuild Coaching synthetic seed pack for current-model org config, coaches, availability templates, exceptions, certifications, geography caches, and coach_lesson_booking scenariosmemo
P1ScoachingFinalize Coaching local env safety and port 3003 bootstrap, including local-first DATABASE_URL and DIRECT_URL verification, migrations, seed command posture, and smoke-check instructionsmemo
P1McoachingAdd local dispatcher proof for coaching.lesson.confirmation_decided and current wired Coaching consumer paths through producer outbox, local fanout, inbox dedup, and projection side effect evidencememo
P2ScoachingMark Coaching registered-but-not-wired target paths explicitly in the mesh, including lead.coach.confirmation.requested and delivery.lesson-hold.cancelled until inbox behavior existsmemo
P3XScoachingPublish Coaching cron inventory for the mesh, recording no Vercel cron routes and listing one-shot scripts and smoke tools separately from cron ticksmemo
P3ScoachingAdd revenue_share_pct typed column to Coach schema (Decimal 5,4 fraction), migration, and DTO; activates coach_revenue_share_pct mart metric when Platform wires the read against coaching.coach.revenue_share_pctmemo
P2McoachingBuild coach satisfaction survey infrastructure: coach_survey table, quarterly trigger script, one-tap eNPS form, submission API, coaching.coach_survey.due dispatcher event; Delivery handoff filed in 2026-05-22-coaching-delivery-coach-survey-send-handoff; activates coach_satisfaction_of_platform mart metric when Platform wires the compute and Delivery ships the EAQ sendmemo
P2MdeliveryBuild the Delivery synthetic local seed pack covering customer CRM defaults, customers, handoffs, lessons, attendance, reservation locks, dispatcher outbox and inbox rows, DLQ samples, and required Platform and Coaching fixture mirrorsmemo
P2SdeliveryFinish Delivery local env safety for the mesh, including .env.local precedence, db target verification for the delivery schema, remote DSN protection, and documented sibling schema requirements for cross-domain fixture tablesmemo
P2MdeliveryAdd Delivery dispatcher proof checks for wired-now lesson and hold producer events plus wired Revenue and Sales consumer events, with credit.funded marked registered-but-no-op until Delivery has a visible local projection assertionmemo
P2SdeliveryPublish Delivery cron inventory and local tick proof for audit-locks, lesson-site-drift, and terminal-lesson-settlement, with terminal settlement defaulting to dry-run in local mesh operationmemo
P2SdeliveryWire Delivery port 3004 bootstrap compatibility, migrations, seed command sequence, and smoke checks into the shared local mesh contract or orchestration helpermemo
P2MgrowthBuild a Growth synthetic local seed pack covering campaign, attribution, intake, subscriber, acquisition suppression, and is_test_data fixtures without real business datamemo
P1SgrowthFix or guard Growth local env loading so .env.local or explicit mesh process env wins over remote production database targets for Prisma CLI and standalone scriptsmemo
P2MgrowthAdd Growth dispatcher proof checks for wired-now producer paths intake.captured@2 and intake.amended@1 plus wired consumer paths person.updated, lead.created, lead.reached, lead.stage.changed, and lead.qualifiedmemo
P2SgrowthPublish Growth cron inventory and local tick posture for /api/ad-spend/meta, POST /api/ad-spend, and the stale /api/cron/lock-reservations listingmemo
P2SgrowthAdd Growth local bootstrap compatibility for port 3001, migration/bootstrap verification, seed execution, and smoke checks for core growth schema tablesmemo
P2MplatformImplement the external-actions runner HTTP-callback path to producer-domain execute endpointsmemo
P2SplatformWire lesson_cancel_count per-reason breakdown in lib/mart/sections/delivery.ts against cancellation_reason_code with cancellation_reason text fallback for legacy rowsmemo
P2SplatformWire rebook_lock_lead_time_days in lib/mart/sections/delivery.ts as lesson.start_at − reservation_lock.held_at; flip from null_emit_only to live betamemo
P2SplatformExtend the dbt silver delivery.lesson face to project the Round-5/6 source columns (cancellation_reason_code, cancellation_reason, canceled_at, start_at, end_at, reschedule_count, last_rescheduled_at)memo
P2MrevenueBuild a Revenue synthetic local seed pack covering orders, order items, credit accounts, reservations, funding states, refunds, refund items, ledger entries, provider references, webhook rows, idempotency records, and dispatcher rows without real business datamemo
P1SrevenueHarden Revenue local env posture so .env.local or explicit mesh process env is required for mutable localhost work, remote production DSNs are blocked by default, and Prisma runtime, Prisma CLI, tests, scripts, Square, Airtable, JWT, dispatcher, and cron secrets are clearly local or devmemo
P1MrevenueInstall Revenue local dispatcher proof with a real local transport, not debug-only logging, for wired-now producer events and for Delivery hold-created and lesson-delivered consumer paths, excluding credit.released v1 from default local seed validationmemo
P2SrevenuePublish Revenue cron inventory and manual tick posture for /api/cron/reservation-job, /api/cron/idempotency-cleanup, and the unlisted /api/cron/lesson-completion-reconciliation route, including fixture prerequisites and mutating versus cleanup behaviormemo
P2SrevenueAdd Revenue local bootstrap compatibility for port 3005, migration and schema verification, seed execution, dispatcher smoke checks, cron smoke checks, and a happy-path synthetic commercial flow checkmemo
P2MsalesBuild a Sales synthetic local seed pack for Workbench config, leads, cadence, touches, tasks, notes, callbacks, audits, geography guesses, and close-orchestration correlation rowsmemo
P1SsalesFix Sales local env safety so local or mesh DSNs cannot be overwritten by .env during Prisma CLI and seed commands, and add remote-DSN protection for local setupmemo
P2MsalesAdd Sales dispatcher proof for wired-now producer events and inbox consumers, including event row, fanout, dedup, and Sales-side mutation evidence tied to the same envelopememo
P2SsalesPublish Sales cron tick inventory and synthetic prerequisites for missed callbacks, intake follow-up, and stage 4 reminders, including each route's local mutation posturememo
P2SsalesDocument and verify Sales port 3002 bootstrap with migrations, seed command, readiness smoke, required local secrets, and registered-but-no-op or future-target path labelsmemo
P1SplatformAdd explicit tenant_id to Platform GET /api/bootstrap response for app consumers, preserving tenant_id versus organization_id semantics from ADR-0001.memo
P2SsalesStand up POST /api/quo-contacts in the Sales repo backed by the same Quo client and contact-intake service shape, then have Growth flip its route to a thin proxy for the two-week deprecation window before the Growth-side route deletesmemo
P1ScoachingCoaching patched `contracts/coach-availability/README.v2.md` to v2.1.4 with optional `person_id` and `participant_id`, owner-exception semantics, `protected_trial_followup`, and the rebook-intent dispatcher event familymemo
P1McoachingCoaching implemented local projection support for `delivery.rebook-intent.created`, `delivery.rebook-intent.cancelled`, and `delivery.rebook-intent.converted` as protected intervals with owner exemption in eligibility-by-descriptionmemo
P1ScoachingCoaching applied the `20260527110000_rebook_intent_protected_intervals` migration to the local mesh database and deployed the Coaching repo changes to Vercel productionmemo
P1ScoachingCoaching applied the `20260527110000_rebook_intent_protected_intervals` migration to the production database using the repo `.env` DSNsmemo
P1ScoachingCoaching patched the coach-availability v2 contract to accept optional `person_id` and `participant_id` on eligibility-by-description reads and document the owner exception semantics for active rebook intentsmemo
P1McoachingCoaching consumes active Delivery rebook intents as protected booking intervals and returns `protected_trial_followup` for non-owning customers now that Delivery's payload shape is contract-owned and Platform's dispatcher registry path is readymemo
P1SdeliveryDelivery has pinned `delivery.rebook-intent.created`, `delivery.rebook-intent.cancelled`, and `delivery.rebook-intent.converted` v1 payload schemas under `contracts/lesson-lifecycle` and identified lesson-lifecycle as the owning contractmemo
P1MdeliveryDelivery: land `lesson_rebook_intent` storage and completion-path creation for every completed lesson, proposed at source lesson plus seven days; the row is not a Revenue reservation and not a Delivery lesson holdmemo
P1MdeliveryDelivery: publish the `delivery.rebook-intent.*` event family after Platform registers payload schemas and republishes the dispatcher SDK bundle; until then Delivery persists rows and treats event publication as best-effortmemo
P1SplatformAmend the credit-reservation-lock contract and reservation-create sub-spec so participant_id is optional for Sales-originated reservation create and atomic multi-create, with person_id plus organization_id as the required pre-handoff human contextmemo
P1SplatformPlatform registered `delivery.rebook-intent.created`, `delivery.rebook-intent.cancelled`, and `delivery.rebook-intent.converted`, mirrored the registry into the dispatcher SDK bundle, and published @sguild/dispatcher 2.0.2 after Delivery provided contract-owned v1 payload schemas and confirmed lesson-lifecycle as the owning contractmemo
P1SplatformPlatform published @sguild/dispatcher 2.0.2 with `delivery.rebook-intent.created`, `delivery.rebook-intent.cancelled`, and `delivery.rebook-intent.converted` registered and bundled with the lesson-lifecycle v1.2.0 payload schemasmemo
P1MrevenueUpdate Revenue single reservation-create and atomic multi-create validation to accept absent participant_id, persist null when absent, and attach Delivery-returned Participant or Lesson context later through the hold-created or reconciliation pathmemo
P1SsalesSales will pass the accepted customer identity fields on every close-orchestration Coaching eligibility read, including conflict retry reads, once Coaching publishes the identity-bearing eligibility request shapememo
P2MgrowthWire prisma migrate deploy as a gated CI deploy step against DIRECT_URL, add a prisma migrate status preflight that fails on pending migrations, document db push as dev-only in Growth DB docs, and run a one-time production drift audit and reconcile|memo
P3MgrowthLand organization_id on the Growth campaign source row (applied to prod, backfilled to the Swim org) and expose it on the growth silver face (warehouse-api manifest plus contract README); per-org CAC composition is Finance's gold-section work reading that silver reference|memo
P2MplatformSteward a coordination ADR resolving per-discipline ownership-transfer signaling under ADR-0014, conditional on Delivery confirming a concrete per-discipline ownership-start gapmemo
P1MplatformPublished platform-geography-snapshot v0.2.0 (geography.market.superseded carrying new_market inline) and landed the Platform emitter plus a market-supersede operation, typecheck and tests greenmemo
P2MrevenueRegister Revenue as a platform-geography-snapshot consumer and build a Revenue-local Market mirror so offering and credit-account market references become referential and self-healing per Revenue ADR-0023; full drift-proofing is conditional on Platform's re-key propagation decisionmemo
P2MrevenueDraft the Revenue-owned Sales-facing ordering API contract (reservation-request backing over credit-reservation-lock; first payment via payment-flow; no ledger or table access); published as sales-ordering-surface v0.1.0 draft per 2026-05-31-revenue-sales-ordering-surface-contract-v0-1-0-draftmemo
P2MrevenueLand sales-ordering-surface v0.2.0 decoupling Lead-close from customer.handoff via optional originating_lead_id, per Sales' v0.1.0 review commit 3ef022amemo
P3SfinanceRe-install the refreshed canonical pointer block in finance AGENTS.md, record the installed pointer version, and confirm finance AGENTS.md restates no canonical content per the ADR-coord-003 per-domain action item|memo
P3SgrowthBring Growth's AGENTS.md to the coord-003 thin-pointer shape (trim cross-domain restatements down to references, install the versioned canonical pointer block) and repoint the session-start inbox ritual per ADR-0030; installed pointer 2026-06-02.2 in growth commit 61cffc1|memo
P1MdeliveryUpdate Delivery account coverage, credit-order package visibility, and ownership-start derivation to consume the OrgMarket-scoped credit account contractmemo
P1SplatformAdd canonical handoff_* Sales mart metric IDs, keep first_lock_* as deprecated aliases during the deprecation window, and update mart browser and public API descriptions to state the Sales handed_off predicatememo
P1SplatformPublish the credit-reservation-lock v2.0.0 amendment that changes active Credit Account scope to Person plus Organization plus Platform Market, updates reservation-create, atomic-multi-create, service-recovery, and event scope notes, and links ADR-0031 after it acceptsmemo
P2MrevenueImplement the committed-close binding step in the Revenue app: after minting the reservation, bind it to the soft-held first lesson through Delivery's synchronous sales-scheduling-surface bind-reservation call before charging and locking, with clean-failure handling on a bind conflict and held-lock compensation if a post-bind step fails, plus the sales-ordering-surface §4.1 clarification that first_lesson_id is a soft-held lessonmemo
P1MrevenueSteward ADR-0033 through Platform, Sales, Delivery, and Portfolio ack checks, then land the accepted contract and implementation plan or file a superseding memo if the ack round changes the designmemo
P2MrevenueCo-author with Delivery the coordination ADR settling the lesson-create-versus-reserve ordering across sales-scheduling-surface, sales-ordering-surface, and credit-reservation-lock, defining the reservation-less soft hold and the close binding a freshly minted reservation to itmemo
P2MrevenueImplement the Revenue close binding step (resolve and mirror the soft-held lesson at reserve, mint the reservation bound to it, lock on the committed motion) plus the credit-reservation-lock and sales-ordering-surface §4.1 amendments naming first_lesson_id as a soft-held lessonmemo
P1MrevenueImplement OrgMarket-scoped active Credit Account resolution in Revenue: one active account per Person plus Organization plus Platform Market, market-resolved reservation-create and atomic-multi-create, first-booking zero-balance account creation in the resolved OrgMarket, and no spend from null-market or different-market accounts after the v2 cutovermemo
P1SrevenuePublish credit.reserved schema_version 2 from Revenue with platform_market_id and migrate producer emissions after credit-reservation-lock v2.0.0 landsmemo
P2SrevenueSupersede or refine Revenue's 2026-05-31 customer-role credit-account invariant memo so the active-account guarantee reads Person plus OrgMarket rather than Person plus Organizationmemo
P2MrevenueDraft a coordination ADR for the Revenue-owned hosted card-capture-and-vault step in the sales-ordering committed close (provider-hosted capture so the raw PAN never touches Sguild servers, vault to a card-on-file, then charge at close), defining the committed-close sequence, the PCI boundary, and the capture and vault failure modes, for Platform PCI and registry review and Sales close-UX reviewmemo
P2LrevenueLand the additive capture collection method on POST /api/v1/orders/credit-purchases and the shared capture-and-charge core (ensure-card-on-file vault then charge via the existing order-charge path) plus the optional customer-name snapshot on the sales-ordering-surface close so Delivery and Sales can build their capture consumers against a stable surfacememo
P1SsalesAdd or confirm a Sales handoff evidence marker that distinguishes normal lock or customer.handoff evidence from late paid-attended evidence for handed_off transitionsmemo
P1SdeliveryDerive the late-funded lesson pending outcome queue or projection label from existing lock and lesson facts and clear it through existing outcome and reschedule pathsmemo
P1MplatformSteward ADR-0035 through Revenue, Sales, Delivery, and Portfolio ack checks, then land the ADR-0033 partial supersession and credit-reservation-lock v2.2.0 contract amendment or file a superseding memo if the ack round changes the designmemo
P1SsalesAlign Sales Lead close and reporting evidence so late-funded reservations close from normal customer.handoff without waiting on Delivery outcomememo
P1SplatformAlign operator_lost_count, cadence_exhausted_count, and churn_pre_lock_count to Sales' confirmed close-reason vocabulary on lead_stage_history, history-grain, with registry and metrics contract notes updatedmemo
P1SplatformFlip the mart handoff predicate from to_stage = 'handed_off' to handoff_evidence IS NOT NULL across the mart sales and finance sections, the metric registry, and the metrics contract notesmemo
P1SplatformVerify the mart open-pipeline stage predicates against live sales.lead values and align them with the corrected live-value taxonomy from 2026-06-11-sales-pipeline-stage-predicate-correctionmemo
P2SsalesRun the ADR-0008 production backfill (restate handed_off rows to terminal, synthesize missing close history rows) as part of the next sales deploymemo
P1XScoachingCorrect the Coach schema documentation to hourly lesson_rate semantics and record the operator comp policymemo
P2XScoachingFlip qualifying no-show and late-cancellation lessons in 2026-04 and 2026-05 to consumed after operator adjudicationmemo
P1SplatformConfirm corrected coach-comp formulas and land the duration-scaled compute across registry, coaching mart, and finance martmemo
P1SplatformWire groupings.revenue_recognition_weekly in GET /api/mart/sections/finance with Revenue silver recognition as the source and monthly revenue_recognition rows unchangedmemo