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
1.4 KiB
Fixed
-
Label removal on Forgejo is a full-set
PUT, not a per-labelDELETE. The workflow token gets HTTP 500 on everyDELETE .../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 everyblocker:*that should lift, can now actually clear. They were inert (#192). -
A label edit that fails is fatal to
labels-reconcile, matchingissueflow-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
PUTcan never drop a label nobody asked to remove (#192).
Added
-
test/forge-backends.test.shpins 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, andforge_labels_addstillPOST-only, per ceremony#128 (#192). -
test/labels-reconcile.test.shdrives a failing write throughmain()— the swallow was in the loop, where a fixture-level probe cannot reach (#192).