Files
hakorune/docs/development/current/main/phases/phase-29ao/README.md

14 KiB
Raw Blame History

Status, Scope, Related
Status Scope Related
Active CorePlan compositionFeature合成→Normalizerへ、仕様不変で段階導入
docs/development/current/main/design/coreplan-migration-roadmap-ssot.md
docs/development/current/main/design/coreplan-skeleton-feature-model.md
docs/development/current/main/design/post-phi-final-form-ssot.md
docs/development/current/main/design/exitkind-cleanup-effect-contract-ssot.md
docs/development/current/main/phases/phase-29ae/README.md

Phase 29ao: CorePlan composition from Skeleton/Feature (Step-C/D)

Goal: DomainPlan の “complete pattern” に寄り過ぎない形で、Skeleton + Feature から CorePlan を合成していく(仕様不変で段階導入)。

GateSSOT:

  • ./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh

P0: Composer scaffold未接続・仕様不変

  • 指示書: docs/development/current/main/phases/phase-29ao/P0-COREPLAN-COMPOSER-SCAFFOLD-INSTRUCTIONS.md
  • ねらい: CanonicalLoopFactsprojection済みCorePlan 合成の入口を 1 箇所に作り、以後の実装を “合成だけ” に寄せる

P1: Composer API決定 + bridge未接続・仕様不変

  • 指示書: docs/development/current/main/phases/phase-29ao/P1-COREPLAN-COMPOSER-API-BRIDGE-INSTRUCTIONS.md
  • ねらい:
    • CorePlanBasicBlockId/ValueId/Frag を要求するため、Facts→合成の段階で どこが allocation を持つかを SSOT として固定する
    • まずは “bridge” として、composer が CanonicalLoopFacts から DomainPlan(既存語彙)を構築して PlanNormalizer を呼べる形まで整える(未接続のまま)

P2: Composer→Normalizer bridge未接続・仕様不変

  • 指示書: docs/development/current/main/phases/phase-29ao/P2-COREPLAN-COMPOSER-VIA-NORMALIZER-INSTRUCTIONS.md
  • ねらい: CanonicalLoopFacts → DomainPlan → PlanNormalizer → CorePlan の橋渡しを未接続で固定

P3: CoreLoop skeleton を CorePlan で直接生成(未接続・仕様不変)

  • 指示書: docs/development/current/main/phases/phase-29ao/P3-CORELOOP-SKELETON-COMPOSE-INSTRUCTIONS.md
  • ねらい: CanonicalLoopFacts から CorePlan::Loopskeletonを direct 生成Pattern1 subset のみ)

P4: ExitMap presence を Frag.exits に投影(未接続・仕様不変)

  • 指示書: docs/development/current/main/phases/phase-29ao/P4-EXITMAP-PRESENCE-WIRE-INSTRUCTIONS.md
  • ねらい: exit_kinds_present の presence を Frag.exits に投影(未配線のまま語彙だけ固定)

P5: Cleanup presence を ExitKind 語彙へ投影(未接続・仕様不変)

  • 指示書: docs/development/current/main/phases/phase-29ao/P5-CLEANUP-PRESENCE-WIRE-INSTRUCTIONS.md
  • ねらい: cleanup_kinds_present を ExitKind 語彙として Frag.exits に投影(未配線のまま語彙だけ固定)

P6: ValueJoin presence の安全ゲート(未接続・仕様不変)

  • 指示書: docs/development/current/main/phases/phase-29ao/P6-VALUEJOIN-PRESENCE-GATE-INSTRUCTIONS.md
  • ねらい: value_join_needed が立つケースは direct skeleton を採用しないfallback維持

P7: ValueJoin wireEdgeArgs layout の語彙固定 + 局所 verify

  • 指示書: docs/development/current/main/phases/phase-29ao/P7-VALUEJOIN-EDGEARGS-LAYOUT-VERIFY-INSTRUCTIONS.md
  • ねらい: ExprResultPlusCarriers の語彙と最小検証を PlanVerifier に追加(未接続)

P8: compose が EdgeArgs を保持することの検証(仕様不変)

  • 指示書: docs/development/current/main/phases/phase-29ao/P8-VALUEJOIN-EDGEARGS-COMPOSE-PRESERVE-INSTRUCTIONS.md
  • ねらい: compose::seq/if_/cleanup が EdgeArgs(layout+values) を保持することをテストで固定

