You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As a contributor filing an issue in this repo, I want the labels the issue templates ask for to actually exist, so that I can complete the Definition of Ready instead of being asked for a label the repo cannot apply.
Motivation
The vendored toolkit's LABELS.md describes a canonical vocabulary of 35 labels. This repo's live GitHub label set has 18. The gap is not cosmetic — several vendored workflows read labels as control flow:
pr_orchestrator/SKILL.md Step 1 resolves a gate profile from a gate-profile/{light,standard,full} label on each closing issue. No such label exists here, so every issue silently resolves to standard. That happens to be the sane default, but it is a default reached by absence rather than by decision, and the light and full tiers are unreachable.
next_action/SKILL.md and backlog_grooming/SKILL.md rank by scoring bucket.
The bug_report, feature_request, tech_debt, and qc_finding templates each instruct the filer to apply "exactly one of" a scoring bucket and "exactly one of" a priority including priority/blocker.
Current pain
Concretely missing from this repo:
Family
Vendored vocabulary
Present here
Scoring
wsjf/critical|high|medium|low (this repo's pinned LABELS.md) — or tier/quick-win|big-bet|fill-in|reconsider (upstream default per ADR-0014)
neither
Priority
priority/blocker | high | medium
priority/high, priority/medium only
Gate profile
gate-profile/light | standard | full
none
Two knock-on effects:
The templates are unsatisfiable. A filer following tech_debt.md is told to apply a wsjf/* bucket and offered priority/blocker. Neither can be selected. The DoR mini-checklist line "Labels applied (Type + Priority + WSJF bucket)" can never be ticked honestly. Note also that non-collaborators cannot set labels at all on a public repo, so for external contributors the instruction is doubly inert.
.github/labels.json is not the source of truth and is not reconciled. It is tracked here, LABELS.md is pinned via local_override: true in the vendor manifest, and nothing keeps the two — or either one and the live repo state — in agreement. Upstream sync only moves files; labels are repo state, so no sync operation will ever close this gap. (Filed upstream as pfizer-evgen/agentic-dev#398.)
Proposal
Decide the target vocabulary first, then make repo state match it. Three viable shapes, in rough order of preference:
A. Adopt a trimmed subset (recommended). Keep this repo's wsjf/* choice, create the four wsjf/* labels plus priority/blocker, and explicitly decline gate-profile/* — documenting in LABELS.md that all issues run the standard profile. Smallest change that makes the templates truthful.
B. Adopt the full 35. Create everything LABELS.md names. Maximum toolkit fidelity, but imports vocabulary this repo has no demonstrated use for, on a public repo where the label sidebar is contributor-facing.
C. Trim the templates instead. Strip the scoring block and the priority/blocker mention from the four issue templates and shrink LABELS.md to the 18 that exist. Lowest ceremony; gives up WSJF/tier ranking entirely.
Whichever is chosen, .github/labels.json should become the machine-readable source and a small reconciliation step (gh label create / gh label edit driven from that file) should exist so drift is detectable rather than discovered during a sync.
Decide before implementing — this is a vocabulary decision, not a mechanical one, and the wrong choice is annoying to reverse once labels are applied to real issues.
Acceptance criteria
A decision is recorded (comment or ADR) on which of A/B/C this repo adopts, and on whether gate-profile/* is in or out.
The live GitHub label set matches the chosen vocabulary.
.github/labels.json and .github/LABELS.md agree with each other and with live repo state.
The four issue templates reference only labels that exist.
The DoR mini-checklist in each template is satisfiable as written.
LABELS.md notes that it is pinned via local_override and why, so a future sync does not silently re-diverge.
Out of scope
Retroactively labelling existing open issues with new scoring buckets.
Upstream counterpart: pfizer-evgen/agentic-dev#398 (labels are repo state; sync only moves files).
Related: the four templates and LABELS.md are pinned local_override: true in .github/VENDOR_MANIFEST.json, so upstream will not overwrite whatever is decided here.
Definition of Ready (mini-checklist)
Motivation + current pain are concrete
Acceptance criteria measurable
Out of scope explicit
Labels applied (Type + Priority + WSJF bucket) — WSJF bucket label does not exist; that is the subject of this issue
Parent epic: #123 — [Epic K] Vendored Workflow Toolkit Adoption & Governance
User story
As a contributor filing an issue in this repo, I want the labels the issue templates ask for to actually exist, so that I can complete the Definition of Ready instead of being asked for a label the repo cannot apply.
Motivation
The vendored toolkit's
LABELS.mddescribes a canonical vocabulary of 35 labels. This repo's live GitHub label set has 18. The gap is not cosmetic — several vendored workflows read labels as control flow:pr_orchestrator/SKILL.mdStep 1 resolves a gate profile from agate-profile/{light,standard,full}label on each closing issue. No such label exists here, so every issue silently resolves tostandard. That happens to be the sane default, but it is a default reached by absence rather than by decision, and thelightandfulltiers are unreachable.next_action/SKILL.mdandbacklog_grooming/SKILL.mdrank by scoring bucket.bug_report,feature_request,tech_debt, andqc_findingtemplates each instruct the filer to apply "exactly one of" a scoring bucket and "exactly one of" a priority includingpriority/blocker.Current pain
Concretely missing from this repo:
wsjf/critical|high|medium|low(this repo's pinnedLABELS.md) — ortier/quick-win|big-bet|fill-in|reconsider(upstream default per ADR-0014)priority/blocker | high | mediumpriority/high,priority/mediumonlygate-profile/light | standard | fullTwo knock-on effects:
tech_debt.mdis told to apply awsjf/*bucket and offeredpriority/blocker. Neither can be selected. The DoR mini-checklist line "Labels applied (Type + Priority + WSJF bucket)" can never be ticked honestly. Note also that non-collaborators cannot set labels at all on a public repo, so for external contributors the instruction is doubly inert..github/labels.jsonis not the source of truth and is not reconciled. It is tracked here,LABELS.mdis pinned vialocal_override: truein the vendor manifest, and nothing keeps the two — or either one and the live repo state — in agreement. Upstreamsynconly moves files; labels are repo state, so no sync operation will ever close this gap. (Filed upstream aspfizer-evgen/agentic-dev#398.)Proposal
Decide the target vocabulary first, then make repo state match it. Three viable shapes, in rough order of preference:
A. Adopt a trimmed subset (recommended). Keep this repo's
wsjf/*choice, create the fourwsjf/*labels pluspriority/blocker, and explicitly declinegate-profile/*— documenting inLABELS.mdthat all issues run thestandardprofile. Smallest change that makes the templates truthful.B. Adopt the full 35. Create everything
LABELS.mdnames. Maximum toolkit fidelity, but imports vocabulary this repo has no demonstrated use for, on a public repo where the label sidebar is contributor-facing.C. Trim the templates instead. Strip the scoring block and the
priority/blockermention from the four issue templates and shrinkLABELS.mdto the 18 that exist. Lowest ceremony; gives up WSJF/tier ranking entirely.Whichever is chosen,
.github/labels.jsonshould become the machine-readable source and a small reconciliation step (gh label create/gh label editdriven from that file) should exist so drift is detectable rather than discovered during a sync.Decide before implementing — this is a vocabulary decision, not a mechanical one, and the wrong choice is annoying to reverse once labels are applied to real issues.
Acceptance criteria
gate-profile/*is in or out..github/labels.jsonand.github/LABELS.mdagree with each other and with live repo state.LABELS.mdnotes that it is pinned vialocal_overrideand why, so a future sync does not silently re-diverge.Out of scope
tier/*vocabulary in place ofwsjf/*— that is a separate decision, deliberately deferred when the templates were pinned in PR chore: sync vendored agent toolkit to renamed upstream agentic-dev #117.pr_orchestrator/SKILL.md(vendored; not ours to edit).Codebase context
.github/labels.json,.github/LABELS.md,.github/ISSUE_TEMPLATE/{bug_report,feature_request,tech_debt,qc_finding}.md.pfizer-evgen/agentic-dev#398(labels are repo state; sync only moves files).LABELS.mdare pinnedlocal_override: truein.github/VENDOR_MANIFEST.json, so upstream will not overwrite whatever is decided here.Definition of Ready (mini-checklist)
Motivation + current pain are concrete
Acceptance criteria measurable
Out of scope explicit
Labels applied (Type + Priority + WSJF bucket) — WSJF bucket label does not exist; that is the subject of this issue
Parent epic linked above (
standalone)Sibling follow-up: [Tech Debt] Tracked public docs link into gitignored .github/vendored-decisions/, so those links 404 #119 (tracked docs linking into gitignored
.github/vendored-decisions/).