Skip to content
Insights · Engineering

Which label did that issue carry?

Name the label that issue carried: name, color, and description. Another issue can carry a different name, and another repository does not list it.

Scroll
EngineeringOct 30, 202612 min readBy Salman Naqvi, Founder & CEO
Which label did that issue carry?

A client says the bug was tagged, or says the issue they are looking at has no label at all. Tonight, three proofs, in a repository the agency or the client can open. Name the label that issue carried: the issue number, the label name, the color, and the description. If the issue has no labels, write that, including an empty list, and do not invent a name to fill the hole. Show a different issue whose label name, or whose color, is not this one. Show another client's repository that does not list this label. If any of the three needs a laptop the client cannot open, you have not named the label. You have a word in a slide and a guess.

This is the label on one issue. It is not the branch. Which branch did that pull target? is the base ref and the head ref on a pull. A pull can be open while this issue has no labels, and a label can say bug while the pull's base is a different name. It is not the ruleset. Which ruleset did that push hit? is the ruleset id a push was checked against. A ruleset can require a review while the issue's label list is empty. It is not the review. Which review blocked that merge? is a review on a pull. A review can be required while the label color is a different field. It is not the coupon on a checkout, and it is not the file on a message. Those are different objects, and they are not this name.

None of what follows is a promise about a client's repository, and none of it is legal advice. The fields below are one host's current description of labels and of the issue create request, and the requests are not a stored response. The counts below that are a 2023 paper about other people's Android issues. A color on an example request is not a census of your backlog. A paper that classified other repositories cannot name the label on the issue you opened tonight. They do tell you which numbers people mix up when they try to sound precise about a tag they have not opened.

GitHub's create-label request and its update-label request do not send the same name, and neither one is a response body. The create request sends name bug, description Something isn't working, and color f29513. bug is 3 characters. The description is 23 characters. The page says a description must be 100 characters or fewer. 23 is not 100. f29513 is 6 characters, with no leading hash, which is what the page requires. The update request sends new_name bug :bug:, description Small bug fix required, and color b01f26. bug :bug: is 9 characters. 9 is not 3. The new description is 22 characters. 22 is not 23, and 22 is not 100. b01f26 is also 6 characters. Same length, different color. The page does not print a label id in either request. Do not invent one because a schema says id is an integer (GitHub, REST API endpoints for labels).

The requests that attach labels do not agree with each other about how many names are sent. Add labels to an issue sends two strings, bug and enhancement. 2 names. enhancement is 11 characters. 11 is not 3. Set labels uses the same two names and says the set replaces whatever was there, and that an empty array removes all labels. Create an issue, on the issues page, sends labels as a one-element array whose only string is bug, plus title Found a bug, body I'm having a problem with this., assignees octocat, and milestone 1. Found a bug is 11 characters, the same length as enhancement, and not the same string. The body is 31 characters. 31 is not 23. 1 milestone is not 2 labels. A list filter example elsewhere on the issues page is bug,ui,@high. 3 names, 12 characters in the whole example. 3 is not 2, and 3 is not 1. The create request's one name is not the add request's two names. If the client says the issue was labeled bug and enhancement, the proof is the issue, not the request you wish you had sent (GitHub, REST API endpoints for issues).

The list endpoints name a page size, and the delete endpoints do not return the same shape. per_page defaults to 30 and the maximum is 100. page defaults to 1. 30 is not 100. 1 is not an issue number. Removing all labels from an issue returns status 204, and the response schema is empty. An empty response is not a label named bug. Removing one label by name returns 200 and the remaining labels, and the page says a missing name is 404. 204 is not 200, and 404 is not a color. The issue type object, which is not a label, has a color enum of gray, blue, green, yellow, orange, red, pink, and purple, plus null. 8 names. 8 is not 6 characters of hex. f29513 is not the word red. state_reason on an issue is a different enum: completed, reopened, not_planned, duplicate, or null. 5 names. 5 is not 8, and a state reason is not a label. The page's note says most examples use X-GitHub-Api-Version 2026-03-10. 10 characters. A version date is not a label name. Do not treat the default page size as the number of labels on the issue.

