Record the full object name in the mutation ledger - #155
Conversation
audit/mutation-test-scans.json[0] recorded "b3bd859", a 7-character prefix. Two automated consumers read this file as evidence — the audit skill's Pass-2 gate and rain-org-health's roh-scan — and both feed the recorded value to git as the base for "what changed since the last run". A prefix is not a stable name: it resolves only against a repo that happens to hold the object, and it silently stops resolving if the history ever grows a collision. b3bd859 is unambiguous today and expands to b3bd859, which is an ancestor of main. `git describe` on it gives v0.1.3-10-gb3bd859, matching the record's own publishedTag and commitsAheadOfTag, so this is the tree the run was over. No other field changes. rainix#385 adds a shared-CI gate that rejects a short SHA, so this repo would go red on its next push without this. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V8ViHcKLVk2YoS2joH4HdN
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. WalkthroughThe mutation-test scan record now stores the full 40-character commit hash instead of the abbreviated 7-character hash. ChangesMutation scan metadata
Priority: ⬇️ Low Estimated code review effort: 1 (Trivial) | ~2 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to The metadata-only update is consistent with the stated commit identity and introduces no merge-blocking risk. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
rainix#385 landed after this branch's first CI run, so that run resolved rainix-sol-static.yaml@main from before the gate existed and never executed it. This retriggers so the fix is proven by the check that will enforce it, rather than only by a local run of the same binary. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01V8ViHcKLVk2YoS2joH4HdN
audit/mutation-test-scans.json[0]records"commit": "b3bd859"— a 7-character prefix where the full 40-character object name belongs. This expands it. No other field changes.Why a prefix is wrong here
The file is the adversarial-mutation-test skill's committed run record, appended by hand, and two automated consumers read it as evidence: the audit skill's Pass-2 gate and
rain-org-health'sroh-scan. Both feed the recorded value to git as the base for "what changed since the last mutation run". A prefix is not a stable name — it resolves only against a repo that happens to hold the object, and it stops resolving the moment the history grows a colliding one.The expansion, verified
git rev-parse b3bd859b3bd859cf84f2dfd89a96721fd43ac02d8d1d88agit rev-parse --disambiguate=b3bd859git merge-base --is-ancestor <sha> origin/maingit describe --tags <sha>v0.1.3-10-gb3bd859That last line is the corroboration that this is the right tree rather than merely a tree: the record independently claims
"publishedTag": "v0.1.3"and"commitsAheadOfTag": 10, andgit describeagrees on both. The commit is the#46merge, dated 2026-07-15, ahead of the record's 2026-07-20 timestamp.QA
Discriminating tests: n/a in this repo — the diff is one field of a data file and this repo has no parser for it. The discriminating check is
rainix-static mutation-ledger, added in Validate the hand-appended mutation ledger in shared CI rainix#385 with 29 unit tests and 9 bats tests there; it is the thing that will enforce this file from CI. Built from that branch and run against this clone:The base line is the fail-on-base evidence: the file was reverted to
HEADin the same clone and the check re-run, not reasoned about.Mutations applied: n/a for this diff — a one-field data change has no code to mutate. The mutations proving the check discriminates were applied against a real ledger in its real clone in rainix#385 (9/9 killed; short-SHA, non-existent-SHA and non-ancestor-SHA each reported with a distinct message). The short-SHA mutant there is this exact defect.
Oracle: git, not the file. The full name comes from
git rev-parse, and its correctness is cross-checked against two fields the record states independently of the SHA —publishedTag: v0.1.3andcommitsAheadOfTag: 10— whichgit describe --tagsreproduces asv0.1.3-10-gb3bd859. Ancestry isgit merge-base --is-ancestoragainstorigin/main, not a claim about it.Category check: the defect is one record field carrying a prefix rather than an object name; covered. Deliberately not covered here: the other records' shape (there is only one), the
summarycontents (unverifiable after the fact, and not what is wrong), and the CI gate itself, which is rainix#385's scope rather than this repo's.Landing note
Once rainlanguage/rainix#385 lands, this repo goes red on its next push until this merges. That is the gate working as designed rather than a regression.
🤖 Generated with Claude Code
https://claude.ai/code/session_01V8ViHcKLVk2YoS2joH4HdN
Summary by CodeRabbit