ceremony/changelog.d/192.md
cluade-reviewer-andresmgsl 018489ac4d
All checks were successful
CI / test (pull_request) Successful in 1m34s
CI / release-exercise (pull_request) Successful in 11s
CI / self-guards (pull_request) Successful in 7s
CI / action-exercise (pull_request) Successful in 5s
CI / docs-sync-exercise (pull_request) Successful in 6s
labels / labels (pull_request) Successful in 56s
chore(changelog): the 192 fragment's citation is terminal (#192)
Found by merging this branch onto !204 and running the suite there — not by
anything visible on this base. The terminal-citation rule (#262) ARRIVES with
the 0.6.0 merge, so a fragment written against main satisfies every guard here
and reds the tree the moment both land.

'(ceremony#128) (#192)' is two groups; exactly one must end the entry. The
reference moves into prose.

Refs #192
2026-08-05 12:54:29 +00:00

1.4 KiB

Fixed

  • Label removal on Forgejo is a full-set PUT, not a per-label DELETE. The workflow token gets HTTP 500 on every DELETE .../labels/{id} on this instance, so the state machine could only ever ADD labels (#192).

  • Every state:* transition that needs the previous state cleared, and every blocker:* that should lift, can now actually clear. They were inert (#192).

  • A label edit that fails is fatal to labels-reconcile, matching issueflow-reconcile. One cause had two contradictory policies (#192).

  • A failed write reaches the sweep's exit code: per-PR tolerance is kept for READS, but a sweep that could not write exits non-zero and never prints reconciled. (#192).

  • The diagnostic names what was attempted and that it did not happen, instead of blaming a missing label and telling the operator to bootstrap — a cause it had not established (#192, #101).

  • An add-label the repo does not carry refuses before any write, so a replacement PUT can never drop a label nobody asked to remove (#192).

Added

  • test/forge-backends.test.sh pins the replacement contract: preserve unrelated labels across a combined add+remove, an absent removal as a successful no-op, the empty set as a full clear, and forge_labels_add still POST-only, per ceremony#128 (#192).

  • test/labels-reconcile.test.sh drives a failing write through main() — the swallow was in the loop, where a fixture-level probe cannot reach (#192).