Home Design Record

Issue Labels

What each label on galaxyproject/foundry issues means, which labels a triaged issue carries, and what reads them.

draft
Revised
2026-11-04
Rev
6

Labels on galaxyproject/foundry issues are read by more than people. The roadmap page is validated against them, a CI workflow flags issues that break the labelling rules, and agents choose their next issue from them. A label that is missing or wrong therefore moves an issue off the roadmap or hands it to an agent that cannot act on it.

Triage an issue

An issue is triaged when it carries one roadmap/* label and one priority/* label, its parent link matches its roadmap label, and it carries either one work/* label or one or more blocker labels.

  1. Place it on the roadmap. Apply roadmap/main to a backbone issue, roadmap/substep to a step under one, or roadmap/off when it does not belong on the roadmap.
  2. Link the parent. A roadmap/substep issue becomes a GitHub sub-issue of exactly one roadmap/main issue. roadmap/main and roadmap/off issues have no parent.
  3. Set the priority. priority/mvp or priority/v2.
  4. Mark blockers. Add upstream/* or requires-iwc-inputs when the issue cannot move until something outside the Foundry changes.
  5. Set the work state of an unblocked issue. work/ready-research, work/ready-implement or work/human.

The needs-triage label disappears on the next workflow run once these hold.

Roadmap

LabelMeaningParent
roadmap/mainA large issue that forms part of the roadmap’s backbone.None
roadmap/substepA smaller issue listed as a step under its roadmap/main parent.Exactly one roadmap/main
roadmap/offA person reviewed the issue and decided it is off the roadmap.None

npm run validate:roadmap requires every open roadmap/main issue in roadmap, every roadmap/substep issue under its native parent, and no links to roadmap/off issues. build-and-validation describes the check.

Priority

LabelMeaning
priority/mvpNeeded for the initial paper or for using the Foundry now with correct results.
priority/v2Not needed for an MVP.

The roadmap lists priority/mvp work before priority/v2 work. An off-roadmap issue still takes a priority.

Work state

An unblocked issue carries exactly one work/* label. It says whether an agent may pick the issue up now, and who holds it otherwise.

LabelMeaningNext
work/ready-researchAn agent may pick it up, research it and post the first comment.work/in-progress
work/ready-implementAn agent may pick it up, implement it and open a pull request.work/in-progress
work/in-progressSomeone has claimed it. Their comment links the branch, pull request or upstream work.work/needs-review after research or design questions, or closed by the merged pull request
work/needs-reviewAn agent posted research findings or design questions it cannot settle, and a person needs to answer.Whatever the reviewer decides
work/humanA person drives the work. Agents do not pick it up.Set by that person

Agents pick up only work/ready-* issues, priority/mvp before priority/v2, then roadmap/main before roadmap/substep before roadmap/off. Claiming an issue means replacing its work/ready-* label with work/in-progress and commenting with a link to the work, so a second agent does not start the same issue. An agent that gives up restores the work/ready-* label it replaced. Pull requests ask for review through GitHub review requests, so an implemented issue stays work/in-progress until its pull request merges and closes it.

Blockers

A blocker label means the issue cannot move until the named outside change lands. It replaces the work/* label, because nobody can pick a blocked issue up. Whoever removes the last blocker sets the work/* label in the same edit, and decides it then because the right next step often changes once the upstream fix lands. A comment can record what the triager expects that step to be.

LabelBlocked until
upstream/galaxyA change lands in Galaxy.
upstream/planemoA change lands in Planemo.
upstream/gxwfA change lands in gxwf.
upstream/gxformat2A change lands in gxformat2.
upstream/toolsA change lands in a Galaxy tool wrapper repository, such as tools-iuc.
upstream/tool-shedA change lands in the Tool Shed.
requires-iwc-inputsAn IWC workflow uses the operation. Patterns are written from the corpus, not ahead of it (pattern-authorship).

Link the upstream issue or pull request in a comment so the next reader can check whether it has landed.

Needs triage

needs-triage is applied and removed by the Issue Triage Labels workflow (.github/workflows/issue-triage-labels.yml). Do not set or clear it by hand. The workflow flags an open issue when it:

  • has no roadmap/* label or no priority/* label,
  • is roadmap/substep without a roadmap/main parent,
  • is roadmap/main or roadmap/off with a parent,
  • has neither a work/* label nor a blocker label,
  • has more than one work/* label, or
  • has both a work/* label and a blocker label.

The workflow runs on the opened, reopened, labeled and unlabeled issue events, and daily, because GitHub sends no event when a parent link changes. Its run summary names each flagged issue and the rule it breaks.

Issue board

The galaxyproject issue board shows every Foundry issue in one column, so the whole queue reads at a glance. The same workflow sets each card from the issue’s labels, so the board is read-only. Change the labels, not the card. A dragged card moves back on the next run.

ColumnIssue
Needs triageBreaks a rule above
BlockedCarries a blocker label
Ready: researchwork/ready-research
Ready: implementwork/ready-implement
In progresswork/in-progress, with no open pull request that closes it
Draft PRwork/in-progress, with an open draft pull request that closes it
PR readywork/in-progress, with an open pull request ready for review that closes it
Needs reviewwork/needs-review
Humanwork/human
DoneClosed

A pull request closes an issue when its description says Closes #N or it is linked from the issue’s Development sidebar. The workflow also runs when a pull request opens, closes, changes draft state or has its description edited, so these cards follow the pull request without a label change.

Each card also carries a Priority field copied from priority/*, so views can list ready work in the order agents take it.

GitHub defaults

bug, enhancement and documentation describe the kind of work and are optional. duplicate, invalid, wontfix and question keep their GitHub meanings. good first issue marks a small, self-contained starting point for new contributors; start-contributing links to them.