fix: labels/scope writes additively — a label applied mid-job survives #133

Merged
claude-bot-andresmgsl merged 6 commits from build/130-labels-scope-clobber into main 2026-07-24 13:14:03 +00:00

6 commits

Author SHA1 Message Date
claude-bot-andresmgsl
94f890aa1c chore: retrigger checks — queued reconcile duplicate was cancelled
Same pattern as PR #136's fa76851: the labels/reconcile run for 4002924
was a queued duplicate cancelled by the repo-global concurrency group,
GitHub refuses a rerun, and the reconciler reads the cancellation as
ci-red. Nothing in the tree changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 12:23:29 +00:00
claude-bot-andresmgsl
40029242cb fix(round): labeler.yml header tells the truth; labels-scope maps to scope:labels
The mapping header still described actions/labeler@v5 + sync-labels —
the exact mechanism this PR removed; it now describes labels-scope's
base-ref read and additive POST, keeping the #128 incident. The
scope:labels row gains actions/labels-scope/** and its test, and two
fixtures derive against the real mapping so the coverage is tested, not
just present. The reconcile job comment names labels-scope instead of
labeler (grok nit 3).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 12:22:09 +00:00
claude-bot-andresmgsl
ce24a1a3ba polish: unreadable base version reads 'unreadable' in the release-shape warning
Part of #130.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 12:07:57 +00:00
claude-bot-andresmgsl
d0b857eb10 docs: the additive-scope contract in CONSUMERS/LABELS; changelog fragment
Part of #130.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 11:57:10 +00:00
claude-bot-andresmgsl
16dfdb9a4f feat: reconciler warns on a release-shaped PR missing its release label
Bare X.Y.Z at the head where the base says otherwise, no release label,
not a draft: the sweep emits one :⚠️: per pass naming both
versions. A warning only — release is declared intent and the reconciler
never guesses intent (LABELS.md). Version read via the API, both
backends, jq not node; unreadable reads nag nobody. Plus the yq test
contract in CI and fixture tests for the guard matrix.

Part of #130.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 11:54:49 +00:00
claude-bot-andresmgsl
53efbfba2a fix: scope job derives additively — labeler v5's PUT clobbered mid-job labels
actions/labeler@v5 writes the whole label set (setLabels PUT) even under
sync-labels: false, so a label applied between its read and its write is
silently removed — ceremony#128 lost `release` that way. v6/v7 write the
same way. Replace the step with actions/labels-scope: same labeler.yml
mapping (changed-files/any-glob-to-any-file subset, refused loudly
otherwise), changed paths via the API, and an additive POST as the only
write.

Part of #130.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 11:51:48 +00:00