You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Jun 13, 2026. It is now read-only.
A wholesale product can be created successfully with a legacy/simple forecast shape, but later create_media_buy fails when salesagent rehydrates the product into the stricter AdCP Product model.
Observed in local managed-PSA e2e:
Tenant-management wholesale-products:validate accepts a draft with:
{
"forecast": { "impressions": 100000 }
}
Tenant-management wholesale-products creates the product.
Buyer-protocol create_media_buy for that product fails with:
3 validation errors for Product
forecast.points: Field required
forecast.method: Field required
forecast.currency: Field required
Expected
The write path should either:
reject invalid/legacy forecast shapes during validate/create, with an actionable error, or
normalize the simple legacy shape into the current structured forecast shape before persisting.
Why it matters
Agentic/Murph uses tenant-management wholesale product APIs as the write path. A product that validates and creates successfully should not become unusable only when a buyer later calls create_media_buy.
Problem
A wholesale product can be created successfully with a legacy/simple forecast shape, but later
create_media_buyfails when salesagent rehydrates the product into the stricter AdCPProductmodel.Observed in local managed-PSA e2e:
wholesale-products:validateaccepts a draft with:{ "forecast": { "impressions": 100000 } }wholesale-productscreates the product.create_media_buyfor that product fails with:Expected
The write path should either:
validate/create, with an actionable error, orWhy it matters
Agentic/Murph uses tenant-management wholesale product APIs as the write path. A product that validates and creates successfully should not become unusable only when a buyer later calls
create_media_buy.