## 概要
goalbuddy 自律ループを、fib/primeのオモチャでなく **shadowの実open Issue #265(videos.title空/NULL 51%調査)** で初めて回し、grok Worker が実DBを読んで調査レポートを生成→Oracle検証→ALL_MET収束した。調査結果はIssue #265にコメント済み。
## 自律ループ実行
- Slice: 「vvv_prod の videos を読み取り専用集計し group_id別title空率ワースト10を /tmp/gb265/report.md にMD表で書く。SELECTのみ・更新系禁止」
- Oracle: `test -f report.md && grep -q group_id && grep -q Issue#265`
- GOALBUDDY_WORKER=grok
- iter1: grokがpsqlで実DB集計→report.md生成 / iter2: Oracle pass →【ALL_MET】exit0
## 調査結果(実DB・videos全1.65M件)
- 全体: has_title 785k / empty 554k / NULL 311k = **空+NULL約52%**(Issue記載51%と一致)
- **title空率100%のgroup_id正体を特定**:
- 435/434(nyahentai)・426(hentainexus)・431(erodoujinlog)・449 = 成人コンテンツ系(画像メイン・title構造特殊で抽出未対応)
- 445/446(Pinterest) = SPA構造。**Issue #255(Pinterestサムネ51%)と同根**。一括対応候補
- 1035(Bluesky profile) = title概念が薄い
- いずれもdescriptionも全件空
- 対照: group 74/101/103/104/108(100番台ニュース系)は title 100%取得・健全
- **切り分け結論**: 「既存スクレイパーのセレクタ崩れ(デグレ)」ではなく「構造的にtitle抽出が未対応/困難なソースが局在」が主因
## 価値
- goalbuddy が「読み取り主体の調査タスク」を安全に自律実行できることを実証(本番DB書き込みなし)
- 調査結果がIssue #265の調査ポイント②「セレクタ崩れか元々無いか」に直接回答。#255との同根性も発見
- grok Worker が読み取り専用SQLを守り、Oracleで自己検証してから完了
## 付随作業
- ディスク逼迫(90%)対応: grok旧版バイナリ251M + npm/pip/node-gyp/grok marketplaceキャッシュ削除。playwright本体(1.3G・稼働中)は保護。空き6.0G
- grok警告 `failed to watch root recursively MaxFilesWatch` はinotify上限(61287)に対し使用55で逼迫でなく、ディレクトリ再帰監視の一時警告で無害と確認
## 残・次の候補
- Pinterest(445/446)を #255 とまとめてDOM走査セレクタ追加で一括解決
- 成人系は href slug/IDからtitle生成 or 許容(優先度低のまま)
- goalbuddy を「修正系Issue」で回す場合は worktree隔離 + 本番非破壊を徹底(調査系より慎重に)
2026-06-02 goalbuddy初の実Issue実証: #265 videos.title空調査をgrok Workerで自律完遂