From 7b675a6a27a7f1abee45a316834c8d5986bc1915 Mon Sep 17 00:00:00 2001 From: nyash-codex Date: Mon, 15 Dec 2025 12:36:46 +0900 Subject: [PATCH] docs: Phase 133 P0 - Promoted carrier join_id summary (JsonParser pattern) --- .../current/main/phases/phase-133/README.md | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 docs/development/current/main/phases/phase-133/README.md diff --git a/docs/development/current/main/phases/phase-133/README.md b/docs/development/current/main/phases/phase-133/README.md new file mode 100644 index 00000000..a6a24c01 --- /dev/null +++ b/docs/development/current/main/phases/phase-133/README.md @@ -0,0 +1,66 @@ +# Phase 133: Promoted Carrier Join ID (Loop Condition Promotion) + +**Date**: 2025-12-15 +**Status**: ⏳ Planning (P0 fixture/smoke ready, awaiting fix) +**Scope**: Loop内のcondition promotionにおいて、promoted carrierにjoin_idが割り当てられていない問題を解決 + +--- + +## 背景 + +実アプリ由来のループパターン(JsonParserBox._skip_whitespace)から発見: + +```nyash +loop(index < s.length()) { + local char = s.substring(index, index + 1) + if char == " " { // ← promoted carrier が生成される + count = count + 1 + index = index + 1 + } else { + break // ← break時の join_id が未割り当て + } +} +``` + +**エラー**: `[phase229] promoted carrier 'is_char_match' has no join_id` + +--- + +## 根本原因 + +- [cond_promoter] がループ内の条件式 `char == " "` を `promoted carrier` に昇格 +- break時のexitブロックでこのcarrierの値をどうするか(join_id)が未定義 +- Phase 229(Promoted Carrier Join ID割り当て)で panic + +--- + +## 修正対象 + +**Phase 229**: Promoted Carrier Join ID割り当ての拡張 +- Loop exit時に promoted carrier が安全に処理される +- Exit PHI と promoted carrier の生命周期統合 + +--- + +## 検証 + +### P0: Fixture & Smoke Test 実装 +- ✅ Fixture: `apps/tests/phase133_json_skip_whitespace_min.hako` +- ✅ Smoke: `tools/smokes/v2/profiles/integration/apps/phase133_json_skip_whitespace_llvm_exe.sh` + - VM: promoted carrier join_id エラーを検出(Phase 133 修正前の状態) + - LLVM EXE: build時に同じエラーを検出 + +**Acceptance Criteria (P0)**: +- bash tools/smokes/v2/profiles/integration/apps/phase133_json_skip_whitespace_llvm_exe.sh が 2/2 PASS +- Phase 132 smoke test(退行チェック)も PASS + +### P1: _unescape_string 追加 +同じJsonParser由来の別ループ(continue + 可変ステップ)で、promoted carrierパターンを追加検証 + +--- + +## 参考 + +- **Fixture**: `apps/tests/phase133_json_skip_whitespace_min.hako` +- **Smoke Test**: `tools/smokes/v2/profiles/integration/apps/phase133_json_skip_whitespace_llvm_exe.sh` +- **Phase 132**: Exit PHI value parity (Phase 133は promoted carrierの寿命管理を扱う)