feat(task-graph): materialize object dependsOn edges#475
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 46ddbb1e8e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| for to_node_index in dependency_tasks { | ||
| self.task_graph.update_edge(from_node_index, to_node_index, TaskDependencyType); |
There was a problem hiding this comment.
Preserve ordering between selected dependency tasks
When an object-form dependsOn selects multiple direct dependencies that themselves have a package edge between them (for example, app depends on both ui and shared, and ui depends on shared), this loop only materializes app#task -> ui#build and app#task -> shared#build. The query-time expansion this replaces also added the dependency-task edge between selected packages, so now those builds can run concurrently and ui#build can start before shared#build has produced its artifacts. Please keep the package ordering for the dependency tasks, or keep that part of the expansion query-scoped.
Useful? React with 👍 / 👎.
Co-authored-by: GPT-5 Codex <codex@openai.com>

Motivation
Object-form
dependsOnrules currently behave like query-time expansion rules, so the global task graph does not show edges for entries such as{ "task": "build", "from": "dependencies" }. This PR resets the prior query-time implementation, then reintroduces object-formdependsOnby materializing direct package dependency selections as task graph edges during graph loading.