.github/labels.conf + CONTRIBUTING + labels.test — swap glm for kimi on the panel while kimi is down #222

Closed
opened 2026-08-06 11:32:22 +00:00 by claude-bot-andresmgsl · 0 comments

Context

kimi-reviewer-andresmgsl is temporarily unavailable (vendor token
exhausted; @andres is restoring it). That is not a cosmetic outage, because of
how the panel resolves:

panel=codex-reviewer-andresmgsl kimi-reviewer-andresmgsl cluade-reviewer-andresmgsl
required verdicts = panel MINUS the PR's author

With three identities and one of them always the author, kimi is in the
required set for every possible author
. So while it is down, no new PR on
this repo can converge — #219's release PR and #217 both need it, and so would
any fix that arrives in the meantime.

What this does not affect: !218 (960e581) and !221 (286403d) already
carry kimi's approval at their exact current heads, banked before the
outage. Those two are unaffected as long as nothing pushes to them — a new
commit would invalidate an approval that cannot currently be renewed.

glm-reviewer-andresmgsl has been reviewing on this board throughout at
@andres's direction — it found the auto-merge gh regression on #198 that four
other passes missed, and it has withdrawn and corrected its own verdicts when
shown evidence. It is an org member (id=8) and resolves on this instance. Its
verdicts have been advisory only, because it is not in panel=.

Spec

  1. Swap kimiglm in panel=. The panel stays three identities, so
    "two cross-vendor approvals" in CONTRIBUTING.md remains accurate and no
    prose about the count changes.

  2. Three files move together, because the #195 guard is bidirectional.
    test/labels.test.sh's roster_in_sync diffs .github/labels.conf against
    CONTRIBUTING.md's roster table in both directions, and its
    table-side mutation case hard-codes the identity it removes:

    • .github/labels.conf — the panel= line;
    • CONTRIBUTING.md — the roster table row;
    • test/labels.test.sh — the mutation sed must name an identity that is
      actually in the table, or the "in the table but not the conf" case
      mutates nothing and stops testing anything.
  3. This is a swap, not a removal-and-replace of the bench. When kimi
    returns, @andres's instruction is to add it back alongside glm, giving a
    four-identity panel. That is a second edit and is deliberately not done
    here — it changes "two cross-vendor approvals" to three, which is a real
    change to the review cost and to CONTRIBUTING.md's prose, not a roster
    substitution.

  4. glm-box is assumed for the roster table's box column, following the
    <vendor>-box convention of its neighbours. @andres should correct it if
    the tenant is named otherwise; nothing machine-readable depends on that
    column.

Tasks

  • .github/labels.conf: panel= names codex, glm, cluade.
  • CONTRIBUTING.md: roster table row swapped, box column set.
  • test/labels.test.sh: the table-side mutation names an identity present
    in the table.
  • changelog.d/ fragment.

Acceptance criteria

  • panel= and the CONTRIBUTING.md roster table name the same three
    identities, and test/labels.test.sh's roster_in_sync passes.
  • Both mutation cases still go red — conf-only and table-only — proving
    the guard still tests something after the edit.
  • Every identity named by panel= resolves on this instance.
  • test/run.sh ends failed 0; shellcheck- and actionlint-clean.
  • A PR authored after this lands requires codex + glm when cluade
    authors — verifiable on the next PR's reconciler pass.

Test plan

  • test/labels.test.sh whole, including both bidirectional mutation cases.
  • Must fail: revert only CONTRIBUTING.md — the guard must red on
    conf/table drift rather than pass one-way.
  • Must fail: leave test/labels.test.sh's mutation naming kimi after
    kimi leaves the table — the case silently stops proving anything, which is
    the #195 rot class one layer down.
  • test/run.shfailed 0.

Dependencies

None. Does not unblock !218/!221 — those still need @andres's ruling on the
authorship gate; their required set merely becomes codex + glm, and codex's
REQUEST_CHANGES stands either way.

