docs(phases): restore Phase 18/19 from history (3826089)\n\n- Phase 18: LifeBox principles and LoopForm design doc\n- Phase 19: LoopForm <-> Core-13 PoC and zero-cost CI plan\n\nRecovered from commit 3826089; reintroduce missing directories under docs/development/roadmap/phases/

This commit is contained in:
Tomoaki
2025-09-08 03:30:35 +09:00
parent 10d6b3059a
commit 2578120b23
2 changed files with 73 additions and 0 deletions

View File

@ -0,0 +1,39 @@
# Phase 18: LifeBox 原則と LoopForm 設計(文書化+最小インタフェース)
目的Why
- 「全てはループ」の統一観に基づき、スコープ/関数/例外/Box を LoopSignal で語る設計を文書として固定。
- 実装は最小インタフェースの骨組み。Core13 の実装は維持しつつ、LoopForm はまだ“思想IR”として扱う。
コア概念(最小)
- LifeBox 原則: BoxLoopのインスタンス。`birth → (next)* → signal → fini`。通常Boxは退化next省略
- ScopeLoopループしないループ: 反復1回/Next禁止/単一入出口。`end` 直前に LIFO で fini を直列化。
- LoopSignal: `{ Next, Break, Return, Err, (必要なら Yield) }`。例外は値+Signal で運ぶ。
LoopForm思想IR
- スコープ: `loop.begin → 本体 → loop.signal(Break|Return) → loop.end`
- 例外/try: 本体が `Result` を返し、`is_err` 分岐→ catch/finally 集約。finally は `end` 直前に一括。
- 状態束ね: 局所変数は state tupleループ状態に束ね、`end` で一括 fini。
Core13 への写像(退化)
- ScopeLoop → 既存の `Jump/Branch/Phi`。追加の call/alloc を発生させない(ゼロコスト退化)。
- 例外統一 → `Result` + `TypeOp(is_err)` + `Branch` + `Phi``?` は Err→Return の定型展開。
- Box終了 → 合流ブロックで `fini` を LIFO 直列(検証器で一回性/順序確認)。
決定トグル(提案)
- ASTは単一・IRで分岐: はいPhase17に準拠
- ScopeLoopを正式モデル化: はい(名称は LifeBox に統合。ScopeLoopは表現上の別名
- 例外は Result分岐で統一: はい
- ゼロコスト条件の監視: Phase19 でCI導入ここでは規約と受入れ基準を明記
受入れ基準Docs
- LifeBox/ScopeLoop/LoopSignal の定義が本文にあり、Core13 への退化ルールが列挙されている。
- 検証規約(単一入出口/Next禁止/LIFO fini/追加call禁止が箇条書きで提示されている。
- Q&A に“なぜLoop化するのかゼロコスト条件は何か例外統一の利点”がまとまっている。
アウトオブスコープPhase18
- LoopForm の実装(変換/実行Phase19 以降
- 詳細トレースAPIPhase19 以降
次フェーズへの受け渡し
- Phase19: LoopForm ⇄ Core13 の往復 PoC、可逆性テストと禁則CI、必要最小の LoopBox 実装feature off 既定)。

View File

@ -0,0 +1,34 @@
# Phase 19: LoopForm ⇄ Core13 PoC と検証・ゼロコストCI
目的Why
- Phase18 の設計を具体化し、限定範囲で LoopForm ⇄ Core13 の往復を成立させる。
- 可逆性と“ゼロコスト退化”の検証を自動化CIし、設計の健全性を継続的に保証する。
やることPoC
- 変換: `lower_loop(ast) -> LoopModule`(限定サブセット)
- 実行: `interp-loop`(限定サブセット)
- ラウンドトリップ: `LoopForm -> Core13``Core13 -> LoopForm`退化ScopeLoopは等価
検証と禁則CI
- 可逆性テスト: 値・分岐・fini順序・効果が一致。
- ゼロコスト条件: 退化ScopeLoopの Core13 で “余計な `ExternCall/alloc` がゼロ”。
- 手順: IR差分/統計で call/alloc 新規発生が無いことをチェック。
- 将来: AOT/ASM差分の軽量比較変換に伴う命令増なし
LoopBox最小・非既定
- 目的: 第一級ループとして外部へ渡す/中断再開/反射トレース時のみ具現化。
- API: `birth/next/signal/fini` + `TypeOp is_signal_kind` + unwrap_*。
- 既定: feature off本体は退化ScopeLoopで十分
段階的導入
- M1: 退化ScopeLoopの往復可逆性テスト + ゼロコストCIIR差分
- M2: LoopBox最小実装 + verifybirth→(next)*→fini 一回性)
- M3: NDJSON拡張trace/ping/subscribeと観測ポイント
アウトオブスコープPhase19
- 最適化・高度なスケジューリングPhase20+
備考
- 例外は Result分岐で統一引き続き
- ASTは単一・IR分岐のまま維持