diff --git a/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanelWithData.tsx b/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanelWithData.tsx
index c4dee7349104a..2f18a9c99a084 100644
--- a/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanelWithData.tsx
+++ b/js_modules/dagster-ui/packages/ui-core/src/assets/AutoMaterializePolicyPage/AutomaterializeMiddlePanelWithData.tsx
@@ -111,8 +111,21 @@ export const AutomaterializeMiddlePanelWithData = ({
const {partitions: allPartitions} = usePartitionsForAssetKey(definition?.assetKey.path || []);
+ // For a single asset for a single tick, DA will either request a list of runs or a single backfill.
+ // When DA requests a backfill we want to show a row for that backfill in the table, so we need to
+ // construct the RunsFilter differently. Backfill IDs are 8 characters long, so we can use that to
+ // determine if a backfill was requested. If DA is updated to request multiple backfills in a
+ // single evaluation, or emit a combination of runs and backfills in a single evaluation, this
+ // logic will need to be updated.
+ const backfillIdLength = 8;
const runsFilter: RunsFilter | null = useMemo(
- () => (selectedEvaluation?.runIds.length ? {runIds: selectedEvaluation.runIds} : null),
+ () =>
+ selectedEvaluation?.runIds.length
+ ? selectedEvaluation.runIds.length === 1 &&
+ selectedEvaluation.runIds[0]?.length === backfillIdLength
+ ? {tags: [{key: 'dagster/backfill', value: selectedEvaluation.runIds[0]}]}
+ : {runIds: selectedEvaluation.runIds}
+ : null,
[selectedEvaluation],
);
@@ -163,7 +176,7 @@ export const AutomaterializeMiddlePanelWithData = ({
{flagLegacyRunsPage ? (
) : runsFilter ? (
-
+
) : (
{
}
/>
-
+
diff --git a/js_modules/dagster-ui/packages/ui-core/src/assets/auto-materialization/GlobalAutomaterializationContent.tsx b/js_modules/dagster-ui/packages/ui-core/src/assets/auto-materialization/GlobalAutomaterializationContent.tsx
index 3476d95a3f3a3..b32eccf37cd71 100644
--- a/js_modules/dagster-ui/packages/ui-core/src/assets/auto-materialization/GlobalAutomaterializationContent.tsx
+++ b/js_modules/dagster-ui/packages/ui-core/src/assets/auto-materialization/GlobalAutomaterializationContent.tsx
@@ -228,6 +228,7 @@ export const GlobalAutomaterializationContent = () => {
)}
diff --git a/js_modules/dagster-ui/packages/ui-core/src/instance/backfill/BackfillRunsTab.tsx b/js_modules/dagster-ui/packages/ui-core/src/instance/backfill/BackfillRunsTab.tsx
index cd873db2153e5..89fbda9c49f6c 100644
--- a/js_modules/dagster-ui/packages/ui-core/src/instance/backfill/BackfillRunsTab.tsx
+++ b/js_modules/dagster-ui/packages/ui-core/src/instance/backfill/BackfillRunsTab.tsx
@@ -167,6 +167,7 @@ export const BackfillRunsTab = ({
belowActionBarComponents={belowActionBarComponents}
hideTags={BACKFILL_TAGS}
scroll={true}
+ includeRunsFromBackfills={true}
emptyState={() => (
) => {
- const {entries, paginationProps, queryResult} = useRunsFeedEntries(filter, 'all', true);
+ const {entries, paginationProps, queryResult} = useRunsFeedEntries(
+ filter,
+ 'all',
+ includeRunsFromBackfills,
+ );
const refreshState = useQueryRefreshAtInterval(queryResult, FIFTEEN_SECONDS);
function content() {
diff --git a/js_modules/dagster-ui/packages/ui-core/src/schedules/ScheduleRoot.tsx b/js_modules/dagster-ui/packages/ui-core/src/schedules/ScheduleRoot.tsx
index 1e6eafc95ad27..c980f05650fb9 100644
--- a/js_modules/dagster-ui/packages/ui-core/src/schedules/ScheduleRoot.tsx
+++ b/js_modules/dagster-ui/packages/ui-core/src/schedules/ScheduleRoot.tsx
@@ -133,7 +133,11 @@ export const ScheduleRoot = (props: Props) => {
tabs={tabs}
/>
) : (
-
+
)}
);
diff --git a/js_modules/dagster-ui/packages/ui-core/src/sensors/SensorPageAutomaterialize.tsx b/js_modules/dagster-ui/packages/ui-core/src/sensors/SensorPageAutomaterialize.tsx
index 747d5e3600db5..1ac733ab8877c 100644
--- a/js_modules/dagster-ui/packages/ui-core/src/sensors/SensorPageAutomaterialize.tsx
+++ b/js_modules/dagster-ui/packages/ui-core/src/sensors/SensorPageAutomaterialize.tsx
@@ -218,6 +218,7 @@ export const SensorPageAutomaterialize = (props: Props) => {
)}
diff --git a/python_modules/dagster/dagster/_core/definitions/automation_tick_evaluation_context.py b/python_modules/dagster/dagster/_core/definitions/automation_tick_evaluation_context.py
index 416851a12540e..cf19197e7e34e 100644
--- a/python_modules/dagster/dagster/_core/definitions/automation_tick_evaluation_context.py
+++ b/python_modules/dagster/dagster/_core/definitions/automation_tick_evaluation_context.py
@@ -286,6 +286,9 @@ def build_run_requests(
run_tags: Optional[Mapping[str, str]],
emit_backfills: bool,
) -> Sequence[RunRequest]:
+ """For a single asset in a given tick, the asset will only be part of a run or a backfill, not both.
+ If the asset is targetd by a backfill, there will only be one backfill that targets the asset.
+ """
if emit_backfills:
backfill_run_request, entity_subsets = _build_backfill_request(
entity_subsets, asset_graph, run_tags