{
  "id": "dbt/governed-vocabulary",
  "slug": "governed-vocabulary",
  "name": "One enum, every model",
  "tagline": "Two files test the same column with different accepted_values. Both pass. Find the one that drifted.",
  "description": "Open two dbt YAML files that test the same column and compare the accepted_values lists. If one is missing a value somebody added six months ago, nothing in dbt will ever report it — each test is internally valid, so both pass. The lists are strings, copied per model, with no definition behind them and nothing that notices when they disagree. This recipe finds them: import the manifest and every accepted_values list becomes a governed vocabulary you can see side by side — which models reference it, and which one drifted. Name it, describe it, add the value that was missed, give it an owner. That much works today. Publishing the corrected list back into every model that uses the field is the next step, and we run that with you while the self-serve path is finished. Your workspace opens with the vocabulary grid and ownership columns already configured.",
  "url": "https://coremodels.io/recipe/governed-vocabulary",
  "json": "https://coremodels.io/recipe/governed-vocabulary.json",
  "markdown": "https://coremodels.io/recipe/governed-vocabulary.md",
  "status": "ga",
  "connectors": [
    {
      "slug": "dbt",
      "name": "dbt",
      "url": "https://coremodels.io/connector/dbt",
      "recipeUrl": "https://coremodels.io/connector/dbt/recipe/governed-vocabulary",
      "capabilities": [
        "import"
      ]
    }
  ],
  "steps": [
    "See every vocabulary referenced by more than one model, and the one that drifted.",
    "Name it, describe it, give it an owner. Once.",
    "Publishing the list back into every model is Early access; we run that with you."
  ],
  "start": {
    "label": "Start with this recipe →",
    "href": "https://go.coremodels.io/app/new/dbt/governed-vocabulary",
    "note": "No warehouse credential. No dbt Cloud token. Read-only."
  },
  "stories": [],
  "guides": [
    {
      "slug": "h1-need",
      "title": "Eleven Copies of One Enum",
      "summary": "Grep a mature dbt project for `accepted_values` and count the hits on your order status field. In the estates we have looked at, the number is rarely one. The list appears in the staging model that first cleans the column, in two intermediate models, in the fact table, in three marts built for three teams, and in another four models a second squad wrote when it needed the same field and copied the nearest example it could find.",
      "audience": "strategy",
      "url": "https://coremodels.io/connector/dbt/h1-need"
    },
    {
      "slug": "t7-vocabularies",
      "title": "Finding the `accepted_values` List That Drifted",
      "summary": "Two files in your project test the same column against different value lists. Both tests pass, so nothing has ever told you. This guide finds them, and turns the list into something that can only be defined once.",
      "audience": "engineering",
      "url": "https://coremodels.io/connector/dbt/t7-vocabularies"
    }
  ]
}
