Commit graph

4 commits

Author SHA1 Message Date
aaa2c1a3a7 [IMP] mutation: count long-series kills apart, test the audit end to end
A mutant the node series missed but the long series killed was still
counted as a survivor, so the committed audit overstated what escapes
the tests. It now has its own column: 15 of the 137 survivors move
there, leaving 122; the committed files are regenerated from their own
results, without a rerun. The audit itself now runs in the long series
on a small fixture tree: long-series replay, exit code 0 with
survivors, exit 2 and nothing written when the baseline fails. The
committed audit files are read back and must match what rediger writes.
Checked: 3868 node and 105 long tests from the index alone.

--- FR ---

[IMP] mutation : tués par la série longue à part, audit éprouvé entier

Un mutant que la série node manquait et que la série longue tuait
comptait encore comme survivant : l'audit commis surestimait ce qui
échappe aux épreuves. Il a sa colonne : 15 des 137 survivants y passent,
il en reste 122 ; les fichiers commis sont réengendrés de leurs propres
résultats, sans rejeu. L'audit tourne entier dans la série longue sur un
petit arbre : rejeu long, sortie 0 avec survivants, sortie 2 et rien
d'écrit quand la ligne de base tombe. Les fichiers commis sont relus et
doivent égaler ce que rediger écrit.
Vérifié : 3868 node et 105 longues depuis l'index seul.

Assisted-by: Claude Opus 5.5
2026-10-10 18:51:43 -04:00
ec3bca4717 [ADD] mutation: engine audit command and its versioned written report
Spec 14.13 asks for an audit that shows which engine mutants the tests
kill, written where a reviewer can read it. npm run mutation and make
mutation run the baseline, a coverage pass that stops early when nothing is
measured, then every mutant; survivors are replayed against the long
series. The report holds version, scope, source fingerprint and Node
version only, no duration, host or date, and refuses any other field.
Declared equivalent mutants live in a separate list of key and reason.
Checked: red first; 3612 node tests green from the index alone.

--- FR ---

[ADD] mutation : commande d'audit du moteur, rapport écrit et versionné

Le § 14.13 demande un audit qui montre quels mutants du moteur les épreuves
tuent, écrit là où un relecteur le lit. npm run mutation et make mutation
jouent la ligne de base, une passe de couverture qui s'arrête tôt si rien
n'est mesuré, puis chaque mutant ; les survivants se rejouent contre la
série longue. Le rapport ne porte que version, périmètre, empreinte du
source et version de Node, ni durée, ni hôte, ni date, et refuse tout autre
champ. Les mutants déclarés équivalents vivent dans une liste à part.
Vérifié : rouge d'abord ; 3612 node verts depuis l'index seul.

Assisted-by: Claude Opus 5.5
2026-10-09 15:29:08 -04:00
8bdc959183 [ADD] mutation: run one mutant through node --test with a loader hook
A mutant counts only when the tests that import its module actually run
against the mutated source. A loader hook (module.registerHooks) serves the
mutated text in place of the module; the import graph picks the tests that
reach it, and node --test runs them in a child with a deadline. The verdict
is killed, survived, timed out or error; an empty request, a missing test
or a non-positive deadline is refused before anything starts.
Checked: red first; 3418 node and 76 long tests green from the index,
including a real run on a small invented module.

--- FR ---

[ADD] mutation : jouer un mutant sous node --test, crochet de chargement

Un mutant ne compte que si les épreuves qui importent son module jouent
vraiment contre le source muté. Un crochet de chargement
(module.registerHooks) sert le texte muté à la place du module ; le graphe
des imports choisit les épreuves qui l'atteignent, et node --test les joue
dans un enfant sous délai. Le verdict est tué, survivant, délai ou erreur ;
une demande vide, une épreuve absente ou un délai non positif sont refusés
avant tout lancement.
Vérifié : rouge d'abord ; 3418 node et 76 longues vertes depuis l'index,
dont un vrai lancement sur un petit module inventé.

Assisted-by: Claude Opus 5.5
2026-10-09 13:04:14 -04:00
52bc5f0bc8 [ADD] mutation: engine mutant generator on Vite's parser
The engine's tests must be shown to fail when its code is wrong (spec
14.13). The generator parses each module of src/moteur with Vite's parseAst
and yields one mutant per site and operator: arithmetic, boundary,
negation, logic, update, numbers, booleans, branches, ternaries, min/max.
Strings, comments, templates and imports are never mutated, sites follow
source order, and a mutant key survives an unrelated line added above it.
2576 mutants on src/moteur, enumerated in tens of milliseconds.
Checked: tests red first; 3201 node tests green from the index alone.

--- FR ---

[ADD] mutation : générateur de mutants du moteur, analyseur de Vite

Il faut montrer que les épreuves du moteur échouent quand son code est faux
(spec 14.13). Le générateur lit chaque module de src/moteur par parseAst de
Vite et rend un mutant par site et par opérateur : arithmétique, frontière,
négation, logique, mise à jour, nombres, booléens, branches, ternaires,
min/max. Chaînes, commentaires, gabarits et imports ne sont jamais mutés,
les sites suivent l'ordre du source, et une clé de mutant survit à une
ligne sans rapport ajoutée au-dessus. 2576 mutants sur src/moteur, énumérés
en quelques dizaines de millisecondes.
Vérifié : rouge d'abord ; 3201 node verts depuis l'index seul.

Assisted-by: Claude Opus 5.5
2026-10-09 04:52:30 -04:00