P9: ValueJoin minimal wireBlockParams 足場 + strict/dev Fail-Fast

  • 指示書: docs/development/current/main/phases/phase-29ao/P9-VALUEJOIN-MINIMAL-WIRE-INSTRUCTIONS.md
  • ねらい: EdgeCFG の block params 足場と strict/dev verify を追加し、join 受け口の整合を Fail-Fast で固定

P10: ValueJoin minimal wiringblock_params → MIR PHI

  • 指示書: docs/development/current/main/phases/phase-29ao/P10-VALUEJOIN-BLOCKPARAMS-PHI-INSERTION-INSTRUCTIONS.md
  • ねらい: Frag.block_paramsemit_frag() で PHI に落とす唯一の接続点を追加(未接続のまま)

P11: Normalizer generates block_params (If2 demo)

  • 指示書: docs/development/current/main/phases/phase-29ao/P11-VALUEJOIN-NORMALIZER-GENERATES-BLOCKPARAMS-INSTRUCTIONS.md
  • ねらい: Normalizer が Frag.block_params を生成する最小ケースを追加し、PHI挿入まで unit test で固定

P12: ValueJoin の最初の実使用Pattern7 SplitScan の step join を block_params 化)

  • 指示書: docs/development/current/main/phases/phase-29ao/P12-VALUEJOIN-FIRST-REAL-USAGE-PATTERN7-SPLITSCAN-INSTRUCTIONS.md
  • ねらい: step join の 2 PHI を Frag.block_params + EdgeArgs で表現し、emit_frag() の挿入経路を 1 件固定

P13: ValueJoin expr_result の実使用Pattern3 IfPhi の merge join を block_params 化)

  • 指示書: docs/development/current/main/phases/phase-29ao/P13-VALUEJOIN-REAL-USAGE-PATTERN3-IFPHI-MERGE-INSTRUCTIONS.md
  • ねらい: merge join の 1 PHI を Frag.block_params + EdgeArgs で表現し、expr_result 的な join 値の経路を 1 件固定

P14: ValueJoin exit の実使用Pattern2 Break の after join を block_params 化)

  • 指示書: docs/development/current/main/phases/phase-29ao/P14-VALUEJOIN-REAL-USAGE-PATTERN2-BREAK-EXITJOIN-INSTRUCTIONS.md
  • ねらい: after join の 1 PHI を Frag.block_params + EdgeArgs で表現し、exit join の経路を 1 件固定

P15: JoinIR 回帰パックに Pattern3(IfPhi, VM) を追加

  • 指示書: docs/development/current/main/phases/phase-29ao/P15-REGRESSION-PACK-INCLUDE-PATTERN3-INSTRUCTIONS.md
  • ねらい: P13 の実経路Pattern3 IfPhiが回帰ゲートphase29ae packで必ず実行されるようにする

P16: ValueJoin exit の実使用Pattern5 Infinite Early-Exit の after join を block_params 化)

  • 指示書: docs/development/current/main/phases/phase-29ao/P16-VALUEJOIN-REAL-USAGE-PATTERN5-EXITJOIN-INSTRUCTIONS.md
  • ねらい: after join の 1 PHI を Frag.block_params + EdgeArgs で表現し、exit join の経路を 1 件固定

P17: Pattern1 を Facts→CorePlan へ寄せるstrict/dev のみ shadow adopt

  • 指示書: docs/development/current/main/phases/phase-29ao/P17-COMPOSER-PATTERN1-STRICT-SHADOW-INSTRUCTIONS.md
  • ねらい: strict/dev のみ Facts→CorePlan(skeleton) を採用し、既定経路は維持

P18: single_planner が planner outcomefacts+planを返すP17の二重planner呼び出し撤去

  • 指示書: docs/development/current/main/phases/phase-29ao/P18-SINGLE_PLANNER-OUTCOME-PLUMBING-INSTRUCTIONS.md
  • ねらい: planner outcome を single_planner から受け取り、router の二重実行を撤去

P19: 回帰ゲートに Pattern1 strict/dev shadow adopt を含める

  • 指示書: docs/development/current/main/phases/phase-29ao/P19-REGRESSION-PACK-ADD-PATTERN1-STRICT-SHADOW-INSTRUCTIONS.md
  • 変更:
    • tools/smokes/v2/profiles/integration/joinir/phase29ao_pattern1_strict_shadow_vm.sh を追加
    • tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh に組み込み
    • docs/development/current/main/phases/phase-29ae/README.md の回帰セットに追記
  • ねらい: P17/P18 の strict/dev shadow adopt が回帰ゲートで必ず踏まれる状態を SSOT 化

