STEP 1377 — discovery-worker v0.4 fdr_gate (defer (b) 完了 = defer 5 全完了)
1. 契機
藤本さん directive defer 5 項目 の 最後 (b) discovery-worker v0.2 統合 の 実装。 rei-aios STEP 1371 (TypeScript) primitive を Python に 移植し、 discovery-worker (別 repo) 側に 独立 primitive として wire up。 rei-aios / rei-* 全 sibling へ dependency ゼロ、 stdlib only。
2. 実装 (discovery-worker external repo)
2.1 新規 file 3
worker/fdr_gate.py(~360 行) — 単独 primitive、 stdlib only (math + json + sys + argparse + dataclasses + pathlib)。benjamini_hochberg(p_values, q)+map_multi_trial_to_d8(trials, fdr_q, alpha)+spec_table()+ CLItests/test_fdr_gate.py(~250 行) — 62/62 PASS (17 part、rei-aios STEP 1371 test 89/89 の Python 移植 subset)docs/v0.4-notes.md— design + isolation contract + non-integration honest scope
2.2 決定表 (rei-aios STEP 1371 と 一字一句同じ、 8 rule)
| # | Condition | Verdict | Reason |
|---|---|---|---|
| M1 | trials 空 | ZERO 〇 | no_trials |
| M2 | fdr_q null/invalid | NEITHER N | fdr_q_not_set |
| M3 | alpha null/invalid | NEITHER N | alpha_not_set |
| M4 | 全 p invalid | NEITHER N | no_valid_p_values |
| M5 | naive 0 件 | FALSE ⊥ | no_naive_signal |
| M6 ★ | naive>0 FDR 全滅 | NEITHER N | all_naive_killed_by_fdr (chat-Claude 核心) |
| M7 | 部分生存 | BOTH B | partial_fdr_survivors |
| M8 | 全 naive 生存 | TRUE ⊤ | all_naive_survive_fdr |
5 値 activate (TRUE / FALSE / NEITHER / ZERO / BOTH)、INFINITY / FLOWING / SELF は 予約。source marker 'multi-trial-fdr-verdict-mapping' で 静的引き当て機械保証 (rei-aios TypeScript 実装 と 同型)。
2.3 Isolation contract
rei-aios/ / rei-* 全 sibling repo / SEED_KERNEL DB / external Rei stack へ dependency ゼロ。stdlib only。spec §1.5 network egress allowlist に rei-aios.pages.dev が禁止のため、HTTP 経由での rei-aios MCP tool 呼び出しは 不可 → Python 独立実装が 唯一の道。
3. Verify 実測
3.1 Python test 62/62 PASS (17 part)
- Part 1 [1-3]: BH primitive Wikipedia 教科書 example (10 p-values、q=0.05、kMax=2、critical_p=0.008) + empty/null/invalid q + mixed valid/invalid p
- Part 2 [4-11]: Rule M1-M8 全網羅、[9] chat-Claude 核心 M6 (p=[0.04, 0.045, 0.06] → NEITHER all_naive_killed_by_fdr)
- Part 3 [12-14]: discovery-worker realistic scenario:
- 100 trials uniform null (p_i=(i+1)/100) → naive=4, fdr=0 → NEITHER ✓
- 1000 trials scaled → naive=49, fdr=0 → NEITHER ✓
- 1 strong (p=1e-6) + 99 noise → naive=5, fdr=1 → BOTH ✓
- Part 4 [15-17]: spec table + source marker + invalid input rejection
3.2 rei-aios TypeScript との 完全同型
| Aspect | rei-aios TS (STEP 1371) | discovery-worker Python (本 STEP) |
|---|---|---|
| 決定表 | 8 rule M1-M8 | 8 rule M1-M8 (一字一句同じ) |
| Activate 値 | 5/8 (TRUE/NEITHER/ZERO/FALSE/BOTH) | 同 |
| Source marker | multi-trial-fdr-verdict-mapping | 同 |
| Test 数 | 89/89 PASS | 62/62 PASS (subset) |
| Wikipedia example | kMax=2, critical=0.008 | 同 verify |
| 100 trials null | naive=4, fdr=0 → NEITHER | 同 |
3.3 CLI usage
python worker/fdr_gate.py trials.json --fdr-q 0.05 --alpha 0.05 [--include-spec]
trials.json format:
[
{"id": "hypothesis-1", "p_value": 0.03},
{"id": "hypothesis-2", "p_value": 0.001},
...
]
4. Non-integration (honest scope)
Pipeline auto-integration は **defer** (v0.5+ candidate):
- hunter_alpha (counterexample search) は verdict = TRUE/FALSE/INFINITY/NEITHER を返す、p-value なし
- hunter_beta (arXiv/OEIS prior-art) は similarity score を返す、p-value に 変換するのは 別 layer
- fdr_gate は **caller-provided p-value 前提** = 使い方 3 通り (CLI / import / future hunter_gamma stage)
「無理に pipeline stage として wire up せず、primitive として 独立提供」 = feedback_super_naming_siren_family_pattern 遵守 (「果たせない約束」 = auto-integration が 期待されるほど pipeline が p-value を 出さない現状)。
5. Rei stack 相補構造 (合計 7/8 値 activate)
| STEP | Domain | Activate 5/8 |
|---|---|---|
| rei-aios STEP 1350 | single measurement (SNR gate) | TRUE/NEITHER/ZERO/INFINITY/FLOWING |
| rei-aios STEP 1371 | multi-trial FDR (TypeScript) | TRUE/NEITHER/ZERO/FALSE/BOTH |
| rei-aios STEP 1376 | sample-pair Welch t-test | TRUE/FALSE/NEITHER/INFINITY |
| discovery-worker STEP 1377 (本 STEP) | multi-trial FDR (Python 独立実装) | TRUE/NEITHER/ZERO/FALSE/BOTH (STEP 1371 sibling) |
7/8 値 activate (SELF のみ 予約)。 discovery-worker Python 側は rei-aios TypeScript の Python 移植で 独立 domain (rei-aios へ dependency なし)、 sibling primitive として 共存。
6. defer 5 項目 全完了 status
| Item | Description | STEP | Status |
|---|---|---|---|
| (a) | rei-aios MCP wrapper + finding #32 訂正 | STEP 1372 | ✅ 完了 (v2.8.2, 40 tools) |
| (b) | discovery-worker v0.2 統合 (Python adapter) | STEP 1377 (本 STEP) | ✅ 完了 (v0.4 fdr_gate local commit) |
| (c) | Welch-t 統合 (STEP 1353 教材から extract) | STEP 1376 | ✅ 完了 (v2.8.3, 41 tools) |
| (d) | MEMORY.md compact (20→17 KB target) | STEP 1374 | ✅ 完了 (25.5→15.1 KB, −41%) |
| (e) | CLAUDE.md 15 STEP catch-up | STEP 1374 | ✅ 完了 (1355-1370 hook 追加) |
defer 5 項目 全完了達成 (STEP 1371 → 1372 → 1374 → 1376 → 1377 の 5 STEP、うち 4 STEP は 同日 2026-08-23 SAC-4 43-46 collision streak 発生)。
7. Honest scope
- 「世界初」 主張ゼロ。 BH 1995 = 30 年前既知、TypeScript sibling の Python 移植 = novelty ゼロ、Rei stack primitive parity のみ
- Pipeline auto-integration は defer (hunter_alpha/beta が p-value 生成しない設計のため、caller-provided p 前提)
- Remote 未設定 = local commit only (spec §1.4 「初期 spike は fc0web 配下 で スタート、実運用で 別 org 検討」)、外部公開は 別判断
- Isolation contract: rei-aios / rei-* dependency ゼロ、stdlib only、spec §1.5 egress allowlist 準拠
- rei-aios TypeScript 実装との 決定表 一字一句同期 は 現時点 manual、drift 補正は 別 STEP candidate (両実装間の CI test を 追加検討)
8. 関連
- rei-aios STEP 1371 (2026-08-22) — d8_verdict_from_multi_trial v0.1、 本 STEP の 実装源 (TypeScript sibling)
- rei-aios STEP 1372 (2026-08-23) — MCP wrapper + finding #32、 defer (a) 完了
- rei-aios STEP 1374 (2026-08-23) — MEMORY compact + CLAUDE catch-up、 defer (d)+(e) 完了
- rei-aios STEP 1376 (2026-08-23) — Welch-t primitive、 defer (c) 完了
- discovery-worker v0.3
bb019e8— merge_gate runtime enforcement (前 commit、 本 STEP は v0.4) - discovery-worker spec
docs/discovery-worker-spec-v0.1-2026-08-22.md§ 1.4, § 1.5, § 6 feedback_all_research_site_reflection_default— 2026-08-06 protocol 継続