The study people reach for when they want a percentage of labeled issues is a different document, and it is about app reviews, not about the issue in the client's repository. Yasaman Abedini, at Sharif University of Technology, and Abbas Heydarnoori, at Bowling Green State University, use GitHub issues to augment review classifiers. They select repositories with at least two contributors and more than 30 labeled issues. 30 there is a threshold on a repository. GitHub's per_page default is also 30. The two thirties are not the same field, and neither is the label on your issue. After filtering, they say labeled issues are reduced to 217.4K, which includes 117.3K bug reports, 76.6K feature requests, and 24.9K other issues, and they print 54%, 35%, and 11%. 117.3 plus 76.6 plus 24.9 is 218.8. 218.8 is not 217.4. They also say 1.4K issues are related to both bug report and feature request. 218.8 minus 1.4 is 217.4. The overlap explains the gap. The page prints the three percentages, and 54 plus 35 plus 11 is 100. 117.3 divided by 217.4 is 0.5396, which is 53.96%, not the printed 54%. 76.6 divided by 217.4 is 0.3523, which is 35.23%, not 35%. 24.9 divided by 217.4 is 0.1145, which is 11.45%, not 11%. The printed percentages add to 100 and the unrounded shares do not, because the 1.4K sits in more than one numerator. Do not replace 217.4K with 54 and call it the label (Abedini and Heydarnoori, Can GitHub Issues Help in the App Review Classifications?).

The same paper's review table does not add to the review counts it prints beside the class counts. Table 9 has five rows. PD1 prints 2,794 reviews and then 985, 403, and 1,763. Those three sum to 3,151. 3,151 minus 2,794 is 357. PD2 prints 1,218 reviews and then 134, 178, and 958, which sum to 1,270. The difference is 52. PD3 prints 3,186 and then 1,593, 799, and 812, which sum to 3,204. The difference is 18. PD4 prints 13,930 and then 1,774, 2,085, and 10,076, which sum to 13,935. The difference is 5. PD5 prints 3,083 and then 1,239, 491, and 1,355, which sum to 3,085. The difference is 2. Five rows, five remainders, none of them zero. The page does not print 357, 52, 18, 5, or 2. Do not pick a remainder and call it a label count. They also say only 5,258 repositories, printed as 12.1%, had a labeled issue, out of approximately 43K still on GitHub in January 2023. The page does not print the division of 5,258 by 43,000. A reader who does that division gets 0.1223, which is 12.23%, not the printed 12.1%, and the 43K was approximate. Do not treat the approximate figure as an exact denominator.

Two more counts in that paper share a number with each other and not with a color. They define 19 linguistic patterns from 577 issue templates and from 2,098 section titles. 577 is not 2,098. 19 is not 2. Later they say they manually analyzed 2,098 preprocessed labels, the same integer as the section-title count, on a different object. Three people did that pass, with an average of 8 years of programming experience. Agreement was 76%. The first author decided the remaining 4 disputed labels. 4 is not 76. A truth set is 500 reviews from 5 apps, labeled by 4 developers. 500 is not 5. They cite an earlier report that labelers spend an average of 22 hours on 1,820 reviews. 22 divided by 1,820 is about 0.012 hours per review. The page does not print 0.012. None of these is f29513, and none of them is the word bug on the issue you were asked about. A percentage of other people's issues is not a name you can paste onto a ticket.

Do the three proofs on one real issue, in the repository that actually holds it. First, the binding. Copy the issue number, the label name, the color, and the description. If the list is empty, write empty. Do not infer bug because a sample request sends it, and do not infer f29513 because a sample color sends it. If the description is null, write null. A title that happens to say Found a bug is not a label. Second, the other label. A different issue, with a different name or a different color, is not this one. bug and enhancement are two names on a sample request, and they are still a request, not your issue. A chart of 217.4K other issues is not that second issue. If you cannot show an issue that does not carry this label, you have a counter, not a record. Third, the other repository. A list that belongs to another client does not contain this issue number. If the only list is a single shared tracker and you cannot say whose issue it is, write that. A tenant you cannot name is the finding. It is not a reason to tell the client the label was bug.

