# Phase 4: Alloc Gate Specialization(D3 実装指示書) Phase 3 は **D1 昇格 / D2 凍結**で完全閉鎖。次の “芯” は alloc 側の gate を削る D3。 ## 現在地(SSOT) - Active defaults(Mixed): - `HAKMEM_TINY_ALLOC_ROUTE_SHAPE=1`(B3) - `HAKMEM_WRAP_SHAPE=1`(B4) - `HAKMEM_TINY_STATIC_ROUTE=1`(C3) - `HAKMEM_FREE_STATIC_ROUTE=1`(D1, promoted) - `HAKMEM_MID_V3_ENABLED=0`(Mixed 本線 SSOT) - Frozen / ignore: - `HAKMEM_WRAP_ENV_CACHE=1`(D2, NO-GO) ## Step 0: perf で “GO 条件” を満たしているか確認 判定基準: `tiny_alloc_gate_fast` が **self% ≥ 5%**。 推奨(Mixed, iter=20M, ws=400, 1T): ```bash HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE perf record -F 99 -- \ ./bench_random_mixed_hakmem 20000000 400 1 perf report --stdio --no-children ``` メモ(直近の 1-run perf): - `tiny_alloc_gate_fast` self% ≈ **18.8%** → **D3 GO 条件は満たす** ## Step 1: D3 実装(Box Theory) 設計メモ(SSOT): `docs/analysis/PHASE3_D3_ALLOC_GATE_SPECIALIZATION_1_DESIGN.md` ### 箱割り(必須) - L0: ENV(戻せる) - `HAKMEM_ALLOC_GATE_LEGACY_ONLY=0/1`(default 0) - L1: Safe-Enable 判定(境界 1 箇所) - Mixed 本線が “LEGACY-only” であることを 1 回だけ確認し、成立した場合のみ fast 経路へ - Learner ON の場合は必ず disable(route が動的更新されるため) - L2: Integration(境界 1 箇所) - `tiny_alloc_gate_fast()` の入口でのみ差し替え(既存の意味は変えない) ### Safe-Enable 条件(Fail-Fast ではなく “自動 disable”) 以下のどれかに該当したら D3 は **即 disable** して既存経路へフォールバック: - learner が有効(例: `HAKMEM_SMALL_LEARNER_V7_ENABLED=1`) - route_kind に LEGACY 以外が混入(V7/MID/ULTRA/TINY_FIRST 等) - そのほか Mixed 本線の固定前提が崩れている ## Step 2: A/B(GO/NO-GO) Mixed 10-run(推奨: iter=20M, ws=400, 1T): - Baseline: ```bash HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE HAKMEM_ALLOC_GATE_LEGACY_ONLY=0 \ ./bench_random_mixed_hakmem 20000000 400 1 ``` - Optimized: ```bash HAKMEM_PROFILE=MIXED_TINYV3_C7_SAFE HAKMEM_ALLOC_GATE_LEGACY_ONLY=1 \ ./bench_random_mixed_hakmem 20000000 400 1 ``` 判定(10-run mean): - GO: **+1.0% 以上** - NO-GO: **-1.0% 以下** - ±1.0%: NEUTRAL(研究箱維持、default OFF) ## Step 3: 昇格(GO の場合のみ) - `MIXED_TINYV3_C7_SAFE` プリセットへ default 注入(`core/bench_profile.h`) - `docs/analysis/ENV_PROFILE_PRESETS.md` に結果・rollback 手順を追記 - `CURRENT_TASK.md` を “Phase 4 完了” に更新 ## Step 4: 失敗時の扱い(箱理論) - NO-GO/NEUTRAL の場合: - D3 は research box として freeze(default OFF) - 本線は汚さない(プリセット昇格はしない)