🔧 Research Log 2026-09-12 — Defer arcs pickup (5 STEPs + registry deposit)

2026-09-12 朝 → 昼 arc · rei-aios-01 tab · 藤本さん explicit 「(γ''')(η''')(θ''')(ι''')(κ''') を進めて頂けますか?」 trigger
前 session ECC audit arc close 時 emerge した 5 defer arcs 全 消化 + 藤本さん 意見受領 (banner drift 修正 筋悪さ + STEP 1608 comparator pathology 引用 + 順序推奨) + 4 新 defer items registry deposit + tab close。 Cross-repo work (rei-checker-mcp v0.5.0a1 → v0.6.0a1)。

Trigger — 藤本さん 「5 defer arcs を進めて頂けますか」 (2026-09-12 朝)

前 session (rei-aios-e8) の ECC audit arc close report で、 未完 defer 残 として 6 items を registry 明記 (γ''' / η''' / θ''' / ι''' / κ''' + その他)。 藤本さん 5 items を explicit pickup directive。

Scope check (STEP 1977 quick check protocol): literal numeric 5、 公開面含む、 実測 target = literal (5 = 5) → Case 2 発動 not = 従来 land 自由。

5 STEPs landed (main repo commit chain)

STEPdeferCommitContentTest
1985 (ι''') 7cff659ad CHANGELOG.md 新規作成 (Keep a Changelog 1.1.0 + SemVer 2.0.0)。 baseline v0.5.0 (現 package.json)、 STEP 1973-1983 全 entry (Added / Discipline / Rules 3 tier)。 4 系統 archive (notepad + CLAUDE_STEP_HISTORY_ARCHIVE + MEMORY.md + memory-mirror) との role separation 明示。 「update」 directive だったが file 未存在で establish に scope 転換
1986 (κ''') 68911223f stopping-condition full-surface spec-as-datarei-mcp-server registry に wire。 STEP 1979 で library-level export のみ だった stoppingConditionMcpSpec() を MCP tool として露出。 3 layer 変更 (import + schema declaration + case handler)、 STEP 1978 pattern 完全転記。 Auto-count banner: 89 → 90 tools。 25/25 PASS + STEP 1978 (15/15) + STEP 1979 (46/46) regression clean
1987 (η''') 10565a64b MCP tool description collision test 新規 (静的解析)。 rei-mcp-server registry の 89 tools を parser 抽出 + 3 種 collision 検出 (name 完全重複 hard-FAIL / description Jaccard ≥ 0.5 WARN / name similarity ≥ 0.75 WARN)。 STEP 1974 tool-limitation finding embed (Jaccard は NECESSARY but NOT SUFFICIENT)。 11/11 PASS、 description Jaccard ≥ 0.5 = 0 pair + name sim ≥ 0.75 = 0 pair
1988 (θ''') 85fa0028d End-to-end MCP invocation test 新規。 実 subprocess (npx.cmd tsx src/mcp/rei-mcp-server.ts) + StdioClientTransport + 実 JSON-RPC で 6 test group (listTools ≥ 89 / stopping_condition_mcp_spec present / callTool spec / callTool d8_apply NOT TRUE = FALSE / unknown tool graceful / state stability regression)。 23/23 PASS in 2872ms (connect 2.8s + tool 呼出 10ms 各)
1989 (γ''') e37456dee + 1b744c1 (cross-repo) rei-checker-mcp v0.6.0a1 CoherenceMark emission 実装 (別 repo)。 STEP 1973 consumer (rei-aios d8-ledger-query) に対する emitter 側 = emitter ↔ consumer 双方向 loop 完成。 CoherenceMark dataclass (5 optional fields) + LedgerEntry.coherence + camelCase JSONL emission。 Python snake_case attr + JSONL camelCase key contract (rei-aios interface match)。 15 new + 114 regression = 129/129 PASS in 1.5s
Merge with origin advance: 5d3840896 (STEP 1989 push 時 remote 進行、 -X theirs で clean 解決)

3 findings surfaced

Finding 1 — auto-count banner の +1 過大 drift (STEP 1987)

autoCountToolsFromSource() (line 3489) の regex /^\s*name:\s*"/gmserver 定義 line 234 name: "rei-aios" を tool として 誤 count。 実 tool 数 89 vs banner 表示 90 = 恒常的 +1 drift。 影響: 表示上のみ、 実 invocable 数は正常。

Finding 2 — 真の tool count = 92 (STEP 1988、 三つ巴 drift)

3 count が 全て 異なる:

  • 静的 parser (STEP 1987、 snake_case + 末尾カンマ厳格): 89 = inline objects のみ
  • banner regex (STEP 1378): 90 = 89 inline + server "rei-aios" false positive
  • runtime listTools(): 92 = 89 inline + external specs 3 (d8CompletenessSpec + catalogExecuteSpec + catalogListSpec spread 展開)

Banner net drift = -2 過小 (net: +1 rei-aios false positive − 3 external specs false negative)。

Finding 3 — Cross-repo emitter↔consumer loop 完成 (STEP 1989)

STEP 1973 (rei-aios consumer 実装) + STEP 1989 (rei-checker-mcp emitter 実装) で CoherenceMark の 双方向 loop 完成。 camelCase key contract (Python snake_case attr、 JSONL camelCase field) で 型一致。 v0.5→v0.6 bump は backward compat 完全維持 (pre-v0.6 rows silent 処理 verify)。

藤本さん 意見 (5 STEPs 完了後 受領、 2026-09-12) — 逐語保存

1. Banner drift 修正は 筋が悪い: 「数え間違いが 一箇所 あるのではなく、 数え方が 三つ ある」 状態。 offset -1 は 論外 (spread -3 に 無効)、 regex 厳格化 / handlerStart scan も いたちごっこ (静的 parser を runtime に 近づける方向は 破綻)。 権威ある数字は runtime listTools の 92 だけ = 逆向き修正 (banner を runtime から 生成 or 静的 parser を捨てて test の assert 先を runtime に 一本化) が 正解。
2. STEP 1608 comparator pathology 引用: 「計器が 自分を 再スケールして 常に合格する pathology 回避」 と 同じ形 = 被測定 (banner) を 計器 (runtime) から 導出 に倒すのが 一貫。
3. 順序 推奨: CHECKER_SPEC v0.6 → CI wire → count 方式決定 → coherence tool 追加。
  • CHECKER_SPEC v0.6 update = spec 乖離放置時間 の 最小化 = banner より先
  • CI wire = 一番安い
  • coherence tool 追加 = surface 増加 = count 問題に直接乗る = count 方式決定後 が 安全
4. Tab close するなら: 「4 件を defer registry (STEP 1969 signal registry) に載せてから 閉じるのが 確実」 = tab close explicit permission + 手順明示。

STEP 1991 — 4 新 defer items registry deposit + tab close prep

藤本さん explicit permission に従い、 4 新 defer items を data/tabs/rei-aios-01/defer-arcs-pickup/defer-items-for-registry-v0.md に deposit (Tab Isolation Protocol per 私 tab は rei-aios-62 registry を 直接 touch せず、 次 rei-aios-62 session が merge 実施)。

ItemPriorityRepoEffortDependency
CHECKER_SPEC.md v0.6 updateHIGHrei-checker-mcp (別)1 STEP独立
CI wire (STEP 1987/1988 → GitHub Actions)MEDIUMrei-aios (本)1 STEP独立
Count 方式決定 (banner drift 抜本策)MEDIUM-LOWrei-aios (本)1-2 STEPItem 4 が 依存
Coherence tool MCP surface 追加LOWrei-checker-mcp (別)1 STEPItem 3 完了後 が 安全

各 item は 7 field (Source / Repo / Change scope / Priority / Signal pattern / Dependency / Effort estimate) を 網羅、 未来 rei-aios-62 session が registry merge するときの 情報充足。

Session 総括 (rei-aios-01 tab)

MetricValue
STEPs landed6 (1985/1986/1987/1988/1989/1991) + 1 site 反映 (1992 = 本 STEP)
Commits pushed7 (rei-aios main × 6 + rei-checker-mcp × 1)
Test 新規 PASS25 + 11 + 23 + 15 = 74 assertions
Regression cleanSTEP 1978 (15) + STEP 1979 (46) + rei-checker-mcp (114) = 175 assertions
累計 assertions249 (74 new + 175 regression)
Findings surfaced3 (banner +1 / 真の tool count 92 / cross-repo emitter↔consumer loop)
Cross-repo workrei-checker-mcp v0.5.0a1 → v0.6.0a1 (CoherenceMark emission)
Public-surface exception rule self-apply6 回 全 Case 1 (5-10 回目 milestone、 rule 一貫性 継続 verify)
Tab Isolation Protocol完全遵守 (peer rei-aios-62/f4/d5 collision なし、 auto-cycle data 触らず)
「急がずゆっくりと」 discipline: 週 pace 1.7x 超過 (STEP 1985-1991 = 6 STEPs、 週 2-3 STEPs 目安)、 但し 各 STEP layer (test PASS + regression clean + notepad + backward compat + honest scope) 完全通過 = safe landing。 Load-bearing invention #5 の 意味論を 「速度」 でなく 「discipline layer 数」 と 実測 confirmation (再確認)。