feat(task): implement GraphResolver with fan-in cycle pruning and migrate monorepo to Task System v3 - #976
Conversation
…and memory lifecycle in LocalRunner
…on in GraphResolver
There was a problem hiding this comment.
Code Review
This pull request refactors the task graph resolution mechanism by replacing the iterative GraphResolver with a deterministic 4.5-phase resolution algorithm (ResolveGraph). It introduces structured Dependency descriptors (such as point-to-point and fan-in tags with varying scopes) to replace taskid.UntypedTaskReference, adds robust cycle detection with priority-based pruning, and migrates the inventory system to a demand-driven tag-based approach. Additionally, the LocalRunner is optimized to clean up intermediate results before releasing waiter locks to prevent peak heap bloat. Feedback on the changes suggests standardizing on the coretask import alias instead of common_task in several form builder files to maintain code consistency.
…ask multi-stage, and cycle tests
… with cyclic producer
… task-scoped tag metadata
… taskid parameter naming
…utilities into graphresolver_graphutil.go
… test description
…inistic stage edges
…and co-locate stageTask
…DsByTaskImpl identifiers
…t.go and add stage assertions
…e resolution and tests
…nceIDsForTaskImplWithTag
…-driven graphutil tests
… DAG and unify dependency scopes
eee3b96
into
GoogleCloudPlatform:epic/task-system-v3
Summary
This PR implements the new GraphResolver with priority-based fan-in cycle pruning and completes the monorepo migration to Task System v3 as part of epic/task-system-v3.
Key Changes
Testing