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.
- Place it on the roadmap. Apply
roadmap/mainto a backbone issue,roadmap/substepto a step under one, orroadmap/offwhen it does not belong on the roadmap. - Link the parent. A
roadmap/substepissue becomes a GitHub sub-issue of exactly oneroadmap/mainissue.roadmap/mainandroadmap/offissues have no parent. - Set the priority.
priority/mvporpriority/v2. - Mark blockers. Add
upstream/*orrequires-iwc-inputswhen the issue cannot move until something outside the Foundry changes. - Set the work state of an unblocked issue.
work/ready-research,work/ready-implementorwork/human.
The needs-triage label disappears on the next workflow run once these hold.
Roadmap
| Label | Meaning | Parent |
|---|---|---|
roadmap/main | A large issue that forms part of the roadmap’s backbone. | None |
roadmap/substep | A smaller issue listed as a step under its roadmap/main parent. | Exactly one roadmap/main |
roadmap/off | A 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
| Label | Meaning |
|---|---|
priority/mvp | Needed for the initial paper or for using the Foundry now with correct results. |
priority/v2 | Not 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.
| Label | Meaning | Next |
|---|---|---|
work/ready-research | An agent may pick it up, research it and post the first comment. | work/in-progress |
work/ready-implement | An agent may pick it up, implement it and open a pull request. | work/in-progress |
work/in-progress | Someone 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-review | An agent posted research findings or design questions it cannot settle, and a person needs to answer. | Whatever the reviewer decides |
work/human | A 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.
| Label | Blocked until |
|---|---|
upstream/galaxy | A change lands in Galaxy. |
upstream/planemo | A change lands in Planemo. |
upstream/gxwf | A change lands in gxwf. |
upstream/gxformat2 | A change lands in gxformat2. |
upstream/tools | A change lands in a Galaxy tool wrapper repository, such as tools-iuc. |
upstream/tool-shed | A change lands in the Tool Shed. |
requires-iwc-inputs | An 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 nopriority/*label, - is
roadmap/substepwithout aroadmap/mainparent, - is
roadmap/mainorroadmap/offwith 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.
| Column | Issue |
|---|---|
| Needs triage | Breaks a rule above |
| Blocked | Carries a blocker label |
| Ready: research | work/ready-research |
| Ready: implement | work/ready-implement |
| In progress | work/in-progress, with no open pull request that closes it |
| Draft PR | work/in-progress, with an open draft pull request that closes it |
| PR ready | work/in-progress, with an open pull request ready for review that closes it |
| Needs review | work/needs-review |
| Human | work/human |
| Done | Closed |
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.