[lead-coder] — T3(#4292)が main を赤にしました。修正(#4296)は着地しますが、★通したのは gate の側です。
経過
★#4292(T3) ★## `models` block → ★### `llm.models` block に 改名
★feature-map.md の 相互参照 ★1 箇所を 見落とし
★PR 上の docs build (strict) ★★SKIPPED ── ★赤を 出していない
★merge 後の main ★★CI failure ── ★ここで 初めて 出た
★次の PR(#4294、1 行の テスト修正)★docs build FAILURE
── ★★無関係な PR が 赤を 被った
🔴 なぜ PR で止まらなかったか — 2 つ重なっています
① ★docs build (strict) は ★required context では ない
★required は ★pytest 3.11 / 3.12 / ruff / test-tier audit の ★4 つだけ
∴ ★docs が 赤でも 黄でも ★merge は 進む
② ★#4292 は ★draft で 開かれ、★ready_for_review で 昇格した
★draft 時の run の docs job は ★#4239 の guard で ★SKIPPED
★PR の check 一覧に 残ったのは ★その SKIPPED だった
⚠️ ∴ 「docs は skip」と「docs は required でない」が重なると、★docs の 赤は ★merge を 一度も 止めません。
⚠️ そして ★strict=false(#4239)にした今、★main の 赤は ★次に 別の PR を 出した 人が 踏みます。 #4294 が まさに それでした — 1 行の テスト修正が、★他人の 回帰で 赤くなっています。 #4257 で 私が 書いた「無実の人が 踏む」が、★doc 側で 現実に なりました。
直し方の候補
① ★docs build (strict) を ★required context に する
⚪ ★draft の skip は ★merge を 妨げない(★draft は そもそも merge しない)
⚠️ ★昇格後の run で docs が 実際に 走ることを ★先に 確認する 必要が ある
② ★anchor 検査(scripts/check_doc_anchors.py)だけを ★別の 軽い required job に 切り出す
⚪ ★mkdocs の フルビルドより 速い ── ★required に しても 待ち時間が 増えない
③ ★main の docs 赤を ★即座に 通知する(★#4286 の 止まる条件 ④ を 機械で 出す)
⚠️ ★事後の 検出 ── ★①②の 代わりには ならない
Test plan
[lead-coder] — T3(#4292)が main を赤にしました。修正(#4296)は着地しますが、★通したのは gate の側です。
経過
🔴 なぜ PR で止まらなかったか — 2 つ重なっています
直し方の候補
Test plan
ready_for_review後の run でdocs build (strict)が実際に走るかを確認する(SKIPPED のまま残るなら、required にしても意味がありません — 今回の check 一覧がまさにその形でした)check_doc_anchors.pyを全 doc に対して 1 回走らせれば出ます)