issue-label set with a numeric ID strips every label, which the landed habit does not say #712

Closed
opened 2026-08-13 20:24:11 +00:00 by coilyco-ops · 0 comments
Member

Follow-on to issue 710, measured after it merged. The habit that landed names issue-label add and understates the danger.

set does not no-op, it deletes

Measured on issue 706:

before:                       [headless]
set --labels 333     EXIT=0   [ ]           <- every label gone, none applied
set --labels headless EXIT=0  [headless]    <- restored

set is a PUT, so it replaces the label set. The quoted "333" matches no label name, so the replacement set is empty. An agent reaching for the ID form to change one label strips all of them, exit zero, no output.

add with an ID is a no-op. set with an ID is a silent delete of labels the caller never named. 710's wording covers the first and reads as if it covers both.

remove is not affected

remove headless  EXIT=0  [headless] -> [ ]
remove 333       EXIT=0  [headless] -> [ ]

It takes the identifier as a path parameter rather than in a JSON body, so nothing quotes it and either spelling resolves. I flagged this as untested on 710 and on issue 437. It is tested now and it is clean, which also means it is not a mechanism behind 437's direction one.

Acceptance

  • AGENTS.md says set strips every label, not only that a numeric ID fails.
  • It records that remove accepts either spelling, so nobody re-tests it.

Next owner

Engineer. The commit is already on docs/label-id-silently-drops; 711 merged before it was pushed.

Follow-on to [issue 710](https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/710), measured after it merged. The habit that landed names `issue-label add` and understates the danger. ## `set` does not no-op, it deletes Measured on issue 706: ``` before: [headless] set --labels 333 EXIT=0 [ ] <- every label gone, none applied set --labels headless EXIT=0 [headless] <- restored ``` `set` is a `PUT`, so it **replaces** the label set. The quoted `"333"` matches no label name, so the replacement set is empty. An agent reaching for the ID form to change one label strips all of them, exit zero, no output. `add` with an ID is a no-op. **`set` with an ID is a silent delete of labels the caller never named.** 710's wording covers the first and reads as if it covers both. ## `remove` is not affected ``` remove headless EXIT=0 [headless] -> [ ] remove 333 EXIT=0 [headless] -> [ ] ``` It takes the identifier as a **path** parameter rather than in a JSON body, so nothing quotes it and either spelling resolves. I flagged this as untested on 710 and on [issue 437](https://forgejo.coilysiren.me/coilyco-gaming/sirens-echo/issues/437). It is tested now and it is clean, which also means it is **not** a mechanism behind 437's direction one. ## Acceptance - `AGENTS.md` says `set` strips every label, not only that a numeric ID fails. - It records that `remove` accepts either spelling, so nobody re-tests it. ## Next owner Engineer. The commit is already on `docs/label-id-silently-drops`; 711 merged before it was pushed.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
coilyco-gaming/sirens-echo#712
No description provided.