docs(phase29ao): add p33 pattern2 loopbodylocal planner-derive instruction

This commit is contained in:
2025-12-30 15:34:58 +09:00
parent dd7f923b88
commit 363549b152
5 changed files with 115 additions and 5 deletions

View File

@ -3,8 +3,8 @@
## Current Focus
- Phase: `docs/development/current/main/phases/phase-29ao/README.md`
- Next: Phase 29ao P33TBD
- 指示書: TBD
- Next: Phase 29ao P33Pattern2 LoopBodyLocal planner-derive + tag gate
- 指示書: `docs/development/current/main/phases/phase-29ao/P33-PLANNER-DERIVE-PATTERN2-LOOPBODYLOCAL-SMOKES-INSTRUCTIONS.md`
## Gate (SSOT)

View File

@ -6,6 +6,7 @@ Scope: 「次にやる候補」を短く列挙するメモ。入口は `docs/dev
## Active
- CorePlan migration: `docs/development/current/main/phases/phase-29ao/README.md`Next: P33
- 指示書: `docs/development/current/main/phases/phase-29ao/P33-PLANNER-DERIVE-PATTERN2-LOOPBODYLOCAL-SMOKES-INSTRUCTIONS.md`
## Near-Term Candidates

View File

@ -34,8 +34,8 @@ Related:
## 1.1 Current (active)
- Active phase: `docs/development/current/main/phases/phase-29ao/README.md`
- Next step: Phase 29ao P33TBD
- After P32: TBD
- Next step: `docs/development/current/main/phases/phase-29ao/P33-PLANNER-DERIVE-PATTERN2-LOOPBODYLOCAL-SMOKES-INSTRUCTIONS.md`
- After P33: TBD
## 2. すでに固めた SSOT再発防止の土台

View File

@ -0,0 +1,108 @@
---
Status: Ready
Scope: code+tests+docs仕様不変・strict/devのみ観測強化
Related:
- docs/development/current/main/phases/phase-29ao/README.md
- docs/development/current/main/design/coreplan-migration-roadmap-ssot.md
- tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh
- tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_loopbodylocal_min_vm.sh
- tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_loopbodylocal_seg_min_vm.sh
- src/mir/builder/control_flow/plan/facts/pattern2_break_facts.rs
- src/mir/builder/control_flow/plan/facts/pattern2_loopbodylocal_facts.rs
- src/mir/builder/control_flow/plan/planner/build.rs
- src/mir/builder/control_flow/plan/composer/shadow_adopt.rs
---
# Phase 29ao P33: Pattern2 LoopBodyLocalphase29abを planner 由来に引き上げ、shadow adopt タグを回帰で固定する
Date: 2025-12-30
Status: Ready for execution
Goal: `phase29ab_pattern2_loopbodylocal_{min,seg_min}` が strict/dev で **planner 由来の `DomainPlan::Pattern2Break`** になり、既存の shadow adopt タグ
`[coreplan/shadow_adopt:pattern2_break_subset]` が必ず出るようにして回帰で固定する。
## 背景
- `phase29ab_pattern2_loopbodylocal_*` は現状、promotion hint タグ(`[plan/pattern2/promotion_hint:*]`)は出るが、
`outcome.plan``Pattern2Break` ではないため shadow adopt が走らず、CorePlan 経路の差分検知ができない。
- Phase 29ao の “段階1strict/dev完了” は、「回帰パックに含まれる代表ケースが shadow adopt タグで検知できる」状態。
Pattern2 の realworldphase263は P32 で埋めたので、次は phase29ab の LoopBodyLocal を埋めるのが自然。
## 非目的
- release 既定挙動の変更
- NotApplicable/Freeze ケースの “無理な planner 化”
- 新しい env var 追加
- タグ名の増殖(既存タグを流用する)
## 受け入れ基準Acceptance
- `cargo build --release` が通る
- `./tools/smokes/v2/run.sh --profile quick` が通る(既定挙動不変)
- `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh` が通る
- 次の 2 つの既存 integration smoke が strict/dev の raw output で shadow adopt タグを必須で満たす:
- `tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_loopbodylocal_min_vm.sh`
- `tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_loopbodylocal_seg_min_vm.sh`
## 実装手順(安全順)
### Step 1: Facts 抽出を “phase29ab の LoopBodyLocal 形状” に対応させる
対象:
- `src/mir/builder/control_flow/plan/facts/pattern2_break_facts.rs`
方針:
- 誤マッチ防止優先で、`Ok(None)` を維持しつつ “この2 fixture” を拾える最小条件を追加する。
- `pattern2_loopbodylocal_facts` は既に promotion hint を出しているので、
**break/loop_increment 側の facts 取りこぼし**が主因になっている可能性が高い。
最低限の SSOT:
- `phase29ab_pattern2_loopbodylocal_min.hako`
- `phase29ab_pattern2_loopbodylocal_seg_min.hako`
### Step 2: planner で Pattern2Break を候補に出すplanner 由来にする)
対象:
- `src/mir/builder/control_flow/plan/planner/build.rs`
方針:
- `facts.facts.pattern2_break.is_some()` のとき、`DomainPlan::Pattern2Break(..)` の candidate を push する。
- `facts.facts.pattern2_loopbodylocal` があれば `promotion` を乗せる(既存の composer と同じ)。
注意:
- `pattern2_break` が取れないケースfreeze/notapplicableは candidate を出さないOk(None) を維持)。
### Step 3: shadow adopt の gate は既存のまま(タグは流用)
確認対象:
- `src/mir/builder/control_flow/plan/composer/shadow_adopt.rs`
このファイルは既に
- `DomainPlan::Pattern2Break` かつ `outcome.plan``Pattern2Break` のときだけ adopt
- タグは `[coreplan/shadow_adopt:pattern2_break_subset]`
なので、P33 では増殖しない。
### Step 4: 既存 smoke を “タグ必須” に昇格filter_noise を避ける)
対象:
- `tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_loopbodylocal_min_vm.sh`
- `tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_loopbodylocal_seg_min_vm.sh`
方針:
- `filter_noise``[coreplan/shadow_adopt:*]` を落とすので、raw `OUTPUT` でタグを検証する。
- 既存の promotion hint タグ検証DigitPos/TrimSegと output=2 の期待は維持する。
例(概念):
- `if ! echo "$OUTPUT" | grep -qF '[coreplan/shadow_adopt:pattern2_break_subset]'; then fail; fi`
- その後 `OUTPUT_CLEAN=$(echo "$OUTPUT" | filter_noise)` を使って従来の output/hint を検証
## 検証(必須)
- `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(p33): planner-derive pattern2 loopbodylocal smokes"`

View File

@ -188,5 +188,6 @@ GateSSOT:
## Nextplanned
- Next: P33TBD
- Next: P33Pattern2 LoopBodyLocal planner-derive + tag gate
- 指示書: `docs/development/current/main/phases/phase-29ao/P33-PLANNER-DERIVE-PATTERN2-LOOPBODYLOCAL-SMOKES-INSTRUCTIONS.md`
- After P33: TBD