Phase 20.25 — Boxes→Plugins 集約 + 正規化恒久化(MVP)
目的
- String/Array/Map の代表機能をプラグイン(動的/静的)へ集約し、VM/Core/Runner から統一的に呼び出す。
- Method/ModuleFunction→Extern の正規化を構造化(Router/Verifier 側)へ段階移行。Gate‑C のローカル正規化は最小限に。
- 既定挙動は不変。全て opt‑in トグルで導入し、Fail‑Fast を維持。
ステータス: MVP 完了(2025‑10‑30)
背景(現状)
- Gate‑C フォールバック経路で Method/ModuleFunction→Extern の正規化を実装済み(runner/normalize)。
- VM 側 extern_adapter が
nyrt.box.*を受理する互換を実装済み(iface/method 別名の吸収)。 - quick プロファイルは緑(Pass 53 / Skip 13 / Fail 0)。
範囲
- Plugins 集約(代表):
- String: length(size), indexOf, lastIndexOf, substring(代表)
- Array: size, push, pop, get, set, clear
- Map: len(size), get, set, delete, keys, values(代表)
- Router/Verifier 側の恒久正規化(段階導入; 既定OFF → 構造確認 → 既定ON)
- CLI トグルの実効化(既定は変えない)
非対象(このフェーズではやらない)
- 全外部APIの正規化・網羅(代表に限定)
- 文字列/配列/連想の全オプション動作(境界・負荷の細部は次フェーズで拡張)
トグル/ENV(既定OFF)
HAKO_GATE_C_ENABLE_PLUGINS=1(Gate‑C(Core) plugin 経路の opt‑in)NYASH_NORMALIZE_CORE_EXTERN=1(既定ON; 問題時の一時 opt‑out 用)SMOKES_ENABLE_CORE_CANARY=1(スモーク opt‑in)
受け入れ基準(MVP)
- quick プロファイル緑の維持(新規 canary は opt‑in)→ 達成
- Gate‑C(Core)+plugins の対称(file/pipe)で代表ケースが PASS → 達成(plugins カナリアは opt‑in で SKIP/ PASS 運用)
- 正規化(Method/ModuleFunction→Extern)は runner/normalize へ一本化済み(SSOT参照)
- 外部名の揺らぎは VM extern_adapter が吸収(SSOT 文書と一致)