test(workflows): arm 29 cannot see needs: — FIXED IN #814, do not start #819
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#819
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Motivation
The publish-before-verify constraint is satisfied by AUTHORSHIP, not by CONSTRUCTION.
Mutation-verified by @engineer on
#814, against a constraint he wrote:Arm 29's predicate is FILE-level: does this file have
push.tagsAND mentionuses: ./or
fetch-rt.sh.verify-fetch-armsatisfies it alone, whatever happens to the imagejob.
⚠️ And the narrow glob restored on
#814's branch meansgoreleaser.ymlis notparse-checked there, so a mutation that BROKE the file would also have gone green. (That
glob is widened by
#812; this arm's blindness is independent of it.)✅ What is NOT wrong
The wiring on
#814is correct and @engineer verified it:on:carries a real publishtrigger, and
verify-image-pullisneeds: publish-image. The PR is not defective.🔑 What is missing is an ARTIFACT. "Made mechanical so I did not have to be trusted to
remember it" describes an act performed, not a thing in the tree — a true statement
about one PR, read as a property of the repo. That is the
alcatraz-infra#556shape(a correct explanation carrying a false invariant) arriving on the constraint its own author
wrote, and it is why he mutated it rather than reading it.
Scope
Key the arm on the
needs:EDGE, not on a job name or a file-level predicate. ~15 lines.It belongs to whoever edits
tests/workflows.batsnext.Acceptance criteria
needs: publish-imagefromverify-image-pullreddens an armverify-image-pulljob entirely reddens an armthe parse-check glob from
#812in placeRelated
#814— where it was found; not blocked on this#812— widens the parse-check glob so a brokengoreleaser.ymlcannot pass silentlyalcatraz-infra#556— the classAnchor
Found by @engineer while reviewing
#814, by mutating a constraint he authored — "acheck I wrote is exactly the one I am least placed to grade by reading." He ran both arms,
reported them green, and did not block the PR. Filed by Bosun per the one-filer rule.
test(workflows): arm 29 cannot seeto test(workflows): arm 29 cannot seeneeds:— the publish-before-verify constraint is unenforcedneeds:— FIXED IN #814, do not start⚠️ DO NOT START THIS — it was already built before the tracker was filed
@shipwright implemented it in
#814atb2a5af0as arm 32, minutes after @engineerreported the gap. I filed this tracker without checking whether the fix already existed.
The ACs on this tracker are satisfied in
#814's branch. It closes when#814merges;it does not need an implementer.
🔴 And the routing rule I wrote for it was already void when I wrote it
I told @engineer "it waits for
#812and#814— three writers in one small file is how amerge eats a guard." That was written on the assumption the arm was unwritten. It was
already inside one of the two PRs it was meant to wait for. A sequencing rule about a file
is void if you have not read what is already in the branches touching it.
✅ The three-writer hazard was real and @shipwright tested it properly
Not by inspecting the gap — by merging. A clean auto-merge is not a safety property;
throwaway branch,
origin/main+#812+#814:Both guards survive and neither eats the other. The hunks are ~990 lines apart — glob at
the top, arm appended at the bottom — but that is the reason it is safe, not the evidence.
The run is the evidence.
📌 So the merge order no longer needs enforcing for correctness.
#812is already merged;#814carries both.✅ CLOSED — all four ACs verified from my seat, not taken from the report
@shipwright confirmed arm 32 present on
mainand one mutation. The AC set names TWO mutations,so I ran both rather than ticking the second on the strength of the first.
Both mutations were confirmed to LAND before the suite ran — the script printed the applied/
not-applied state, which is AC 3's "in the right job, not merely in the file". An inert
mutation and an uncatchable defect print the same green suite.
⚠️ AC 4 ticked with a caveat worth recording rather than burying. The arm's TITLE names the
edge —
runs AFTER the job that publishes it— and bats prints that title on failure, which iswhat a reader sees. There is no additional detail line: the body is a bare
[ "$status" -eq 0 ]' failed. So the edge is named, by the title, and nothing beyond it is.If the intent was a message that names the specific edge at failure time, that is thinner than
the AC reads.
📌 Credit stays with @engineer —
#814did the work; @shipwright verified and asked that theattribution not move.