docs(phase29ao): add p17 pattern1 composer shadow instruction

This commit is contained in:
2025-12-30 08:43:16 +09:00
parent a7bfd009ba
commit 4a9d773114
5 changed files with 92 additions and 6 deletions

View File

@ -2,8 +2,8 @@
## Current Focus: Phase 29aoCorePlan composition
Next: Phase 29ao P17TBD
指示書: TBD
Next: Phase 29ao P17Pattern1 composer strict/dev shadow
指示書: `docs/development/current/main/phases/phase-29ao/P17-COMPOSER-PATTERN1-STRICT-SHADOW-INSTRUCTIONS.md`
運用ルール: integration filter で phase143_* は回さないJoinIR 回帰は phase29ae pack のみ)
運用ルール: phase286_pattern9_* は legacy pack (SKIP) を使う
移行道筋 SSOT: `docs/development/current/main/design/coreplan-migration-roadmap-ssot.md`

View File

@ -15,8 +15,8 @@ Related:
- **Phase 29aoactive: CorePlan composition from Skeleton/Feature**
- 入口: `docs/development/current/main/phases/phase-29ao/README.md`
- 状況: P0P16 ✅ 完了 / Next: P17TBD
- Next 指示書: TBD
- 状況: P0P16 ✅ 完了 / Next: P17Pattern1 composer strict/dev shadow
- Next 指示書: `docs/development/current/main/phases/phase-29ao/P17-COMPOSER-PATTERN1-STRICT-SHADOW-INSTRUCTIONS.md`
- **Phase 29af✅ COMPLETE: Boundary hygiene / regression entrypoint / carrier layout SSOT**
- 入口: `docs/development/current/main/phases/phase-29af/README.md`

View File

@ -0,0 +1,83 @@
---
Status: Ready
Scope: codestrict/dev only, 既定挙動不変)
Related:
- docs/development/current/main/phases/phase-29ao/README.md
- docs/development/current/main/design/coreplan-migration-roadmap-ssot.md
- docs/development/current/main/phases/phase-29ae/README.md
---
# Phase 29ao P17: Pattern1 を Facts→CorePlan へ寄せるstrict/dev のみ shadow adopt
Date: 2025-12-30
Status: Ready for execution
Scope: 既定挙動release/非strictは不変。strict/dev のときだけ Pattern1 の CorePlan を Facts から direct compose して採用する。
## 目的
- “CorePlan で組み立てる” への移行を 1 本だけ進めるPattern1 SimpleWhile のみ)。
- 既存の DomainPlan→Normalizer 経路を壊さず、strict/dev でのみ **Facts→CorePlan(skeleton)** を採用できるようにする。
- 対象外Ok(None))や不一致は Fail-Faststrict/devで検出し、silent fallback を増やさない。
## 非目的
- Pattern2/3/4/5/6/7/8/9 の composer 化
- header PHI を block_params 化frag だけでは preheader incoming を観測できないため段階未到達)
- 新 env var 追加、恒常ログ追加、エラー文字列変更strict/dev の Fail-Fast は既存方針)
## 対象
- `src/mir/builder/control_flow/joinir/patterns/router.rs`
- `src/mir/builder/control_flow/plan/planner/outcome.rs`
- `src/mir/builder/control_flow/plan/normalizer/skeleton_loop.rs`(既存: Pattern1 subset の direct skeleton
## 方針(最小・安全)
### 언제採用するかstrict/dev のみ)
- `DomainPlan::Pattern1SimpleWhile(_)` が選ばれた場合のみ対象
- strict/dev のときだけ、同じ AST から `planner::build_plan_with_facts_ctx(..)` をもう一度呼び、
`outcome.facts``Some(CanonicalLoopFacts)` かつ `facts.facts.pattern1_simplewhile.is_some()` のときだけ
`PlanNormalizer::normalize_loop_skeleton_from_facts(..)` を呼んで `CorePlan` を作る
- 生成した CorePlan は `PlanVerifier::verify` を通し、`PlanLowerer::lower` で実行する
### 失敗時
- strict/dev のとき:
- “Pattern1 が選ばれたのに facts から合成できない” は Err で Fail-FastSSOT ずれ検出)
- 非strict:
- 何もしない(既定挙動不変)
## 実装手順
### Step 1: router の plan 経路で Pattern1 だけ composer を先に試すstrict/dev only
- `route_loop_pattern()``if let Some(domain_plan) = ...` ブロックの直後に以下を追加:
- `if strict_or_dev && matches!(domain_plan, DomainPlan::Pattern1SimpleWhile(_)) { ... }`
- planner outcome を作って facts を取り出し、`normalize_loop_skeleton_from_facts` を呼ぶ
- 成功したらその CorePlan を採用verifier→lowerer
- 失敗したら Errstrict/dev
注意: 既存ログroute=plan strategy=extract pattern=pattern1は維持すること追加ログは増やさない
### Step 2: 最小の確認
- strict/dev で Pattern1 が通ること(手元で 1 ケース)
- 例: `HAKO_JOINIR_STRICT=1` をつけて VM 実行(既存の loop fixture でよい)
## 検証(必須)
- `cargo test --release -p nyash-rust --lib`
- `cargo build --release`
- `./tools/smokes/v2/run.sh --profile quick`
- `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh`
## コミット
- `git add -A`
- `git commit -m "phase29ao(p17): strict/dev adopt composer for pattern1"`
## 次P18候補
- P18: Pattern1 の composer 化を “strict/dev only” から “既定経路” へ昇格(ただし観測/挙動不変の確認が前提)。

View File

@ -105,4 +105,5 @@ GateSSOT:
## Nextplanned
- P17: TBD
- P17: Pattern1 を Facts→CorePlan へ寄せるstrict/dev のみ shadow adopt
- 指示書: `docs/development/current/main/phases/phase-29ao/P17-COMPOSER-PATTERN1-STRICT-SHADOW-INSTRUCTIONS.md`