Commit Graph

2 Commits

Author SHA1 Message Date
5c75506dcc feat(joinir): Phase 66 - Ownership-Relay Multihop Implementation (dev-only)
Phase 65設計に基づき、relay_path.len() > 1 を analysis/plan 層で受理するよう実装。

Key changes:
- plan_to_lowering.rs: relay_path.len() > 1 制限撤去 + 構造的 Fail-Fast 維持
  - relay_path.is_empty() → Err(loop relay は最低 1 hop)
  - relay_path[0] != plan.scope_id → Err(この scope が最初の hop)
  - relay.owner_scope == plan.scope_id → Err(relay と owned は排他)
  - owned_vars ∩ relay_writes ≠ ∅ → Err(同名は不変条件違反)

- ast_analyzer.rs: 3階層 multihop テスト追加
  - multihop_relay_detected_for_3_layer_nested_loops

Unit tests (plan_to_lowering):
- test_relay_multi_hop_accepted_in_with_relay
- test_relay_path_empty_rejected_in_with_relay
- test_relay_path_not_starting_at_plan_scope_rejected
- test_relay_owner_same_as_plan_scope_rejected
- test_owned_and_relay_same_name_rejected

Tests: normalized_dev 49/49 PASS, lib 947/947 PASS
Design: Analysis-only, no behavior change in production lowering

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-12 23:33:16 +09:00
ba68fb2bad docs(joinir): Phase 65 - Ownership-Relay Multihop Design (設計のみ)
Multihop relay(複数階層を跨ぐrelay)の完全な設計文書を作成。
Phase 66実装の土台となる意味論と不変条件を確立。

Key design decisions:
- Multihop relay 意味論: relay_path(内→外の順)、段階的carrier化
- Merge relay 意味論: PERMIT with owner merge(複数inner loopが同一祖先owned変数を更新)
- Fail-Fast 解除条件: Phase 66実装時の受け入れ基準を明文化
- 実装箇所の特定: Analyzer変更不要、plan_to_lowering/Pattern lowering変更点を箇条書き
- 禁止事項: by-name分岐排除、dev-only name guard対象外

Design principles:
- 「読むのは自由、管理は直下だけ」を維持
- 各中間ループは「素通し」のみ(merge責務はownerのみ)
- Owner scopeのexit PHIで全分岐をmerge
- 構造ベース設計(変数名による特別扱いなし)

Representative cases:
- 3階層multihop(AST例 + OwnershipPlan例)
- Merge relay(JSON fixture例 + 期待されるOwnershipPlan)

Phase 66への引き継ぎ:
- この文書の「5. 実装箇所の特定」をガイドとして使用
- Fail-Fast段階解除の流れに従って実装
- 回帰テスト(既存Phase 64テスト全PASS)を確認しながら進める

Status: 設計完了、実装はPhase 66以降
Tests: N/A (設計文書のみ)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-12 23:16:32 +09:00