Skip to content

engine: PipelineConfig::validate() must traverse the full source-control closure when building pipeline.chain #1771

Description

@Rod-Christensen

Follow-up from PR #1764 review (CodeRabbit finding, confirmed real, deliberately not fixed in that PR because the change needs the C++ toolchain to compile and verify).

Problem — In packages/server/engine-lib/engLib/store/pipeline/pipeline_config.cpp, PipelineConfig::validate() builds pipeline.chain, but its source-control traversal marks only DIRECT entries in comp.controls. generatePipelineStack() (packages/server/engine-lib/engLib/store/stack.cpp) uses walkControl, a fixpoint that also walks data descendants of control-attached components (walkComponents) and picks up controls-of-controls on restart. A tool attached to tools can therefore have data descendants or control another component that the chain traversal never visits, so the generated pipeline.chain can omit components that the instantiated stack contains.

Fix — Mirror walkControl's fixpoint inside the validate() cycle-check traversal: for every source-controlled component, mark it visited, then traverse its output lanes and control attachments with the existing DFS before appending pipeline.chain.

Verification — Compile with the engine toolchain and validate the resulting chain against the instantiated stack.

Thread: #1764 (pipeline_config.cpp lines 349-359)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions