- Expand NewInterpeter ownership comment to explicitly confirm that
run.Workflow is fresh per call and job is only read (not written),
so concurrent calls for different matrix combinations are race-free
- Downgrade the two remaining log.Info lines (matrix re-evaluation
complete / succeeded) to log.Debug per reviewer request
- Add unit tests for constructWorkflowWithNeeds (happy path, invalid
payload, missing jobs section), mergeNeedsIntoVars, and a
multi-dimension dynamic matrix case in TestHasMatrixWithNeeds
Co-Authored-By: Claude <claude-sonnet-4-5@anthropic.com>