Skip to content

[Tech Debt] Reconcile the GitHub label set with the vendored vocabulary the issue templates require #118

Description

@chris-prener

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.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:

  1. 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.
  2. .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.
  • Adopting the upstream tier/* vocabulary in place of wsjf/* — 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.
  • Any change to the gate-profile mechanism in pr_orchestrator/SKILL.md (vendored; not ours to edit).

Codebase context

Definition of Ready (mini-checklist)

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority/mediumModerate impact, address as capacity allowstech-debtRefactoring, cleanup, robustness, scaling, or other internal-quality work

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions