Your target margin holds whatever function prices the call
A price sent with a unit cost and a target margin is no longer answered below that margin when a function other than cost-plus prices it.
Only the cost-plus function read metadata.target_margin_pct. On the default route, another function could answer under the margin you asked for, as long as it stayed above the unit cost.
Now the margin is a floor on every route: with metadata.unit_cost and metadata.target_margin_pct sent, the price is never below unit_cost / (1 - target_margin_pct / 100), whether or not your workspace has saved guardrails, and the explanation says when it raised the price. A higher workspace minimum margin still wins, and a constraints.max_price you send below the margin still caps the price. Cost-plus and pricing chains answer as before.