You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
The v2 soak never generates a contraction the contraction rule applies to #127
#126 adds a contraction rule to ddx-ad's transpose. It applies to a saved SUM(e_X · e_Y) over one inner equi-join of two inputs, where each factor reads one side, every grouping key is a column of one side, and the other side holds a grouping key. Such a sum's gradient is emitted as the cotangent contracted with the other input, without rebuilding the join.
mutation_test.py gains two mutants for that rule, contraction-wrong-cotangent and contraction-guard-off. Both survived 240 s of soak_v2_query_ad (about 505 cases each), while sum-halved and null-skip-leaks were killed in 0 s and 54 s. So the soak's generator rarely, if ever, writes a loss the rule applies to, and a clean soak says little about the rule. contraction_transpose.rs covers the rule directly and kills both mutants, but the weekly mutation report will list them as survivors until the generator reaches this shape.
Goal. The generator sometimes writes a two-input contraction in the rule's shape: SUM(f(a) * g(w)), joined on equalities, grouped by a column of each side. Include NULL join keys, with both = and IS NOT DISTINCT FROM, so the soak kills both mutants within the mutation workflow's budget.
Done in #232: the soak now writes contract nodes the contraction rule applies to, with NULL keys and factors and ties, and the mutation test's stale mutants were retargeted. All 19 mutants die within 180 s.
Activity
fix(ddx-ad): address review of the contraction rule
fix(ddx-ad): address review of the contraction rule
test: the soak writes contractions; the mutation test's mutants fit t…
alxmrs commentedon Oct 31, 2026
Done in #232: the soak now writes
contractnodes the contraction rule applies to, with NULL keys and factors and ties, and the mutation test's stale mutants were retargeted. All 19 mutants die within 180 s.