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
Out of scope per QEP-2: translation forks (translate:*) and *.notebooks build repos.
4. 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:
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.
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 inqep-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 syncThe CLI reads the co-located appendix from
qepsand owns the operational mappings (rename variants, retired-label handling, pruning), which the QEP deliberately does not record. Already decomposed in QuantEcon/cli:--suggest: propose per-issue Type labels where a legacy label fans outqe gh bots check: verify the automation label contractqe gh subissue/qe gh blocked-byhelpers for the native features QEP-2 prescribesqe gh profile apply|check: compose labels + settings per repo typeqe gh repo onboardqe gh settings syncdata/labels.yml, read the schema from the QEP appendixBlocking 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
lecture-python-programming(target settled in Decision: standard GitHub label set for QuantEcon lecture repositories #324), review its migration report before widening3. Widening
lecture-*repos (core 19 + lecture extension = 21)refactor= 20)metaitself — takes the core 19 default; its localprojectandeducationlabels are resolved by the migration like any other non-standard label, not held as a standing exceptionqeps— still on the pre-QEP-2 ad-hoc set, including three status labels the standard retiresOut of scope per QEP-2: translation forks (
translate:*) and*.notebooksbuild repos.4. Org defaults
5. Bot conformance
QEP-2 requires every bot-opened issue or PR to carry
automatedplus at most one diagnostic. Three known non-conformances, carried over from QuantEcon/qeps#3:action-check-warningsemitsexecution/python-warnings, which exist nowhere in the standard →automated+build-failureaction-link-checkeris missingautomated→automated+broken-linksaction-activity-report(tools/highlights.py) — drop dead aliases (feature,priority: high,chore,docs), correct the now-false "infrastructureno longer exists" note, and settlediscuss/low-priorityhandlingDependabot 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.ymlis 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.