The backend always returns a defaulted config.traffic_config (100% to the
served entity) even when the user does not specify one. #5693 dropped the
suppression for it (and for budget_policy_id) assuming the new
missing-in-remote auto-skip covered them, but both are present in RemoteType
so the auto-skip never fires, and the direct engine reported a permanent
update after every clean deploy.
Suppress config.traffic_config as a backend_default (skip only when the user
leaves it empty; real drift is still detected if it is set) and keep
budget_policy_id under ignore_remote_changes (GET never echoes it).
Make Changes.HasChange skip-aware so a suppressed-only change under a section
no longer triggers a spurious section update (e.g. PUT /config on an
unrelated email/tags update).
Teach the testserver to default traffic_config like the backend so the
running-endpoint acceptance test reproduces the drift locally.
Co-authored-by: Isaac
Changes
Restore suppression of the backend-defaulted
config.traffic_config(as abackend_default) andbudget_policy_id(ignore_remote_changes) onmodel_serving_endpoints, makeChanges.HasChangeskip-aware so a suppressed-only change doesn't trigger a spurious section update, and teach the testserver to defaulttraffic_configlike the backend so the drift is covered locally.Why
The backend always returns a defaulted
config.traffic_config(100% to the served entity) even when the user specifies none. #5693 dropped theignore_remote_changesentries fortraffic_configandbudget_policy_id, assuming the new "skip fields missing from RemoteType" auto-skip covered them — but both fields are present inRemoteType, so the auto-skip never fires and the direct engine reported a permanentupdateafter every clean deploy.traffic_configis a true backend default the user may also set, sobackend_default(skip only when the local value is empty; real drift still detected when set) is the right tool rather thanignore_remote_changes.budget_policy_idis never echoed by GET, so it stays underignore_remote_changes.Making the testserver faithful surfaced a latent over-update:
HasChangecounted skipped changes, so the suppressedtraffic_configtriggered a spuriousPUT /configon unrelated updates.HasChangeis now skip-aware (matchingHasChangeExcept).Tests
running-endpointnow reproduces the drift locally (fails without the fix). Passes on both engines on real cloud (aws-prod-ucws). Full./task test/fmt/lint/checkspass.This PR and its description were written by Isaac.