aws / aws/graph-explorer

Align issue template labels and backfill missing issue types

Open
#2,147 0 comments 0 reactions 0 assignees View on GitHub
infrastructure internal ready-for-agent
Dominant language
TypeScript
Stars
481
Forks
108
Avg merge
6d 8h
Merged PRs (30d)
5

Description

Three issue templates declare labels in their frontmatter that do not exist in this repo, so those labels are never applied. GitHub does not create missing labels, it drops them.

| Template | Declares | Reality |
| --- | --- | --- |
| `01-bug-report.md` | `bug, triage` | neither label exists |
| `02-feature-request.md` | `enhancement, triage` | `enhancement` exists, `triage` does not |
| `03-epic.md` | `enhancement, triage` | `enhancement` exists, `triage` does not |
| `04-task.md` | none | fine |
| `05-spike.md` | none | fine |

The effect is that issues filed through these templates arrive with no triage label, so they never enter the triage queue. Bug reports also arrive with no category label at all. `needs-triage` is the canonical label per `docs/agents/triage-labels.md` and is in active use, which is what makes the gap visible.

## Work

Every template gets exactly one label, and no new labels are created:

```yaml
labels: needs-triage
```

That means `01-bug-report.md`, `02-feature-request.md`, `03-epic.md`, `04-task.md`, and `05-spike.md` all end up identical on this key.

Three things that follow:

- `bug` is dropped rather than created, and `enhancement` is dropped from the feature and epic templates. Each template's `type:` frontmatter already sets the native issue type, so a category label restating it is redundant.
- `04-task.md` and `05-spike.md` gain a `labels:` key they do not currently have, so everything filed through a template lands in the triage queue.
- The `enhancement` label itself stays in the repo. Existing issues keep it and it remains available to apply by hand. This only stops it being applied automatically.

## Confirm the issue type carries the category

Dropping `enhancement` and `bug` is only lossless if every issue already has a native issue type. Measured at the time of filing, that mostly holds.

Issues labelled `enhancement`, 168 in total:

| State | Typed | No type |
| --- | --- | --- |
| Open, 111 | 111 (Feature 76, Task 23, Epic 10, Spike 2) | 0 |
| Closed, 57 | 29 | 28 |

So no open `enhancement` issue is missing a type, and the category signal is already carried by the type field. Nothing has to change for the drop to be safe.

Repo-wide there are 74 issues with no type, but only three of them are open, and none carry `enhancement`:

- `#2068` Clearing the neighbor expansion limit field silently expands without a limit. Should be **Bug**.
- `#1853` Spike: intermittent flake in proxy-server POST /gremlin test. Should be **Spike**, as the title says.
- `#2070` Add browser-level end-to-end test coverage. Needs a judgement call between Feature, Epic, and Task. It is closely related to `#2140`, so decide the two together.

Set the type on those three. The remaining 71 untyped issues are all closed, so backfilling them is optional and does not block this task. Skip it unless someone wants the historical reporting to be clean.

Re-check with:

```bash
gh issue list --state open --limit 500 --json number,title,issueType \
--jq '.[] | select(.issueType == null) | "#\(.number) \(.title)"'
```

That should print nothing when this task is done.

Then verify every label named in template frontmatter exists:

```bash
gh label list --limit 200 --json name --jq '.[].name' > /tmp/labels.txt
for f in .github/ISSUE_TEMPLATE/*.md; do
awk -F': ' '/^labels:/{print $2}' "$f" | tr ',' '\n' | tr -d ' ' | while read -r l; do
[ -z "$l" ] || grep -qx "$l" /tmp/labels.txt || echo "$f declares missing label: $l"
done
done
```

The loop should print nothing.

## Related Issues

- Found while filing #2146

> [!IMPORTANT]
> Internal only — this issue is maintained by the core team and is not accepting external contributions.

Contributor guide

Open the contributing guide

Research direction

Start with .github/ISSUE_TEMPLATE/*.md and docs/agents/triage-labels.md, then inspect issues #2068, #1853, and #2070 before using the provided gh commands to verify metadata. Done means all five templates declare needs-triage, the specified open issues have native types, and both verification loops print nothing.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, markdown, shell
Domain
tooling
Issue type
Refactor
Difficulty
3/5
Estimated time
1-2 days
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
15/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.