Skip to content

cross-review の監視が、err.log に写った既存コメントの「quota exceeded」を codex の利用上限と誤判定して中断する #1411

Open

Description

@takemi-ohama

何を見つけたか

cross-review の round 1 で、codex が起動 15 秒後に EARLY_ERROR・理由 usage_limit と判定され、「起動し直しても解けない理由」として駆動が中断した(final=error)。codex は利用上限に達していない(同じ時刻に codex login status は通っている)。

codex は受け取ったプロンプトを err.log へ写す。プロンプトの「既存コメント」の節に、PR に付いた Amazon Q Developer のレビューコメントの本文があり、その中の平文 BigQuery quota exceeded が plugins/ndf/scripts/lib/monitor_patterns.py 28 行目の \b(?:quota exceeded|rate limit exceeded)\b に一致した。引用の判定(_match_is_quoted)はバッククォート・「」・引用符の内側しか除外しないため、平文のコメント本文は除外されない。

再現の形: 既存のレビューコメントに quota exceeded を平文で含む PR で cross-review を起動し、codex を担当にする。

どこで見つけたか

なぜこの変更の範囲外なのか

PR #99 の受け入れ条件は ops.source_registry・ops.calendar_day を作り直す道具であり、NDF の監視の判定は含まない。直す場所は NDF プラグイン側にある。根拠: Value 5(確かめた事実で判断する)(MVV 版 1)。

直さないと何が起きるか

既存コメントに quota exceeded / rate limit exceeded を平文で含む PR(クラウドの制限を扱う変更では自動レビューがよく書く)では、codex が毎ラウンド誤って usage_limit となり、cross-review が収束に届かず中断する。既存コメントのスナップショットは解決済みのスレッドも含むため、スレッドを閉じても解けない。回避は --exclude codex しかなく、レビューの独立性が下がる。

由来

PR #99(takemi-ohama/investment)

修正レイヤー

既存コメントのスナップショットの行(path:line [user] 本文 / [PR-COMMENT] [user] 本文)は、grep 形式の除外にも 25b94ff(差分・コメント・Markdown の行を除く)の除外にも当たらず、_scan_early_fatal が致命を返す(ndf 10.17.68 で 3 形とも再現)。行の形で除外を足し続けると、次の引用の形で再発する。直す層は照合の範囲である。

  1. codex が err.log へ写したプロンプトの範囲を照合から外す
  2. 一般語の quota exceeded / rate limit exceeded を、CLI が自分で出す形(行頭の ERROR: など)に限る。codex の実際の上限の文言(You've hit your … limit・exceeded retry limit, last status: 429)は別の行で拾っている

回帰テストには、スナップショットの 2 つの形をそのまま入れる。回避は --exclude codex だけである。

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: ndf-skillNDF の Skill 本体priority: medium保守性・設計一貫性など、計画的に対応する

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions