A failed version job is reported as no release warranted #86
Labels
No labels
priority/P0
priority/P1
priority/P2
priority/P3
size/L
size/M
size/S
size/XL
size/XS
state/blocked
state/done
state/in-progress
state/in-review
state/needs-refinement
state/ready
type/bug
type/chore
type/feature
type/refactor
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
amtronics/platform-actions#86
Loading…
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?
Context
The release notification's
detailsline describes the outcome, beside thestatus word. When the
versionjob fails,needs.version.outputs.releasedis empty rather than
'true', so the expression falls through every earlierbranch to its last one and the notification reads:
The status is correct. The sentence beside it describes a different outcome
entirely — a clean run over commits that warranted nothing, which is a
non-event, rather than a job that fell over and wants somebody looking.
Found while reviewing
#85, which added achecks-first branch to the sameline. It is pre-existing and was deliberately left out of that change.
Scope
detailsexpression intemplates/release.yml, and the same line inthe consumers that already carry it.
statusexpression — it is correct in this case and was verifiedover all its combinations in
#85.Acceptance criteria
versionjob fails, when the notification is sent, then itsdetails line says the version step failed and does not claim the commits
warranted no release.
sent, then its details line still reads as it does today.
sent, then its details line is unchanged from today's.
Done — the template and all thirteen consumers carry the branch.
amtronics/platform-actions(template)#8742de7012ahmad/larda#1101a15efb1ahmad/imamah#1679ad44d89ahmad/trip#15026533416ahmad/portfolio#9705c891daahmad/launchpad#93c56b14efahmad/namey#90b8c049d6ahmad/expiro#95a914b001Bayan/bayan-web#395e513e82Bayan/kidpoints#2198a835e35suhba/suhba-web#4960ab4d13suhba/suhba-docs#2278419ebesuhba/khitta#62d86003b3amtronics/forgejo-mcp#410f50624Every one released green on merge.
Bayan/stemis deliberately absent: it carries a different defect in the same line — noreleasedbranch at all, so a failedversionprintsversion: vwith a hole where the number should be — and it is recorded separately rather than filed as a fourteenth copy of this.What the three criteria cost, and what it turned up
Criterion 3 — every other combination is unchanged — was the expensive one, and it was worth the price twice.
Enumeration found a second defect the report did not mention. Evaluating the expression over every combination of job results showed that half the changed cases were not the reported symptom: they had printed the full success line while
versionhad failed, reachable because a job can set its outputs and then fall over in a later step, leavingreleased == 'true'on a failed job. Announcing a release that did not happen is worse than announcing a non-event, and no amount of reading the expression surfaced it.Two consumers were not copies, and copying the template into them would have been wrong.
ahmad/triphas four check jobs rather than one, soneeds.checks.resulthas no referent there;ahmad/tripandahmad/portfolioboth lacknotes_fallback, so the template's four-argument success line would have cited an output that does not exist. That failure is silent — a missing output evaluates to empty — so the message would have looked right forever while carrying a warning that could never fire. Both were adapted and enumerated on their own terms (32768 and 512 combinations).Two more were the same text indented four spaces shallower, where byte-identity fails while telling you nothing. Those were verified on the parsed value instead: strip all whitespace from the folded scalar and assert old == template old, new == template new, and new minus the inserted branch == old. Both were realigned in the same change, so the cheap check works on them from now on.
The other nine were straight copies, and there the check that earned its keep was byte-identity on both sides — identical to the template at
42de7012^and at42de7012. The before-check is what makes#87's own verification transferable rather than merely suggestive.Closing this as done.