P20: CoreLoop ExitMap compositiondocs-first

  • 指示書: docs/development/current/main/phases/phase-29ao/P20-CORELOOP-EXITMAP-COMPOSITION-SSOT-INSTRUCTIONS.md
  • ねらい: Loop skeleton に対する ExitMap/Cleanup/ValueJoin の合成規約を SSOT として固定

P21: Pattern1 subset body is step-onlyshadow adopt safety

  • 指示書: docs/development/current/main/phases/phase-29ao/P21-PATTERN1-SUBSET-BODY-IS-STEP-ONLY-INSTRUCTIONS.md
  • ねらい: Pattern1 subset を body=step のみに引き締め、strict/dev shadow adopt の誤マッチを遮断

P22: Dedup Pattern1 CoreLoop constructionSSOT統一

  • 指示書: docs/development/current/main/phases/phase-29ao/P22-DEDUP-PATTERN1-CORELOOP-CONSTRUCTION-INSTRUCTIONS.md
  • ねらい: DomainPlan/Facts 経路の CoreLoop 構築を 1 箇所へ統一し divergence を防ぐ

P23: strict/dev Pattern3 adopt from factsIfPhi

  • 指示書: docs/development/current/main/phases/phase-29ao/P23-STRICT-ADOPT-PATTERN3-IFPHI-FROM-FACTS-INSTRUCTIONS.md
  • ねらい: Pattern3 を strict/dev で Facts→CorePlan に寄せ、DomainPlan とのズレを早期検知

P24: strict/dev Pattern7 adopt from factsSplitScan

  • 指示書: docs/development/current/main/phases/phase-29ao/P24-STRICT-ADOPT-PATTERN7-SPLITSCAN-FROM-FACTS-INSTRUCTIONS.md
  • ねらい: Pattern7 を strict/dev で Facts→CorePlan に寄せ、fallback/近似マッチによるズレを早期検知(既定挙動は不変)

P25: strict/dev Pattern5 adopt from factsInfinite Early-Exit

  • 指示書: docs/development/current/main/phases/phase-29ao/P25-STRICT-ADOPT-PATTERN5-INFINITE-EARLY-EXIT-FROM-FACTS-INSTRUCTIONS.md
  • ねらい: Pattern5 を strict/dev で Facts→CorePlan に寄せ、DomainPlan 経路との差分を早期検知(既定挙動は不変)

P26: strict/dev Pattern2(Break) subset adopt from facts

  • 指示書: docs/development/current/main/phases/phase-29ao/P26-STRICT-ADOPT-PATTERN2-BREAK-SUBSET-FROM-FACTS-INSTRUCTIONS.md
  • ねらい: Pattern2 のうち Facts が表現できる subset を strict/dev で Facts→CorePlan に寄せ、段階的に CorePlan 合成へ収束(既定挙動は不変)

P27: strict/dev Pattern6(ScanWithInit) subset adopt from facts

  • 指示書: docs/development/current/main/phases/phase-29ao/P27-STRICT-ADOPT-PATTERN6-SCANWITHINIT-SUBSET-FROM-FACTS-INSTRUCTIONS.md
  • ねらい: Pattern6 のうち planner subsetFacts由来だけを strict/dev で Facts→CorePlan に寄せ、reverse/matchscan 等の variant は fallback 維持(既定挙動は不変)

P28: Shadow adopt observabilitystrict/dev tags + gate smokes

  • 指示書: docs/development/current/main/phases/phase-29ao/P28-SHADOW-ADOPT-OBSERVABILITY-TAGS-AND-GATE-SMOKES-INSTRUCTIONS.md
  • ねらい: strict/dev の shadow adopt が “実際に踏まれている” ことを安定タグと回帰スモークで SSOT 化(仕様不変)

P29: Shadow adopt tag coverageall gate patterns

  • 指示書: docs/development/current/main/phases/phase-29ao/P29-SHADOW-ADOPT-TAGS-COVERAGE-ALL-GATE-PATTERNS-INSTRUCTIONS.md
  • ねらい: regression gate に含まれる全パターンで “shadow adopt を踏んだ” をタグ必須として固定(仕様不変)

