Skip to content

Skip the lowercased read-back of a feature's full_name - #7398

Merged
Daniel114510 merged 8 commits into
mainfrom
fs2524-features-full-name-case
Nov 13, 2026
Merged

Daniel114510 merged 8 commits into
mainfrom
fs2524-features-full-name-case

Conversation

@Daniel114510

@Daniel114510 Daniel114510 commented Nov 8, 2026 •

Copy link
Copy Markdown
Member

Changes

  • features: add full_name (which is a three part UC name) to provided_id_fields. This was overlooked when the resource was added.
  • materialization_sets: compute the composite key of a materialized feature member of the set using a case-insensitive feature_name (a feature resource's name) and send each materialized feature member's feature_name lowercased on create and update. In addition,OverrideChangeDesc skips a materialized feature member's feature_name change that only differs in case.

Why

Unity Catalog lowercases a feature's name, while the bundle keeps the spelling it was given, whether written out, referenced, or built from a schema resource's name. So a feature with uppercase letters in full_name was recreated on every deploy, and a materialization set materialized feature member naming its feature via feature_name that way was rejected at create or recreated the set on every deploy.

Tests

  • Acceptance tests:
    • bundle/resources/features/uppercase-name: mixed-case name plans no change; a rename recreates
    • bundle/resources/materialization_sets/uppercase-name: lowercase on create and update; case-only edits skip; a rename recreates
  • Unit tests: member key case, case-only skip, duplicate members differing only in case
  • The test server lowercases a created feature's name and refuses a set member not named in lowercase, as the service does.

UC lowercases a feature's name, and create and get return it that way.
Listing full_name in provided_id_fields skips that read-back difference, as
it does for schemas and feature specs, so a mixed-case full_name no longer
recreates the feature on every plan. The fake lowercases the name like the
real endpoint.

Co-authored-by: Isaac <no-reply@databricks.com>
@github-actions github-actions Bot added the DABs DABs related issues label Nov 8, 2026
Co-authored-by: Isaac <no-reply@databricks.com>
@github-actions

github-actions Bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

Commit: b32af2f68 | Workflow run

Regression test report

Selected 2 changed tests (limit=20, 0 not selected)

4 tests: regression=4 unreleased=0 coverage=0 failing=0
test branch main (daad5b4) latest (v1.26.0)
TestAccept/bundle/resources/features/uppercase-name/DMS= ✅ ❌ ❌
TestAccept/bundle/resources/features/uppercase-name/DMS=true ✅ ❌ ❌
TestAccept/bundle/resources/materialization_sets/uppercase-name/DMS= ✅ ❌ ❌
TestAccept/bundle/resources/materialization_sets/uppercase-name/DMS=true ✅ ❌ ❌
TestAccept/bundle/resources/features/uppercase-name/DMS=: branch ✅ | main (daad5b4) ❌ | latest (v1.26.0) ❌

main (daad5b4):

acceptance_test.go:1374: Diff:
        --- bundle/resources/features/uppercase-name/output.txt
        +++ /tmp/TestAcceptbundleresourcesfeaturesuppercase-nameDMS=3620628731/002/output.txt
        @@ -50,19 +50,21 @@
         >>> [CLI] bundle plan -o json
         {
           "resources.features.feature1": {
        -    "action": "skip",
        +    "action": "recreate",
             "changes": {
               "full_name": {
        -        "action": "skip",
        -        "reason": "id_field"
        +        "action": "recreate",
        +        "reason": "spec:immutable"
               }
             }
           }
         }
         
         >>> [CLI] bundle plan
        -Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged
        +recreate features.feature1
         
        +Plan: 1 to add, 0 to change, 1 to delete, 0 unchanged
        +
         === Renaming the feature still recreates it
         
         >>> update_file.py databricks.yml main.myschema.MyFeature main.myschema.MyOtherFeature

latest (v1.26.0): same output as main (daad5b4)

TestAccept/bundle/resources/features/uppercase-name/DMS=true: branch ✅ | main (daad5b4) ❌ | latest (v1.26.0) ❌

main (daad5b4):

acceptance_test.go:1374: Diff:
        --- bundle/resources/features/uppercase-name/output.txt
        +++ /tmp/TestAcceptbundleresourcesfeaturesuppercase-nameDMS=true4230845348/002/output.txt
        @@ -50,19 +50,21 @@
         >>> [CLI] bundle plan -o json
         {
           "resources.features.feature1": {
        -    "action": "skip",
        +    "action": "recreate",
             "changes": {
               "full_name": {
        -        "action": "skip",
        -        "reason": "id_field"
        +        "action": "recreate",
        +        "reason": "spec:immutable"
               }
             }
           }
         }
         
         >>> [CLI] bundle plan
        -Plan: 0 to add, 0 to change, 0 to delete, 1 unchanged
        +recreate features.feature1
         
        +Plan: 1 to add, 0 to change, 1 to delete, 0 unchanged
        +
         === Renaming the feature still recreates it
         
         >>> update_file.py databricks.yml main.myschema.MyFeature main.myschema.MyOtherFeature

latest (v1.26.0): same output as main (daad5b4)

TestAccept/bundle/resources/materialization_sets/uppercase-name/DMS=: branch ✅ | main (daad5b4) ❌ | latest (v1.26.0) ❌

main (daad5b4):

acceptance_test.go:1374: Diff:
        --- bundle/resources/materialization_sets/uppercase-name/output.txt
        +++ /tmp/TestAcceptbundleresourcesmaterialization_setsuppercase-name527143080/002/output.txt
        @@ -3,242 +3,9 @@
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files...
         Created features.feata
         Created features.featb
        -Created materialization_sets.set1
         Created schemas.myschema
        -Files: 1 uploaded, 0 deleted
        -Resources: 4 created, 0 changed, 0 deleted, 0 unchanged
        +Error: cannot create resources.materialization_sets.set1: materialization set [UUID]: operation failed: [BAD_REQUEST] Materialized feature requests must include the resolved feature names: main.myschema.feata, main.myschema.featb
         
        -=== Each feature is created under the schema's spelling
        -
        ->>> print_requests.py --keep //feature-engineering/features
        -[
        -  "main.MySchema.FeatA",
        -  "main.MySchema.FeatB"
        -]
        -
        -=== Each member names its feature in lowercase, from a reference or written out
        -
        ->>> print_requests.py //feature-engineering/materialization-sets
        -{
        -  "method": "POST",
        -  "path": "/api/2.0/feature-engineering/materialization-sets",
        -  "q": {
        -    "request_id": "[UUID][0]"
        -  },
        -  "body": {
        -    "materialized_features": [
        -      {
        -        "cron_schedule_trigger": {
        -          "cron_expression": "0 0 * * * ?",
        -          "mode": "MANUAL"
        -        },
        -        "feature_name": "main.myschema.feata",
        -        "offline_store_config": {
        -          "catalog_name": "main",
        -          "schema_name": "myschema",
        -          "table_name_prefix": "offline"
        -        }
        -      },
        -      {
        -        "cron_schedule_trigger": {
        -          "cron_expression": "0 0 * * * ?",
        -          "mode": "MANUAL"
        -        },
        -        "feature_name": "main.myschema.featb",
        -        "offline_store_config": {
        -          "catalog_name": "main",
        -          "schema_name": "myschema",
        -          "table_name_prefix": "offline"
        -        }
        -      }
        -    ]
        -  }
        -}
        -
        -=== A plan on an unchanged bundle skips each member's feature name instead of recreating the set
        -
        ->>> set_plan
        -{
        -  "action": "skip",
        -  "changes": {
        -    "materialized_features[member='feature_name=main.myschema.feata|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    },
        -    "materialized_features[member='feature_name=main.myschema.featb|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle plan
        -Plan: 0 to add, 0 to change, 0 to delete, 4 unchanged
        -
        -=== Changing only the case of a written-out feature name is skipped
        -
        ->>> update_file.py databricks.yml feature_name: main.MySchema.FeatB feature_name: main.myschema.featb
        -
        ->>> set_plan
        -{
        -  "action": "skip",
        -  "changes": {
        -    "materialized_features[member='feature_name=main.myschema.feata|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    },
        -    "materialized_features[member='feature_name=main.myschema.featb|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    }
        -  }
        -}
        -
        ->>> update_file.py databricks.yml feature_name: main.myschema.featb feature_name: MAIN.MYSCHEMA.FEATB
        -
        ->>> set_plan
        -{
        -  "action": "skip",
        -  "changes": {
        -    "materialized_features[member='feature_name=main.myschema.feata|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    },
        -    "materialized_features[member='feature_name=main.myschema.featb|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    }
        -  }
        -}
        -
        -=== Naming another feature still recreates the set
        -
        ->>> update_file.py databricks.yml feature_name: MAIN.MYSCHEMA.FEATB feature_name: main.MySchema.FeatC
        -
        ->>> set_plan
        -Warn: planning resources.materialization_sets.set1: the member for feature "main.MySchema.FeatC" is not in the deployed set, and members cannot be added to an existing set, so the whole set will be recreated: every member is dropped and recomputed
        -{
        -  "action": "recreate",
        -  "changes": {
        -    "materialized_features[member='feature_name=main.myschema.feata|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    },
        -    "materialized_features[member='feature_name=main.myschema.featb|is_streaming_mode=false']": {
        -      "action": "update",
        -      "reason": "custom"
        -    },
        -    "materialized_features[member='feature_name=main.myschema.featc|is_streaming_mode=false']": {
        -      "action": "recreate",
        -      "reason": "member_added"
        -    }
        -  }
        -}
        -
        ->>> update_file.py databricks.yml feature_name: main.MySchema.FeatC feature_name: main.MySchema.FeatB
        -
        -=== Removing a member updates the set, naming the remaining member's feature in lowercase
        -
        ->>> update_file.py databricks.yml         - feature_name: main.MySchema.FeatB
        -          offline_store_config:
        -            catalog_name: main
        -            schema_name: myschema
        -            table_name_prefix: offline
        -          cron_schedule_trigger:
        -            mode: MANUAL
        -            cron_expression: "0 0 * * * ?"
        - 
        -
        ->>> [CLI] bundle deploy
        -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files...
        -Updated materialization_sets.set1
         Files: 1 uploaded, 0 deleted
        -Resources: 0 created, 1 changed, 0 deleted, 3 unchanged
         
        ->>> print_requests.py //feature-engineering/materialization-sets
        -{
        -  "method": "PATCH",
        -  "path": "/api/2.0/feature-engineering/materialization-sets/[UUID][1]",
        -  "q": {
        -    "request_id": "[UUID][2]",
        -    "update_mask": "*"
        -  },
        -  "body": {
        -    "materialization_set_id": "[UUID][1]",
        -    "materialized_features": [
        -      {
        -        "cron_schedule_trigger": {
        -          "cron_expression": "0 0 * * * ?",
        -          "mode": "MANUAL"
        -        },
        -        "feature_name": "main.myschema.feata",
        -        "offline_store_config": {
        -          "catalog_name": "main",
        -          "schema_name": "myschema",
        -          "table_name_prefix": "offline"
        -        }
        -      }
        -    ]
        -  }
        -}
        -
        ->>> [CLI] bundle plan
        -Plan: 0 to add, 0 to change, 0 to delete, 4 unchanged
        -
        -=== The service refuses a member that names its feature in other than lowercase
        -
        ->>> musterr [CLI] feature-engineering create-materialization-set --json {"materialized_features": [{"feature_name": "main.MySchema.FeatA", "offline_store_config": {"catalog_name": "main", "schema_name": "myschema", "table_name_prefix": "direct"}, "cron_schedule_trigger": {"mode": "MANUAL", "cron_expression": "0 0 * * * ?"}}]}
        -Error: operation failed: [BAD_REQUEST] Materialized feature requests must include the resolved feature names: main.myschema.feata
        -
        ->>> print_requests.py //feature-engineering/materialization-sets
        -{
        -  "method": "POST",
        -  "path": "/api/2.0/feature-engineering/materialization-sets",
        -  "q": {
... (48 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)

latest (v1.26.0): same output as main (daad5b4)

TestAccept/bundle/resources/materialization_sets/uppercase-name/DMS=true: branch ✅ | main (daad5b4) ❌ | latest (v1.26.0) ❌

main (daad5b4):

acceptance_test.go:1374: Diff:
        --- bundle/resources/materialization_sets/uppercase-name/output.txt
        +++ /tmp/TestAcceptbundleresourcesmaterialization_setsuppercase-name3625238943/002/output.txt
        @@ -3,242 +3,9 @@
         Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files...
         Created features.feata
         Created features.featb
        -Created materialization_sets.set1
         Created schemas.myschema
        -Files: 1 uploaded, 0 deleted
        -Resources: 4 created, 0 changed, 0 deleted, 0 unchanged
        +Error: cannot create resources.materialization_sets.set1: materialization set [UUID]: operation failed: [BAD_REQUEST] Materialized feature requests must include the resolved feature names: main.myschema.feata, main.myschema.featb
         
        -=== Each feature is created under the schema's spelling
        -
        ->>> print_requests.py --keep //feature-engineering/features
        -[
        -  "main.MySchema.FeatA",
        -  "main.MySchema.FeatB"
        -]
        -
        -=== Each member names its feature in lowercase, from a reference or written out
        -
        ->>> print_requests.py //feature-engineering/materialization-sets
        -{
        -  "method": "POST",
        -  "path": "/api/2.0/feature-engineering/materialization-sets",
        -  "q": {
        -    "request_id": "[UUID][0]"
        -  },
        -  "body": {
        -    "materialized_features": [
        -      {
        -        "cron_schedule_trigger": {
        -          "cron_expression": "0 0 * * * ?",
        -          "mode": "MANUAL"
        -        },
        -        "feature_name": "main.myschema.feata",
        -        "offline_store_config": {
        -          "catalog_name": "main",
        -          "schema_name": "myschema",
        -          "table_name_prefix": "offline"
        -        }
        -      },
        -      {
        -        "cron_schedule_trigger": {
        -          "cron_expression": "0 0 * * * ?",
        -          "mode": "MANUAL"
        -        },
        -        "feature_name": "main.myschema.featb",
        -        "offline_store_config": {
        -          "catalog_name": "main",
        -          "schema_name": "myschema",
        -          "table_name_prefix": "offline"
        -        }
        -      }
        -    ]
        -  }
        -}
        -
        -=== A plan on an unchanged bundle skips each member's feature name instead of recreating the set
        -
        ->>> set_plan
        -{
        -  "action": "skip",
        -  "changes": {
        -    "materialized_features[member='feature_name=main.myschema.feata|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    },
        -    "materialized_features[member='feature_name=main.myschema.featb|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    }
        -  }
        -}
        -
        ->>> [CLI] bundle plan
        -Plan: 0 to add, 0 to change, 0 to delete, 4 unchanged
        -
        -=== Changing only the case of a written-out feature name is skipped
        -
        ->>> update_file.py databricks.yml feature_name: main.MySchema.FeatB feature_name: main.myschema.featb
        -
        ->>> set_plan
        -{
        -  "action": "skip",
        -  "changes": {
        -    "materialized_features[member='feature_name=main.myschema.feata|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    },
        -    "materialized_features[member='feature_name=main.myschema.featb|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    }
        -  }
        -}
        -
        ->>> update_file.py databricks.yml feature_name: main.myschema.featb feature_name: MAIN.MYSCHEMA.FEATB
        -
        ->>> set_plan
        -{
        -  "action": "skip",
        -  "changes": {
        -    "materialized_features[member='feature_name=main.myschema.feata|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    },
        -    "materialized_features[member='feature_name=main.myschema.featb|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    }
        -  }
        -}
        -
        -=== Naming another feature still recreates the set
        -
        ->>> update_file.py databricks.yml feature_name: MAIN.MYSCHEMA.FEATB feature_name: main.MySchema.FeatC
        -
        ->>> set_plan
        -Warn: planning resources.materialization_sets.set1: the member for feature "main.MySchema.FeatC" is not in the deployed set, and members cannot be added to an existing set, so the whole set will be recreated: every member is dropped and recomputed
        -{
        -  "action": "recreate",
        -  "changes": {
        -    "materialized_features[member='feature_name=main.myschema.feata|is_streaming_mode=false'].feature_name": {
        -      "action": "skip",
        -      "reason": "feature_name_case_only"
        -    },
        -    "materialized_features[member='feature_name=main.myschema.featb|is_streaming_mode=false']": {
        -      "action": "update",
        -      "reason": "custom"
        -    },
        -    "materialized_features[member='feature_name=main.myschema.featc|is_streaming_mode=false']": {
        -      "action": "recreate",
        -      "reason": "member_added"
        -    }
        -  }
        -}
        -
        ->>> update_file.py databricks.yml feature_name: main.MySchema.FeatC feature_name: main.MySchema.FeatB
        -
        -=== Removing a member updates the set, naming the remaining member's feature in lowercase
        -
        ->>> update_file.py databricks.yml         - feature_name: main.MySchema.FeatB
        -          offline_store_config:
        -            catalog_name: main
        -            schema_name: myschema
        -            table_name_prefix: offline
        -          cron_schedule_trigger:
        -            mode: MANUAL
        -            cron_expression: "0 0 * * * ?"
        - 
        -
        ->>> [CLI] bundle deploy
        -Uploading bundle files to /Workspace/Users/[USERNAME]/.bundle/test-bundle/default/files...
        -Updated materialization_sets.set1
         Files: 1 uploaded, 0 deleted
        -Resources: 0 created, 1 changed, 0 deleted, 3 unchanged
         
        ->>> print_requests.py //feature-engineering/materialization-sets
        -{
        -  "method": "PATCH",
        -  "path": "/api/2.0/feature-engineering/materialization-sets/[UUID][1]",
        -  "q": {
        -    "request_id": "[UUID][2]",
        -    "update_mask": "*"
        -  },
        -  "body": {
        -    "materialization_set_id": "[UUID][1]",
        -    "materialized_features": [
        -      {
        -        "cron_schedule_trigger": {
        -          "cron_expression": "0 0 * * * ?",
        -          "mode": "MANUAL"
        -        },
        -        "feature_name": "main.myschema.feata",
        -        "offline_store_config": {
        -          "catalog_name": "main",
        -          "schema_name": "myschema",
        -          "table_name_prefix": "offline"
        -        }
        -      }
        -    ]
        -  }
        -}
        -
        ->>> [CLI] bundle plan
        -Plan: 0 to add, 0 to change, 0 to delete, 4 unchanged
        -
        -=== The service refuses a member that names its feature in other than lowercase
        -
        ->>> musterr [CLI] feature-engineering create-materialization-set --json {"materialized_features": [{"feature_name": "main.MySchema.FeatA", "offline_store_config": {"catalog_name": "main", "schema_name": "myschema", "table_name_prefix": "direct"}, "cron_schedule_trigger": {"mode": "MANUAL", "cron_expression": "0 0 * * * ?"}}]}
        -Error: operation failed: [BAD_REQUEST] Materialized feature requests must include the resolved feature names: main.myschema.feata
        -
        ->>> print_requests.py //feature-engineering/materialization-sets
        -{
        -  "method": "POST",
        -  "path": "/api/2.0/feature-engineering/materialization-sets",
        -  "q": {
... (50 more lines truncated, raise DATABRICKS_CLI_TEST_MAX_LOG to see more)

latest (v1.26.0): same output as main (daad5b4)

@eng-dev-ecosystem-bot

eng-dev-ecosystem-bot commented Nov 8, 2026 •

Copy link
Copy Markdown
Collaborator

✅ Integration test report

Commit: b32af2f

Run: 43488370061

Env 💚​RECOVERED ✅​pass 🙈​skip Time
💚​ aws linux-2core-8gb 1 270 17 7:04
💚​ aws-windows-latest-4core-16gb 1 272 15 4:37
💚​ azure linux-2core-8gb 1 269 17 4:24
💚​ azure-windows-latest-4core-16gb 1 271 15 3:35
💚​ gcp linux-2core-8gb 1 270 17 6:07
💚​ gcp-windows-latest-4core-16gb 1 272 15 3:44
Test Name aws linux-2core-8gb aws-windows-latest-4core-16gb azure linux-2core-8gb azure-windows-latest-4core-16gb gcp linux-2core-8gb gcp-windows-latest-4core-16gb
💚​ TestAccept 💚​R 💚​R 💚​R 💚​R 💚​R 💚​R
Top 3 slowest tests (at least 2 minutes):
duration env testname
3:31 azure-windows-latest-4core-16gb TestAccept
3:03 gcp-windows-latest-4core-16gb TestAccept
2:34 aws-windows-latest-4core-16gb TestAccept

Daniel114510 and others added 3 commits November 8, 2026 08:39
UC stores a feature's name lowercase and the service requires a set member to name its feature
that way, while a member's feature_name keeps the config spelling, whether it is written out, a
reference to a feature, or built from a schema resource's name. So a mixed-case member was rejected
at create, and a set holding one planned a recreate on every deploy.

- MaterializedFeatureMemberKey lowercases the feature name, so a mixed-case member pairs with its
  lowercase read-back. A name holding an unresolved reference keeps its case, since resource keys
  are case-sensitive.
- OverrideChangeDesc skips the feature_name of a paired member, which can then differ only in case.
- DoCreate and DoUpdate send a copy of the set with each member's feature name lowercased.
- The test server's set create refuses a member that does not name its feature in lowercase, with
  the service's message.

Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
Co-authored-by: Isaac <no-reply@databricks.com>
@Daniel114510
Daniel114510 marked this pull request as ready for review November 11, 2026 22:55
@Daniel114510
Daniel114510 requested review from a team as code owners November 11, 2026 22:55
@andrewnester
andrewnester self-requested a review November 12, 2026 09:51

@andrewnester andrewnester left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Neither test is Cloud = true (the directory is local-only by design): was the create-time refusal of a mixed-case feature_name and the lowercased update body checked against a real workspace?

Co-authored-by: Isaac <no-reply@databricks.com>
@Daniel114510

Copy link
Copy Markdown
Member Author

Neither test is Cloud = true (the directory is local-only by design): was the create-time refusal of a mixed-case feature_name and the lowercased update body checked against a real workspace?

Thanks for pointing this out!

Both create and update are tested against a staging workspace with a CLI built from this branch:

Create: a member that names its feature in mixed case is refused with [BAD_REQUEST] Materialized feature requests must include the resolved feature names, followed by the lowercase name.

Update: an update naming a member in mixed case is refused with Materialized features cannot be added to an existing materialization set, and feature '...' does not match any member of this set. Recreate the set instead. The set is left unchanged, and the test server returns the same text.

With this PR, a bundle that names both features in mixed case (one by reference, one written out) deploys, and a plan on it changes nothing.

Daniel114510 and others added 2 commits November 13, 2026 18:53
Co-authored-by: Isaac <no-reply@databricks.com>
main now prints a blank line after each title, numbers distinct UUIDs, and runs both DMS legs for
features and materialization sets.

Co-authored-by: Isaac <no-reply@databricks.com>
@Daniel114510
Daniel114510 added this pull request to the merge queue Nov 13, 2026
Merged via the queue into main with commit 704b048 Nov 13, 2026
28 checks passed
@Daniel114510
Daniel114510 deleted the fs2524-features-full-name-case branch November 13, 2026 19:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

DABs DABs related issues

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants