Skip to content

audit: green main - the #76 record as the new ledger gate requires it - #116

Merged
thedavidmeister merged 1 commit into
mainfrom
hash-76-ledger-gate
Sep 16, 2026
Merged

thedavidmeister merged 1 commit into
mainfrom
hash-76-ledger-gate

Conversation

@thedavidmeister

Copy link
Copy Markdown
Contributor

main is red. This is the fix, and it is two fields of one JSON record.

What happened

rainix merged #385, which
adds a mutation-ledger gate to the shared static job, at 12:02:46Z. #115's
last PR run started at 12:01 and had no such step - its static job ran
no-submodules, agent-context-cap, snapshots-append-only and the rest, and
passed. The push run on main at 12:05 picked the composite up from @main,
ran the new gate, and failed on the record #115 had just added. Nothing about
the record changed between the two runs; the gate arrived between them.

Both of its errors are about naming, not about the measurement:

ERROR: audit/mutation-test-scans.json[1].tool is "mutation-probe (adversarial-mutation-test 4e59ec0c)",
  expected the string "adversarial-mutation-test" - the audit skill's gate reads this field to
  recognise its own evidence
ERROR: audit/mutation-test-scans.json[1].testsAfterCommit is null - expected a 40-character
  lowercase-hex git commit

The fix

tool is not free text: the audit skill's Pass-2 gate matches it against one
constant to decide whether a record is its own evidence, and #115 wrote the
probe binary and its rev in there instead. The field takes the constant, and the
probe identity moves into notes, where it stays on the record and is read by
people rather than matched by a gate.

testsAfterCommit was null to say "no test changed, so no post-scan test tree
exists". The gate's own module doc says the field is "validated WHEN PRESENT and
never required", with a test named an_omitted_tests_after_commit_is_legal, and
its reason for that is exactly this case: the alternative to absence is to
invent a SHA, "which is the fabricated evidence this gate exists to catch". So
the key goes. null was the right meaning in the wrong encoding.

Nothing else moves. The 28/28 and 23/28 results, the commit the scan is recorded
against, and its summary are untouched.

QA

Suite: unchanged at 77 passed / 0 failed / 0 skipped across 9 suites; src/ and
test/ are not touched by this PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_01V8ViHcKLVk2YoS2joH4HdN

rainix landed `mutation-ledger` between this repo's PR run and the push run
that merged #115, so the record went in green and turned main red four minutes
later. Two fields, both named by the gate:

`tool` is the constant it matches to recognise a record as the skill's own, so
the probe identity moves into `notes` where it is still on the record.
`testsAfterCommit` was null to say "no tests changed"; the gate validates it
when present and treats absence as exactly that, so the key goes rather than
acquiring a SHA it does not have.

`nix run github:rainlanguage/rainix#rainix-static -- mutation-ledger` is clean
on this tree and reproduces both errors without it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V8ViHcKLVk2YoS2joH4HdN
@coderabbitai

coderabbitai Bot commented Sep 16, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 46 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: e8bd6df9-db41-42e6-a6a6-958d0f1c9d17

📥 Commits

Reviewing files that changed from the base of the PR and between eaa6025 and 4b352d6.

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

@thedavidmeister
thedavidmeister merged commit 498f912 into main Sep 16, 2026
4 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