Recommended Free Tools
A rule that says an issue must never carry two state labels sets an upper bound of one. It does not say the issue always has a label. A transition written as “remove the old label, then add the new one” passes through a state with zero labels. That state satisfies “no more than one” and breaks “exactly one”. It is also invisible to any query that finds issues by looking for a state label.
This analysis follows a DEV Community post of the same title by the author displayed as “howcani howcani”. It was indexed as published “last week” as of 2026-10-05, and the exact calendar date is not available. The durations, counts and commit interpretations below are the author’s reports about their own repository. They are not independently verified here and should not be read as a measure of how common the problem is on GitHub.
As an Amazon Associate I earn from qualifying purchases.
“At most one” versus “exactly one”
These are two different invariants on the size of the label set:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
| Invariant | Allowed set sizes | Violated by |
|---|---|---|
| At most one state label | 0 or 1 | Two or more labels |
| Exactly one state label | 1 | Zero labels, or two or more |
A prohibition on two labels at once only enforces the first row. If the workflow depends on every issue always being in some state, which is what any selector-driven process assumes, the rule needs to say “exactly one”. The instructions that perform transitions also have to be written so they can keep to it.
How a two-step transition breaks the rule
Say an issue is in state A and should move to state B. The transition has two operations, and either order exposes an intermediate state.
| Order | Intermediate label set | What a selector sees | If the second call fails |
|---|---|---|---|
| Remove A, then add B | empty | The issue matches no state query and can’t be found | The issue stays with no state |
| Add B, then remove A | both A and B | The issue matches two state queries | The issue stays with both labels |
The source argues that two labels are more visible and easier to recover from than zero. An issue carrying both labels still turns up in searches, and a person can spot the conflict. An unlabelled issue falls out of every state-scoped view. Neither order satisfies exactly-one, though. The worked example in the post used the remove-then-add form, so it illustrated a rule it could not keep.
Rank #2
The useful question is what the downstream reader observes, not what the transition command intends. A job that asks “which issues are in state B?” or “which issues are in state A?” gets the same answer during the gap: this issue is in neither.
Free tools Windows power users keep installed
One-click scans. No signup required.
What the author reports from the issue histories
The post cites event readings from individual issues. They are the author’s figures and describe single issue histories:
Rank #3
- Issue #44, no label: about 30 seconds with no state label during the transition into
in-review. - Issue #44, two labels: earlier, 25 minutes 47 seconds carrying both
in-preparationandsubmitted. - Issue #47: a whole-set replacement made as three label changes inside one second.
- Issue #50, after the fix: 1 hour 56 minutes 19 seconds carrying both
in-preparationandsubmitted, between addingsubmittedand removingin-preparation.
The post says these windows can be re-derived from the public issue timelines for #1, #38, #44, #47 and #50. This article did not do that, so the numbers stay attributed to the author.
The fix, and what it does not prove
According to the post, the repository record had never stated the label-set size rule. The author quotes the record, identified as commit 88b9dc8a, as describing the state set as “stated in no carrier, checked by no step, and preserved by no instruction that performs a transition”. The post attributes the sentence to the repository record, not to a named person.
The remedy had two parts:
- State the size rule once, as an invariant on the whole label set.
- Reference that statement from every instruction that performs a transition. Step 0, the cycle’s full-set read, collects the labels and repairs any set that is not of size one.
The three label changes inside one second on #47 fit that approach, because the whole set is replaced in a single burst. A written invariant is not the same as an atomic transition, though. The later two-label window on #50 shows a case where the stated rule was in place and the example still did not guarantee compliance. A rule plus a repair step bounds how long a bad state can persist. It does not remove the intermediate state.
Do these 3 things before closing this tab:
1Scan for outdated or missing drivers - takes under a minute2Clear out junk files and repair common Windows errors3Fix the driver behind crashes, sound loss and screen glitchesWhy a well-formed example proves nothing by itself
The post’s central point is about worked examples. Its own sentence is: “A worked example is a claim about the rule it illustrates: a claim that this form produces the invariant stated above it.” An example looks authoritative because it is concrete, correctly formatted and sits right under the rule. None of that shows it preserves the rule.
Best Value
The check has to compare the example with the state it governs, not just with the surrounding prose. For a label workflow:
- List the label set before the example, after each operation, and after the last one.
- Test each of those sets against the stated invariant, not only the final set.
- Check the invariant’s arity (zero, at most one, exactly one) against what the downstream selectors require.
- Look at the real event history for transitions that have happened, because a rule and a clean example can both hold on paper while the timeline shows a gap.
A neighbouring correction in the same repository
The post describes a similar fix in commit 78c59605. It revised a claim that filed issue bodies are renderings of a template, after the author compared actual bodies with the template. One registration had a 13-item checklist subset plus its own section, and another had no checklist. The pattern is the same: a claim about an artifact’s contents was checked against the artifact. The post also reports a census of five carriers, one transition written as a pair, and two tested non-instances. It ties those counts to snapshots at commits 88b9dc8a and 701b55f2, says they can be re-counted only at those snapshots, and says the censuses were not rerun for the article.
Designing transitions with the invariant in mind
When comparing transition designs, use these axes:
- Cardinality: is the rule exactly one or at most one?
- Intermediate state: which operation order is used, and what label set does it expose?
- Failure recovery: what remains if one API call fails, and what notices it?
- Selector visibility: can the issue still be found while in transit?
- Observed history: do actual events after the change satisfy the invariant, not only the written rule?
Where the workflow cannot make the swap atomic, the safer pattern follows from the table above. Add the new label first, so the issue never drops out of view. Remove the old one second. Run a whole-set read at the start of each cycle that repairs any set not of size one. That tolerates a short two-label window and bounds how long it can last, but it does not eliminate it. The #50 interval of nearly two hours shows the repair step only helps if it actually runs.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




