docs(agents): issue-label set strips every label, which add does not #713

Merged
coilyco-ops merged 1 commit from docs/label-id-silently-drops into main 2026-08-13 20:33:52 +00:00
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.

ward exec gate PASS on all six steps.

closes #712

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. `ward exec gate` PASS on all six steps. closes #712
docs(agents): set silently strips every label, which add does not
All checks were successful
ci / image-build (pull_request) Successful in 22s
ci / test (pull_request) Successful in 41s
ci / publish-echo-image (pull_request) Has been skipped
ci / publish-observed (pull_request) Has been skipped
64c3e0abbc
Measured after 710 merged: issue-label set is a PUT, so a numeric ID matching
no label name replaces the label set with nothing. add with an ID is a no-op;
set with an ID is a silent delete of labels the caller never named.

remove takes the identifier in the path rather than a JSON body and accepts
either spelling, so it is not affected. I had flagged it untested.

closes #712

Co-authored-by: Kai Siren <coilysiren@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
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!713
No description provided.