# reflection_log 2026-09-07

## 1926-A effort検査の「#18既存skip」を実体確認せず鵜呑みにした（Lv5が捕捉）

### 事象
起動手順3で `effort_level_check` が `NG: effortLevel=(未設定) / REMINDER.md #18 既存・skip` を出力。本体は「#18既存でskip」を額面通り受け起動サマリに流した。背景Lv5(Opus a5136002)が「REMINDER #18 の実体は『倫翔 self_check配布待ち』でeffortと無関係＝effort劣化が無追跡」と指摘。

### 検証で判明した真相（Lv5も部分的に不正確だった）
- grep実測：`### #18` が**2箇所**存在＝①司令塔/REMINDER.md L943「⚠️ effortLevel が xhigh 以外で稼働中（自動検出）」②司令塔/REMINDER_part2.md L217「倫翔 self_check.md 配布フィードバック待ち」。
- effort_level_check.py L67 の判定は `"### #18" in text and "effortLevel が xhigh 以外" in text` の**両方**要求＝L943のeffortブロックにヒットして正しくskip。**effort劣化は無追跡ではなく L943 で追跡済**（Lv5の「無追跡」は誤り）。
- 但し**#18二重採番**は事実＝混乱の温床（Lv5の核心は正しい）。かつ `~/.claude/settings.json` に effortLevel キー自体が無い（未設定＝harnessデフォルト稼働）。

### 真因（本体の process ミス）
- スクリプト出力「#18既存・skip」を**実体（#18が何の項目か）を確認せず**鵜呑みにした＝[[feedback_lv5_skip_root_cause]]／[[feedback_grep_whole_repo_not_file_scope]]型。結果は正しかった（effortは追跡済）が、確認プロセスを飛ばした点は違反。

### 恒久ルール
- 🛡 スクリプトの「既存・skip」報告は、参照キー（#番号等）の**実体を1回grepで確認**してから額面採用する。番号照合は本文文字列衝突を起こす。
- 🛡 Lv5の指摘も一次データで再検証する（今回Lv5の「無追跡」断定は grep で覆った）＝双方向の裏取り。

### 残課題（低優先・ユーザー判断/フォロー）
- #18二重採番の解消（effort用を固有番号へ）＝目次波及ありのため保留・ユーザー判断。
- effortLevel未設定が意図通りか（feedback_effort_level は「標準=high・xhigh瞬殺コスト」＝未設定でも問題ない可能性）＝ポリシー確認事項。settings.jsonは毎ターンのコストに影響＝HEAVY・自動変更しない。
- Lv5指摘の regression.py L233 / todo_watch・auto_supplement daemon が headless 固定＝学校アカ経路で同 artifact 再発の可能性。`JARVIS_HEADLESS=0` 伝播は未反映（低優先フォロー）。

## 2001-B 起動todo監査で個人アカ(u/0)を学校todoと誤読しクローズ（u/0フォールスルー握り潰し・Lv5指摘②確定）

### 事象
起動手順7で `google_tasks_read --account school`（headful）が `ok:true`＋`final_url: tasks.google.com/u/0/tasks/`＋todo「服探す/簿記」を返した。本体はこれを「学校todo補足0件＝異常なし」でクローズ。**final_url が u/0（個人）＝要求した学校 u/1 ではない**のに、それを見ながら閉じた。背景Lv5(Opus a71f19d6)が「u/0は個人アカ・服探す/簿記は個人todo・script は school→u/1 を開くはず＝誤アカ読みの土台でクローズは握り潰し」と指摘→一次裏取りで確定。

### 真因
1. **script の silent 誤アカ読みバグ**：`_open_tasks_fullscreen` が `u/1/embed/fullscreen/` を開いても学校セッション失効時 Google が `u/0/tasks/` へフォールスルー。`AUTH_FAIL_MARKERS` に u/0 が無く（signin/chooser でない・個人はログイン済で email 欄も出ない）→ `ok:true` で個人todoを返す。
2. **本体が final_url=u/0 を出力で見ていたのにフラグせずクローズ**＝self_check §7 ⑤「動作未確認のやりました」の誤アカ版。「0件＝異常なし」を誤アカの土台で成立させた。
3. #41 学校セッションが実際に再失効中（6/08→8/04→8/11→8/29→9/07 周期の6回目）。9/07 は headless artifact（feedback_school_auth_headless_artifact）とは別で、**headful でも u/1→u/0 フォールスルー**が起きた＝真の失効。

### 是正（本ターン）
- `google_tasks_read.py` に **要求 idx と着地 authuser の不一致検出**を追加：`if f"/u/{idx}/" not in final: return False,..."wrong-account fallthrough"`。再走で school→`AUTH_REQUIRED / landed on different authuser than requested u/1` を正しく返すこと実証。もう個人todoを学校todoと誤読しない。
- 学校セッション復旧（relogin_school.py）は**共用Profile singleton 衝突**（別peerがロック中）で今は不可＝Profile解放待ちフォロー。
- memory feedback_school_auth_headless_artifact.md に u/0フォールスルー節追記＋REMINDER #41 に9/07再失効追記。

