Every existing reusable workflow in this repo has a same-repo dogfood caller
(pr-issue-linkage-self.yml, the do-not-merge.yml/do-not-merge-gate.yml
pair, claude-review*-self.yml, etc.). issue-triage-label.yml (added in
#191) currently has none.
Why this matters
issue-triage-label.yml was never runtime-exercised before merge — there is
no issues: opened/reopened trigger path in this repo that calls it, so
its logic (label-set membership guard, the getLabel → 404 → setFailed
fail-closed check, addLabels application) has only been verified by local
linting (actionlint, zizmor --persona=pedantic), a node --check syntax
pass, and an out-of-band empirical test of the raw GitHub label API in a
disposable throwaway repo (not this workflow itself). A dogfood self-caller
closes that gap with a real end-to-end run against a real GitHub Actions
event.
This repo already carries a real priority: needs-triage label (confirmed
via gh label list), so a self-caller here is safe and immediately
meaningful — not a stub.
Why it wasn't done in #191
Every existing -self.yml pins its reusable at an already-merged commit
SHA (repo-wide pin-by-SHA policy — see CLAUDE.md's "Pin everything by
SHA" section). That SHA cannot exist for a workflow introduced in the same
PR that also adds the self-caller, without either an unpinned/relative-path
reference (inconsistent with every other caller in this repo) or fabricating
a placeholder SHA. Deferred rather than compromised on the pin policy.
Ask
Add .github/workflows/issue-triage-label-self.yml:
on:
issues:
types: [opened, reopened]
permissions: {}
jobs:
issue-triage-label:
permissions:
issues: write
uses: melodic-software/ci-workflows/.github/workflows/issue-triage-label.yml@<merged-sha-of-#191>
pinned to issue-triage-label.yml's merged commit SHA (resolvable once #191
lands on main), matching the trailing # <short-sha> <date> comment
convention used by the other -self.yml callers.
Related
#191 (adds issue-triage-label.yml), which
implements the settled mechanism from
melodic-software/claude-code-plugins#506's 2026-07-20 Class-B
research-resolution comment.
Every existing reusable workflow in this repo has a same-repo dogfood caller
(
pr-issue-linkage-self.yml, thedo-not-merge.yml/do-not-merge-gate.ymlpair,
claude-review*-self.yml, etc.).issue-triage-label.yml(added in#191) currently has none.
Why this matters
issue-triage-label.ymlwas never runtime-exercised before merge — there isno
issues: opened/reopenedtrigger path in this repo that calls it, soits logic (label-set membership guard, the
getLabel→ 404 →setFailedfail-closed check,
addLabelsapplication) has only been verified by locallinting (
actionlint,zizmor --persona=pedantic), anode --checksyntaxpass, and an out-of-band empirical test of the raw GitHub label API in a
disposable throwaway repo (not this workflow itself). A dogfood self-caller
closes that gap with a real end-to-end run against a real GitHub Actions
event.
This repo already carries a real
priority: needs-triagelabel (confirmedvia
gh label list), so a self-caller here is safe and immediatelymeaningful — not a stub.
Why it wasn't done in #191
Every existing
-self.ymlpins its reusable at an already-merged commitSHA (repo-wide pin-by-SHA policy — see
CLAUDE.md's "Pin everything bySHA" section). That SHA cannot exist for a workflow introduced in the same
PR that also adds the self-caller, without either an unpinned/relative-path
reference (inconsistent with every other caller in this repo) or fabricating
a placeholder SHA. Deferred rather than compromised on the pin policy.
Ask
Add
.github/workflows/issue-triage-label-self.yml:pinned to
issue-triage-label.yml's merged commit SHA (resolvable once #191lands on
main), matching the trailing# <short-sha> <date>commentconvention used by the other
-self.ymlcallers.Related
#191 (adds
issue-triage-label.yml), whichimplements the settled mechanism from
melodic-software/claude-code-plugins#506's 2026-07-20 Class-B
research-resolution comment.