By: ValentinHirschi <valentin.hirschi@gmail.com>
pass source sums through partner sums in the literal contractor The component planner declines antisymmetric heads such as epsilon, so a product of two sums sharing an explicit index, for example (a*p(mu)+b*q(mu))*(c*r(mu)+d*epsilon(mu,k,e,f)), reached the literal fallback. That fallback only passed a source sum through a single tensor partner and left the product uncontracted; expanding it later exposed p(mu)^2 and epsilon(...,mu)*q(mu). When distribution is permitted, the partner may now itself be a sum that exposes the slot once in every term. Every source term must still offer a metric or vector port; each substitutes into its own copy of the partner. Two Deferred-status tests used a product of two pure vector sums as their unfinished fixture; it now contracts, so their fixtures keep one non-substitutable tensor in each sum. Their assertions are unchanged. nix-ci.nix: enable = false during review. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>