Three moves feel like the proof and are a second problem. Renaming the label in the tracker because the request you sent was embarrassing, and then describing the old name as a cleanup. Quoting 54% because it looks precise, while the issue you were asked about is one row, and the study that printed 54% had already rounded a share that is not 54. Asking a model which label the issue carried. The model will pick a plausible word. It will not open the issue. A branch you have not kept, while the client is arguing about where the change landed, is which branch did that pull target?. Opening that screen does not name the label.

The path is ordinary when the client, or you, can open the issue without the person who applied the label narrating it. Haystack is one search layer across documents, data lakes, and repositories. The shape that matters here is a repository the engagement can open, distinct from the next client's repository. That case is not a label ledger. Nothing in the description is a headcount, a duration, or a result figure. If the only way to see the name is a slide, you do not have this proof. You have a picture of a word.

There is a version of this afternoon where taking the work is the wrong purchase. The work is not sold under the agency's name. The client asked to meet the builders, and a hidden bench is the thing they said they did not buy. The room only has a slide, and the repository is not one you can open. The buyer only wants a template. Or the buyer wants a legal opinion about who owns the label. Those are not this proof. The terms on a white label software development partner page are the arrangement itself: the work stays in the client's repositories, under the agency's name. The page is the offer. It does not name this issue, and it does not turn 54% into a color.

When the issue is real and the repository cannot name the label, the missing object is specific. A read, in a repository the agency or the client can open, that shows one issue number, one label name, one color, and one description or an explicit empty list, shows a different issue that is not that label, and shows another client's repository without it. A white label software development partner that expects this will have put that read in the client's organization before the first issue, because a name that lives on a laptop the client cannot open cannot be defended by the person whose name is on the invoice. One that can only describe the label by forwarding a title is telling you who holds the tracker. If the next slice is one capability, an AI integration sprint is the shape where the acceptance sentence can include the three proofs. If you do not yet know which trackers the current engagements already use, a two-week AI readiness assessment maps them. The findings are yours. They are not a promise that a paper's percentage applies, and they are not f29513.

The coupon a checkout applied, and the file a message attached, are different objects: which coupon did that checkout apply? and which file did that message attach?. Do not record either on this page. A coupon id is not a label name. A file id is not a color. The milestone an issue joined is a different object: which milestone did that issue join?. Do not record it here. A milestone number is not a label name. The check a commit reported is a different object: which check did that commit report?. Do not record it here. A check-run id is not a label name.

Before you tell them the issue was a bug, do the three proofs and write the name. Name the issue, the label, the color, and the description, or write that the list was empty. Show a different issue that is not that label. Show another repository that does not hold it. Do not rename the label to avoid reading it, and do not ask a model which of the sample names it was. A paper can tell you how other repositories' labels were grouped, including the percentages that do not match the unrounded shares. The binding is the label you can defend.

Questions

Three records, in a repository the agency or the client can open. The issue number, the label name, the color, and the description, or a written line that the issue has no labels. A different issue whose name or color is not this one. Another client's repository that does not list this label. If the request sent one name and the issue shows another, write both.

No. A percentage of labeled issues in other people's Android repositories is not the name on this issue. A label you can defend is the name, the color, and the description on this repository, or a written line that the issue carries none. 54% of one study's issues is not the color f29513, and 30 on a page-size default is not an issue number.

When the work is not sold under the agency's name, when the client asked to meet the builders, when the room only has a slide, when the buyer only wants a template, or when the buyer wants a legal opinion.

Find this useful? Tell Google to show you more of it.

Let's put AI to work in your business.

A 30-minute call. You bring the workflow or the roadmap — we'll tell you what's feasible, what it costs, and what we'd build first.

Book a call→