Skip to content

audit: record the adversarial mutation-test scan of 5c165a8 - #46

Merged
thedavidmeister merged 2 commits into
mainfrom
amt-scan-record-5c165a8
Sep 21, 2026
Merged

thedavidmeister merged 2 commits into
mainfrom
amt-scan-record-5c165a8

Conversation

@thedavidmeister

@thedavidmeister thedavidmeister commented Sep 20, 2026

Copy link
Copy Markdown
Contributor

Campaign bookkeeping, split out of #37 so each concern stands on its own PR.
Branched off main, depends on nothing, and is independently mergeable.

What

One file: audit/mutation-test-scans.json, a record of the whole-repo
adversarial mutation-test scan at
5c165a880ac105d6c038cee096500f76849a2190 — 59 behaviours probed, 28 tests
before and 38 after, and the four issues the scan filed (#33, #34, #35, #36).

Why

So a later scan can tell what was already probed, at which commit, with which
tool and skill version, instead of re-deriving it. Without the record the next
run has no way to distinguish "this behaviour was probed and killed" from "this
behaviour was never looked at."

Scope

This closes no issue and is tied to none. It is a scan log: no source
change, no test change, no behaviour change, nothing executable. It is being
sent on its own precisely because it is not coverage and should not ride along
with tests that are.

audit/**/ is already covered by REUSE.toml, so the file needs no SPDX header
of its own and the legal job is unaffected.

QA

The testsAfterCommit field, and why it is not here

The first push of this branch went red on rainix-sol / static, and the
failure was real rather than incidental:

ERROR: audit/mutation-test-scans.json[0].testsAfterCommit:
70d4e18886c0b681e1d632d7153c1642fb3266e3 is not an ancestor of HEAD

rainix-static mutation-ledger requires every SHA a record names to be an
ancestor of HEAD, because "what changed since the last mutation run" is
otherwise computed against a tree this history does not contain. 70d4e18 is a
commit on the branch behind #37. It was an ancestor only while the scan record
and the tests shared one branch — which is exactly the bundling this split
undoes.

The field has been dropped, not repointed. It is optional by design: the gate
validates it when present and never requires it, and its module doc says why —
"the only way to go green would be to invent a SHA, which is the fabricated
evidence this gate exists to catch." Repointing it at a commit on this branch
would be that invention.

Everything the gate requires is present and valid: commit 5c165a8 is an
ancestor of this branch (verified with git merge-base --is-ancestor), the
timestamp is well-formed YYYY-MM-DDTHH:MM:SSZ, tool matches the expected
adversarial-mutation-test, and scope / summary are intact.

summary.testsAfter: 38 is still accurate for the run: 28 before, plus the 5
declaration tests on #37 and the 5 open-salt tests on #45.

QA

Checks

The diff contains no Solidity, so nothing here can move the build or the suite.
Verified anyway, locally in the pinned rainix sol-shell on this branch off
current main: 28 non-chain tests pass, 0 failedmain's count exactly,
unchanged, as a file with no executable content should leave it.
forge fmt --check passes and git status --porcelain is empty after
forge build, so the git-clean currency job is unaffected. audit/**/ is
already covered by REUSE.toml, so legal is too.

🤖 Generated with Claude Code

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) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Sep 20, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 50 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: c37999c3-5c89-4a44-b1fe-820f5297bee5

📥 Commits

Reviewing files that changed from the base of the PR and between 3c19a6a and 69474ef.

📒 Files selected for processing (1)
  • audit/mutation-test-scans.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

`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:
    70d4e18 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) <noreply@anthropic.com>
@thedavidmeister
thedavidmeister merged commit a26dab9 into main Sep 21, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant