STEP 1371 — d8_verdict_from_multi_trial v0.1

STEP 1371 探索機械の安全装置 test 89/89 PASS STEP 1350 相補拡張
2026-08-22 · rei-aios · pure aggregate primitive (measurement wrapper 別 STEP defer)

1. 契機

chat-Claude 2026-08-22:「今の 7 台は 実は 全部 決定的です — rei-verify は 反証、 rei-checker-mcp は 三値判定、 grounded は 決定的に 検査、 形式化 3 件は Lean 4 の 証明。 度合いを 扱う機械が 1 台もない。 これが 効いてくるのが discovery-worker です。 1 万通り 試せば、 まぐれ当たりが 必ず出る。 統計機械が ないまま 探索を 回すと、 発見の 生産速度に 比例して 偽の発見も 増える。」

藤本さん directive: (A) 3 手 verify 先行 → (D) STEP 1350 拡張のみ、 新 repo 作らず で 実装。

3 手 verify 結果

  1. STEP 1350 実装 read = 単一測定 decision-table 11 rule、 5/8 値 activate (TRUE/NEITHER/ZERO/INFINITY/FLOWING)、 FALSE/BOTH/SELF は 予約
  2. discovery-worker v0.2 spec §6 grep = 「STEP 1350 NEITHER 経路転用」 明記済、 verdict 4 種 (TRUE/FALSE/NEITHER/INFINITY) は single-trial 想定、 FDR / 多重比較 未実装 = chat-Claude 診断的中
  3. FDR / Benjamini / Bonferroni grep 全 repo = 6 file hit だが production 実装 ゼロ (blackhole engine + hierarchical test は 無関係) → gap 確認

2. 実装内容

単一 file 拡張: src/mcp/d8-verdict-mapping.ts に append (新 file 作らず collision 最小化)。 pure TypeScript + seven-logic.ts import のみ (外部依存ゼロ)。

2.1 追加 export 4 個

2.2 集約決定表 (first-match priority)

#ConditionVerdictReason
M1trials.length === 0ZERO 〇no_trials
M2fdrQ null / NaN / ≤0 / ≥1NEITHER Nfdr_q_not_set
M3alpha null / NaN / ≤0 / ≥1NEITHER Nalpha_not_set
M4全 trial の pValue invalidNEITHER Nno_valid_p_values
M5naive_significant_count === 0FALSE ⊥no_naive_signal (confirmed null)
M6naive>0 だが FDR 全滅 NEITHER Nall_naive_killed_by_fdr (chat-Claude 核心)
M70 < fdr_survivors < naiveBOTH Bpartial_fdr_survivors
M8fdr_survivors === naive > 0TRUE ⊤all_naive_survive_fdr

2.3 順序原則遵守 (feedback_one_reproduction_over_ten_unverified)

fdrQ / alpha の 具体値 (0.05 vs 0.01 vs 0.001) は module 内 定数として焼かない。 引数で 差し込む = pre-registration で 「先に決めた」 evidence を 別途残す設計 (STEP 1359 rei-preregister 連携候補)。 STEP 1350 の 順序原則 直接継承。

2.4 「否定から入れる」 discipline (chat-Claude)

「価値があるのは 綺麗な数値を 出す機能ではなく、『この差はノイズと 区別できない』 と 言い切る方。 否定を返す機能から 先に 入れるのが おすすめ。」

本 v0.1 の rule 8 個中 5 個が 否定側 (M2/M3/M4/M5/M6 = NEITHER 4 + FALSE 1)、 肯定側は 2 個 (M7 BOTH partial + M8 TRUE)、 ZERO 1 個。 核心 rule M6 = 「naive で 5 個 有意に見えたが、 FDR 補正で 全滅した = まぐれ当たり」 判定。

3. STEP 1350 との 相補関係 (7/8 値 activate)

STEPDomainActivate 5/8 値
STEP 1350 (2026-08-20)単一測定 (single sensor)TRUE
NEITHER
ZERO
INFINITY ∞ (sensor 飽和)
FLOWING ~ (校正中)
STEP 1371 (本 STEP)多試行 集約 (multi-trial aggregate)TRUE
NEITHER
ZERO
FALSE ⊥ (confirmed null)
BOTH B (partial FDR survivors)
合計7/8 (SELF ⟲ のみ 予約)

2 STEP は 同じ decision-table pattern を 異なる domain (single vs aggregate) に 適用。 module 内 spec は 分離、 module file は 統合 (import path 増やさない)。

4. discovery-worker との 位置づけ

