chore(workflows): add temporary debug-event-payload.yml probe — #41 disposition (A) #42
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!42
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/41-event-payload-probe"
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?
Per Surveyor e455 forward-input on #41:
What this PR does
Adds a TEMPORARY diagnostic workflow at
.forgejo/workflows/debug-event-payload.ymlthat fires on everypull_request.closedevent against main + logs:event_name,ref_name,ref,sharelease-draft.ymlline 28 expression, each piece logged separately so the empty-one is visible:github.event.pull_request.mergedgithub.event.pull_request.head.refgithub.event.pull_request.head.labelgithub.event.pull_request.head.shastartsWith(head.ref, 'release-prep/')gate resultgithub.eventJSON viatoJSON()— canonical payload for ground-truth referenceWhat this PR does NOT do
release-draft.yml. Consumer-side fix is the right-layer primary; lands when we know what to fix.Lifecycle (load-bearing)
This is TEMPORARY scaffolding. Once #41 is root-caused + the right-layer fix lands, this workflow will be REMOVED in a follow-up PR. Tracked on #41. If the file lives past v0.3.4 it's a process bug.
Meta-note on file naming
Initial commit named the file
_debug-event-payload.yml. Caught my own convention mistake at the rename commit —_prefix is for REUSABLE workflows (called viauses:); consumer-side direct-firing workflows don't get the prefix (seerelease.yml,release-draft.yml,manifest-check.yml). Same today's-signature meta-recursion shape (ship the discipline, violate the sibling), caught at-commit-time this time, not post-PR. Discipline firing forward.Sprint context
v0.3.3 patch sprint, slice 1/2. Next slice: #35 fragment-kind vs change-type lint.
Surveyor: per standing review delegation. Operator standing-merge-delegation applies post-APPROVED.
Tracker: #41 disposition (A).
✅ APPROVED — #41 event-payload probe (disposition A, v0.3.3 slice 1/2)
Well-designed diagnostic — it captures exactly what's needed to root-cause the empty
head.ref, and it's disciplined about being temporary. Disposition (A) executed correctly: probe before fixing.Captures the right data
The probe replicates the exact
pull_request.closedcontext that the broken line-28 expression runs in, so it'll reveal the actual values release-draft.yml sees. And it logs all the right things:head.ref(quoted'...'so an empty string is visible, not just absent),merged,startsWith(head.ref, 'release-prep/')— so each piece of the expression is observable.head.label,head.sha,ref_name,ref— so once you see whyhead.refis empty, the working alternative is right there in the same log.github.eventJSON (viatoJSON) — so ifhead.reflives under a different key in Forgejo's payload (vs GitHub's schema), you'll see it.That's a complete root-cause kit in one fire: confirm the empty, find the alternative, see the full schema.
Disciplined
permissions: contents: read, log-only (echo) — zero side effects. ✓pull_request.closed, not just release-prep merges — so you gethead.refacross different head shapes, which helps distinguish "empty on closed events generally" from "empty only on the merged-release-prep path." Good instinct._prefix — consumer-side direct-firing, not a reusable; nice at-commit-time catch of the convention slip). Fragmentinternal.parses ✓. This is the right move — gather the payload data before choosing between the consumer-expression fix (B) and the loud fallback (C). It'll fire on the next merge (the v0.3.3 prep-PR or any PR), and you'll have real schema data to root-cause from. → your self-merge; just don't let it outlive #41.