aip_sdk.MetricDrift
aip_sdk.MetricDrift
One metric of a published plan whose receipt no longer matches what it resolves to now.
Derived on read, never stored: a stored comparison would be stale the moment either side
moved, for the same reason required_columns is not stored. Per metric rather than per plan
— a union-level diff can only say the columns differ, while this names the metric, the version
it moved between, and the columns that moved with it, which is the difference between a
warning people ignore and one someone can act on.
Lives here, beside the receipt it reads, so the API response and the SDK record are one shape: the server computes it, the client reads it, and neither can restate it differently.
Advisory. Run creation's own live metric check remains the only gate; what this adds is the sentence after that gate fires — this plan was published against a version that did not require that column — which separates "the metric moved" from "you named the wrong dataset".
A metric with no receipt to compare is absent from a plan's drift list rather than reported
against nothing (see aip_api.services.test_plan_validation.metric_drift), which is why
both published_* fields are required here: "not published against a recorded version" is
already spelled as absence from the list, and a second spelling of it as nulls inside an entry
would leave a reader deciding which one they were looking at.
aip_sdk.MetricDrift.current_required_columns
aip_sdk.MetricDrift.current_required_columns: list[str] = Field(description='Columns it requires now.')
No docstring is defined in the source.
aip_sdk.MetricDrift.current_version
aip_sdk.MetricDrift.current_version: str | None = Field(default=None, description='Implementation version it resolves to now, or null for a registry row carrying no version — unlike the published side, this one is read off whatever is live today.')
No docstring is defined in the source.
aip_sdk.MetricDrift.metric
aip_sdk.MetricDrift.metric: str = Field(description="The plan's own `metrics` key, as the author wrote it.")
No docstring is defined in the source.
aip_sdk.MetricDrift.model_config
aip_sdk.MetricDrift.model_config = ConfigDict(extra='forbid', frozen=True)
No docstring is defined in the source.
aip_sdk.MetricDrift.published_required_columns
aip_sdk.MetricDrift.published_required_columns: list[str] = Field(description='Columns this metric required when the plan was published.')
No docstring is defined in the source.
aip_sdk.MetricDrift.published_version
aip_sdk.MetricDrift.published_version: str = Field(description='Implementation version this metric resolved to when the plan was published.')
No docstring is defined in the source.