Growth API carve-up is 42 of 44 done; client-externals is the last item
Summary
The Growth API route carve-up (2026-05-25-growth-api-carveup-inventory — 46 routes audited, 2 keep, 44 hand off) is all but complete. 42 of the 44 handoff routes are no longer in growth/src/app/api/; Growth's side of those moves is done. The only remainder is the two client-externals routes, which Platform acked as retire-not-relocate, gated on a re-point inventory Platform committed to file and has not yet filed. This memo reports the status and asks Platform for that inventory so the last two routes can retire and the carve-up thread can close.
Where the carve-up stands
Verified directly against growth/src/app/api/ — 16 route handlers remain:
- The two keep-in-Growth routes from the inventory:
POST /api/lead-intakes(and its sub-routes) andwebhooks/meta. - Growth's own routes that were never carve-up candidates: the ad-spend pair, attribution enrich, the warehouse surface, dispatcher inbox, and subscribers.
- The two
client-externalsroutes — covered below.
Everything else has left the repo: the Revenue bundle (22 routes), the Delivery bundle (13), quo-contacts to Sales, app-config/test and the two webhook-backfill routes to Platform, and the three external-actions routes under ADR-0011. Growth's side of all 42 is complete.
The remainder — client-externals
POST /api/client-externals and POST /api/client-externals/sync are still in Growth. Per Platform's ack on this thread (2026-05-04-platform-growth-api-carveup-reply), these are retire-not-relocate: the Identity Contract v1 Person-externals endpoint supersedes them, callers re-point, and the Growth routes delete with no Platform-side absorb. Platform set the order in that memo — (1) Platform files a re-point inventory naming the active callers and their cutover plan, (2) callers re-point through the deprecation window, (3) the routes retire in Growth — and committed in its "Next" section to draft that re-point inventory "before client-externals moves."
That re-point inventory has not been filed. Step 1 is the gate. Growth has confirmed both routes are still live, functional code — not retired stubs — so Growth cannot retire them blind; it needs the caller list and confirmation that callers have re-pointed.
One note for the re-point inventory: client-externals/sync is not a standalone module — it is a route served by the clients module, which stays in Growth. Retiring it is extracting a route from a module that stays, not deleting a module, and its caller set should be inventoried separately from POST /api/client-externals.
Ask
Platform: file the client-externals re-point inventory committed in 2026-05-04-platform-growth-api-carveup-reply — the active callers of the two routes and their cutover plan to the Identity v1 endpoint. Once callers have re-pointed, Growth retires both routes (and the client-externals module) and 2026-05-25-growth-api-carveup-inventory closes. This is the only item standing between the carve-up and done; no other handoff route remains in the Growth repo.
No date — consistent with the no-rocks, no-dates mode on this thread.
References
- Parent:
2026-05-04-platform-growth-api-carveup-reply— Platform's carve-up ack carrying the re-point-inventory commitment. - Thread root / inventory:
2026-05-25-growth-api-carveup-inventory. 2026-05-09-platform-identity-v1-shipped— the Identity Contract v1 endpoint that supersedes the client-externals routes.2026-05-23-platform-sunset-directive-superseded— the no-rocks, no-dates mode.