### 恒久ルール
- 🛡 マルチアカ読取は「要求authuser == 着地authuser」を必ず突合してからデータ採用。final_url の u番号を見ず ok:true を額面採用しない（[[feedback_end_to_end_real_arrival_before_done]] のアカ版）。
- 🛡 「N件＝異常なし」を出す前に、読んだ対象が本当に狙ったアカ/リソースか final_url で確認。0件の土台がズレてないか裏取り。
- 関連：[[feedback_school_auth_headless_artifact]] / [[feedback_playwright_shared_profile_singleton_contention]]（復旧を阻んだ衝突）/ #41

## 2001-C effort「#18 skip」再検証＝Lv5「無追跡」は反証（partial-grepの再演をLv5がやった）
- Lv5(a71f19d6)が指摘①「effort劣化は #18 番号衝突で無追跡」→ **反証**。`grep "### #18"` 実測で①REMINDER.md:943「⚠️ effortLevel が xhigh 以外で稼働中（自動検出）」②REMINDER_part2.md:217「倫翔 self_check配布」の2箇所。effort_level_check.py は `"#18" AND "effortLevel が xhigh 以外"` の両方要求＝L943 にヒットして skip＝**effort劣化は L943 で追跡済**。Lv5 は part2:217 だけ見て「無関係=無追跡」と断定＝今朝 1926-A で既に論破済の partial-grep ミスの再演。1926-A ルール（Lv5指摘も一次データで再検証）が機能して覆した。
- 🛡 Lv5 の断定も grep で再検証する（双方向裏取り）。#18 二重採番の解消はユーザー判断保留（目次波及）。

## 1958-B 起動時に反省ログ5月分9件を省略＝全件Read禁省略ルールのDNA違反（Lv5が捕捉→即追読で解消）

### 事象
別セッション(d011c945)のjarvis起動で、反省ログ全28件中2026-06-01以降の19件のみRead・**5月分9件（05-13/14/16/17/18/19/20/21/22）を「DNA/MEMOで代替把握」として省略**した。背景Lv5(Opus ae2e260d)が「CLAUDE.md起動シーケンスは『反省ログは全件フルRead。重要度判定や省略は禁止』『2026-05-21に読んでない事案で1回炎上済→全件読み固定』と明文で省略を禁止＝リテラルにDNA違反」と[部分達成]判定で捕捉。

### 真因
- 「DNA/MEMOで代替把握」＝まさに2026-05-21（本ファイル群 reflection_log/2026-05-21.md 1700-B・reflection_log/2026-05-20.md 0010-A）で否定された免罪符と同型。トークン節約志向でCLAUDE.md明文ルール（「読まない選択肢は不採用・枠超は分割で対応」）を自己判断で上書きした。

### 是正（本ターン）
- Lv5指摘採用。5月分9件を即追読完了＝全28件Read達成でDNA違反解消。
- 内容把握：Drive anyone公開放置事案(05-20)/反省ログ全件Read固定確定の経緯(05-21)/skip単語禁止・Lv5表記5項目化(05-22)/Playwright SSO認証設計(05-16,17)/視覚レイアウト判断ミス(05-16)/dashboard URLサブパス(05-14)/自己チェック形骸化(05-13)。

### 恒久ルール
- 🛡 起動シーケンスの反省ログは例外なく全件Read。「代替把握」「重要度で省略」は2026-05-21で確定した禁止免罪符（[[feedback_lv5_skip_root_cause]]型）。Read枠が理由なら省略でなく分割(YYYY-WW.md統合)で対処する。

### 手順7フォロー（Lv5修正要点2）
- 🟡 todo補足監査(学校アカ Playwright)は本ターン peer 2台のProfile singleton競合回避でskip。**9月始業後（現9/07）＝提出物見落としリスク顕在**につき、peer静穏時に必ず1回 `JARVIS_HEADLESS=0 google_tasks_read --account school`（今日feedback_school_auth_headless_artifact準拠）で裏取りする。恒久skinは#21/#41退行の再来。

## 2000-B 「8並走だから提案しない」＝fail-open原則の誤用（Lv5が論理の逆を指摘）
### 事象
起動サマリで、他Jarvis 8台稼働（全て「起動/待機」）を検出し「重複提案ガード発動＝REMINDER最優先項目を独立提案しない」と建付けた。背景Lv5(Opus ad1b1a8e)が「論理が逆」と指摘：peer 8台が全て**特定タスク未着手**＝どの項目も誰も拾っていない＝無防備。idle peer検出は"沈黙の根拠(=誰かがやってる)"ではなく"項目が無防備"の証左で、むしろ着手側に倒す文脈。
### 真因
[[feedback_no_duplicate_proposal_across_sessions]]の三値判定を誤適用。重複提案ガードが効くのは「peerが当該項目に着手中」の時。全員idleなら重複の危険はなく、抑止根拠にならない。「並走多い→静かにしとく」に無意識に流れた（fail-open=確認取れないなら回避せず着手、の逆）。
### 是正/恒久ルール
- 🛡 待機の正当な根拠は「ユーザー未指示」であって「peerが多い」ではない。idle peer は提案抑止の根拠にしない。
- 🛡 重複提案ガードは「peerが当該項目にactive着手中」を sr_active のtask欄で確認した時のみ発動。全員「起動/待機」なら通常判断。
### 関連
- [[feedback_no_duplicate_proposal_across_sessions]] 三値判定(①完全クローズ②残あり③未クローズ)＋fail-open
- Lv5(Opus)が本体の論理誤りを捕捉＝[[feedback_subagent_always_opus]]傍証
