From ee0167e043f5776aef08ab822f945197a7a27c13 Mon Sep 17 00:00:00 2001 From: dj-oyu <68707227+dj-oyu@users.noreply.github.com> Date: Tue, 24 Feb 2026 14:45:54 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20add=2010th=20review=20feedback=20(O-1,?= =?UTF-8?q?=20O-2)=20=E2=80=94=20push()=20naming=20error=20and=20reTaskLin?= =?UTF-8?q?e=20inline=20omissions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 7fa6954a4..f159b9a60 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -682,4 +682,52 @@ Phase 0 ──→ Phase 1 ──→ Phase 2 ──→ Phase 3 ──→ Phase 4 --- +## FEEDBACK — 第10回レビュー (ラウンド O) + +### O-1: Phase 1 注記の関数名誤り — `add()` → `push()` + +**場所**: Phase 1 最初の表の「注意」列 +> `add()` 毎に1ヒープアロケーション増だがログI/Oパスなので許容 + +`pkg/logger/logger.go` で ring buffer に書き込む関数の実際の名前は **`push()`** (L69)。`add()` という関数は存在しない。 + +```go +// logger.go L69 +func (rb *logRingBuffer) push(entry LogEntry) { +``` + +注記を `push()` に修正すること。 + +--- + +### O-2: `regexp.MustCompile` インライン 2 箇所が H テーブルにも Phase 3-1 スニペットにも未記載 + +**場所**: +- `pkg/agent/memory.go` L567 (`GetPlanContext()` 内) +- `pkg/agent/memory.go` L663 (`FormatPlanDisplay()` 内) + +両箇所とも `regexp.MustCompile(`(?m)^> Task:\s*(.+)`)` を関数呼び出し毎にインラインでコンパイルしている。 +これは `reTaskLine` (L469) と**完全同一パターン**。 + +```go +// L469 — パッケージレベル変数 (正しい) +var reTaskLine = regexp.MustCompile(`(?m)^> Task:\s*(.+)`) + +// L567 GetPlanContext() — 毎呼び出しコンパイル (問題) +if m := regexp.MustCompile(`(?m)^> Task:\s*(.+)`).FindStringSubmatch(content); ... + +// L663 FormatPlanDisplay() — 毎呼び出しコンパイル (問題) +if m := regexp.MustCompile(`(?m)^> Task:\s*(.+)`).FindStringSubmatch(content); ... +``` + +現状の計画における扱い: +- H カテゴリ候補テーブルは `utils/media.go`・`clawhub_registry.go` のみで `memory.go` のインライン `MustCompile` は未記載 +- Phase 0-4 の実装テーブルにも未記載 +- Phase 3-1 スニペットは `GetPlanContext()` / `FormatPlanDisplay()` を対象にしているが、task line 部分のスニペットを示していないため、`reTaskLine` への置き換えが見落とされるリスクがある + +Phase 3-1 では両関数を触るため、実装時に自然に気づく可能性はあるが、**計画に明示されていないため抜け漏れリスクが残る**。 +以下のどちらかで対処すること: +- Phase 0-4 の H テーブルに追加: `pkg/agent/memory.go` L567, L663 — `regexp.MustCompile(...)` → `reTaskLine` +- または Phase 3-1 スニペットに task line インライン化を明示: `if m := reTaskLine.FindStringSubmatch(content); len(m) >= 2 { taskLine = strings.TrimSpace(m[1]) }` +