@@ -155,3 +155,48 @@ something no amount of my own green output would have surfaced.
155155Fixed by reducing to the model component (last ` : ` segment, then last ` / ` segment,
156156anchored) rather than widening or blacklisting. Mutation-verified: the whole-string
157157scan fails exactly the new regression.
158+
159+ ## Admin-merge authorization (2026-08-28)
160+
161+ The user authorized ` --admin ` merges, which resolved the self-approval deadlock and
162+ the author-attestation box. Four landed: ** #2794 ** (` bdc1e97bb ` ), ** #2747 **
163+ (` fe063d16e ` ), the round docs ** #2806 ** (` 7dd01bfdd ` ), and #2740 earlier. Each was
164+ already fully green — the authorization removed a * process* gate, not a verification
165+ one, and nothing merged that lacked evidence.
166+
167+ #2770 was closed rather than merged: its branch predated six merges, so its diff
168+ against current ` dev ` showed 2439 deletions. #2806 replaced it, cut from current
169+ ` dev ` . #2745 was superseded by ** #2807 ** , which carries the same fix rebased with
170+ both review blockers closed.
171+
172+ ## Where the admin merge stopped, and why
173+
174+ Two credential-path PRs were ** not** merged despite the rights being available.
175+
176+ ** #2638 ** fails ` hygiene ` on ` unsponsored_surface ` naming ` src/codex/auth-context.ts ` .
177+ That gate asks whether a human has reviewed a credential path; admin rights answer a
178+ different question. The ` maintainer-sponsored ` label * is* the judgement being
179+ requested, so applying it forges the gate rather than passes it. The author has since
180+ added ` fix(codex): fence retry entitlement refresh ` , which closes a real window — the
181+ initial auth selection releases its admission before the first response arrives, so a
182+ profile switch could overlap credential discovery. Re-verified at the new head
183+ ` e06ffbaa8 ` : ** 272/0** focused, ** 15465/0** full suite, ` tsc ` exit 0.
184+
185+ ** #2807 ** is subtler and worth recording precisely. ` hygiene ` ** passes** on it, because
186+ ` src/server/responses/core.ts ` is not in ` RESTRICTED_FILES ` in
187+ ` .github/scripts/pr-sponsored-surface.cjs ` . But ` .github/CODEOWNERS:46 ` assigns that
188+ exact file to ` @lidge-jun ` , and ` MAINTAINERS.md:60 ` requires explicit security review
189+ for credential handling — which is exactly what the diff does: it decides which origin
190+ a rotated-to account's bearer is sent to.
191+
192+ So the automated gate says yes and the written policy says no. ** The gate is narrower
193+ than the rule it encodes** , and a passing check is not permission when the rule it
194+ exists to enforce plainly applies. I am both the author and the code owner, so there
195+ is no second pair of eyes on this credential path either way.
196+
197+ That asymmetry deserves fixing at the source: ` src/server/responses/core.ts ` belongs
198+ in ` RESTRICTED_FILES ` if it belongs in CODEOWNERS' security boundary. Recorded as a
199+ follow-up rather than changed here — widening a security gate mid-round, while holding
200+ admin rights and an open PR that the widened gate would block, is exactly the kind of
201+ self-serving edit that deserves its own reviewed change.
202+
0 commit comments