Skip to content

QEP-2 adoption: standard label set rollout #358

Description

@mmcky

QEP-2 — Standard GitHub Label Set and Labelling Policy — was Accepted on 2026-08-08 (QuantEcon/qeps#2, recorded in QuantEcon/qeps#10). This is the sequenced execution tracker its Adoption section defers to, so that completing, reordering, or dropping a step never requires amending the standard.

This issue is a sub-issue parent: it carries no Type label by design, per QEP-2's own rule that a tracker is structure, not work.

What the standard fixes: 19 core labels, a lecture extension (new-lecture, editor), and a one-label software extension (refactor) — names, colours, and descriptions defined normatively in qep-0002-labels.yml. Adoption is a migration, not an addition: variants are renamed in place so issue and PR history survives, and every sync emits a migration report.

1. Tooling — qe gh labels sync

The CLI reads the co-located appendix from qeps and owns the operational mappings (rename variants, retired-label handling, pruning), which the QEP deliberately does not record. Already decomposed in QuantEcon/cli:

  • QuantEcon/cli#8 — conform existing labels: recolour and rename, not only create missing
  • QuantEcon/cli#7 — migrate tags when multiple aliases merge into one canonical label (re-tag before delete)
  • QuantEcon/cli#9 — emit a migration report, one disposition per non-standard label
  • QuantEcon/cli#10 — --suggest: propose per-issue Type labels where a legacy label fans out
  • QuantEcon/cli#6 — scheduled drift check on cron
  • QuantEcon/cli#5 — qe gh bots check: verify the automation label contract
  • QuantEcon/cli#11 — qe gh subissue / qe gh blocked-by helpers for the native features QEP-2 prescribes
  • QuantEcon/cli#3 — qe gh profile apply|check: compose labels + settings per repo type
  • QuantEcon/cli#4 — qe gh repo onboard
  • QuantEcon/cli#2 — qe gh settings sync
  • QuantEcon/cli#12 — remove the duplicate data/labels.yml, read the schema from the QEP appendix

Blocking for the pilot: #8, #7, #9. The rest can land after.

These ten issues were audited against the accepted standard on 2026-08-08; corrections are recorded as comments on each. QuantEcon/cli#12 was filed by that audit.

2. Pilot

3. Widening

  • Remaining lecture-* repos (core 19 + lecture extension = 21)
  • Software / tooling repos (core 19 + refactor = 20)
  • meta itself — takes the core 19 default; its local project and education labels are resolved by the migration like any other non-standard label, not held as a standing exception
  • qeps — still on the pre-QEP-2 ad-hoc set, including three status labels the standard retires

Out of scope per QEP-2: translation forks (translate:*) and *.notebooks build repos.

4. Org defaults

  • Set the org-level default label set for new repositories to the core 19 — a manual settings change, as there is no public API for org defaults

5. Bot conformance

QEP-2 requires every bot-opened issue or PR to carry automated plus at most one diagnostic. Three known non-conformances, carried over from QuantEcon/qeps#3:

  • action-check-warnings emits execution / python-warnings, which exist nowhere in the standard → automated + build-failure
  • action-link-checker is missing automatedautomated + broken-links
  • action-activity-report (tools/highlights.py) — drop dead aliases (feature, priority: high, chore, docs), correct the now-false "infrastructure no longer exists" note, and settle discuss / low-priority handling

Dependabot is not on this list. Settled 2026-08-08: its labels belong to the automation, not to QEP-2's contract. QEP-2 defines the label dependencies — name, colour, description — and what a bot applies to its own output is automation behaviour, which is QEP-4's subject (QuantEcon/qeps#8, draft). labels: [dependencies] in .github/dependabot.yml is correct as-is and needs no change.

6. Close the earlier unification attempts

Both are superseded by QEP-2. Close them once the pilot confirms the migration works, not before — they are the fallback record if it does not.

Feeding amendments back

A label recorded as unmapped across several repos is a gap in the set, and closing it is a normal in-place amendment under QEP-1 that bumps QEP-2's version. The bar is recurrence: one repo's oddity is a local exception; the same label unmapped in four repos is a missing label. Migration reports produce the evidence; proposing the amendment stays a human judgement.

Note that QEP-4 (QuantEcon/qeps#8, draft) will re-apply its parked registry hooks to QEP-2 in its own acceptance PR, which will move QEP-2 to version: 1.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions