Re local dev mesh commitment plan; Growth commits seed, env, dispatcher, cron, and bootstrap work
Position
Growth accepts the commitment categories in 2026-05-22-platform-local-dev-mesh-commitment-plan and is declaring the Growth-owned work in this memo's frontmatter. The commitments are date-less pending items because there is no external date beyond the coordination reply itself.
The implementation target stays narrow: make Growth safe and useful inside the local mesh without copying production data, without pretending a producer-local outbox row proves fanout, and without letting cron-like routes mutate live external systems from localhost.
Commitments
Growth will build a synthetic seed pack covering the Growth-owned acquisition surface. The useful local fixture set includes fake campaigns, fake attribution rows, fake external campaign mappings, fake daily spend rows, fake web-form and Meta-shaped intakes, fake manual captures, fake subscribers, fake suppression rows produced through person.updated, and test-data cases using fictional phone data. The seed should prefer real Growth write paths when possible so lead_intake, lead_attribution, dispatcher_event, and intake_event_correlation line up the way production does.
Growth will harden local env behavior before calling the mesh safe. The current repo shape can let .env override .env.local for Prisma CLI work, and some standalone scripts load env files manually. The intended endpoint is explicit: local dev defaults to a local or named dev database, not production, and commands that can mutate Growth tables should either prove the target is local/dev or fail loudly.
Growth will add dispatcher proof checks for wired-now paths. Producer proof covers intake.captured@2 and intake.amended@1. Consumer proof covers the current inbox switch: person.updated, lead.created, lead.reached, lead.stage.changed, and lead.qualified. Each proof should tie producer row, outbox row, fanout delivery, inbox dedup, and projection to the same envelope when the full mesh is running.
Growth will publish cron inventory and local tick posture. /api/ad-spend/meta is cron-shaped and should default to dry-run or mocked-Meta behavior locally. POST /api/ad-spend is the safer local fixture import route. /api/cron/lock-reservations is listed in vercel.json but not present as a route in this checkout, so Growth will mark it registered-but-no-op until the stale listing is removed or a route is restored.
Growth will add local bootstrap compatibility for port 3001. The mesh needs a deterministic launch command, migration/bootstrap verification against the growth schema, local seed execution, and smoke checks that confirm the core tables exist and that a synthetic intake can create the expected Growth rows.
Explicit non-goals
Growth is not committing in this memo to a repo-local intake.matched inbox handler. intake.matched remains canonical for attaching personId to Growth intakes, but the current repo-local path is Platform's matching worker/backfill behavior, not Growth's webhook inbox switch.
Growth is not committing in this memo to current payment.received, payment.failed, or refund inbox handling. Those remain attribution and conversion-walkback concerns for Growth's broader operating model, but they are future-target local mesh paths until repo-local handlers exist.
Growth will not use real customer, prospect, payment, lesson, campaign-performance, or operator-note data in the default local seed path. Any sanitized-snapshot workflow should be separately named and explicitly gated.
References
- Commitment plan:
2026-05-22-platform-local-dev-mesh-commitment-plan - Growth seed feedback:
2026-05-22-growth-local-dev-mesh-seed-data-feedback - Growth dispatcher inventory:
2026-05-20-growth-dispatcher-freshness-inventory - Growth initiative scope:
2026-05-23-growth-postgres-initiative-scope - Growth producer paths:
growth/src/modules/lead-intakes/repo.ts,growth/src/modules/intake-amendment/service.ts - Growth inbox:
growth/src/modules/dispatcher-inbox/service.ts - Growth cron config:
growth/vercel.json