P30: Shadow adopt composer SSOTFacts→CorePlan入口を集約

  • 指示書: docs/development/current/main/phases/phase-29ao/P30-MOVE-SHADOW-ADOPT-COMPOSER-SSOT-INSTRUCTIONS.md
  • ねらい: Facts→CorePlan の入口を plan/composer に集約し、Normalizer の責務を DomainPlan→CorePlan に縮退(挙動不変)

P31: shadow adopt routing SSOTrouter を薄くする)

  • 指示書: docs/development/current/main/phases/phase-29ao/P31-REFactor-SHADOW-ADOPT-ROUTER-TO-COMPOSER-SSOT-INSTRUCTIONS.md

P32: Pattern2 real-world strict/dev shadow adoptphase263 をタグ必須で固定)

  • 指示書: docs/development/current/main/phases/phase-29ao/P32-STRICT-ADOPT-PATTERN2-REALWORLD-FROM-FACTS-INSTRUCTIONS.md
  • ねらい: phase263_pattern2_* が strict/dev で Facts→CorePlan shadow adopt を踏むことを “タグ必須” で固定し、CorePlan 完全移行の回帰穴を塞ぐ(仕様不変)

P33: Pattern2 LoopBodyLocal planner-derive + tag gate

  • 指示書: docs/development/current/main/phases/phase-29ao/P33-PLANNER-DERIVE-PATTERN2-LOOPBODYLOCAL-SMOKES-INSTRUCTIONS.md
  • ねらい: phase29ab_pattern2_loopbodylocal_{min,seg_min} を planner 由来 Pattern2Break に引き上げ、shadow adopt タグを strict/dev 回帰で必須化(仕様不変)

P34: Pattern2 negative shadow adopt tag gates

  • 指示書: docs/development/current/main/phases/phase-29ao/P34-PATTERN2-NEGATIVE-SHADOW-ADOPT-TAG-GATES-INSTRUCTIONS.md
  • ねらい: phase29ab_pattern2_seg_{freeze,notapplicable} で shadow adopt タグが出ないことを回帰で固定(仕様不変)

P35: Shadow-adopt tag coverage SSOT + Pattern1 negative gate

  • 指示書: docs/development/current/main/phases/phase-29ao/P35-SHADOW-ADOPT-TAG-COVERAGE-SSOT-AND-PATTERN1-NEGATIVE-GATE-INSTRUCTIONS.md
  • ねらい: タグ必須/禁止を SSOT 化し、Pattern1 subset reject の negative gate を回帰で固定(仕様不変)

P36: Stage-2 pilot — release adopt Pattern1 CorePlan skeleton (subset)

  • 指示書: docs/development/current/main/phases/phase-29ao/P36-RELEASE-ADOPT-PATTERN1-COREPLAN-SKELETON-PILOT-INSTRUCTIONS.md
  • ねらい: Pattern1 subset を release 既定でも Facts→CorePlan(skeleton) で採用する Stage-2 パイロット(仕様不変)

P37: Stage-2 expand — release adopt Pattern6 (ScanWithInit) subset

  • 指示書: docs/development/current/main/phases/phase-29ao/P37-RELEASE-ADOPT-PATTERN6-SCANWITHINIT-SUBSET-INSTRUCTIONS.md
  • ねらい: Pattern6 planner subset を release 既定で Facts→CorePlan に採用し、非strict経路の回帰を追加仕様不変

P38: Stage-2 expand — release adopt Pattern7 (SplitScan) subset

  • 指示書: docs/development/current/main/phases/phase-29ao/P38-RELEASE-ADOPT-PATTERN7-SPLITSCAN-SUBSET-INSTRUCTIONS.md
  • ねらい: Pattern7 planner subset を release 既定で Facts→CorePlan に採用し、非strict経路の回帰を追加仕様不変

P39: Stage-2 expand — release adopt Pattern2 (Break) subset

  • 指示書: docs/development/current/main/phases/phase-29ao/P39-RELEASE-ADOPT-PATTERN2-BREAK-SUBSET-INSTRUCTIONS.md
  • ねらい: Pattern2 planner subset を release 既定で Facts→CorePlan に採用し、非strict経路の回帰を追加仕様不変

Nextplanned

  • Next: P40Stage-2 expand: Pattern3
  • 指示書: docs/development/current/main/phases/phase-29ao/P40-RELEASE-ADOPT-PATTERN3-IFPHI-SUBSET-INSTRUCTIONS.md