# Phase 99: Trim/escape 実コード寄り強化(VM+LLVM EXE) ## ゴール Phase96/97 の Trim/escape を "実コード寄り" に1段上げ、実アプリ側(MiniJsonLoader 相当)の失敗形を先に捕まえる状態にする。 ## 実施内容 ### P0-1: next_non_ws 3ケース固定(VM+LLVM) - **拡張**: apps/tests/phase96_json_loader_next_non_ws_min.hako に3つ目のケース追加(`\n\r\tX` → 期待値 `3`) - **smoke更新**: phase96_json_loader_next_non_ws_vm.sh と phase97_next_non_ws_llvm_exe.sh を3行比較に対応 ### P0-2: escape 末尾バックスラッシュ固定(VM+LLVM) - **新規fixture**: apps/tests/phase99_json_loader_escape_trailing_backslash_min.hako(`"hello\\` → 期待値 `hello\`) - **現行仕様**: 末尾バックスラッシュは **best-effort**(そのまま出力)として固定 - **新規smoke**: phase99_escape_trailing_backslash_vm.sh と phase99_escape_trailing_backslash_llvm_exe.sh で検証 ## 検証 - cargo test --lib - bash tools/smokes/v2/profiles/integration/apps/phase96_json_loader_next_non_ws_vm.sh - bash tools/smokes/v2/profiles/integration/apps/phase97_next_non_ws_llvm_exe.sh - bash tools/smokes/v2/profiles/integration/apps/phase99_escape_trailing_backslash_vm.sh - bash tools/smokes/v2/profiles/integration/apps/phase99_escape_trailing_backslash_llvm_exe.sh ## 原則 - **pattern増殖なし**: 既存の Policy/Recipe/Emitter で表現できる範囲だけを追加 - **integration smokeのみ**: LLVM不足/plugins不足はSKIP