Eight steps in dependency order, each with a way to confirm it worked before moving to the next. Nothing here takes long on its own. The reason it has stalled is that the pieces are owned by different people and none of us has been in the same place at the same time.
A normal deploy, no special steps. Migration 0122 is already applied to the live database, so there is no ordering requirement and nothing to prepare first. It carries the A2P customer-profile fix, the editable review step, and the Cloud Run DNS work.
I check the health endpoint returns 200 and that the served bundle now contains the new legal-structure field. That is a direct read of production, not an assumption.
You refresh the A2P wizard and see a Legal structure dropdown on the business profile step. If it is not there, the deploy did not take and nothing after this will work.
Open the wizard on the Attend Home Care org and submit. Attend's legal structure should already read Limited Liability Corporation, filled in automatically by the migration's backfill, so there is nothing to type.
I watch Twilio live and call out what lands. Expect a new secondary customer profile
that reaches pending-review rather than stalling at draft, then a brand,
then a campaign.
Stalling at draft means the old bug; reaching pending-review means we
are through and waiting on carrier vetting.
Three dead draft profiles accumulated while the bug was live, one per failed attempt. I remove them once step 2 has produced a real one, so we never delete the wrong thing.
The profile list shows exactly two entries: the CLS Star parent and Attend's live registration.
Business Settings, then Security Center, then Start verification. The business details are already entered and matched against the correct public record, so what remains is the identity step.
Meta asks for a government ID from a listed principal, and Ahron is the only principal on record, which is why this cannot be delegated. Choose his own name, upload the ID, then receive the confirmation code.
The business portfolio shows the business as verified, and the app creation flow stops refusing to continue.
From inside Business Settings so the business owns the app from the moment it exists:
ads_read, ads_management,
business_management, leads_retrieval,
pages_read_engagement, pages_manage_ads.Hand me the token and I call the Graph API with it live. A real response listing the business and its ad accounts is proof; anything else and we fix it while Ahron is still here.
Grant treyt@clsstarnv.com the Secret Manager Admin role on
care-compass-beta-v1-503815. Read access already works; creating secrets does not.
Worth doing even though only the Google credentials are ready today, because Meta's will need exactly the same treatment and this avoids a second round.
Trey creates GOOGLE_ADS_DEVELOPER_TOKEN, GOOGLE_ADS_CLIENT_ID and
GOOGLE_ADS_CLIENT_SECRET in Secret Manager. I confirm the names match what the
deployment config expects, character for character, since a typo fails silently at boot.
The branding form is already filled in: name, logo, homepage, privacy policy, terms, authorized domain and developer contact. Three actions remain, in the Google Auth Platform console:
Verification reports success, and I re-mint the refresh token. While the app sits in Testing the token expires after roughly seven days; once published it stops expiring, which is what production needs.
Once the secrets exist, I put up a small change uncommenting the three Google entries in the deployment config so the app can read them at boot. No migration, so no ordering requirement.
After the deploy that carries it, the boot log shows the environment flags with the Google credentials present rather than unset.
Refresh tokens get revoked, expire, or lose permissions. When that happens to one agency mid-run, should the job mark that connection and carry on with the rest, alert someone, or disable it after repeated failures? The database columns for status and last error already exist. This is policy, not plumbing, and it shapes how the multi-tenant work gets built.
The merge narrator already tells Ahron what shipped, which is why he could see our commits. What it cannot tell him is what is deliberately held, what is waiting on him, or what was decided. Adding a "waiting on you" section to the digest he already receives would have prevented most of this week's confusion.
Google Cloud begins requiring it on the 25th. If it is not enabled on
treyt@clsstarnv.com by then, console access to the project holding the OAuth client goes
away, most likely in the same week Basic Access lands.