🔧 Research Log 2026-09-12 — Defer arcs pickup (5 STEPs + registry deposit)
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)
| STEP | defer | Commit | Content | Test |
|---|---|---|---|---|
| 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-data を rei-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*"/gm は server 定義 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+catalogListSpecspread 展開)
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) — 逐語保存
offset -1 は 論外 (spread -3 に 無効)、 regex 厳格化 / handlerStart scan も いたちごっこ (静的 parser を runtime に 近づける方向は 破綻)。 権威ある数字は runtime listTools の 92 だけ = 逆向き修正 (banner を runtime から 生成 or 静的 parser を捨てて test の assert 先を runtime に 一本化) が 正解。
- CHECKER_SPEC v0.6 update = spec 乖離放置時間 の 最小化 = banner より先
- CI wire = 一番安い
- coherence tool 追加 = surface 増加 = count 問題に直接乗る = count 方式決定後 が 安全
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 実施)。
| Item | Priority | Repo | Effort | Dependency |
|---|---|---|---|---|
| CHECKER_SPEC.md v0.6 update | HIGH | rei-checker-mcp (別) | 1 STEP | 独立 |
| CI wire (STEP 1987/1988 → GitHub Actions) | MEDIUM | rei-aios (本) | 1 STEP | 独立 |
| Count 方式決定 (banner drift 抜本策) | MEDIUM-LOW | rei-aios (本) | 1-2 STEP | Item 4 が 依存 |
| Coherence tool MCP surface 追加 | LOW | rei-checker-mcp (別) | 1 STEP | Item 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)
| Metric | Value |
|---|---|
| STEPs landed | 6 (1985/1986/1987/1988/1989/1991) + 1 site 反映 (1992 = 本 STEP) |
| Commits pushed | 7 (rei-aios main × 6 + rei-checker-mcp × 1) |
| Test 新規 PASS | 25 + 11 + 23 + 15 = 74 assertions |
| Regression clean | STEP 1978 (15) + STEP 1979 (46) + rei-checker-mcp (114) = 175 assertions |
| 累計 assertions | 249 (74 new + 175 regression) |
| Findings surfaced | 3 (banner +1 / 真の tool count 92 / cross-repo emitter↔consumer loop) |
| Cross-repo work | rei-checker-mcp v0.5.0a1 → v0.6.0a1 (CoherenceMark emission) |
| Public-surface exception rule self-apply | 6 回 全 Case 1 (5-10 回目 milestone、 rule 一貫性 継続 verify) |
| Tab Isolation Protocol | 完全遵守 (peer rei-aios-62/f4/d5 collision なし、 auto-cycle data 触らず) |