October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsClean PCRecommendedOne scan can reveal what keeps slowing WindowsLook for cleanup and repair opportunities.Run ScanOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk5 min

The rule forbade two state labels at once. Its worked example could produce none.

"No more than one label" is not "exactly one". A remove-then-add transition passes through an empty label set that selectors can't see, and a worked example that does this fails the rule it illustrates.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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:

  • 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-preparation and submitted.
  • 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-preparation and submitted, between adding submitted and removing in-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:

  1. State the size rule once, as an invariant on the whole label set.
  2. 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Why 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.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Outdated Drivers Are Slowing You DownFree scan - exact matches
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.