# Phase1改善 進捗管理

## 概要

Railway Framework 開発者体験レビューに基づく改善項目の進捗管理。

---

## 現在のアーキテクチャ

**採用**: Output Model Pattern（レビュー2で決定）

```python
# Contract（型契約）でノード間データを定義
class UsersFetchResult(Contract):
    users: list[User]
    total: int

# ノードは inputs/output を明示
@node(output=UsersFetchResult)
def fetch_users() -> UsersFetchResult:
    return UsersFetchResult(users=[...], total=10)

# typed_pipeline で依存自動解決
result = typed_pipeline(fetch_users, process_users)
```

---

## アクティブIssue一覧（v0.8.0対応）

レビュー3（2026-01-19）で特定された改善項目。

### 優先度: 高（2件）

| # | Issue | 状態 | 概要 |
|---|-------|------|------|
| 17 | [py.typed追加](./17_py.typed追加.md) | ✅完了 | mypyで型チェック不可（致命的） |
| 18 | [チュートリアル整合性修正](./18_チュートリアル整合性修正.md) | ✅完了 | init後にhelloが動かない |

### 優先度: 中（3件）

| # | Issue | 状態 | 概要 |
|---|-------|------|------|
| 19 | [テストテンプレート改善](./19_テストテンプレート改善.md) | ✅完了 | 生成テストが即座に動かない |
| 20 | [エントリポイントテスト修正](./20_エントリポイントテスト修正.md) | ✅完了 | sys.argv問題 |
| 22 | [遷移ルール無関心の価値伝達](./22_遷移ルール無関心の価値伝達.md) | ✅完了 | パイプライン変更がNodeに波及しない価値を明示 |

### 対応不要（1件）

| # | Issue | 状態 | 概要 |
|---|-------|------|------|
| 21 | [--example出力シンプル化](./21_example出力シンプル化.md) | 統合済み | #18で対応 |

---

## 進捗サマリー

| 状態 | 件数 |
|------|------|
| 完了 | 5 |
| 進行中 | 0 |
| 未着手 | 0 |
| 統合済み | 1 |
| **実質合計** | **5** |

🎉 **全Issue完了！**

---

## 推奨実装順序

```
1. #17 py.typed追加
   ↓ (型安全の根幹を確立)
2. #18 チュートリアル整合性修正
   ↓ (初回体験を改善、#21も解決)
3. #22 遷移ルール無関心の価値伝達
   ↓ (Output Model Patternの核心的価値を明示)
4. #19 テストテンプレート改善
   ↓ (TDD体験を改善)
5. #20 エントリポイントテスト修正
   (テスト品質向上)
```

---

## レビューサイクル記録

### サイクル1: 構造整理

**発見した問題:**
- 古いContext変数アーキテクチャのissueが混在
- 重複・競合するissue（#15, #16 vs 完了済み/2/#06, #07）

**実施した改善:**
- 古いissue 6件を保留フォルダに移動（#07, #09, #10, #12, #15, #16）
- PROGRESS.md更新

### サイクル2: Issue品質向上

**発見した問題:**
- #17: pyproject.toml設定が不正確
- #18: 実装計画の詳細不足
- #21: #18で対応可能

**実施した改善:**
- #17: hatchling設定を正確に記載、テストを実用的に
- #18: コード調査結果追加、具体的な実装箇所を明記
- #21: #18への統合を明記

### サイクル3: 最終確認

**結果:**
- 全4件のissueが実装可能な状態
- 依存関係が明確
- 使いやすさへの貢献が明確

### 実装サイクル（2026-01-19）

TDDに基づいて全Issue #17-#22を実装完了。

#### #17 py.typed追加
- `railway/py.typed` 作成
- `tests/unit/test_typing.py` テスト追加
- mypyでの型チェックが可能に

#### #18 チュートリアル整合性修正
- `_create_simple_hello_entry()` 追加
- `railway init` デフォルトで `src/hello.py` 作成
- Next Steps に `railway run hello` 表示
- `tests/unit/cli/test_init_hello.py` テスト追加

#### #22 遷移ルール無関心の価値伝達
- TUTORIAL.md に「Step 6.3 Nodeはパイプライン構成に依存しない」追加
- パイプライン構成変更でもNode実装不変の利点を明示
- `tests/unit/cli/test_tutorial_content.py` テスト追加

#### #19 テストテンプレート改善
- `_get_typed_node_test_template()` を `pytest.skip()` パターンに変更
- 生成されたテストが即座に実行可能（skip）
- `tests/unit/cli/test_generated_test_template.py` テスト追加

#### #20 エントリポイントテスト修正
- `_get_entry_test_template()` を CliRunner パターンに変更
- エントリテンプレートに `app = main._typer_app` エクスポート追加
- `entry_point` デコレータに `_impl` 属性追加
- sys.argv汚染問題を解決
- `tests/unit/cli/test_entry_test_template.py` テスト追加

**テスト結果:** 全334テスト通過 ✅

---

## 過去のレビュー対応

### レビュー1対応 ✅
→ [完了済み/1/](./完了済み/1/)

### レビュー2対応 ✅
→ [完了済み/2/](./完了済み/2/)

---

## 保留Issue

→ [保留/](./保留/)

以下は**却下されたContext変数アーキテクチャ**に基づくissue:
- #07, #09, #10, #12, #15, #16

---

## レビュー3 フィードバックサマリー

### 評価: B+ (51/70 = 73%)

| 領域 | スコア | 対応Issue |
|------|--------|-----------|
| セットアップ | 7/10 | #18 |
| CLI | 8/10 | - |
| コード生成 | 7/10 | #19 |
| 型安全性 | 6/10 | #17 |
| テスト | 7/10 | #19, #20 |
| チュートリアル | 7/10 | #17, #18, #22 |
| ログ・デバッグ | 9/10 | - |

### 目標

これらのIssueを解決することで:
- 型安全性: 6/10 → 9/10
- セットアップ: 7/10 → 9/10
- 総合評価: B+ → A-
