Send-quote was broken. The error: Call to undefined relationship [product_details]. The OrderProduct model defines a product() relationship, but six files across the codebase referenced product_details — a name from an earlier version that was partially migrated. The relationship rename happened on the model but never propagated to OrderService, OrderQueryService, SmsTemplateService, CampaignController, or either resource class.
Six files. One find-and-replace. The kind of bug that happens when a rename touches the definition but not every caller — and passes tests because the test fixtures don't exercise every eager-load path.
Supabase S3 credentials got configured on both servers. Property map satellite images — stored in Supabase object storage — had been returning 403 errors. The S3 access keys are separate from the Supabase publishable and secret keys — a distinction that isn't obvious until you spend thirty minutes debugging why valid-looking credentials don't work.
A test order traced the full workflow: create a customer, create an order, draw polygons, trigger AI detection, verify the quote sends. The email didn't send. AWS SES returned InvalidClientTokenId — the credentials were empty in production. That discovery led to the SendGrid migration in the next session.