8eb41c6d

By: Tom Sydney Kerckhove <syd@cs-syd.eu>

Mutation redundancy: kill-matrix via structured per-test output (P3)

Add the accurate 'kill' basis.  New sydtest child mode
--mutation-kill-row-one runs one mutation's covering tests with the
mutation active and within-set fail-fast OFF, walks the result forest to
record each covering test's pass/fail, and writes a TestKillRow.
Canonical TestIds come from flattening the full definition forest and
positionally zipping with the result leaves (filter + synchronous run
preserve source order; randomisation disabled), so ids match the
coverage phase exactly.

Driver RedundancyKill spawns one kill-row child per (mutation, covering
suite) — the same run count as the mutation phase, not one per
(test,mutation) pair — aggregates the rows into the per-test killset
relation (buildKillRelations), and runs analyzeRedundancy BasisKill.
runRedundancy now dispatches coverage/kill and shares output emission.

Tests: TestKillRow gen/json roundtrips, buildKillRelations unit test.
Kill-row child validated end-to-end against the example suite's real
forest (correct canonical TestIds, correct alignment).