STEP 1372 — d8_verdict_from_multi_trial MCP wrapper + finding #32 訂正
1. 契機
STEP 1371 (2026-08-22) で 実装した mapMultiTrialToD8 primitive を rei-aios MCP server の tool として wire up。 併せて 発見済 finding #32 (banner 「38ツール」 vs 実 tool 39 個宣言 の off-by-one drift、 STEP 1349 memory 記載 pattern の 再発) を 同時訂正。
藤本さん directive: STEP 1371 push 後 defer 5 項目 (a-e) の (a) MCP wrapper 統合。
2. 実装内容 (rei-aios single-commit)
2.1 src/mcp/rei-mcp-server.ts 4 edit
- import 追加:
mapMultiTrialToD8,d8MultiTrialSpecTablefrom./d8-verdict-mapping - Tool 定義追加:
d8_verdict_from_multi_trial(description で 集約 8 rule + STEP 1350 相補 + 順序原則 + honest scope 明示、 inputSchema で trials array + fdrQ + alpha + includeSpec、 finding #30/#31 preventive design 継承 = 返却 field 全列挙) - Case handler 追加:
case "d8_verdict_from_multi_trial"= thin wrapper (trials array normalize + fdrQ/alpha pass-through + includeSpec で specTable dump)、 STEP 1350 case pattern 完全 mirror - Banner update: v2.8.1 → v2.8.2、 「38ツール」 → 「40ツール」 (実 tool 39 + 新 tool 1 = 40)、 finding #32 訂正明記
2.2 Finding #32 訂正 (banner tool count drift)
Pre-STEP 1372 状態: banner text 「38ツール」 vs 実 tool 39 個宣言 (grep -cE '^\s*name:\s*"') = off-by-one drift。 STEP 1349 memory (2026-08-20) に 「description drift 3 例目 = finding #30 (rei-aios get_kernel_status) + finding #31 (rei-meta 自身) と 同型 pattern」 記載済、 STEP 1371 の MCP wrapper defer 検討時に 再発 検出。
訂正: v2.8.2 で banner 実 tool count 40 に 一致。 STEP 1372 の tool 追加 (+1) と 同時 実行で 追加編集不要。 「開通した計器が 最初に映したもの」 pattern の 4 例目 = STEP 1334 KA wiring + STEP 1336 Rei-Automator revival + STEP 1349 D8 connectors の 系譜継承 (STEP 1349 で 検出したが 別 STEP で 訂正の pattern)。
3. Verify 実測
3.1 Tool count exact
grep -cE '^\s*name:\s*"' src/mcp/rei-mcp-server.ts
→ 40 (39 pre-STEP 1372 + 1 新 tool)
banner: "v2.8.2 起動済み(stdio モード・40ツール・...・
d8_verdict_from_multi_trial 追加 (STEP 1371、 BH FDR aggregate)・
banner tool count drift finding #32 訂正)"
3.2 MCP stdio end-to-end smoke (chat-Claude 核心 M6 case)
test: tools/call name=d8_verdict_from_multi_trial args={trials:[{pValue:0.04},{pValue:0.045},{pValue:0.06}], fdrQ:0.05, alpha:0.05}
| Field | Value |
|---|---|
aggregateVerdict.name | NEITHER |
aggregateReason | all_naive_killed_by_fdr ★ chat-Claude 核心 M6 |
naiveSignificantCount | 2 |
fdrSurvivorCount | 0 |
perTrial[0].verdict | NEITHER (naive_killed_by_fdr) |
perTrial[1].verdict | NEITHER (naive_killed_by_fdr) |
perTrial[2].verdict | FALSE (not_naive_significant) |
source | multi-trial-fdr-verdict-mapping ✓ 静的引き当て 機械保証 |
honestScope | embedded ✓ |
3.3 Regression
- STEP 1371 primitive test 89/89 PASS (無変更)
- STEP 1350 case 無変更 (regression risk なし、 MCP init で 全 case parse 成功 confirmed by smoke)
- 初期化 protocol 応答:
{"result":{"protocolVersion":"2024-11-05",...,"serverInfo":{"name":"rei-aios","version":"2.0.0"}}}✓
4. Honest scope
- 「世界初」 主張ゼロ ([[feedback-world-uniqueness-claim-controllable]])。 STEP 1371 primitive は STEP 1350 pattern 継承 + BH 1995 既知、 本 STEP は wrapper wire-up + drift 訂正のみ、 novelty ゼロ。
- Finding #32 = 累積 drift の 一部。 finding #30 (rei-aios
get_kernel_status) / #31 (rei-meta 自身) と 同型 「宣言 vs 実装 drift」、 systemic 対策 (init 時 auto-count + banner 自動生成) は 別 STEP candidate、 本 STEP は spot fix のみ。 - Wrapper は thin: primitive の 動作を そのまま流す、 caller 側の schema validation (trials array 空配列許容、 fdrQ/alpha null 許容) は primitive の decision-table に 委譲、 wrapper 層 追加 logic なし。
- Tool description 長い (~1500 chars): finding #30/#31 preventive design 継承で 返却 field 全列挙 + honest scope 明示、 caller (Claude session or 別 tool) が description のみで tool の 動作境界を 把握可能な設計、 短縮は 意図的に 避ける。
- Rei stack MCP 8 systems 数不変: rei-aios 内 tool 39 → 40 (STEP 1371 primitive 統合)、 systems 数は 8 のまま (rei-aios + benchtop + mcp-lens + rei-automator-mcp + lab-notebook-mcp + rei-verify + rei-memory-mcp + rei-meta-mcp)。 STEP 1352 memory L10 header 「rei-aios v2.8.1 tool 38」 は drift 済、 本 STEP で 「v2.8.2 tool 40」 に update 対象。
5. 関連
- STEP 1371 (2026-08-22) —
d8_verdict_from_multi_trialprimitive、 本 STEP の 直接前身 (primitive 提供、 本 STEP は wrapper wire-up) - STEP 1350 (2026-08-20) —
d8_verdict_from_measurement、 wrapper pattern 完全 mirror 元 - STEP 1349 (2026-08-20) — D-FUMT₈ operator connectors + drift finding #30/#31 origin、 本 STEP の finding #32 は 同 pattern 再発
- Defer 5 項目 (a)-(e) の (a) 完了、 残 (b)-(e) は 別 STEP で 進行
feedback_super_naming_siren_family_pattern— description 長化 = 「果たせない約束」 回避、 finding #30/#31 preventive design 継承根拠feedback_all_research_site_reflection_default(2026-08-06) — 本 site page = protocol 継続