Skip to content

Decision: standard GitHub label set for QuantEcon lecture repositories #324

Description

@mmcky

The ask

Please review the proposed standard label set below and comment on the three questions at the bottom — ideally by Wednesday 17 June so we can roll out the following week.

This issue is decision-only and closes when we agree. Full rationale, the org-wide audit, and implementation tracking live in #323 — nothing here needs reading beyond this page to respond.

Proposed label set (18)

Unlabelled = "needs triage, normal priority" — nothing must be labelled. Colour carries meaning: priority is a heat scale, automation is quiet grey.

Type — what kind of work? (one per issue, at triage)

Label Colour Description When to use
bug 🟥 #d73a4a Something is wrong or broken in a lecture or build The lecture is incorrect: wrong maths, erroring code, broken rendering
enhancement 🟦 #a2eeef Improvement to existing material Better exposition, new exercise, improved figures
new-lecture 🟦 #0537E9 A new lecture (the marquee outcome) Brand-new lecture — proposed, in progress, or shipped. Use instead of enhancement
documentation 🟦 #0075ca Repo docs and contributor meta READMEs, CONTRIBUTING — about the repo; lecture content is never documentation
maintenance 🟨 #fbca04 Housekeeping: tooling, infra, style, environments Work a reader never sees; "rendered lectures look identical after"
question 🟪 #d876e3 A question or discussion thread Swap for a work type once it becomes agreed work

Priority — heat scale (unlabelled = normal)

Label Colour Description When to use
high-priority 🟧 #d93f0b Address soon Published content visibly broken; build blockers. Label only the outliers
low-priority 🟩 #c2e0c6 Nice to have, no time pressure Agreed work that's fine to sit; "someday" ideas. No medium — default is the middle

Editorial & workflow

Label Colour Description When to use
editor 🟩 #0e8a16 Requires editor review — final sign-off Apply at handoff after team review; editor's queue = org:QuantEcon label:editor. Remove on sign-off
do-not-merge 🟥 #b60205 Must not be merged yet May look mergeable (even approved) but held: pins, experiments, cross-repo timing

Community (GitHub-canonical names)

Label Colour Description When to use
good first issue 🟪 #7057ff Self-contained, friendly to newcomers Only when genuinely self-contained with clear acceptance criteria
help wanted 🟩 #008672 Outside help welcome Including domain (econ/math) expertise — say what's needed in a comment

Automation — applied by bots, not humans (quiet grey)

Label Colour Description When to use
automated #ededed Opened by a bot or scheduled workflow Every bot issue carries this + exactly one diagnostic below
broken-links #dddddd Link checker found dead links Applied by action-link-checker
build-failure #cccccc Execution, build, or warnings failure Applied by build/warnings checks
dependencies #bdbdbd Dependency or environment update The single Dependabot label (replaces github_actions / conda)

Meta — closing outcomes

Label Colour Description When to use
duplicate #cfd3d7 Already tracked elsewhere On close; link the survivor
wontfix #ffffff Decided not to act On close, with one sentence why

What we deliberately DON'T label

in-workDraft PR · ready"Ready for review" · review → review requests · blocked/on-hold → Draft + link the blocker · medium-priority → no label · project labels (reading-group-*) → Milestones · per-tool labels (colab, …) → build-failure.

Scope (summary)

  • Lecture repos get all 18. Software/tooling repos later get the core 16 (everything except new-lecture + editor), which also becomes the org-level default set for new repos.
  • Not touched: meta (keeps discuss/project/education), translation forks (translate:*), *.notebooks build repos.
  • Migration renames labels in place (e.g. linkcheckerbroken-links), so existing issue/PR history is preserved.

❓ The three questions

Q1 — The set. Any label you would add, remove, or rename? (Names, colours, and descriptions above are the proposal; say what you'd change.)

Q2 — Which lecture repos are in? Confirmed: lecture-python-intro, lecture-python-programming, lecture-python.myst, lecture-python-advanced.myst, lecture-dp, lecture-jax. Candidates — tick any that should also be in the first rollout:

  • lecture-julia.myst
  • lecture-datascience.myst
  • lecture-stats
  • continuous_time_mcs
  • lecture-wasm

Q3 — The one behavioural change. Status labels (in-work, ready, review, blocked) are retired in favour of native GitHub: open PRs as Drafts while working, click "Ready for review" when done, use review requests for review state. Only do-not-merge survives as a label. Are you comfortable committing to this convention?


Background, full rationale per label, the org-wide audit (this is the 4th unification attempt — #178, #290 will be closed against the outcome here), and implementation tracking: see #323. Tooling to apply the result is ready (qe gh labels sync, QuantEcon/cli).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions