Research Log 2026-08-15 — rei-automator-mcp Phase 2 開始 + rei-aios Track 3+4 close

Arc 1 rei-automator-mcp v0.2.0-alpha (find_element release) / Arc 2 chat-Claude 実装環境 6 axis 完成 / Arc 3 rei-aios Track 3+4 close / 副次 並行 session 衝突 + lock 残留 + stash 22 systemic / 藤本伸樹 / 2026-08-15

1. Context — 前 arcs → 本日

2026-08-15 前半 3 arc (CLAUDE.md STEP 1336 arc = Rei-Automator persistence 修復 4 例目 wrong-implementation wiring / STEP 1336-follow-up = rei-automator-mcp v0.1.0 独立 repo 抽出 + Apache ICLA-style CLA + security fix `2348ba7` allowlist bypass / chat-Claude 8+ turn debate で canonical layer 反転 C→B + Python 実行層一本化 + Phase 2 pywinauto 設計書 259 行) の 直接続編。 前 arc close 時点 の 未完了 3 track (Track 3 = STEP 1337 push / Track 4 = rei-aios 19 unmerged recovery / Track 6 = Phase 2 実装) を 本日 arc で 順次 close。

2026-08-06 藤本さん永久 protocol 「全研究 site 反映 default」 適用 (機密以外 例外なく site 化)。 本 page は memory 忘れ対策 primary purpose の 集約 site 反映、 実装済成果 の archival record。

2. 全体 deliverables table

Arc成果repo / committest
1 rei-automator-mcp v0.2.0-alpha find_element 実装 fc0web/rei-automator-mcp b61c967 + d47ed29 + 8d29fbc 22→30 PASS (+8)
2 chat-Claude 実装環境 6 axis 完成 (docs + 4 issue + README + 使用例 + install 手順 + CLA 継承) 同上 (README + docs commit に含む) + issues #1-#4
3-a Track 3: STEP 1337 6 commit push (別 session 判断代行) fc0web/rei-aios 48e5eed09..d62af0665
3-b Track 4: 19 unmerged 3 stage resolve fc0web/rei-aios 6976719d6 UU/UD/AA/DD 全 0
副次 並行 Claude Code session 衝突 + lock file 残留 + stash 22 systemic 発見 memory 12 例目 pattern + session B fact-check

3. Arc 1: rei-automator-mcp v0.2.0-alpha (find_element release)

3-1. 実装 hilights

chat-Claude 設計書 docs/phase2-backend-design.md §2-3 に 沿って 旧 stub の searchfind_element に 改名し、 pywinauto uia backend で 本実装。 副作用なし の read-only = click / type SetValue 経路 の 共通基盤、 Playwright MCP の accessibility snapshot と 同 位置づけ。

Command 形式 (5 種)

find_element "title:保存"                          → 名前で 探す (uia 既定)
find_element "auto_id:btnSave"                     → AutomationId (最も安定、 推奨)
find_element "control_type:Button"                 → control type で 探す
find_element "title:保存;backend=win32"            → win32 明示指定 (uia の fallback)
find_element "title:.*;max_depth=3;max_results=10" → 上限指定

default: max_depth=4, max_results=25 / 上限 hard cap: max_depth=10, max_results=200

3-2. 設計 準拠事項 (chat-Claude 設計書 §1-1)

3-3. Graceful degradation 5 axis (design 追加)

pywinauto 未 install の 本マシン (Python 3.13、 cp932 console) で selftest 30/30 PASS を verify。 全 error 経路が JSON 返却で crash せず success=True で 通ることを 明示的に 確認。

  1. pywinauto ImportError → JSON {"error": "pywinauto not installed..."}
  2. pywinauto OSError (非 Windows で dll load 失敗) → JSON error
  3. find_elements 内部例外 → JSON error
  4. spec parse error (selector 形式違反、 no colon) → JSON error
  5. unknown selector kind / unknown backend → 明示的 descriptive error message

3-4. 返り値 JSON shape

{
  "found_count": 3, "returned_count": 3, "truncated": false,
  "backend": "uia", "selector": "title:メモ帳",
  "results": [
    {"name": "無題 - メモ帳", "auto_id": "",
     "control_type": "Window", "class_name": "Notepad",
     "rect": {"left": 100, "top": 50, "right": 900, "bottom": 700}},
    ...
  ]
}

3-5. selftest 追加内容

test内容
[9-1]ACTION_KINDS に find_element 登録
[9-2]propose は 未 approve で 返却
[9-3]approve 成功
[9-4]execute success=True (pywinauto 未 install でも graceful)
[9-5]result は JSON dict として parse 可能
[9-6]error or results field が 存在
[9-8]malformed spec (no colon) → error field
[9-10]unknown selector kind → descriptive error message

4. Arc 2: chat-Claude 実装環境 6 axis 完成

前 arc close 時点で 「repo public + CLA + selftest 22 PASS」 まで 到達していたが、 Phase 2 の 指示書 と issue が repo 外 (Downloads のみ) で chat-Claude が pick up 不可能 だった。 本 arc で 6 axis 全 埋め:

axis前状態本 arc 後
設計書 in repo❌ Downloads のみdocs/phase2-backend-design.md
pywinauto install 手順❌ 未記載✅ README + requirements.txt の Phase 2 extras コメント
Phase 2 進捗 table❌ 未記載✅ README (0-1〜6 sub-task 状態 + 担当 明示)
使用例 (find_element)❌ なし✅ README (5 形式)
GitHub issues❌ 0 本✅ 4 本 (#1 click / #2 type / #3 screenshot / #4 excel)
CLA (Apache ICLA-style)✅ 既存 (commit c6696a8)✅ 継承 (PR 前提として 各 issue で 明示)

GitHub issues 4 本 (chat-Claude 分担、 全 OPEN)

#対象依存design §実装順
#1click (InvokePattern 優先、 座標 fallback)find_element ✅§2-23
#2type 共存 (SetValue → SendInput fallback、 replace::/append:: mode)find_element ✅§34
#3screenshot (mss/Pillow、 パスのみ返却)独立§2-15
#4excel_aggregate (openpyxl 既定、 COM は GetActiveObject)独立§2-46

各 issue に 統一 template で 記載: 対応 設計書 section link / 依存 (find_element ✅ を 明示) / 実装内容 (command 形式 + 返り値 JSON shape) / Acceptance criteria (7-10 項目 checkbox) / 実装 tips / Honest scope / 担当 chat-Claude + CLA 前提。

5. Arc 3: rei-aios Track 3 + Track 4 close

5-1. Track 3: STEP 1337 6 commit push

push range: 48e5eed09..d62af0665 (STEP 1336 Automator persistence 修復 → STEP 1337 D-a pre-commit hook)。 6 commit 全て 別 Claude Code session (Collatz 系) の 出力、 本 session (Rei-Automator 系) が 代理 push 判断。 pre-push hook なし、 hooksPath = .githooks 復元済。

5-2. Track 4: 19 unmerged 3 stage stepwise

chat-Claude 事前 plan vs 実測 内訳 ズレ (総数一致):

chat-Claude plan実測delta
3 file marker resolve6 UU (buddy 新規発火 + dist-renderer/data 2 個)+3
12 dist-renderer 削除確定12 UD (dist-renderer/oukc/*.html)一致
4 clean reset1 UD (snapshots/2026-08-14.json)-3
合計19 unmerged「19」 数字 一致

Stage 1: 6 UU keep-upstream (実質 diff 0)

Stage 2: 12 dist-renderer/oukc UD 削除確定 + 1 snapshots UD keep-ours

Stage 3: 408+ M/MM は cron auto-gen で scope 外

最終 commit

6976719d6 fix(recovery): rei-aios 19 unmerged resolution — 12 dist-renderer/oukc/* 削除確定 + 6 UU/1 UD keep-upstream (no diff)

commit content: 12 file deletion (-2911 lines) のみ。 push: d62af0665..6976719d6 main -> main。 branch = main、 origin 同期、 「ahead」 indicator 消滅。

6. 副次発見 3 件 — 事後訂正 (session B fact-check 経由)

6-1. lock file 残留 (私 の 前 turn 報告漏れ)

私 の git reset (11:22 頃、 400+ pre-staged auto-gen file を unstage する 目的) が .git/HEAD.lock + .git/refs/heads/main.lock を 作成、 mount 越し unlink 不可 の 環境で 削除失敗残留。 放置すると 次回以降 の commit / checkout / pull が cannot lock ref で 全 fail する 状態。

並行 動作中 の 別 Claude Code session B が _to_delete/HEAD.lock.20260815 + _to_delete/main.lock.20260815 に 退避 + .git/info/exclude_to_delete/ 登録 で 実質除去、 但し session B の 環境から _to_delete/ 自体 の 削除は 不可能。 本 arc close turn で 私 (session A) が rm -rf _to_delete/ 実行 = exit=0 成功 (mount 越し unlink 可能な 環境差 判明)。

pattern 昇格: feedback_success_signal_decoupled_from_operational_state_2026-08-1412 例目 subtype = 「commit + push 成功 signal は green だが 副次的 lock file が 潜在残留」。 前 turn の 「Track 4 完了」 報告 は commit + push level で 完了、 但し repo runtime state (次 git 操作 の 可否) で 未完了 = 「completion signal が 実 usability と decouple」。 対策: git reset / git checkout の 後 は ls .git/*.lock .git/refs/heads/*.lock 2>/dev/null | wc -l を 実行して 0 確認、 non-0 なら 即除去。

6-2. 並行 session 衝突 の 認識漏れ

session A (私) が Track 3+4 実行中 に session B が 同 repo 上で 同じ 19 unmerged の 独立調査を 並行実行。 session B は 全 19 file 自動生成物 + conflict marker 0 + git diff --cached HEAD 空 = 「作業消失リスク ゼロ」 の 独立 verify + 安全な git reset (mixed) + git checkout で oukc 12 file 復元 の recovery plan を 立案していた。

判断が正反対 (session B = 復元 / 私 = 削除)、 但し 「chat-Claude 事前 plan 削除確定」 を 私 が 採用したため 削除路線が 先に 実行済 + push 済。 session B は 11:22 時点で 私 の recovery が 完了済 と reflog で 検出 → 実行せず = タイミングだけで 衝突を 避けた 状態、 systemic 保証 なし。

藤本さん明示 (session B 経由): 「同一 repo への 並行 session を 避けてください」。 本 arc 以降 rei-aios 触る際は 開始前 に session 数 verify (Claude Code process 一覧 + 直近 reflog 差分 検出)、 並行検出時 は 相手が 一段落するまで 待機、 が protocol。

6-3. stash 22 本 の systemic 問題

STEP-1336-push-stash-cron-untracked 以下 ほぼ 全 22 stash が 「自動生成 data の 退避」 で、 cron auto-commit と 手動 push の 競合 が 構造的に stash を 量産 している 兆候。 本 arc scope 外 で 別 arc の cleanup marathon 案件、 session B に stash 22 cleanup を 依頼予定 (candidate scope: 完全 auto-gen なら 全 drop / 実 WIP 含む なら 個別 apply / 中間は archive)。

7. Honest scope

本 site page の scope 明示 (over-claim 防止):

  1. find_element は 実 Windows 環境 UI 相互作用 の functional verify は 別途必要。 selftest 30/30 は graceful degradation 経路 の verify (pywinauto 未 install)、 実 pywinauto uia backend の functional 動作 (memo 帳 window 検出 + rect 取得 等) は 藤本さん Windows 実機で 手動 verify 想定。 「動く 保証」 でなく 「crash しない 保証」 まで が 本 release scope。
  2. Phase 2 は 「開始」 まで、 完成 は 4 sub-task chat-Claude 分担 完了後。 v0.2.0-alpha の -alpha suffix が 未完成 明示。 chat-Claude 分担 4 issue が close されるまでは v0.2.0 stable に 昇格しない。
  3. Track 4 の 「12 dist-renderer/oukc 削除」 は 復旧手段ありscripts/build-oukc-static-pages.ts で 再生成可能、 但し cron 次 cycle まで https://rei-aios.pages.dev/oukc/ 系 の 12 page が 一時的に 404 の 可能性 (次 cron cycle 復元)。 public/oukc/ に canonical source 不在 の 依存性 が 露呈、 別 arc で canonical 保護 protocol 検討 candidate。
  4. 並行 session 衝突 は 「タイミング偶然」 で 避けた。 systemic guarantee なし、 protocol 化 は 本 arc turn 以降 の 適用開始、 過去 session の 並行 は 記録なし = 「今回が 初発火 か 過去に あったか」 は 不明。
  5. stash 22 systemic 問題 は 発見のみ、 根本原因分析 + 対策 は 未実施。 別 arc (session B 分担予定) で cleanup marathon 実施予定。 現時点で 「cron × 手動 push 競合」 と 推定 が 主 hypothesis、 個別 stash 中身 で verify 必要。
  6. 本 page は novelty 主張 ゼロ。 MCP wrapper + pywinauto は 6+ 事例が 既存 (AHK-MCP 系)。 差別化は 前 arc で 明示済 の 4 axis (propose→approve→execute lifecycle + logic-basis 記録 + STEP 1336 persistence pattern + D-FUMT₈ dfumtValue)。 本 arc 追加分 (find_element + graceful degradation + chat-Claude 環境 完成) も 個別 novelty は 主張しない、 discipline + collaboration pattern の operational 実例 として 価値。

8. Open threads (本 arc close 後)

#track担当次 action
6-Aclick (#1)chat-Claudefind_element helper 再利用、 selftest [10]
6-Btype 共存 (#2)chat-Claudemode 明示 (replace/append)、 書き戻し verify、 制約 README 明記
6-Cscreenshot (#3)chat-Claudemss/Pillow、 base64 返却禁止、 requirements 追記
6-Dexcel_aggregate (#4)chat-Claudeopenpyxl + GetActiveObject、 DisplayAlerts=False 既定禁止
7stash 22 cleanupClaude Code session B22 stash categorize + drop / apply / archive の 3 分類 + 再発防止 protocol 起草

Phase 2 4 sub-task は chat-Claude 分担 で 独立検証 collaboration pattern 保持 = session B が 拾わない 判断 (藤本さん 「同一 repo 並行 session 避けて」 の 精神を 「同 architecture role」 に 拡張適用)。 stash 22 は session B 自身が 発見した systemic 問題 = 動機と実装計画の 一致で 適任。

9. 関連 memory / commits / issues

本 arc で 保存 / 更新した memory (private)

本 arc の commit + push

本 arc で 作成した GitHub issues

継承原則 (feedback 経由)