Workbook

Data Steward

You own: day-to-day data hygiene — naming, tagging, ownership, deprecation, glossary entries. You're the contact for "what does this metric mean?"

What's new for you

  • Every gf_ entity (experiment, run, model, prompt, endpoint) supports tags
  • The audit log has owner / requester / approver fields on every change
  • Lineage tells you what's connected to what — propagate stewardship downstream

Workflow 1 — Tag everything important

# Models
models.set_tag("fraud-detector", key="owner", value="ml-platform@acme.com")
models.set_tag("fraud-detector", key="sensitivity", value="contains_pii")
models.set_tag("fraud-detector", key="business_unit", value="risk")

# Prompts
prompts.set_tag("customer_support", version=2, key="owner", value="aie-team@acme.com")

Stewardship convention: every Production-stage entity MUST have owner and sensitivity tags.

Workflow 2 — Catch untagged production entities

SELECT name FROM gf_registered_models m
WHERE m.tenant_id='ACME'
  AND NOT EXISTS (SELECT 1 FROM gf_model_versions v
                  WHERE v.name=m.name AND v.tenant_id=m.tenant_id
                    AND v.current_stage='Production')
  AND (m.tags->>'owner' IS NULL OR m.tags->>'sensitivity' IS NULL);

Run weekly; ping owners.

Workflow 3 — Deprecate a model

# 1. Find downstream consumers
endpoints = [e for e in serving.list_endpoints() if e["modelName"] == "fraud-detector-v1"]

# 2. Coordinate migration to newer version

# 3. Once nothing serves it, archive
models.transition("fraud-detector-v1", 7, to_stage="Archived", reason="superseded by v8")

Workflow 4 — Glossary entries for ML metrics

DS / MLE log all sorts of metric_names. As a steward, publish canonical definitions:

# /admin/glossary
metric: auc
name: Area under the ROC curve
definition: |
  Probability that the model ranks a random positive instance higher than
  a random negative instance. 0.5 = random; 1.0 = perfect.
applies_to: [binary_classification]
owner: ml-platform@acme.com

This drives the tooltips on the dashboard metric panels.

Workflow 5 — Lineage audit

Walk the lineage graph for high-stakes assets:

# What feature groups feed this model?
ups = lineage.get_upstream(production_run_id)

# What models came from this feature group?
downs = lineage.get_downstream(kind="feature_group", id="user_features_v3")

If a feature group is high-stakes, every downstream model owner should know.

Common gotchas

  • Tags are free-form — agree on a controlled vocab in your org and document it.
  • set_tag is mutable — old values are gone. Use gf_audit_log to find prior tag values.
  • Lineage edges are append-only — corrections require SQL with audit.

Where to go next