[analog-forge / 実測 / brute-force 探索] ↓ (分布 or 多試行 evidence) [STEP 1371 mapMultiTrialToD8 ★本 STEP] ← FDR で 「まぐれ」 分離 ↓ (集約 verdict) [STEP 1350 d8_verdict_from_measurement] ← 単一測定 SNR gate ↓ (個別 verdict) [rei-checker-mcp v0.1 (三値)] ↓ [rei-verify (反証)]

discovery-worker v0.2 spec §6 の 「verdict 4 種 (TRUE/FALSE/NEITHER/INFINITY) は STEP 1350 NEITHER 経路転用」 は single-trial 用。 hunter_alpha / hunter_beta が N 個 conjecture 一括 submit する場面で、 個別 verdict を 集約する 上位 gate が 未実装だった gap を 本 STEP で 埋める (但し MCP 統合は 別 STEP defer、 本 STEP は primitive のみ)。

5. Verify 実測

5.1 test 89/89 PASS

test file: test/step1371-d8-multi-trial-fdr-test.ts (21 part)。

5.2 regression clean

5.3 core assertion (chat-Claude M6)

[11] ★ Rule M6: naive>0 だが FDR 全滅 → NEITHER (chat-Claude 核心)
     trials = [{p:0.04}, {p:0.045}, {p:0.06}], fdrQ=0.05, alpha=0.05
     → verdict = NEITHER
     → reason = all_naive_killed_by_fdr
     → naiveSignificantCount = 2
     → fdrSurvivorCount = 0
     → per-trial: a,b = NEITHER (naive_killed_by_fdr), c = FALSE (not_naive_significant)

[14] ★ discovery-worker: 100 trials under null (deterministic uniform p_i = i/100)
     → naive = 4  (p_1=0.01, p_2=0.02, p_3=0.03, p_4=0.04)
     → BH q=0.05, m=100: k=1 threshold=0.0005, all fail → 0 rejects
     → verdict = NEITHER (all_naive_killed_by_fdr) ✓

6. Honest scope

  1. v0.1 = pure primitive + test のみ。 MCP tool wrapper (rei-mcp-server.ts) は 他タブ活動域 collision 回避のため defer、 別 commit / 別 STEP で 統合。
  2. 「世界唯一」 主張ゼロ (feedback_world_uniqueness_claim_controllable)。 Benjamini-Hochberg (1995) は 30 年前既知、 novelty は Rei stack 内 D-FUMT₈ 8 値 verdict layer への mapping と 「否定 5 rule / 肯定 2 rule / ZERO 1 rule」 の 命名 discipline のみ、 それも v0.1 spike scope。
  3. pValue mode のみ実装{value, noiseFloor} → p 変換は 分布仮定 (t / normal / permutation) が 別軸、 STEP 1353 Statistics × NEITHER Education v0.2 の Welch-t 実装から extract は 別 STEP。
  4. Benjamini-Hochberg 独立仮定。 BH-Yekutieli 依存対応 (正相関 / 任意相関) は scope 外、 discovery-worker が 独立探索 (candidate 間 論理的独立) を 前提とするなら 本 実装で 十分、 相関ある candidates (同 conjecture の parameter sweep 等) では 保守的 (rejection 過小) に働く。
  5. Bonferroni 未実装method: 'benjamini-hochberg' hard-coded、 v0.2 で method selector 追加検討。
  6. Storey q-value / knockoff は scope 外。 大規模 hypothesis test (数万〜数十万) では BH が 保守的、 v0.3 以降で 検討。
  7. 順序原則 operational form = fdrQ / alpha を 引数で 差し込む、 定数化禁止 = pre-registration (STEP 1359 rei-preregister) で 先に決めた値を 使う workflow を 構造的に強制。 code 内 magic number 陥落先を 排除。
  8. 形式化 3 系 (rei-mdnst / rei-raa / rei-six-attribute) には 効かない (chat-Claude 明示)。 Lean 4 axiom-free proof に 確率は無い、 本 tool は 実世界 evidence (計測・探索・アナログ・FX) 側 のみ効く。
  9. 命名 discipline: 「統計機械」 と 呼ぶと 集計とグラフ描画に堕落する chat-Claude 警告 尊重、 本 STEP は d8_verdict_from_multi_trial = 「多試行 → D-FUMT₈ 8 値 verdict」 目的の 直接 semantic、 rei-stats-* 系 siren-family 名は 意図的回避 (feedback_super_naming_siren_family_pattern)。

7. 次手 candidate (別 STEP defer)

8. 関連