A task being pulled back in because of `if-dependencies` doesn't pull its own dependencies back in if they're also `if-dependencies`
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 38/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- python
- Domain
- build-system, devops
Research direction
Start in src/taskgraph/optimize/base.py, especially remove_tasks and get_subgraph, and reproduce the YAML example from the issue. Trace how if-dependencies pruning orders prune_candidates and pulls tasks back; done means a task restored because of if-dependencies also restores its own if-dependencies dependencies without an optimization error.
Written by the indexing model from the issue text.
Description
I'm assuming that fixing #710 would also fix this one but this is where it began
Assuming the following
loader: taskgraph.loader.transform:loader
transforms:
- taskgraph.transforms.task
task-defaults:
worker-type: succeed
tasks:
task-a:
label: task-a
optimization:
skip-unless-changed: ["world"]
description: task-a
task-apush-a:
label: task-apush-a
dependencies:
task-a: task-a
if-dependencies:
- task-a
description: task-push-a
task-b:
label: task-b
description: task-b
final:
label: final
dependencies:
task-push-a: task-apush-a
task-b: task-b
if-dependencies:
- task-push-a
- task-b
description: final
2025-06-23 17:49:11,994 - INFO - Generating optimized task graph
2025-06-23 17:49:11,994 - DEBUG - no files found matching a pattern in `skip-unless-changed` for "task-a"
2025-06-23 17:49:11,994 - DEBUG - optimize: final kept because of never
2025-06-23 17:49:11,994 - DEBUG - optimize: task-apush-a kept because of dependent tasks
2025-06-23 17:49:11,994 - DEBUG - optimize: task-b kept because of never
2025-06-23 17:49:11,994 - DEBUG - optimize: task-a removed because of if-dependencies pruning
2025-06-23 17:49:11,994 - INFO - Removed 1 tasks by if-dependencies pruning during optimization.
...
File "/home/eijemoz/code/taskgraph/src/taskgraph/optimize/base.py", line 110, in optimize_task_graph
get_subgraph(
~~~~~~~~~~~~^
target_task_graph,
^^^^^^^^^^^^^^^^^^
...<3 lines>...
decision_task_id,
^^^^^^^^^^^^^^^^^
),
^
File "/home/eijemoz/code/taskgraph/src/taskgraph/optimize/base.py", line 396, in get_subgraph
raise Exception("Optimization error: " + probs)
Exception: Optimization error: task-apush-a depends on task-a as task-a but it has been removed
If you rename task-apush-a to task-push-a then instead you run into #710 and the whole graph gets pulled in. This optimization error only happens when the label of the task getting optimized gets ordered before the other tasks in the prune_candidates set in remove_tasks.
- Dominant language
- Python
- Stars
- 26
- Forks
- 55
- Avg merge
- 2d 6m
- Merged PRs (30d)
- 15
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from taskcluster/taskgraph
-
Dependency Dashboard Open
Difficulty 5/5 Over a week Newbie friendliness 20/100
taskcluster/taskgraph#952 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
taskcluster/taskgraph#915 ·
-
feature
Difficulty 3/5 1-2 days Newbie friendliness 35/100
taskcluster/taskgraph#911 · 1 comment ·
-
Difficulty 3/5 1-2 days Newbie friendliness 45/100
taskcluster/taskgraph#882 ·
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
taskcluster/taskgraph#865 · 1 comment ·
All issues in taskcluster/taskgraph
Similar issues
-
Difficulty 1/5 Under an hour Newbie friendliness 90/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
zostera/django-bootstrap4#894 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
use-agent-os/agent-os#3276 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
zephyrproject-rtos/zephyr#119726 ·
-
area/auth bug comp/agent P3 platform/discord type/security
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
NousResearch/hermes-agent#117848 ·