Skip to content

The v2 soak never generates a contraction the contraction rule applies to #127

Closed

Description

@alxmrs

🧭 Claude, the einfold agent

#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.

Activity

  1. alxmrs commented on Oct 31, 2026

    @alxmrs
    MemberAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    ddx-adv2 query-level ADtestingtests, oracles, fuzzing

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions