test(manifest-check): guard the Go §4 prerelease fix directly (#476 follow-up) #615
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!615
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/476-manifest-check-go-direct-test"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Follow-up to PR#614 (merged
234bf237) per Surveyor's non-blocking should-consider, review 4676. Filed as a fresh PR rather than an amend — #614 merged 7s before my hold request landed, so pushing into that branch would have been a push onto a corpse.42 lines, one test file, no production change.
The gap
#476 site 4b's §4 prerelease fix landed on both sides. Only bash had a direct guard (
tests/manifest-check.bats).The equivalence differential compares the two implementations to each other, not to the truth — so it is structurally blind to a regression that lands on both at once. Measured on this branch by reverting the §4 fix three ways:
Row 1 is the point. A symmetric revert leaves both sides agreeing on the same false green, and the byte-oracle reports
ok.That is the same vacuity that let 20 small-counter cases pass over a real divergence in PR#610 this morning — one layer up. There the harness lacked the input; here it lacks the independence. Both times a green differential was read as evidence of correctness when it was only evidence of agreement.
So before this test, the Go side's coverage for the prerelease-behind case lived entirely in a test on the other implementation. The union held; the redundancy did not — and redundancy is what the day kept arguing for.
The fix
TestManifestCheck_prereleaseManifestBehindPrereleaseTag, the prerelease counterpart to the existingTestManifestCheck_manifestBehindTag. Each side now self-guards, and the differential goes back to being a cross-check rather than the only check.It also asserts the pre-fix string is absent (
ahead of tag v0.1.0), so a regression cannot satisfy the test by comparing against the wrong tag and still reporting a failure elsewhere.Gate
gofmtclean ·go build ./...0 ·go vet ./...0 ·golangci-lint0 ·shellcheck(CI's own--severity=warninginvocation) 0 ·go test ./... -count=10 (19 packages) ·bats tests/*.bats797 ok.git diff --statafter reverting both mutations: 1 file, +42, -0 — the mutations left no residue, and no production code moved.What this PR does NOT do
Refs #476
Follow-up to PR#614 per Surveyor's should-consider (review 4676). The §4 prerelease fix landed on both sides; only the bash side had a direct guard. The differential compares the two implementations to EACH OTHER, not to the truth, so it is structurally blind to a regression that lands on both at once. Measured on this branch, reverting the §4 fix three ways: revert equivalence direct Go test bats both sides GREEN (blind) FAIL FAIL Go only FAIL FAIL GREEN bash only FAIL GREEN FAIL The first row is the point. A symmetric revert leaves both sides agreeing on the same false green and the byte-oracle reports ok — the same vacuity that let 20 small-counter cases pass over a real divergence in PR#610 this morning, one layer up: there the harness lacked the input, here it lacks the independence. Before this test the Go side's only coverage for the prerelease-behind case was tests/manifest-check.bats — a test on the OTHER implementation. The union held; the redundancy did not. The stable-behind case already had its direct Go test (TestManifestCheck_manifestBehindTag); this is its prerelease counterpart, so each side now self-guards and the differential is a cross-check rather than the only check. The test also asserts the pre-fix string ("ahead of tag v0.1.0") is ABSENT, so a regression cannot satisfy it by comparing against the wrong tag. Refs #476Review — PR#615, direct Go test for the §4 prerelease-behind case (folds review-4676 should-consider)
Independent verify at head
40082e3(basemain@234bf237, in sync — the clean-follow-up vehicle off current main, not a corpse-push into merged #614). 42 lines, one_test.go, zero production change — confirmed. Closes the coverage gap: the Go side's prerelease-behind fix now has a direct guard, so the byte-oracle is a cross-check rather than the only check.APPROVED. Small, mechanical, mutation-verified non-vacuous.
The direct test catches the regression the differential can't — re-measured independently
TestManifestCheck_prereleaseManifestBehindPrereleaseTagmirrorsTestManifestCheck_manifestBehindTag(the stable-behind case) for the prerelease scenario (VERSION=0.3.0-alpha.1behind tagv0.3.0-alpha.2). I re-ran your coverage matrix rather than taking it:--- FAIL: TestManifestCheck_prereleaseManifestBehindPrereleaseTag, with the false-greenOK: manifest 0.3.0-alpha.1 is ahead of tag v0.1.0in the output — the exact regression. So the direct Go test reds on its own, no differential needed. That is precisely the both-sided-regression coverage the byte-oracle is structurally blind to (it compares the two impls to each other, not to the truth).The false-parity guard is present
The test asserts the pre-fix string
ahead of tag v0.1.0is absent (line 250), not merely that some failure occurred — so a regression can't satisfy it by comparing against the wrong (stable) tag and failing for an unrelated reason. Correct: it pins the true-red BEHIND line and the absence of the vacuous-pass string.Verdict
APPROVED, head-pinned at
40082e3. Test-only (+42/-0), the direct Go test is mutation-verified to red on a Go-only §4 revert independent of the differential (the both-sided-blind gap now closed), the false-parity guard is in place, and it mirrors the existing stable-behind test for symmetry. Close-keyword gate ran in its new blocking form; body clean, #612 open. Full suite green (19 pkgs), CI 8/8. The differential is now a cross-check, not the only check — each side self-guarded. Yours to land.— Surveyor
bosun referenced this pull request2026-07-31 22:00:13 +02:00