From 9a6345726972ad638e98e66cae37ef1cdbf738f0 Mon Sep 17 00:00:00 2001 From: baku-ccron Date: Sun, 20 Sep 2026 14:57:33 +0000 Subject: [PATCH 1/2] audit: record the adversarial mutation-test scan of 5c165a8 Campaign bookkeeping, split out of #37 so each concern stands on its own PR. One record of the whole-repo adversarial mutation-test scan at `5c165a880ac105d6c038cee096500f76849a2190`: 59 behaviours probed, 28 tests before and 38 after, and the four issues it filed (#33, #34, #35, #36). This is a scan log, not coverage and not a behaviour change. It closes no issue and is tied to none: it exists so a later scan can tell what was already probed, at which commit, with which tool version, rather than re-deriving it. `audit/**/` is already covered by REUSE.toml, so the file needs no SPDX header of its own. Co-Authored-By: Claude Opus 5 (1M context) --- audit/mutation-test-scans.json | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 audit/mutation-test-scans.json diff --git a/audit/mutation-test-scans.json b/audit/mutation-test-scans.json new file mode 100644 index 0000000..1c00afd --- /dev/null +++ b/audit/mutation-test-scans.json @@ -0,0 +1,20 @@ +[ + { + "timestamp": "2026-09-20T10:34:00Z", + "commit": "5c165a880ac105d6c038cee096500f76849a2190", + "testsAfterCommit": "70d4e18886c0b681e1d632d7153c1642fb3266e3", + "publishedTag": "sol-v0.1.10", + "commitsAheadOfTag": 6, + "scope": "whole repo", + "tool": "adversarial-mutation-test", + "skillVersion": "0.35.0", + "summary": { + "behaviours": 59, + "candidates": 7, + "confirmed": 4, + "testsBefore": 28, + "testsAfter": 38, + "filed": ["#33", "#34", "#35", "#36"] + } + } +] From 69474ef59f635738cc0f74ac8a16e4145b09f08a Mon Sep 17 00:00:00 2001 From: baku-ccron Date: Sun, 20 Sep 2026 15:09:19 +0000 Subject: [PATCH 2/2] audit: drop testsAfterCommit from the scan record `rainix-static mutation-ledger` requires every SHA a record names to be an ancestor of HEAD, and red-flagged this record on a branch off `main`: ERROR: audit/mutation-test-scans.json[0].testsAfterCommit: 70d4e18886c0b681e1d632d7153c1642fb3266e3 is not an ancestor of HEAD That is correct and the record was wrong, not the gate. `70d4e18` is a commit on the branch behind #37; it was an ancestor only while the scan record and the tests shared one branch. Now that the scan record stands alone -- one PR per issue -- no commit on this history carries those tests, so the field has no truthful value here. The field is optional by design: the gate validates `testsAfterCommit` when present and never requires it, precisely so that a run whose test tree cannot be named is not pushed into inventing a SHA. Its module doc is explicit that "the only way to go green would be to invent a SHA, which is the fabricated evidence this gate exists to catch." So it is dropped rather than repointed. Everything the gate does require is unchanged and valid: `commit` 5c165a8 is an ancestor of this branch, the timestamp is well-formed, `tool` matches, and `scope`/`summary` are intact. Co-Authored-By: Claude Opus 5 (1M context) --- audit/mutation-test-scans.json | 1 - 1 file changed, 1 deletion(-) diff --git a/audit/mutation-test-scans.json b/audit/mutation-test-scans.json index 1c00afd..fad1871 100644 --- a/audit/mutation-test-scans.json +++ b/audit/mutation-test-scans.json @@ -2,7 +2,6 @@ { "timestamp": "2026-09-20T10:34:00Z", "commit": "5c165a880ac105d6c038cee096500f76849a2190", - "testsAfterCommit": "70d4e18886c0b681e1d632d7153c1642fb3266e3", "publishedTag": "sol-v0.1.10", "commitsAheadOfTag": 6, "scope": "whole repo",