## Context `kimi-reviewer-andresmgsl` is **temporarily unavailable** (vendor token exhausted; @andres is restoring it). That is not a cosmetic outage, because of how the panel resolves: ``` panel=codex-reviewer-andresmgsl kimi-reviewer-andresmgsl cluade-reviewer-andresmgsl required verdicts = panel MINUS the PR's author ``` With three identities and one of them always the author, **kimi is in the required set for every possible author**. So while it is down, no new PR on this repo can converge — #219's release PR and #217 both need it, and so would any fix that arrives in the meantime. **What this does not affect:** !218 (`960e581`) and !221 (`286403d`) already carry kimi's approval **at their exact current heads**, banked before the outage. Those two are unaffected as long as nothing pushes to them — a new commit would invalidate an approval that cannot currently be renewed. `glm-reviewer-andresmgsl` has been reviewing on this board throughout at @andres's direction — it found the auto-merge `gh` regression on #198 that four other passes missed, and it has withdrawn and corrected its own verdicts when shown evidence. It is an org member (`id=8`) and resolves on this instance. Its verdicts have been advisory only, because it is not in `panel=`. ## Spec 1. **Swap `kimi` → `glm` in `panel=`.** The panel stays three identities, so "two cross-vendor approvals" in `CONTRIBUTING.md` remains accurate and no prose about the count changes. 2. **Three files move together, because the #195 guard is bidirectional.** `test/labels.test.sh`'s `roster_in_sync` diffs `.github/labels.conf` against `CONTRIBUTING.md`'s roster table in **both** directions, and its table-side mutation case hard-codes the identity it removes: - `.github/labels.conf` — the `panel=` line; - `CONTRIBUTING.md` — the roster table row; - `test/labels.test.sh` — the mutation `sed` must name an identity that is actually in the table, or the "in the table but not the conf" case mutates nothing and stops testing anything. 3. **This is a swap, not a removal-and-replace of the bench.** When kimi returns, @andres's instruction is to **add it back alongside glm**, giving a four-identity panel. That is a second edit and is deliberately not done here — it changes "two cross-vendor approvals" to three, which is a real change to the review cost and to `CONTRIBUTING.md`'s prose, not a roster substitution. 4. **`glm-box` is assumed** for the roster table's box column, following the `<vendor>-box` convention of its neighbours. @andres should correct it if the tenant is named otherwise; nothing machine-readable depends on that column. ## Tasks - [ ] `.github/labels.conf`: `panel=` names codex, **glm**, cluade. - [ ] `CONTRIBUTING.md`: roster table row swapped, box column set. - [ ] `test/labels.test.sh`: the table-side mutation names an identity present in the table. - [ ] `changelog.d/` fragment. ## Acceptance criteria - [ ] `panel=` and the `CONTRIBUTING.md` roster table name the same three identities, and `test/labels.test.sh`'s `roster_in_sync` passes. - [ ] Both mutation cases still go red — conf-only and table-only — proving the guard still tests something after the edit. - [ ] Every identity named by `panel=` resolves on this instance. - [ ] `test/run.sh` ends `failed 0`; shellcheck- and actionlint-clean. - [ ] A PR authored after this lands requires **codex + glm** when cluade authors — verifiable on the next PR's reconciler pass. ## Test plan - `test/labels.test.sh` whole, including both bidirectional mutation cases. - **Must fail:** revert only `CONTRIBUTING.md` — the guard must red on conf/table drift rather than pass one-way. - **Must fail:** leave `test/labels.test.sh`'s mutation naming `kimi` after kimi leaves the table — the case silently stops proving anything, which is the #195 rot class one layer down. - `test/run.sh` → `failed 0`. ## Dependencies None. Does **not** unblock !218/!221 — those still need @andres's ruling on the authorship gate; their required set merely becomes codex + glm, and codex's `REQUEST_CHANGES` stands either way.
claude-bot-andresmgsl added the
enhancement
ready
scope:docs
scope:labels
labels 2026-08-06 11:32:29 +00:00
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: heavy-duty/ceremony#222
No description provided.